第一章 计算机系统概述
操作系统的特征
1、并发 2、共享 3、虚拟 4、异步
对于单核CPU,同一时刻只能执行一个程序,只能并发
对于多核CPU,同一时刻只能执行多个程序,可以并行
操作系统提供了两类接口:
(1)命令接口
使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。
作用:用户利用这些操作命令来组织和控制作业的执行。
命令接口分为两种:
- 联机命令接口:交互式命令接口,适用于分时或实时系统的接口,它由一组键盘操作命令组成。用户通过控制台或终端输入操作命令,向操作系统提出各种服务请求。
- 脱机命令接口:批处理命令接口,适用于批处理操作系统,它由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应事先用响应的作业控制命令写成一份作业操作书,连同作业一起交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接控制作业的运行。
(2)程序接口
程序接口由一组系统调用(广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其服务。
图形接口:图形用户界面GUI,最终是通过调用程序接口实现的,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令操作系统的一部分。
- 从用户角度看:计算机是为用户提供服务的,计算所完成的工作都是为了满足用户的计算或处理需求。引入操作系统是让计算机为用户更好的提供服务。
- 从系统管理人员角度看:操作系统的引入是为了合理地组织计算机工作流程,管理和分配计算硬件与软件资源,从而使之高效的工作。
总结:操作系统是计算机资源的管理者。
并发:指两个或者多个时间在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的;
并行:指两个或者多个事件在同一时刻同时发生;
并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
并发(concurency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。注意:
- 并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行—个操作,多个操作快速切换执行)。
- 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若千个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态.这种方式我们称之为并发(Concurrent)。
- 当系统有一个以上CPU时,则线程的操作有可能并发。当一个CPU执行一个线程时,另一个CPU 可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
共享:即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 互斥共享:系统中的某些资源,虽然可以提供给多个进程使用,但是一个时间段内只允许一个进程访问该资源;
-
同时共享方式:系统中的某些资源,允许一个时间段内多个进程“同时”对它们进行访问;(磁盘共享,而非摄像头)
所谓“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享);
虚拟:是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的
- 空分复用技术,如虚拟存储器技术;解决现有运行内存小于所需运行内存的情况,
- 时分复用技术,如虚拟处理器;解决单核CPU同时处理多个进程,微观上处理机在各个微小的时间段内交替着为各个进程服务;
细节点:
现代操作系统最基本的两个特征是并发和共享。并发性和共享性是互为存在条件,两者缺一不可。没有并发和共享,就谈不上虚拟和异步。
系统调用是操作系统为应用程序使用内核功能所提供的接口,只能通过用户程序间接使用。
广义指令就是系统调用命令,命令解释器属于命令接口,shell是命令解析器,也属于命令接口,系统中的缓存全部由操作系统管理,操作系统不提供管理系统缓存的系统调用。
引入多道程序设计后,程序的执行就是去了封闭性和顺序性。程序执行因为共享资源及相互协同的原因产生了竞争,相互制约。考虑到竞争的公平性,程序的执行是断续的。顺序性是单道程序设计的基本特征。
计算机开机后,操作系统的程序会被自动加载到内存中的系统区,这段区域就是RAM。
库函数与系统调用的区别与联系
- 库函数是语言或应用程序的一部分,可以运行在用户空间中。
- 而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中。
- 而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(由用户态到内核态)
- 上下文切换指的是内核(操作系统的核心)在CPU上对进程或者线程进行切换。在进程A切换到进程B的过程中,先保存A进程的上下文,以便于等A恢复运行的时候,能够知道A进程的下一条指令是啥。然后将要运行的B进程的上下文恢复到寄存器中。这个过程被称为上下文切换。
操作系统的历史
单道批处理
系统对作业处理成批进行,但内存中始终保持一道作业。
特点
- 自动性。 磁盘上作业自动逐个运行,无须人工干预。
- 顺序性。 各道作业完成顺序与它们进入内存的顺序一致。
- 单道性。 程序每次仅从磁盘上调入一道程序运行。
优缺点
优点:为解决CPU等待手工操作,CPU利用不充分。
缺点:CPU与I/O设备速度不匹配,当主机内存中仅存的一道作业在运行期间发出输入/输出请求后,CPU处于等待低速的I/O完成状态,并且缺少人机交互能力。
因此为了进一步提高资源的利用率和系统吞吐量,引入了多道程序设计。
多道批处理
多个程序同时进入内存并允许它们在CPU中交替运行,这些程序共享系统的各种硬/软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
特点
- 多道:内存中同时存放多道相互独立的程序。
- 宏观上并行: 同时进入系统的多道程序都处于运行过程中。
- 微观上串行: 多道程序轮流占用CPU,交替执行。
优缺点
优点: 资源利用率高;系统吞吐量大。
缺点: 用户响应时间长;缺少人机交互能力,用户不了解程序运行情况,也不能控制计算机。
【扩展】后来“通道”和“中断”技术的出现,使得多道批处理系统的I/O设备可与CPU并行工作。
分时操作系统
分时技术: 把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。由于计算机运转快,每个用户感觉自己独占了一台计算机。
分时操作系统: 多个用户通过终端同时共享一台主机,用户可同时与主机交互而互不干扰。
多道批处理系统 | 分时操作系统 |
---|---|
作业自动控制而无须人工干预 | 人机交互 |
特点
- 同时性。 又称多路性,允许多个终端同时使用一台计算机。
- 交互性。 用户通过终端采用人机对话方式直接控制程序运行。
- 独立性。 系统中的多个终端用户互不干扰,操作独立。
- 及时性。 用户请求能在短时间内得到响应。
优缺点
优点:采用时间片轮转方式,较好地解决人机交互问题。
缺点:无法在规定的时间(比时间片的时间还短)内做出处理。
实时操作系统
能在某个时间限制内完成某些紧急任务而不需要时间排队。
硬实时系统 | 软实时系统 |
---|---|
某动作必须绝对在规定时刻(时间范围)发生 | 能够接受偶尔违反时间规定且不会引起任何永久性的损害 |
飞行器的飞行自动控制系统 | 飞机订票系统、银行管理系统 |
特点
- 及时性。 计算机收到外部命令后及时进行处理,并在严格的时限内处理完接收的事件。
- 可靠性。实时系统要求系统高度可靠。因为任何差错都可能带来巨大的经济损失甚至无法预料的灾难性后果。
网络操作系统与分布式计算机系统
辨析 | 网络操作系统 | 分布式计算机系统 |
---|---|---|
定义 | 把计算机网络中的各台计算机有机结合,实现各台计算机之间的数据传输 | (1)系统中任意两台计算机通过通信方式交换信息;(2)每台计算机地位同等,没有主机和从机;(3)与网络操作系统的本质不同: 任何工作分布在几台机上,并行工作、协同完成。 |
特点 | 网络中资源共享,各台计算机之间的通信 | 分布性,并行性 |
细节点:
- 单道\多道批处理操作系统的主要缺点是缺少人机交互能力。
- 操作系统的基本类型主要有批处理操作系统、分时操作系统、实时操作系统。
- 后来多道批处理系统的I/O设备可与CPU并行工作,这是借助于中断技术实现的。
- 实时性和可靠性是实时操作系统最重要的两个目标,因此为了保证快速处理高优先级任务时,允许浪费一些系统资源。
- 要求快速响应用户是导致分时系统出现的重要原因。
- 多任务操作系统可在同一时间内运行多个应用程序,但多个任务必须互斥地访问共享资源,为达到这一目标必须对共享资源进行必要的保护。
操作系统的运行机制
为了确保操作系统的正确运行,必须区分操作系统代码和用户代码的执行。大多数计算机系统采用硬件支持,以便区分各种执行模式。
计算机硬件可以通过一个模式位(mode bit)来表示当前模式:内核模式(0)和用户模式(1)。
有了模式位,就可区分为操作系统执行的任务和为用户执行的任务。当计算机系统执行用户应用时,系统处于用户模式。然而,当用户应用通过系统调用,请求操作系统服务时,系统必须从用户模式切换到内核模式,以满足请求。
特权指令
指计算机中不允许用户直接使用的指令。I/O指令,置中断指令,存取用于内存保护的寄存器,送程序状态字到程序状态字寄存器(PSWR)的指令等。
硬件只有在内核模式下才允许执行特权指令。如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将其以陷阱形式通知操作系统。
系统调用
计算机系统的各种硬件资源是有限,为了更好的管理这些资源,进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用。一般地,系统调用都是通过中断实现的,比如,linux下中断号0x80就是进行系统调用的。
系统调用的过程
当要执行系统调用时,硬件通常将它作为软件中断。控制通过中断向量转到操作系统的中断服务程序,并且模式位也设为内核模式。系统调用服务程序是操作系统的一部分。内核检查中断指令,判断发生了什么系统调用;参数表示用户程序请求何种服务。请求所需的其他信息可以通过寄存器、堆栈或内存(内存指针也可通过寄存器传递)来传递。内核首先验证参数是否正确和合法,然后执行请求,最后控制返回到系统调用之后的指令。
如果双重模式没有硬件支持,则操作系统会有严重缺点。运行出错的程序可以通过写入数据而清除整个操作系统,多个程序可以同时写入同一设备,进而可能引起灾难结果。
一旦硬件保护到位,就可检测模式错误。这些错误通常由操作系统处理。如果一个用户程序出错,如试图执行非法指令或者访问不属于自己的地址空间内存,则通过硬件陷到操作系统。陷阱如同中断一样,通过中断向量可将控制转到操作系统。当一个程序出错时,可由操作系统来异常终止。这种情况的处理代码与用户请求的异常终止一样。操作系统会给出一个适当的出错信息,并倒出(dump)程序内存。倒出内存信息通常写到文件,这样用户或程序员可检查它,纠正错误并重新启动程序。
中断机制
引入中断技术的初衷是提高多道程序运行环境中CPU的利用率。如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等。都依赖于中断机制。
系统控制的数据结构及处理
系统中用来登记状态信息的数据结构很多,比如:作业控制块、进程控制块、设备控制块、各类链表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下三种:
管理 | 功能 |
---|---|
进程管理 | 进程状态管理、进程调度和分配、创建和撤销进程控制块等。 |
存储器管理 | 存储器的空间分配和回收、内存信息保护程序、代码对换程序等。 |
设备管理 | 缓冲区管理、设备分配和回收等。 |
中断与异常
1.中断的引入——为了支持CPU和设备之间的并行操作
中断也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断、时钟中断等。这一类中断通常是与当前执行的指令无关的事件。
2.异常的引入——表示CPU执行指令本身时出现的问题
异常也称内中断、例外或陷入,指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、缺页异常等。对异常的处理一般要依赖与当前程序的运行现场,不能被屏蔽。
中断执行的过程
以下是多重中断的流程,其中,1~3步是由硬件(中断隐指令)完成的;4-9步是由中断服务程序完成的。内核
- 大内核:是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。
- 微内核:在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。