系统架构设计师-第2章-操作系统
【本章学习建议】
根据考试大纲,本章主要考查系统架构设计师单选题,预计考4分左右,对应第二版教材2.3.2小节,仅有基本概念,需要额外补充知识。根据历年真题考试情况,五大管理仍是重点。
2.1 操作系统概述
2.1.1 操作系统的基本概念
1. 操作系统定义及作用
·操作系统的定义:
能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
·操作系统的两大作用:
(1)通过资源管理提高计算机系统的效率;
(2)改善人机界面向用户提供友好的工作环境。
2. 操作系统特征和功能
特征:并发性、共享性、虚拟性、不确定性。
功能:进程管理、文件管理、存储管理、设备管理和作业管理。
2.1.2 操作系统分类及特点
操作系统可分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统、微型计算机操作系统和嵌入式操作系统等类型。
微型计算机操作系统:简称微机操作系统,常用的有Windows、Linux、Mac OS。
嵌入式操作系统的主要特点:
(1)微型化。从性能和成本角度考虑,希望占用的资源和系统代码量少,如内存少、字长短、运行速度有限、能源少(用微小型电池)。
(2)可定制。从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要。
(3)实时性。嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。
(4)可靠性。系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。
(5)易移植性。为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。
嵌入式系统初始化过程按照自底向上、从硬件到软件的次序依次为:片级初始化→板级初始化→系统初始化。
2.2 进程管理
2.2.1 进程的组成及状态转换
1. 进程的组成
进程由程序、数据和进程控制块(PCB)组成。
2. 进程的状态及其转换
(1)三态模型
运行态、就绪态和阻塞态。
(2)五态模型
运行态、就绪态、阻塞态、新建态和终止态。
2.2.2 进程间的通信
多个并发进程存在资源共享和相互合作,因此进程之间需要进行通信。
1. 同步和互斥
同步是合作进程间的直接制约问题,互斥是申请临界资源进程间的间接制约问题。
进程的同步:系统中需要相互合作、协同工作的进程之间的通信。
进程的互斥:系统中多个进程因争夺临界资源而互斥执行。每次只能给一个进程使用的资源称为临界资源,如打印机。
2. 信号量机制
信号量机制是一种有效的进程同步和互斥的工具。两类信号量:
(1)公用信号量:互斥信号量,对临界资源采用互斥访问,初值为1或资源的个数。
(2)私有信号量:同步信号量,对共享资源访问控制,初值为0或某个正整数。
信号量S的物理意义:若S≥0,表示可用的资源数;若S≤0,其绝对值表示阻塞队列中等待该资源的进程数。
P、V操作:均为原子操作,是实现同步和互斥的常用方法。
P操作:表示申请一个资源,即S=S−1,若S≥0,则执行P操作的进程继续执行;若S<0,则执行P操作的进程进入阻塞状态。
V操作:表示释放一个资源,即S=S+1,若S>0,则执行V操作的进程继续执行;若S≤0,则唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。
●利用PV操作实现进程的互斥
令信号量mutex的初值为1,当进入临界区时执行P操作,退出临界区时执行V操作。这样,利用PV操作实现进程互斥的代码段如下:
P(mutex)
临界区
V(mutex)
●利用PV操作实现进程的同步
典型的同步问题:一个生产者和一个消费者,假设缓冲区中可存放n件产品,生产者不断地生产产品,消费者不断地消费产品,如何用PV操作实现生产者和消费者的同步。可以通过设置3个信号量S、S_1和S_2,其中,S是互斥信号量,初值为1,因为缓冲区是一个临界资源;S_1表示是否可以将产品放入缓冲区,初值为n(即缓冲区的容量);S_2表示缓冲区是否有产品,初值为0(即缓冲区有多少产品)。
前趋图:
前趋图,用来表示任务之间的顺序关系、并行执行关系,如下图:
其中,P2、P3可以并行执行,但是P2、P3必须都执行完后,才能执行P4,这就确定了两点:任务间的并行、任务间的先后顺序。
2.2.3 进程调度
进程调度方式是指当有更高优先级的进程到来时如何分配CPU。调度方式分为可剥夺和不可剥夺两种。
·可剥夺:指当有更高优先级的进程到来时,强行将正在运行进程的CPU分配给高优先级的进程;
·不可剥夺:指当有更高优先级的进程到来时,必须等待正在运行的进程释放占用的CPU,然后将CPU分配给高优先级的进程。
1. 三级调度
在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
(1)高级调度:作业调度,决定哪个后备作业可以调入主系统做好运行的准备。
(2)中级调度:对换调度,决定交换区中的哪个就绪进程可以调入内存。
(3)低级调度:进程调度,决定内存中的哪个就绪进程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序。
2. 调度算法
(1)先来先服务(FCFS):按先后次序分配CPU。有利于长作业,不利于短作业;有利于CPU繁忙型作业,不利于I/O繁忙型作业。
(2)时间片轮转:分配给每个进程时间片,轮流占用CPU。通过时间片轮转提高进程并发性和响应时间特性,从而提高资源利用率。
(3)优先级调度:系统选择优先级大的进程占用CPU。
(4)多级反馈调度:时间片轮转和优先级调度结合而成。设置多个就绪队列1、2、3⋯n,每个队列分别赋予不同的优先级,队列1最高,队列n最低,分配不同的时间片长度;新进程先进入队列1的末尾,按FCFS原则,执行队列1的时间片;若未能执行完进程,则转入队列2的末尾,依次类推。
2.2.4 死锁
1. 死锁及其产生的必要条件
所谓死锁,是指两个以上的进程因相互争夺对方占用的资源而陷入无限等待的现象。
死锁产生的4个必要条件:互斥(资源互斥)、请求保持(进程占有资源并等待其他资源)、不可剥夺(系统不能剥夺进程资源)和环路(进程资源图是一个环路)。
请求资源:○→□;分配资源:○←□,若同时有请求和分配,分配优先。
2. 死锁的处理策略
(1)死锁预防:采用某种策略限制并发进程对资源的请求,破坏死锁产生的4个必要条件,使系统在任何时刻都不满足产生死锁的必要条件。
(2)死锁避免:提前计算出一条不会产生死锁的资源分配方法。著名的死锁避免算法有银行家算法。
(3)死锁检测:允许死锁产生,但系统定时运行一个死锁检测程序,判断系统是否发生死锁,若检测到有死锁,则设法加以解除。
(4)死锁解除:即死锁发生后的解除方法,如资源剥夺法、撤销进程法等。
死锁资源的计算:系统内有n个进程,每个进程都需要R个资源,那么发生死锁的最大资源数为n∗(R−1),不发生死锁的最小资源数为n∗(R−1)+1。
2.2.5 线程
线程是进程中的一个实体,是可独立分配和调度的基本单位。线程是调度的最小单位,进程是拥有资源的最小单位,线程可以共享进程的公共数据、全局变量、代码及一些进程级的资源(如打开文件和信号)等,但不能共享线程独有的资源,如线程的栈指针等标识数据。一个进程内的线程在其他进程不可见。
引入线程的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中设置的进程数目不宜过多,进程切换的频率不宜太高,这就限制了并发程度的提高。引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
2.3 存储管理
2.3.1 基本概念
1. 存储器的结构
2. 地址重定位
·逻辑地址。逻辑地址是由操作系统分配给程序使用的虚拟地址,它是在程序中使用的地址,而不是实际存在的地址,也被称为虚拟地址。
·物理地址。物理地址是实际存在于计算机系统中的地址,也称为实际地址。物理地址是存储器的绝对地址,范围从00000H~FFFFFH,是CPU访问存储器时由地址总线发出的地址。
定义变量时,变量的地址并不是实际的物理地址,而是操作系统分配的逻辑地址(虚拟地址)。这个逻辑地址通过地址映射得到真正的物理地址。在程序编译时,变量的虚拟内存地址是固定的,然而映射的物理内存地址是随机的。
地址重定位将逻辑地址变换成主存物理地址的过程,分为静态重定位(程序装入主存时就完成了变换)和动态重定位(边运行边变换)。
2.3.2 存储管理方案
存储管理的主要目的是解决多个用户使用主存的问题。
1. 分区存储管理
将主存的用户区划分成若干个区域,每个区域分配给一个用户作业使用,并限定它们只能在自己的区域中运行。
按划分方式不同,分区存储可分为:
(1)固定分区:静态分区方式,将主存划分成若干个固定的分区,将要运行的作业装配进去,由于分区固定,且与作业大小可能不同,会产生碎片,造成空间浪费。
(2)可变分区:动态分区方式,主存空间的分区在作业装入时划分,分区大小与作业大小相同。
可变分区的请求与释放算法:
①最佳适应算法:假设系统中有n个空白分区,当用户申请空间时,从这n个空白分区中找到一个最接近用户需求的分区。可能会产生许多无用的小分区,称为外碎片。
②最差适应算法:系统总是将用户作业装入最大的空白分区。
③首次适应算法:系统从主存的低地址开始选择一个能装入作业的空白分区。
④循环首次适应算法:每次分配都是从刚分配的空白分区开始寻找一个能满足用户要求的空白分区。
(3)可重定位分区:可解决碎片问题,移动所有已经分配好的分区,使之成为连续区域。在用户请求空间得不到满足或某个作业执行完毕时进行。
2. 分区保护
分区保护的目的是防止未经核准的用户访问分区。
2.3.3 分页存储管理
分区管理方案的主要问题是用户程序必须装入连续的地址空间中,若无法满足用户要求的连续空间,需要进行分区靠拢操作,这是以耗费系统时间为代价的。为此,引入了分页存储管理方案。
1. 纯分页存储管理
将进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存划分成与页相同的若干个物理块,称为块。在为进程分配主存时,将进程中若干页分别装入多个不相邻的块中。
分页地址结构:
2. 快表
将页表中经常使用的页号等对应关系存放在Cache中,称为快表。加快变换速度,快速得到真正的物理地址。
逻辑地址与物理地址的映射(分页存储管理):
3. 页面置换算法
有时候,进程空间分为10个页面,而系统内存只有3个物理块,无法一次性全部分配,就需要先分配一部分进程,再根据算法进行淘汰,淘汰的算法称为页面置换算法。
缺页:需要执行的页不在物理内存中,需要从外部调入内存。会增加执行时间,因此缺页次数越多,系统效率越低。
(1)最佳置换算法:理想化的算法,选择最长时间不再被访问的页面置换。
(2)先进先出置换算法:淘汰最先进入主存的页面,即选择在主存中驻留时间最久的页面予以淘汰。
(3)最近最少未使用置换算法:选择最近最少未使用的页面予以淘汰,根据局部性原理,这种方式效率较高。
(4)最近未用置换算法:优先淘汰最近未访问的,而后淘汰最近未被修改的页面。
2.3.4 分段存储管理
将进程空间划分成若干个段,每段也有段号和段内地址,每段是一组完整的逻辑信息。
分段地址结构:
分页与分段的区别:分页是根据物理空间划分,每页大小相同;分段是根据逻辑空间划分,每段是一个完整的功能,便于共享,但是大小不同。
2.3.5 段页式存储管理
先将整个主存划分成若干个大小相等的存储块,将用户程序按程序的逻辑关系分为若干个段,再将每个段划分成若干个页。既具有分页系统能有效地提高主存利用率的优点,又具有分段系统能很好地满足用户需要的长处。
段页式地址结构:
段页式存储的优缺点:
优点:空间浪费小、存储共享容易、存储保护容易、能动态连接;
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。
2.4 设备管理
2.4.1 设备管理概述
1. 设备的分类
现代计算机系统都配有各种各样的设备,如打印机、显示器、绘图仪、扫描仪、键盘和鼠标等。设备可以有各种不同的分类方式。
在计算机系统中,将负责管理设备和输入/输出的机构称为I/O系统。因此,I/O系统由设备、控制器、通道(具有通道的计算机系统)、总线和I/O软件组成。
设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定的策略分配和管理各种设备,控制设备的各种操作,完成I/O设备与主存之间的数据交换。
设备管理的主要功能是动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口及设备的访问和控制。
2.4.2 I/O软件
设计I/O软件的主要目标是设备独立性和统一命名。I/O软件独立于设备,就可以提高设备管理软件的设计效率。当输入/输出设备更新时,没有必要重新编写全部设备驱动程序。
2.4.3 设备管理采用的相关技术
1. 通道技术
CPU只需向通道发出I/O命令,通道收到命令后,从主存中取出本次I/O要执行的通道程序并执行,仅当通道完成I/O任务后才向CPU发出中断信号。目的:使数据传输独立于CPU,将CPU从烦琐的I/O工作中解脱出来。
2. DMA技术
直接内存存取(DMA),是指数据在主存与I/O设备之间直接成块传送,即在主存与设备间传送一个数据块的过程不需要CPU的任何干涉。
3. 缓冲技术
包括硬件缓冲(硬件寄存器)和软件缓冲(操作系统)。是为了提高外设利用率,尽可能使外设处于繁忙状态。引入缓冲技术的原因:①缓和CPU与I/O设备之间速度不匹配的矛盾。②减少对CPU的中断频率,放宽对中断响应时间的限制。③提高CPU和I/O设备之间的并行性。
4. Spooling技术
假脱机技术,用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的一种技术。
系统如何利用Spooling技术将打印机模拟为虚拟打印机:当某进程要求打印输出时,操作系统在磁盘上的输出井中为其分配一块区域,该进程的输出数据高速存入输出井的相关区域中,而不直接在打印机上输出。输出井上的区域相当于一台虚拟打印机,各进程的打印输出数据都暂时存放在输出井中,形成一个输出队列。最后,由Spooling的输出程序依次将输出队列中的数据实际打印输出。这样,从用户的角度来看,他似乎独占一台打印机,可以随时根据运行的情况输出各种结果;但从系统的角度来看,同一台打印机又可以分时地为每个用户服务。用户进程实际上获得的是虚拟设备。Spooling技术缓和了CPU与I/O设备之间速度不匹配的矛盾,提高了CPU与I/O设备之间的并行程度。
2.5 文件管理
2.5.1 文件与文件系统
文件(File)是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。例如,一个源程序、一个目标程序、编译程序、一批待加工的数据和各种文档等都可以各自组成一个文件。
文件的命名:一般包括文件名和扩展名。
2.5.2 文件的结构和组织
1. 文件的逻辑结构
·无结构的流式文件,是由一串二进制流或顺序字符流构成的文件,如二进制文件或字符文件。
·有结构的记录式文件,是由一个以上的记录构成的文件,称为记录式文件,如数据库表。
2. 文件的物理结构
文件的物理结构是指文件的内部组织形式,即文件在物理存储设备上的存放方法。
①连续结构,逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上;②链接结构,逻辑上连续的文件信息存放在不连续编号的物理块上;③索引结构,逻辑上连续的文件信息(如记录)存放在不连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号;④多个物理块的索引表,根据一个文件大小的不同,其索引表占用物理块的个数不同,一般占一个或多个物理块。
在UNIX文件系统中采用的是三级索引结构,其文件索引表项分4种寻址方式:直接寻址、一级间接寻址、二级间接寻址和三级间接寻址。
三级索引文件结构:0-9为直接索引,即每个索引节点存放的为数据;10为一级间接索引;11为二级间接索引。
三级索引文件结构举例:设文件索引节点中有8个地址项i_addr[0]〜i_addr[7],每个地址项大小为4字节,其中i_addr[0]〜i_addr[4]采用直接地址索引,i_addr[5]和 i_addr[6]采用一级间接地址索引,i_addr[7]采用二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB。
2.5.3 文件目录
文件目录也是一种数据结构,用于标识系统中的文件及其物理地址,供检索时使用。
1. 文件控制块
文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,成为目录项。
文件控制块(FCB)主要包含以下信息:
·基本信息,如文件名、文件的物理地址、文件的长度和文件块数等。
·存储控制信息,如文件存取权限等。
·使用信息,如文件建立时间、修改时间等。
2. 目录结构
文件目录结构的组织方式直接影响到文件的存取速度,关系到文件的共享性和安全性。常见的目录结构有3种:一级目录结构、二级目录结构和多级目录结构。
·一级目录结构
整个系统中只建立一张目录表,每个文件占一个目录项。
·二级目录结构
早期的多用户操作系统,采用两级目录结构。分为主文件目录(MFD,Master File Directory)和用户文件目录(UFD,User Flie Directory)。
·多级目录结构
在多道程序设计系统中常采用多级目录结构,这种目录结构像一棵倒置的有根树,所以也称为树形目录结构。从树根向下,每一个结点是一个目录,叶子结点是文件。Windows、UNIX、MS-DOS等操作系统均采用多级目录结构。
2.5.4 存取方法和存储空间的管理
1. 文件空闲存储空间的管理
常用的空闲空间的管理方法有:空闲区表、位示图、空闲块链和成组链接法。
·空闲区表
将外存空间上的一个连续的未分配区域称为"空闲区"。操作系统为磁盘外存上的所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表中包含序号、空闲区的第一块号、空闲块的块数和状态等信息。它适用于连续文件结构。
空闲区表 | |||
序号 | 第一个空闲块号 | 空闲块数 | 状态 |
1 | 18 | 5 | 可用 |
2 | 29 | 8 | 可用 |
3 | 105 | 19 | 可用 |
4 | -- | -- | 未用 |
·位示图
在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,0表示空闲,1表示占用。主要特点:位示图的大小由磁盘空间的大小(物理块总数)决定。
位示图一般用连续的“字”来表示。假设系统字长为32位,位示图中的每个二进制位对应一个物理块,因此可以用(字号,位号)对应一个物理块。
·空闲块链
每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上(如管理块中),不需要磁盘分配表,节省空间。每次申请空闲物理块只需根据链表的头指针取出第一个空闲物理块,根据第一个空闲物理块的指针可找到第二个空闲物理块,依此类推。
·成组链接法
系统将空闲块分成若干组,假设每5个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理块号(的地址)和空闲块总数。UNIX系统采用该方法。
2.6 作业管理
2.6.1 作业与作业控制
作业是系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和。例如,对用户编写的源程序,需要经过编译、连接、装入以及执行等步骤得到结果,这其中的每一个步骤称为作业步。
1. 作业
作业由程序、数据和作业说明书3个部分组成。
2. 作业状态及转换
作业的状态分为4种:提交、后备、执行和完成。其中,执行就是作业调入系统中执行,与进程执行状态类似。实际上,作业调度是比进程调度更加高级的调度。
3. 作业控制块和作业后备队列
作业控制块(JCB):是记录与该作业有关的各种信息的登记表。是作业存在的唯一标志,包括用户名、作业名和状态标志等信息。
2.6.2 作业调度
1. 作业调度算法
(1)先来先服务算法。按作业到达的先后进行调度,即启动等待时间最长的作业。
(2)短作业优先算法。优先调度运行时间最短的作业。
(3)响应比高优先算法。响应比高的作业优先调度。‘‘’
其中,作业响应时间为作业进入系统后的等待时间与作业的执行时间之和。
(4)优先级调度算法。优先级高的作业优先调度。
(5)均衡调度算法。根据系统的运行情况和作业本身的特性对作业进行分类。作业调度程序从
这些不同类别的作业中挑选作业执行。
2. 作业调度算法性能的衡量指标
在一个批量处理为主的系统中,通常用平均周转时间或平均带权周转时间来衡量调度性能的优劣。
系统的平均周转时间或平均带权周转时间越小,作业调度算法的性能越好。
原文地址:https://blog.csdn.net/weixin_42273847/article/details/145202884
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!