操作系统 第一章
1.1
操作系统的概念?
现代计算机分为四层 硬件 OS 应用程序 用户
操作系统是为了提供必要的服务而设计的最底层软件的集合。
操作系统有四大特点
CSVA
并发 Concurrence
宏观上并行,微观上并发。
共享 Share
资源的时分复用(CPU)和空分复用(存储器),外设
CS 是OS的最根本特性。二者相辅相成
虚拟 Virtual
由于资源的不足,需要对一部分资源进行逻辑上的虚拟。
虚拟CPU,虚拟存储器,等等。
异步 Asynchronism
指的是程序在运行过程中总是间断地、不连续地执行,自然其执行是不均匀、不同步的。
操作系统的三大任务
对于计算机资源的管理。
四大管理:处理机、存储器、设备、文件管理。
其中文件的管理其实可以不算在微内核中。
向用户提供接口
命令接口
Terminal/ ms-dos/ cmd.
向用户提供及时反馈或是批处理的功能。其权限在用户态。
程序接口(系统调用)see 1.3
为程序使用系统功能提供了必要的入口。一般性的用户程序在运行过程中是不能访问这些系统功能的。
作为计算机硬件的拓展,提高用户的可用性。
1.2 操作系统的发展历程
A. 单人操作
此时的计算机的资源为一个用户所独占。但是,相应地,CPU的利用率和吞吐量极低。
Q: 吞吐量的定义?
B. 出现了批处理功能
单道批处理系统
允许批处理输入,降低了人机交互之间I/O不对等的问题,但是CPU的利用率依然很差,长时间需要等待I/O中断的执行。
多道批处理系统
在I/O等中断发生的同时通过进程调度的方式将CPU的使用权交付给正在等待程序,极大地提高了CPU的利用率,但是用户不能知晓当前CPU运算到了何处、也不能打断程序的执行。
C. 分时操作系统
为了及时响应用户的需求,出现了分时操作系统。这种操作系统引入了时间片的概念,这一概念需要系统的时钟管理功能,这部分是位于系统内核中的。
而在分时操作系统中,用户的请求之所以能被及时反馈的原因是,每个程序时间片结束时如果还没有执行完成的话,进程调度程序将会强行将CPU的使用权交付给优先级更高的进程,比如说用户的请求。
D. 实时操作系统
有些请求,如军事请求、气象请求等,其需要系统及时作出反应。虽然时间片在宏观上看来其时间跨度已经足够小,但是在更加精细的工程条件下,这种时间间隔依然是不足够的。实时操作系统应运而生。在这种系统下,优先级高的程序会打断优先级低的程序,CPU转向执行更高级别的任务。这种实时响应的性质的缺点是,由于这些工作的特殊性质,CPU的性能必然得不到完全的发挥。
E. 服务器系统、分布式系统
F. 个人微操作系统
1.3 程序运行的环境
首先,计算机上运行的程序分为用户程序和系统程序。
二者能执行的命令自然是不同的。用户程序只能执行非特权指令,而系统程序既可以执行非特权指令,又可以执行特权指令。
那么,为了使得用户不能执行特权指令,操作系统出现了两个运行态:内核态和用户态,用于特权指令的区别。
二者如何切换呢?具体细节会在计算机组成原理中说明,现在只需知道,CPU内部具有一个运行标识位,用于标识操作系统目前是否运行于用户态。自然地,高电平1意味着用户态,低电平0意味着内核态。当用户提出一个转入内核态请求时,这个标识位进行复位,随后进行一系列中断前的现场保存操作,最后执行中断命令开中断、执行中断程序、恢复中断现场。
那么,何为内核?
内核指的是某一个操作系统所应该具有的最底层的功能集合。现代化操作系统一般采用分层编码的方法。在这种语境下,我们定义操作系统的最低两层为操作系统的内核,其内容为:
最底层:1. 中断及其恢复 2.时钟管理 3.设备驱动
次底层:1. 设备管理 2. 存储管理 3. 进程管理
这即是操作系统内核的粗略定义。
操作系统内核应该具有的四大基本功能是:
- 时钟管理
- 中断及其恢复
- 原语
- 系统管理的数据结构及其调用
时钟管理是各种系统操作的基石,如分时操作系统需要时钟来划分时间片,实时操作系统需要时钟来观察due time,等等。
原语指的是操作系统所规定的一系列不能被分割的操作的集合. 如创建进程Creat,等等。
下面介绍中断。
中断本质上,是对于CPU查询I/O输入方式的一种改进。中断方式下,CPU当且仅当I/O设备发出就绪信号后才会对I/O设备进行读取。
这种改动的最大益处在于,极大地改善了CPU和I/O速度不平衡的现状,使得较快的CPU和较慢的I/O设备并行地运作。
但是,中断为我们提供了程序设计的新思路。一般地,中断往往搭配着输入输出的进行。容易发现,输入输出是与设备紧密相关的,那么它必然是内核态的一种操作。于是,我们是否可以将中断定义为不光是处理I/O输入接口,还可以成为用户/内核态切换的桥梁呢?
事实上,答案是肯定的。现代操作系统将中断的作用最大化。下面介绍中断的分类。
中断分为外中断和内中断。外中断又称中断Interrupt,指的是外部设备(硬件)变化所导致的操作系统对于运行态切换的需求。外中断又分为两种,可屏蔽中断INTR和不可屏蔽中断NMI。这两个简称是总线的线路名。
内中断指的是由于程序运行错误导致的,操作系统需要进入内核态处理错误信息的中断请求。内中断又叫异常Exception。主要分为软件中断和硬件中断。软件中断指的是由于软件原因导致的操作态转换请求,如:DivideByZeroException(Fault),scanf(Trap)。Fault指的是程序运行过程中出现的预期之外的错误,Trap则是用户主动进行系统调用的操作类型。硬件中断主要涵盖了软件运行过程中引起的硬件运算不匹配的情况,如奇偶校验位错误等。
最后对系统调用进行一定的说明。
在刚才对中断的说明中我们不难发现,系统调用,是用户能够主动请求进入中断,即切换系统到内核态执行内核功能的唯一途径。实际上,即便是进入了内核态,这些内核函数依然是由操作系统执行后,将结果返回给用户的。用户是不可能进行内核态操作的,即便如Linux下sudo后,也是操作系统对用户态的操作权限的高度放宽。
系统调用的基本过程,见操作系统课本323页。这里给出大致过程。
用户进行系统调用后,硬件和系统首先进行基本的现场保护。保护过后,系统调用trap指令(访管指令),此时系统进入了中断态。随后,根据用户的访管指令,系统执行中断向量表中对应的中断程序。最后,程序执行完成后,由操作系统执行程序现场的恢复。
1.4 操作系统的结构
分层结构
优点 好编写好维护 缺点 效率低 冗余 依赖关系死板
模块化
优点 极大优化了程序编写周期 缺点 需要详尽的设计过程
宏内核
操作系统在发展过程中内核逐渐扩大,出现了软件危机。这时候微内核的优势体现了出来。
微内核
Key idea: 精简功能,子功能留给服务器,消息传递。这里的服务器和计算机网络里的服务器作用一致,原理不一致。
只保留操作系统基本的功能,如中断,部分的存储管理,部分的进程管理,其他的部分留给对应的服务器去做。
优点: 1. 灵活扩充 2. 安全稳定 3. 消息传递,分布式
缺点: 效率太差
四个方面 1. 微内核 2. CS模式 3. 机智策略分离 4. Objective-Oriented
外核
1.5 操作系统的启动过程
- 唤醒cpu
- 硬件自检
- 唤醒系统所在磁盘
- 加载MBR
- 找到对应分区
- 加载PBR
- 启动加载管理器
- 启动操作系统。
1.6 虚拟机的概念
虚拟机虚拟出驱动、内存等一个操作系统所必须的部件。
第一代操作系统凌驾于硬件设备之上,运行于等价于现代操作系统的层次。
第二代操作系统可以看作是宿主操作系统中的一个进程。
虚拟CPU的概念:没有虚拟CPU技术的虚拟机由虚拟系统管理器模拟该系统调用的功能,有虚拟CPU技术的虚拟机返还给宿主系统进行处理。