一、操作系统的概念
操作系统是一组控制和管理计算机软硬件资源,为用户提供便捷使用的计算机程序的集合,是配置在计算机硬件系统上的第一层软件,是对硬件功能的扩充。它不仅是硬件与其它软件系统的接口,也是用户和计算机之间进行"交流"的窗口,笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
二、操作系统的作用
操作系统是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。它的主要作用如下:
- 管理计算机的所有系统资源。
- 提供友好的用户界面。
- 为应用程序的开发和运行提供一个高效的平台。
三、系统调用和库函数
操作系统虽然帮我们管理好软硬件资源,给我们的应用程序提供一个良好的执行环境,但是我们不能直接去使用操作系统,因为我们随意操作可能会破坏操作系统的稳定性,导致系统紊乱,所以操作系统为了保护自身同时又要给我们用户提供服务,操作系统便有了系统调用的概念,我们通过调用系统调用接口来向操作系统发起请求,操作系统收到系统调用接口的调用请求后便为我们处理请求,有了系统调用接口后操作系统便能保证自身的稳定性也能为我们用户提供良好的服务了!
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,要求用户要有一定的操作系统知识。所以,有心的开发者可以对部分系统调用进行适度封装,形成了二次开发,二次开发有一部分是图形化界面,还有一部分是 shell与工具集,这就很有利于更上层用户或者开发者进行开发使用操作了。
整个计算机体系的软硬件结构是层状的,我们在使用操作系统时无法绕过特定层,而是必须从上到下贯穿、从下到上返回。
例如,利用touch
命令创建一个文件,我们便是使用了shell向对应的关于磁盘的系统调用发起请求,然后通过系统调用向操作系统发起请求,操作系统处理后让驱动去驱使相应的硬件进行创建文件,然后再层层返回。
系统调用和库函数的关系
系统调用是操作系统提供的接口,一些库函数是对系统调用的封装,例如C语言中的printf
scanf
函数,这些函数一般都功能强大或者要访问外设。但不是所有的库函数都会封装系统调用,比如一些单进行计算的库函数不需要访问外设,也就无需调用系统调用。
操作系统的组成结构: