4.用户层
(1)用户层
操作系统为用户服务,那么操作系统之上就是用户层,用户层在Windows系统上就是图形化界面,在Linux上就是命令行:
(2)系统调用接口
但是操作系统会直接和用户层打交道吗?不会,因为操作系统不信任用户,为了保护自己,要在操作系统和用户层之间增加了一个系统调用接口,用来进行用户和内核空间的通信。系统调用接口是站在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,就叫做系统调用接口。:
(3)用户操作接口
系统调用并不和程序员直接交互。系统调用接口比较复杂,让程序员每次都使用系统调用接口去管理硬件的前提是对系统要有一定程度的了解。于是,就有厉害的人对系统调用接口进行封装,形成了库,比如GUN C&C++第三方库,以语言方式呈现,这就有了用户操作接口,有利于更上层用户或者开发者进行二次开发:
了解了各个层级的关系之后,就不难理解计算机体系图:
四、如何管理
1.管理规则
既然操作系统是搞管理的软件,那么如何管理软硬件资源呢?
- 管理者和被管理者并不直接打交道
- 管理策略是根据资源的属性和数据做出各种决策
- 管理者和被管理者并不直接打交道,那么数据又是怎样被管理者知道的呢?是通过决策的执行者知道的。
比如对于动物园的管理,园长作为管理者,动物管理员作为执行者,动物作为被管理者。园长并不和动物直接打交道,策略是根据动物的种类、状态制定的,园长获取动物的数据信息是通过策略的执行者即动物管理员知道的。
所以管理时,需要考虑做不做、如何做,然后再去做。园长作为管理者进行决策,但是园长并不去执行,而是由动物管理员这个执行者去执行的,所以执行者的任务就是执行管理者的决策。
2.如何管理
一般情况下,园长不待在动物园里,那园长是如何在看不到动物的情况下对动物进行管理的呢?假如需要举办一个动物展览会,园长如何决定让哪些状态最好的5只动物去参展呢?园长没见到这状态最好的5只动物,那么是如何进行管理的呢?---------根据属性和数据管理的
这些动物的属性和数据都会被整理成信息,比如动物外形特征表、动物健康状况表、动物居住信息表,这就是描述信息:
每只动物都有这3张表格,这3张表格就描述了一只动物园长通过对这3张表格的管理就实现了对每只动物的管理。C语言中将这3张表格称为抽象结构体,C++中叫做面向对象。对动物园中所有动物做管理,园长就可以将所有动物的信息组织起来,如何组织呢?这就要用到数据结构,比如顺序表、链表、树、哈希。每种组织方式都有自己的优缺点,可以选择合适的组织方式进行组织。假如以链表的形式组织:
将所有动物的信息表组织起来以后,对所有动物的管理就变成了对链表的增删查改,对动物的创建、删除、修改都可以对链表进行操作。
数据结构是操作系统的核心,所以,从以上就可以抽象出操作系统是如何进行管理的——先描述,再组织