目录
操作系统(Operator System)
概念
设计OS的目的
如何理解 "管理"——先描述再组织
系统调用和库函数概念
总结
操作系统(Operator System)
概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
操作系统是一款进行管理(硬件和软件)的软件!
设计OS的目的
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个良好的执行环境
在一套系统中,需要有管理者进行统筹。对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境,因此就有了操作系统。
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
如何理解 "管理"——先描述再组织
下面我们来列举一个管理的例子:
我们上大学的时候,在学校有很多事情都是需要我们辅导员负责。但辅导员对我们的管理规则并不是辅导员制定的,而是校长这一层的领导制定的,所以辅导员并不是我们的管理者,辅导员只能算是执行者,我们的校长这样的领导才是我们真正的管理者。比如小李在学校犯了错,辅导员并不能把他开除,但是校长可以。
- 所以区分管理者和执行者的关键是看他有没有拥有决策权!
我们把校长类比成操作系统(决策者),辅导员为驱动程序(执行者),学生是被管理者(底层硬件)。
这里可能有人会有疑问,我们平时在学校连校长的面都见不到,他是怎么管理我们的呢?其实校长(决策者)是通过辅导员(执行者)管理我们的,下面我们就来理解一下管理的方法——先描述,再组织。
管理的精髓:先描述,再组织
先描述(描述被管理对象):我们刚开始来学校的时候,每个院的学生都会到特定的地方去报道,然后填上你的基本信息,最后将你的信息录入到电脑中,这些信息就是我们的数据。每一套信息就对应着一名学生,校长通过对这些信息的管理就能够做到对学生的管理。
再组织(组织被管理对象):当学生的数量特别大的时候,校长就需要将这些信息组织起来,组织的方式有很多种,我们可以通过我们之前学过的数据结构来组织,比如说链表。每种组织方式都有其自己的优势,假设我们校长这里是通过链表的形式将学生的信息组织起来的。
因此校长对学生的管理,就变成了对这个链表的增删查改,当有新生来学校报道时,只需要在链表中增加一个节点,当有一个学生从学校毕业后,只需要将该学生的信息从该链表中移除即可。
现在我们再来回答上面的问题:我们平时在学校连校长的面都见不到,他是怎么管理我们的呢?
- 管理者和被管理者是不需要见面的
- 管理者在不见被管理者的情况下,如何做好的管理呢? 只要能够得到管理信息,就可以在未来进行管理决策 ---- 管理的本质: 是通过对_数据 的管理,达到对人的管理
- 管理者和被管理者面都不见,我们怎么拿到对应的数据呢? 通过执行者
系统调用和库函数概念
用户与操作系统的交互
操作系统里面,里面会有各种数据。可是,操作系统不相信任何用户!
所以用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用(是操作系统提供的用C实现的,自己内部的函数调用)。所有访问操作系统的行为,都只能通过系统调用完成!
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
- 库函数通常是高级语言提供的,提供了一种方便的接口,使得程序员可以执行某些常见的任务,而无需直接与操作系统进行交互。库函数通常是在编程语言的标准库中提供的,例如C语言的标准库中包含了很多常用的库函数。
- 系统调用是操作系统提供的一种机制,允许程序请求操作系统的服务。库函数通常使用系统调用来与操作系统内核进行交互,以实现更高级的功能。例如,C语言中的库函数如printf()和scanf()等都使用了系统调用。
因此,库函数和系统调用的关系是上下层的调用与被调用的关系,库函数使用系统调用与操作系统进行交互,以实现更高级的功能。
总结
操作系统对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境。
操作系统中,注定了,一定存在大量的数据结构!
计算机管理硬件——先描述再组织
1. 描述被管理对象,用struct结构体。
2. 组织被管理对象,用链表或其他高效的数据结构。
用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。
库函数和系统调用的关系是上下层的调用与被调用的关系,库函数使用系统调用与操作系统进行交互,以实现更高级的功能。