文章目录
- 🚀简单认识操作系统(Operator System)
- 🌂操作系统的定义
- 🌂为什么需要操作系统呢?
- 🌂系统调用和库函数概念
🚀简单认识操作系统(Operator System)
🌂操作系统的定义
操作系统(Operation System, OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织和调度计算机的工作和资源的分配,以提供给用户和其它软件方便的接口和环境,它是计算机系统中最基本的系统软件。
即:任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
注意:
操作系统是第一个被加载的软件。
电脑开机的时候所等待的那几十秒,其实就是在加载操作系统。
那么操作系统在计算机层状结构中,是在哪里呢?
计算机的软硬件结构是层状的,如图:
操作系统是一个进行软硬件资源管理的软件,如何理解 “管理”。
管理者就是做决策的人,在计算机中,操作系统就是管理者,驱动程序与底层硬件是被管理者(执行者)。管理的本质是对数据做管理。管理者的核心工作是做决策,根据数据做决策。
就拿学校而言,校长,辅导员,学生来举个例。
校长的角色就是管理者,辅导员就是上面的驱动程序,学生就是底层硬件(执行者),校长向辅导员下达命令的时候,这时候就需要辅导员来驱动学生去做事情,辅导员在这里的作用就是提醒,驱动学生的作用。
注意:不能绕过操作系统给去访问底层,必须得经过操作系统。
🌂为什么需要操作系统呢?
如果没有操作系统的话,就不知道资源应该怎么分配,计算机的资源就不能被很好的利用,甚至可能出现竞争资源的现象。
对于一个程序而言,它为了保障自己的程序运行流畅,势必就会要求自己分配到的资源越多越好,但是计算机的资源总是有限的,大家都自顾自抢资源的话,要么就是大家一起跑不动,要么就是某几个程序把别的程序的资源都挤占掉。
操作系统存在的目的就是为了合理的给各个运行起来后的程序分配资源,从这个角度你可以把操作系统理解为一个资源分配器。操作系统与硬件交互,管理所有的软硬件资源,为用户程序(应用程序)提供一个稳定,高效,安全的执行环境。
总结
计算机管理硬件
- 描述起来,用struct结构体
- 组织起来,用链表或其他高效的数据结构
🌂系统调用和库函数概念
系统调用(system call)是操作系统内核提供的函数,在内核态运行(kernelmode),是操作系统为用户提供的一些接口。它通过软中断向内核态发出一个明确的请求。有一些任务需要进程跑比如和硬件打交道。所以进程调用系统调用就能让自己运行在内核态从而执行在内核态才能执行,这些类似的任务。
简单点说,系统调用接口,就是函数,使用C语言设计的函数(因为大部分操作系统都是用C语言(含少量汇编语言)所写的),由操作系统提供,系统调用这些函数,就是系统调用。
就比如:函数printf函数,printf函数最终是打印在显示器上得,显示器是一个硬件,所以printf函数调用得时候肯定会经过操作系统,所以printf底层必须得封装系统调用才能通过操作系统到硬件。
总结:如果使用的函数或者接口,能够访问到硬件,那只能是通过系统调用,因为只有通过系统调用才能访问操作系统。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
比如:C语言库,C++库…