操作系统(Operator system)
常见的操作系统有Linux、window、macos等
操作系统的定位
操作系统的是一款进行软硬件资源管理的软件
设计操作系统的目的
- 操作系统对下要管理好软硬件资源
- 操作系统对上要提供一个良好的运行环境
操作系统之下有什么
- 操作系统之下主要是面向硬件
一张图更详细的介绍
底层硬件:就是冯诺依曼体系结构的五大部件
驱动程序:操作系统并不会直接去直接和底层硬件打交道,而是在操作系统与硬件之间增加了一层驱动程序,操作系统驱动程序来控制硬件,比如读、写、打开,关闭等等。而什么时候进行读写,由操作系统决定。
操作系统为什么不直接访问硬件,而要通过驱动程序?
知乎上有一个回答,本人感觉回答的挺好的。知乎链接
总结一句话,驱动就是把硬件抽象化成软件。
首先,假如是无操作系统的情况下,那么驱动程序其实就是操作硬件寄存器的裸机程序,你通过了解这个硬件的工作原理、通讯方式,需要从硬件的寄存器读写,你把这一套流程做好了,做成一个接口,放在接口库,那么那些做单片机的就可以直接调用你的接口去做开发。
然后,假如是有操作系统的情况下,操作硬件的权限是只有内核才有的,这是为了安全,应用程序没有这个权限,那么假如你的桌面应用程序实现的一些功能需要操作硬件,那么就需要安装驱动程序,驱动程序知道如何去跟内核要某个层要东西,要的就是这个桌面应用软件从硬件需要的东西。假如是嵌入式的应用程序,一般驱动程序都是已经写好捆绑在内核上、或者动态加载,而应用程序只需调用内核提供的接口即可间接调用驱动程序,从而件间间接操作硬件,甚至有几个层的话那么就是间间间接操作硬件。
最后,说白了就是,为了安全,应用程序不直接操作硬件,这里面涉及到中断、抢占等等问题,所以需要做个抽象化。
计算机如何管理硬件
计算机管理硬件,就会管理其对应的驱动程序进行管理,将硬件的管理转换成对软件的管理。 操作系统对软件的管理这里涉及到操作系统对进程管理的知识,下篇博客会详细介绍
操作系统之上有什么
- 操作系统之上主要是面向用户
一张图更详细的介绍
系统调用接口:防止用户之间访问操作系统内部数据,必须通过系统调用接口进行访问
用户操作接口:将系统调用接口进行封装,提供给用户
用户:人
为什么要有系统调用接口
例子栗子:
就好比去银行取钱,你不会直接去银行的金库去随便拿,而是要通过工作人员进行一系列的认证等
所以,操作系统为了数据安全,规定必须通过系统调用接口才可以进行访问。可以把系统调用接口看成银行的工作人员
一句话,就是担心群众当中有坏人,直接去访问操作系统内部数据,进行破坏。
用户可以直接访问系统调用吗?
可以。但是系统调用接口对我们普通用户来说使用成本又太高了,因为要使用系统调用前提条件是你得对系统有一定了解。简单来说,需要技术支持
为什么要有用户操作接口
原因也很简单,就是普通人不会直接去访问系统调用接口,对其进行封装,在让其进行访问
用户操作接口更像是一个服务层,拿上面银行的例子来说,像是银行提供的老年人服务一样。
用户可以直接访问硬件吗
用户不能直接访问硬件,不能越级访问,必须通过OS访问,
比如c语言当中的printf函数,向显示器打印,他不会直接向显示器打印,而是通过操作系统访问硬件,而操作系统又必须要通过系统调用接口进行访问。那么printf函数一定封装了系统调用接口在进行访问。
一个函数只要涉及到硬件的访问,那么他一定会对系统调用进行封装。
一个小知识:
不同的操作系统有不同的系统调用接口,计算机语言标准库封装不同的系统调用接口,从而实现计算机语言的可移植性,跨平台性。