第四章:操作系统知识

 

正文

操作系统知识

考点分析(上午题:占比8%,6分)

进程状态转换图、信号量与PV操作、死锁问题、银行家算法、段页式存储、页面置换算法、磁盘调度、树形文件系统

操作系统概述

操作系统的基本概念

1)操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
2)操作系统的作用:第一,通过资源管理提高计算机系统的效率;第二,改善人机界面向用户提供友好的工作环境。
3)操作系统的特征:并发性、共享性、虚拟性和不确定性。
4)操作系统的功能:处理机管理、文件管理、存储管理、设备管理、作业管理。

操作系统分类及特点

批处理操作系统:多道、宏观上并行运行,微观上串行运行。如单道批处理和多道批处理。

分时操作系统:多路性、独立性、交互性、及时性。如UNIX。

实时操作系统:快速的响应时间、有限的交互能力、高可靠性。如数据自动釆集、武器控制、火炮自动控制、飞机自动驾驶和导弹的制导系统。

网络操作系统:高效、可靠的网络通信;对网络中共享资源(在LAN中有硬盘、打印机等)的有效管理;提供电子邮件、文件传输、共享硬盘和打印机等服务;网络安全管理;提供互操作能力。如UNIX、Windows NT和NetWare。

分布式操作系统:它保持网络系统所拥有的全部功能,同时又有透明性、可靠性和高性能等特性。比如银行系统,总行与各分行处于不同的城市或城市中的各个地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式的系统。

微机操作系统:微型计算机操作系统。如Windows,Linux。

嵌入式操作系统:微型化、可定制、实时性、可靠性、易移植性。如VxWorks、jxClinux、PalmOS、WindowsCE。

操作系统的发展

进程管理

基本概念

进程由程序、数据、进程控制块(PCB)组成。程序顺序执行时的主要特征包括顺序性、封闭性和可再现性。程序并发执行的主要特征包括失去了程序的封闭性,程序和机器的执行程序的活动不再一一对应,并发程序间的相互制约性。

进程的状态

image-20220507094115753

进程状态解析:

新建:创建进程时分为两个阶段,第一个阶段为一个新进程创建必要的管理信息,第二个阶段让该进程进入就绪状态。

运行:当一个进程在处理机上运行时,则称该进程处于运行状态。显然,对于单处理机系统,处于运行状态的进程只有一个。

就绪:一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。

阻塞:阻塞也称等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O等 待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。

终止:终止也可分为两个阶段,第一个阶段等待操作系统进行善后处理,第二个阶段释放主存。

进程的控制

进程控制就是对系统中的所有进程从创建到消亡的全过程实施有效的控制。为此,操作系统设置了一套控制机构,该机构的主要功能包括创建一个新进程,撤销一个已经运行完的进程,改变进程的状态,实现进程间的通信。进程控制是由操作系统内核(Kernel)中的原语实现的。内核是计算机系统硬件的首次延伸,是基于硬件的第一层软件扩充,它为系统对进程进行控制和管理提供了良好的环境。

原语(Primitive)是指由若干条机器指令组成的,用于完成特定功能的程序段。原语的特点是在执行时不能被分割,即原子操作要么都做,要么都不做。内核中所包含的原语主要有进程控制原语、进程通信原语、资源管理原语以及其他方面的原语。属于进程控制方面的原语有进程创建原语、进程撤销原语、进程挂起原语、进程激活原语、进程阻塞原语以及进程唤醒原语等。不同的操作系统内核所包含的功能不同,但大多数操作系统的内核都包含支撑功能和资源管理的功能。

进程间的通信

进程间的同步:在计算机系统中,多个进程可以并发执行,每个进程都以各自独立的、不可预知的速度向前推进,但是需要在某些确定点上协调相互合作进程间的工作。例如,进程A向缓冲区送数据,进程B从缓冲区取数据加工,当进程B要取数据加工时,必须是进程A完成了向缓冲区送数据的操作,否则进程B必须停下来等待进程A的操作结束。可见,所谓进程间的同步是指在系统中一些需要相互合作,协同工作的进程,这样的相互联系称为进程的同步。

进程间的互斥:进程的互斥是指系统中多个进程因争用临界资源而互斥执行。在多道程序系统环境中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(Critical Resource,CR),如打印机、共享变量和表格等。

信号量S:信号量机制是一种有效的进程同步与互斥工具。S>=0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。

PV操作(低级通讯方式):PV操作是实现进程同步与互斥的常用方法。P操作和V操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。

高级通讯方式:共享存储模式,消息传递模式,管道通信。

管程

若用信号量和p、v操作来解决进程的同步与互斥问题,需要在程序中的适当位置安排P、V操作,否则会造成死锁错误。为了解决分散编程带来的困难,1974年和1975年汉森(BrinshHansen)和霍尔(Hoare)提出了另一种同步机制—管程(Monitor)。其基本思路是釆用资源集中管理的方法,将系统中的资源用某种数据结构抽象地表示出来。由于临界区是访问共享资源的代码段,建立一个管程管理进程提出的访问请求。管程由一些共享数据、一组能为并发进程所执行的作用在共享数据上的操作的集合、初始代码以及存取权组成。管程提供了一种可以允许多进程安全、有效地共享抽象数据类型的机制,管程实现同步机制由“条件结构(Condition Construct)”所提供。

进程调度

进程调度方式是指当有更高优先级的进程到来时如何分配CPU。调度方式分为可剥夺和不可剥夺两种。可剥夺式是指当有更高优先级的进程到来时,强行将正在运行进程的CPU分配给高优先级的进程;不可剥夺式是指当有更高优先级的进程到来时,必须等待正在运行进程自动释放占用的CPU,然后将CPU分配给高优先级的进程。

调度算法

先来先服务(FCFS):FCFS按照作业提交或进程成为就绪状态的先后次序分配CPU,即进程调度总是将就绪队列队首的进程投入运行。FCFS的特点是比较有利于长作业,而不利于短作业;有利于CPU繁忙的作业,而不利于I/O繁忙的作业。FCFS算法主要用于宏观调度。

时间片轮转:时间片轮转算法主要用于微观调度,其设计目标是提髙资源利用率。通过时间片轮转提高进程并发性和响应时间特性,从而提高资源利用率。时间片的长度可以从几毫秒到几百毫秒,选择方法有固定时间片和可变时间片两种。

优先级调度:优先级调度算法是让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在调度时总选择优先数大的占用CPU。优先级调度分为静态优先级和动态优先级两种。

多级反馈调度:分多个优先级队列前三中调度的综合,先执行新进程。

死锁

所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。产生死锁的原因是因为竞争资源及进程推进顺序非法。产生死锁的4个必要条件是互斥条件、请求保持条件、不可剥夺条件和环路条件。

死锁的处理

死锁的处理策略主要有4种:鸵鸟策略(即不理睬策略)、预防策略、避免策略和检测与解除死锁。 

1)死锁预防:死锁预防是采用某种策略限制并发进程对资源的请求,破坏死锁产生的4个必要条件之一,使系统在任何时刻都不满足死锁的必要条件。预防死锁的两种策略:预先静态分配法和资源有序分配法。
2)死锁避免:最著名的死锁避免算法是Dijkstra提出的银行家算法,死锁避免算法需要很大的系统开销。银行家算法对于进程发出的每一个系统可以满足的资源请求命令加以检测,如果发现分配资源后系统进入不安全状态,则不予分配;若分配资源后系统仍处于安全状态,则实施分配。安全状态:系统能按某种顺序来为每个进程分配其所需资源,使每个进程都能顺序完成。
3)死锁检测:解决死锁的另一条途径是使用死锁检测方法,这种方法对资源的分配不加限制,即允许死锁产生。但系统定时地运行一个死锁检测程序,判断系统是否发生死锁,若检测到有死锁,则设法加以解除。
4)死锁解除:死锁解除通常采用资源剥夺法和撤销进程法。

线程

线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个进程的其他线程共享进程所拥有的全部资源。

储存管理

存储器管理的对象是主存存储器简称主存或内存。存储器管理的主要功能包括主存空间的分配和回收、提高主存的利用率、扩充主存、对主存信息实现有效保护。

基本概念

存储器的的层次结构:寄存器、快速缓存(cache)、主存、外存。

地址重定位是指将逻辑地址变换成主存物理地址的过程。地址重定位分为静态地址重定位和动态地址重定位(程序运行时完成转换)。

储存管理方案

image-20220518110609609

存储管理的主要目的是解决多个用户使用主存的问题,其存储管理方案主要包括分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理。

分区存储管理:分区存储管理是早期的存储管理方案,其基本思想是把主存的用户区划分成若干个区域,每个区域分配给一个用户作业使用,并限定它们只能在自己的区域中运行,这种主存分配方案就是分区存储管理方式。按划分方式不同分区可分为固定分区、可变分区和可重定位分区。

分页存储管理:将一个进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。在为进程分配主存时,将进程中若干页分别装入多个不相邻接的块中。

分段存储管理:在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段是一组完整的逻辑信息,例如有主程序段、子程序段、数据段及堆栈段等,每个段都有自己的名字,都是从0开始编址的一段连续的地址空间,各段的长度是不等的。

段页式存储管理:段页式系统的基本原理是先将整个主存划分成大小相等的存储块(页框),将用户程序按程序的逻辑关系分为若干个段,并为每个段赋予一个段名,再将每个段划分成若干页,以页框为单位离散分配。在段页式系统中,其地址结构由段号、段内页号和页内地址三部分组成。这种新系统既具有分页系统能有效地提高主存利用率的优点,又具有分段系统能很好地满足用户需要的长处,显然是一种比较有效的存储管理方式。

虚拟存储管理:如果一个作业只部分装入主存便可开始启动运行,其余部分暂时留在磁盘上,在需要时再装入主存,这样可以有效地利用主存空间。从用户角度看,该系统所具有的主存容量将比实际主存容量大得多,人们把这样的存储器称为虚拟存储器。

分页存储管理

分段存储管理

段页式存储管理

虚拟存储管理

虚拟存储页面置换算法

最佳(Optimal)置换算法:这是一种理想化的算法,即选择哪些是永不使用的,或者是在最长时间内不再被访问的页面置换出去。这种方法性能最好,但实际上难于实现。

先进先出(FIFO)置换算法:该算法总是淘汰最先进入主存的页面,即选择在主存中驻留时间最久的页面予以淘汰。它是一种最直观、性能最差的算法,有Belady异常现象。

最近最少未使用(Least Recently Used,LRU)置换算法:该算法是选择最近最少未使用的页面予以淘汰,系统在每个页面设置一个访问字段,用于记录这个页面自上次被访问以来所经历的时间T,当要淘汰一个页面时,选择T最大的页面,但在实现时需要硬件的支持(寄存器或栈)。

最近未用(Not Used Recently,NUR)置换算法:NUR算法将最近一段时间未引用过的页面换出,这是一种LRU的近似算法。

设备管理

设备管理概述

设备管理是操作系统中最繁杂而且与硬件紧密相关的部分。设备管理不仅要管理实际I/O操作的设备(如键盘、鼠标、打印机等),还要管理诸如设备控制器、DMA控制器、中断控制器和I/O处理机(通道)等支持设备。设备管理包括各种设备分配、缓冲区管理和实际物理I/O设备操作,通过管理达到提高设备利用率和方便用户的目的。

I/O软件

设备管理采用的相关技术

磁盘调度

磁盘是可被多个进程共享的设备。当有多个进程请求访问磁盘时,为了保证信息的安全,系统在每一时刻只允许一个进程启动磁盘进行I/O操作,其余的进程只能等待。因此,操作系统应采用一种适当的调度算法,使各进程对磁盘的平均访问(主要是寻道)时间最小。磁盘调度分为移臂调度和旋转调度两类,并且是先进行移臂调度,然后进行旋转调度。由于访问磁盘最耗时的是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。

磁盘调度算法

先来先服务(First_Come First-Served,FCFS):这是最简单的磁盘调度算法,它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。

最短寻道时间优先(Shortest Seek Time First,SSTF):该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,使得每次的寻道时间最短。但这种调度算法不能保证平均寻道时间最短。

扫描算法(SCAN):扫描算法不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。在这种算法中,磁头移动的规律颇似电梯的运行,故又常称为电梯调度算法。

单向扫描调度算法(CSCAN):SCAN存在这样的问题:当磁头刚从里向外移动过某一磁道时,恰有一进程请求访问此磁道,这时该进程必须等待,待磁头从里向外,再从外向里扫描完所有要访问的磁道后才处理该进程的请求,致使该进程的请求被严重地推迟。为了减少这种延迟,算法规定磁头只做单向移动。

文件管理

文件与文件系统

文件是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。例如,一个源程序、一个目标程序、编译程序、一批待加工的数据和各种文档等都可以各自组成一个文件。所谓文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称文件系统。

文件的结构和组织

文件的结构是指文件的组织形式。从用户角度看到的文件组织形式称为文件的逻辑结构,文件系统的用户只要知道所需文件的文件名就可以存取文件中的信息,而无须知道这些文件究竟存放在什么地方。从实现的角度看,文件在文件存储器上的存放方式称为文件的物理结构。

文件目录

为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的物理地址,这个数据结构称为文件控制块(FCB),文件控制块的有序集合称为文件目录。换句话说,文件目录是由文件控制块组成的,专门用于文件的检索。文件控制块也称为文件的说明或文件目录项(简称目录项)。

存储方法和存储空间的管理

文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有顺序存取和随机存取两种方法。顺序存取方法是指对文件中的信息按顺序依次进行读/写;随机存取方法是指对文件中的信息可以按任意的次序随机地读/写。要将文件保存到外部存储器(简称外存或辅存)上首先必须知道存储空间的使用情况,即哪些物理块是被“占用”,哪些是“空闲”。特别是对大容量的磁盘存储空间被多用户共享时,用户执行程序经常要在磁盘上存储文件和删除文件,因此,文件系统必须对磁盘空间进行管理。

文件的使用

当用户使用文件时,文件系统通过用户给出的文件名査出对应文件的存放位置,读出文件的内容。

文件的共享和保护

文件共享是指不同用户进程使用同一文件,它不仅是不同用户完成同一任务所必需的功能,还可以节省大量的主存空间,减少由于文件复制而增加的访问外存的次数。文件共享有多种形式,采用文件名和文件说明分离的目录结构有利于实现文件共享。文件系统对文件的保护常釆用存取控制方式进行。所谓存取控制,就是不同的用户对文件的访问规定不同的权限,以防止文件被未经文件主同意的用户访问。

系统的安全与可靠性

系统的安全

系统的安全涉及两类不同的问题,一类涉及技术、管理、法律、道德和政治等问题,另一类涉及操作系统的安全机制。随着计算机应用范围扩大,在所有稍具规模的系统中都从多个级别上来保证系统的安全性。一般从4个级别上对文件进行安全性管理:系统级、用户级、目录级和文件级。

系统级:不允许未经授权的用户进入系统,从而也防止了他人非法使用系统中各类资源(包括文件)。系统级管理的主要措施有注册与登录。

用户级:通过对所有用户分类和对指定用户分配访问权,不同的用户对不同文件设置不同的存取权限来实现。

目录级:为了保护系统中各种目录而设计的,它与用户权限无关。为了保证目录的安全,规定只有系统核心才具有写目录的权利。

文件级:通过系统管理员或文件主对文件属性的设置来控制用户对文件的访问。通常可设置以下几种属性:只执行、隐含、只读、读/写、共享、系统。

系统的可靠性

文件系统的可靠性是指系统抵抗和预防各种物理性破坏和人为性破坏的能力。比起计算机的损坏,文件系统破坏往往后果更加严重。

转储和恢复:在文件系统中无论是硬件或软件都会发生损坏和错误,例如自然界的闪电、电压的突变、火灾和水灾等均可能引起软/硬件的破坏。为了使文件系统万无一失,应当采用相应的措施,最简单和常用的措施是通过转储操作形成文件或文件系统的多个副本。这样,一旦系统出现故障,利用转储的数据使得系统恢复成为可能。常用的转储方法有静态转储和动态转储、海量转储和增量转储。

日志文件:在计算机系统的工作过程中,操作系统把用户对文件的插入、删除和修改操作写入日志文件。一旦发生故障,操作系统恢复子系统利用日志文件来进行系统故障恢复,并可协助后备副本进行介质故障恢复。

文件系统的一致性:影响文件系统可靠性的因素之一是文件系统的一致性问题。很多文件系统是先读取磁盘块到主存,在主存进行修改,修改完毕再写回磁盘。但如果读取某磁盘块,修改后再将信息写回磁盘前系统崩溃,则文件系统就可能会出现不一致性状态。如果这些未被写回的磁盘块是索引结点块、目录块或空闲块,那么后果是不堪设想的。通常,解决方案是采用文件系统的一致性检查,一致性检查包括块的一致性检查和文件的一致性检查。

作业管理

作业与作业控制

image-20220519141639198

作业控制说明:

作业是系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和。
作业状态分为4种:提交、后备、执行和完成。

1)提交:作业提交给计算机中心,通过输入设备送入计算机系统的过程状态称为提交状态。
2)后备:通过Spooling系统将作业输入到计算机系统的后备存储器(磁盘)中,随时等待作业调度程序调度时的状态。
3)执行:一旦作业被作业调度程序选中,为其分配了必要的资源,并为其建立相应的进程后,该作业便进入了执行状态。
4)完成:当作业正常结束或异常终止时,作业进入完成状态。此时,由作业调度程序对该作业进行善后处理。如撤销作业的作业控制块,收回作业所占的系统资源,将作业的执行结果形成输出文件放到输出井中,由Spooling系统控制输出。

作业调度

作业调度算法
1)先来先服务:按作业到达的先后进行调度,即启动等待时间最长的作业。
2)短作业优先:以要求运行时间的长短进行调度,即启动要求运行时间最短的作业。
3)响应比高优先:响应比高的作业优先启动。响应比=作业响应时间/作业执行时间,作业响应时间=(作业等待时间/作业执行时间)+1。
4)优先级调度算法:可由用户指定作业优先级,优先级高的作业先启动。也可由系统根据作业要求的紧迫程度,或者照顾“I/O繁忙”的作业,以便充分发挥外设的效率等。
5)均衡调度算法:这种算法的基本思想是根据系统的运行情况和作业本身的特性对作业进行分类。作业调度程序轮流地从这些不同类别的作业中挑选作业执行。这种算法力求均衡地使用系统的各种资源,即注意发挥系统效率,又使用户满意。

用户界面

posted @   肖德子裕  阅读(442)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示