操作系统:万字长文,重点知识梳理(持续更新)
Posted Zeker62
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统:万字长文,重点知识梳理(持续更新)相关的知识,希望对你有一定的参考价值。
分两大部分(基本概念及原理,综合应用)
操作系统定义及功能
操作系统的定义:
操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以方便拥护使用计算机的程序的集合。
操作系统的功能:
-
处理机管理功能(进程管理)
-
存储器管理的功能
-
设备管理的功能
-
文件管理的功能
-
作业管理的功能
多道程序设计定义及特点
定义:
多道程序设计是一种软件技术,该技术使同时进入计算机主存的几个相互独立的程序闸 管理程序控制之下相互交替地运行
特点:
(1)多道:计算机主存中同时存放几道相互独立的程序。
(2)宏观上并行
(3)微观上串行
分时/实时操作系统,网络/分布式操作系统
分时系统:
在一台主机上连接有多个配有显示器和键盘的中断,同时允许多个用户通过自己的终端以交互方式使用计算机,共享主机中的资源。
分时操作系统有以下特征:
(1)多路性。一台主机上连有多个终端,因此多个用户同时共享一台主机,从而显著地提高系统资源的利用率。
(2)独立性。各个拥护像独占主机一般,独立地工作,互不干扰。
(3)及时性。系统能按人们所接受的等待时间(通常为1~3s)及时响应拥护的请求。
(4)交互性。拥护能与系统进行广泛的人机对话,以请求系统为他提供的多方面的服务。
实时系统
实时系统是指系统能够及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时人物协调一致地运行。相对于分时操作系统,增加了可靠性。
网络操作系统:
计算机网络是通过通信设施将物理上分散的、具有自治功能的多个计算机系统互联起来的,实现信息就交换、资源共享、可互操作和协作处理的系统。
网络操作系统除了具备一般操作系统应该具有的功能以外,还要增加网络功能模块。
分布式操作系统
以往的计算机,其处理和控制功能都高度集中在一台主机上,所有任务都由主机处理,这样的系统称为集中处理式系统。
分布式操作系统是若干个计算机的集合。分布式系统是一个一体化的系统,整个操作系统有一个全局的操作系统称为分布式操作系统。
就是Harmony-OS
操作系统的特征和作用
操作系统的基本特征
采用多道程序设计的操作系统都有如下基本特征:
(1)并发性。并发性是指两个或多个事件在同一时间间隔
内发生。在多道程序的环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,在微观上这些程序是交替运行的。
(2)共享性。共享性是指系统中的资源可以供内存中多个并发执行的进程同时使用。根据资源性质的不同可以将资源共享方式分为以下两种:互斥共享方式(打印机)和同时访问方式。
(3)虚拟性:虚拟性是指通过某种技术,将一个物理实体变成若干个逻辑上的对应物。用来实现虚拟性的技术成为虚拟技术。
(4)异步性。异步性是指在多道程序的环境下,每个程序何时执行、合适暂停都是未知的,即它们以不可预知的速度向前推进。但同时操作系统应保证程序的执行结果是可再现的,即只要运行环境相同,一个作业的多次运行都会得到相同的结果。
操作系统的作用
(1)作为用户与计算机硬件系统之间的接口
(2)作为计算机系统资源的管理者
(3)用作扩充机器
并行/并发
并行:
并行是两个或者多个事件在同一时刻同时发生。
并发:
并发是两个或者多个事件在同一时间段内发生。
进程定义,进程的基本状态,进程状态转换图
进程定义:
可并发执行程序在一个数据集上的一次执行的过程,它是系统资源分配的基本单位。
进程的基本状态:
(1)就绪状态:只差CPU。
(2)运行状态:进程已经活得CPU,程序正在执行。
(3)等待状态:进程因发生某种事件(比例请求I/O操作)而暂停执行时的状态。
进程状态转换图
进程三种状态的基本转换
具有挂起状态的进程转换。
挂起:调节CPU的负荷,将进程从内存调出外存
进程与线程的比较
信息 | 进程 | 线程 |
---|---|---|
状态 | 运行、就绪、等待 | 运行、就绪、等待 |
资源分配 | 系统资源分配的基本单位 | 可参与调度的基本单位(程序执行的最小单位),线程本身不拥有系统资源,只拥有一些必要的资源。可以和其他线程共享进程所有的资源。 |
进程的终止将导致进程中所有线程的终止
临界资源,临界区及管理要求
临界区:
并发进程中与共享变量有关的程序段
临界资源:
共享变量所代表的资源
管理要求:
空闲让进、忙则等待、有限等待、让权等待。
(1)一次最多让一个进程在临界区执行,当有进程在临界区执行的时候,其他想进入临界区执行的进程必须等待。
(2)任何一个进入临界区执行的进程必须在有限的时间内退出临界区,即任何一个进程都不应该无限期地逗留在临界区中。
(3)不能强迫一个进程无限期地等待进入它的临界区,即有进程退出临界区时,应让一个等待进入临界区的进程进入它的临界区。
信号量定义及取值意义
信号量S是一个整数。
在S大于等于0的时候:表示可供并发进程使用的资源实体数。
在S小于0的时候,则用|S|表示正在等待使用资源实体的进程数。
除了赋值以外,信号量只能通过PV操作来访问
进程的互斥/进程的同步
进程互斥:
进程的互斥是指当有若干个进程都要使用同一共享资源的时候,任何时刻最多只允许一个进程去使用,其他要使用该资源的进程必须等待,直到占用资源者释放该进程。
进程同步:
并发进程之间存在一种制约关系,一个进程的执行依赖于另一个进程的消息,当没有得到另一个进程的消息的时候,这个进程应该等待,直到消息到达时才被唤醒。
死锁定义、产生原因、必要条件、四种处理技术
死锁的定义:
死锁是指一组并发执行的进程彼此等待对方释放资源,而在没有得到对方占有的资源之前不释放自己所占有的资源,导致彼此都不能向前推进,称该组进程发生了死锁。
产生原因:
(1)竞争资源:当系统中供多个进程所共享的资源不足以同时满足他们的需要的时候,引起他们对资源的竞争而导致死锁。
(2)进程推进顺序不当:当进程在运行过程中,请求和释放资源的顺序不当,导致了进程的死锁。
必要条件:
(1)互斥条件:进程应互斥使用资源。
(2)请求和保持条件:一个进程请求资源得不到满足而等待时,不释放已经占有的资源。
(3)不剥夺条件:任意一个进程不能从另一个进程抢夺资源。
(4)循环等待条件:存在一个循环等待链,其中,每一个进程都循环等待另一个进程所占有的资源,造成循环等待。
四种处理技术:
(1)预防死锁:系统运行之前就采取相应措施。破坏最后三个条件。
(2)避免死锁:克服预防死锁不足而提出的动态策略。银行家算法。
(3)检测死锁:事先不做处理,检测到之后再处理。资源分配图和死锁定理
(4)接触死锁:已经发生死锁就采取相应措施。重启、逐步撤销死锁进程和撤销所有死锁进程。
中断定义及处理过程
中断定义
中断是指CPU对系统发生的某个事件做出的一种反应,它使CPU暂停正在执行的程序,保留现场后自动执行相应的处理程序,该事件处理后,如被中断进程的优先级最高,则返回断点继续执行被打断程序。
处理过程:
(1)检测是否有未响应的中断信号。
(2)保护被中断进程的CPU环境。
(3)分析中断原因
(4)处理中断
(5)恢复CPU的现场并退出中断
高级调度和低级调度比较
名词 | 解释 | 内容 |
---|---|---|
高级调度 | 作业调度 | 将辅存中的作业调入主存中 |
中级调度 | 主存调度 | 进程再主存和辅存之间的切换 |
低级调度 | 进程调度 | 选择某个进程从就绪态变成执行态 |
地址重定位,三种地址重定位方式
重定位:
将装入模块中指令和数据的逻辑地址转换为物理地址,程序才能正常运行
重定位方式 | 内容 |
---|---|
绝对装入方式 | 在编译时事先知道程序驻留在主存中的具体位置。程序的逻辑地址和实际地址完全相同 |
静态重定位 | 把该作业中的指令和数据地址一次性全部转换为物理地址。但是这样程序在主存中难以移动 |
动态重定位 | 在作业执行过程中完成的,由硬件地址转换机制自动地将指令中的逻辑地址转换成对应的物理地址。程序时可浮动的。 |
固定/可变分区比较
固定分区分配:
在系统初启时,预先把主存中的用户区分割成若干个连续区域,每个连续区域称为一个分区,分区大小可以不同。
每个分区转入一个作业,不允许跨分区存储,也不允许多个作业放在一个分区。即每个分区都是单一存储。
可变分区存储管理:
作业转入贮存是,根据作业所需要地址空间的大小和当时主存空间的实际使用情况决定是否为该作业分配一个分区。
移动技术,移动技术的优缺点
移动技术:
即紧凑技术:移动主存中存在的作业,使分散的空间集中起来以容纳新的作业。
优缺点:
- 优点:提高空间的利用率,为作业动态扩充主存空间提供了方便。
- 缺点:
- 移动会增加系统开销。
- 移动是有条件的,如果通道确定了主存物理地址,就不能移动。
分页与分段比较
分页存储管理:
把主存划分成大小相等的若干区域,每个区域称作为一个块。
把逻辑地址空间划分成与块的大小相等的若干页。
页的大小与块的大小相对应。
分段存储管理
把逻辑地址空间按照逻辑划分成大小不同的段。
主存空间被动态地划分成长度不相等的区域。
主要区别:
- 页是信息的物理单位,是系统管理的需要而不是用户的需要;而段时信息的逻辑单位,它含有一组意义相对完整的信息。分段是为了更好的满足用户需要。
- 页的大小固定并且由系统决定,因而一个系统只能有一种大小的页面;而段的长度却不固定,由用户编写的程序所决定,通常由编译程序对源程序进行编译时根据信息的性质来划分
- 分页式作业的地址空间时一维的,页间的逻辑地址是连续的;而分段式作业的地址空间则是二维的,段间的逻辑地址是不连续的
虚拟存储器及其实现原理
时间局限性:
一旦执行了程序中的某条指令,不久以后该程序可能再次执行。
空间局部性:
一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问。
虚拟存储器:
当作业请求转入的时候,只需将当前运行所需要的一部分先装入主存。当要执行和访问的数据不存在的时候,再将这些信息调入主存。如果系统已满,那么将内存中暂时不用的程序或者数据调至磁盘上,腾出足够的内存空间后,再将要访问的程序或者数据调入内存。
从用户的角度看,好像计算机系统提供了一个容量很大的主存——称为虚拟存储器。
簸箕/抖动现象
抖动:
刚被换出的页很快又要被访问,为此,又要换出其它页,而该页又很快被访问。
通道
通道是一个硬件,是一个弱鸡版本的CPU
叫I/O通道。
计算机在CPU和设备控制器之间增设了自成独立体系的通道结构,这不仅使数据的传输独立于CPU,而且对I/O操作的组织、管理及其处理也尽量独立,使CPU有更多的时间进行数据处理。该通道又被称为I/O处理器。它具有执行CPU指令的能力。并通过执行通道程序来控制I/O操作完成主存和外围设备之间的传送。
I/O控制方式
I/O控制3条原则:
- 数据传输速度足够高,能满足用户的需要但又不丢失数据
- 系统开销小,所需的处理程序少
- 能充分发挥出硬件的能力
直接程序控制方式:
又称为询问方式,或者忙/等待方式。
最重要的内容就是这里的询问
询问是指CPU不停地去询问状态寄存器此时的I/O设备到底是什么样的状态。
由用户进程直接控制主存或CPU和外围设备之间的信息传送。
用户进程需要输入数据的时候,通过CPU发出一条I/O指令,启动设备输入数据,同时把状态寄存器中的忙闲状态busy置为1.用户进程进入测试等待状态。在等待过程中,CPU不断地用一条测试指令检查外围设备状态寄存器中的busy位,而外围设备只有在数据送入控制器的数据寄存器之后,才将该busy位置为0,于是处理器将数据寄存器中的数据取出,送入主存指定单元中,完成一个字符的I/O,紧接着进行下一个I/O操作。
直接程序控制方式虽然简单,不需要多少硬件的支持,但由于告诉的CPU和低俗的I/O设备之间的不匹配,因此,CPU与外围设备只能串行工作,造成CPU的浪费。
中断驱动控制方式
具体实现是CPU不必再轮询状态寄存器,在慢速的I/O操作中可以做别的事情。每次输入一个字符或者一个字,然后I/O控制器向CPU发送中断请求,CPU可以放下现在做的事情然后去进行一个从I/O控制器中读取字符。
减少直接控制方式下CPU的等待时间。
引入中断机制后,CPU向相应的设备控制器发出一条I/O指令,然后阻塞用户进程将CPU调度给其他就绪进程。
但是这样一个字符或者一个字就要进行中断,中断次数未免过多。而且每次中断都需要恢复环境,消耗资源
直接存储器访问方式(DMA)
相比于中断操作,DMA相当于可以直接读取到内存中去,并且是以数据块为基本单位,CPU不需要对I/O设备进行干预。
防止并行操作下设备过多是CPU来不及处理或因速度不匹配造成的数据丢失现象。
但是CPU每发出一条I/O指令只能读取一个数据块,太慢了。
通道控制方式
通道控制方式是基于硬件的,相当于一个弱鸡CPU。
不需要CPU进行参与。
适合连接大量的高速和低速设备
引入缓冲的主要原因,实现的基本思想
I/O设备输入的数据可以放入缓冲区中,这样在输入空闲期间CPU可以去做别的事情。
主要原因:
- 缓和CPU和I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 提高CPU和I/O设备之间的并行性
实现思想:
- 采用专用的硬件缓冲器
- 在主存中划出一个具有n个单元的专用区域,以便于存放I/O数据
设备绝对号/相对号
绝对号:
计算机系统为每一台设备确定一个编号,以便区分和识别,这个编号称为设备的绝对号。
相对号:
由用户在程序中定义的设备编号称为设备的逻辑号(相对号)。
设备独立性,设备独立性的优点
设备的独立性也称为设备的无关性,指应用程序独立于具体使用的物理设备,能有效地提高操作系统可适应性和可拓展性。
编制程序的时候,使用设备类、逻辑号。系统根据逻辑设备转换为具体物理设备。所以,用户在编制程序的时候时使用的设备与实际使用哪一台设备无关。
优点:
(1)设备分配灵活性强
(2)设备分配适应性强,易于实现I/O重定位。
(3)更换I/O操作的设备而不必改变应用程序的特性称为I/O重定向。
磁盘一次访问过程
在启动磁盘进行I/O操作时:
先把移动臂移动到指定的柱面→再等指定的扇区旋转到磁头的位置下→最后让指定的磁头进行读/写,完成信息传送。
虚拟设备,其设计思想,实现虚拟设备的主要条件
虚拟设备解决独占型设备的静态分配方式的资源浪费和效率地下。
SPOOLing系统的组成
SPOOLing的中文名是假脱机操作,用软件模拟脱离主机控制的输入和输出操作系统
能够将独占设备虚拟成共享设备
- 预输入程序
- 井管理程序
- 缓输出程序
文件,文件系统功能
文件是一组在逻辑上具有完整意义的相关信息的集合。
文件系统功能:
- 目录管理
- 文件的组织
- 文件存储空间的管理
- 文件操作
- 文件的共享、保护和保密。
文件的组织;文件的逻辑结构,文件的物理结构,分别有哪几种组织形式
文件的组织:
用户按照信息的使用和处理方式来组织文件,称为文件的逻辑结构或逻辑文件。
文件在存储介质上的存储方式称为文件的物理结构或者物理文件。
文件的逻辑结构:
(1)无结构文件:流式文件,比如记事本
(2)有结构文件:由若干个相关记录构成的文件,又称记录式文件(数据库文件)
文件的物理结构:
(1)顺序结构
(2)链接结构
(3)索引结构
(4)直接文件:哈希文件。
文件组织形式:
文件目录,多级目录结构的优点
优点:
- 提高了查找速度
- 允许文件重名
- 可实现文件共享
文件的绝对路径,相对路径
绝对路径:
就是要完整的路径名称
相对路径:
当前目录下访问的路径。
文件共享,文件保护,文件保密
文件共享:
允许两个或者多个用户使用同一个文件。
文件保护:
防止用户由于错误操作导致文件破坏
文件保密:
文件本身不得被未经授权的用户访问。
作业,批处理作业的四个状态
作业:
用户在一次解题过程中要求计算机所工作的集合称为一个作业。
四个状态:
- 提交状态
- 后备状态
- 运行状态
- 完成状态
操作系统与用户的接口
- 操作系统为用户提供的各种操作命令或作业控制语言,用户可以利用这些操作命令或作业控制语言来组织作业的工作流程和控制作业的运行
- 操作系统为用户提供的一组系统功能调用接口,用户可以在源程序一级使用这些系统调用,请求操作系统提供的服务。
信号量机制实现进程互斥和进程同步问题
信号量S
- S<0表示此时等待的资源个数有S个
- S>0表示此时的共享的资源数有S个
- S=0表示当前的状态是所有资源都互斥的状态。
PV操作的解读
P操作,又称为等待操作
wait(S){
while(S<=0); //如果此时内存并不空闲 ,就陷入循环,不再增加等待的作业了
S--;
}
V操作,又称为释放操作
signal(S){
S++; #释放进程
}
但是那个抄袭的课本又是这样的写法:
void P(Semaphore S){
S=S-1; //直接分配资源
if(S<0) //如果此时有等待的资源
W(S); //那么将进程设置成等待信号量的状态,进入等待队列
}
operation
void V(Semaphore S){
S=S+1; //此时进行完操作进行资源的释放
if(S<=0) //如果此时内存还是不空闲
R(S); //释放一个正在处于等待信号量状态的进程
}
很反感这种东西抄过来完全不一样还拿来给学生用。
只要理解P操作是一个获取资源的操作,V操作是一个释放资源的操作就可以了。
PV操作实现进程同步:
生产者—消费者问题:
有一个生产者和一个消费者,共用一个缓冲区,生产者生产物品,每次生产之后放入缓冲区,消费者取出物品,只有当消费者把物品取走之后,生产者才能把下一件物品放入。
首先分析一下,如果信号量是一个,代表着缓冲区有没有东西,一开始缓冲区没有东西,那就设置成0.那就代表生产者必须先是V操作再是P操作,这样你发现没有,根本不能实现进程的同步机制,因为实现了V操作,P操作一定可以实现,这样信号量就又是0了,同步的问题就是两个进程一定不能相互串扰。
进程的同步是什么,就是一方一定要得到另一方的消息才能做出操作,而且进程的同步时按照顺序进行的,一定不能串扰。
所以,信号量一定是两个,表示消费者是否可以放,生产者是否可以取。
int buffer; //缓冲区
Semaphore S_producter=1,S_consumer=0;
//此时初始就表示缓冲区为空,生产者可以生产,消费者不能消费。
void producter(){
while(1){
[生产者生产资源source]
P(S_producter); //将缓冲区设置成不能放置资源的状态
buffer=source; //资源放入缓冲区
V(S_consumer); //将设置成消费者能够取出的状态,此时消费者开始了它的表演
}
}
void comsumer(){
while(1){
P(S_comsumer); //将消费者设置成不能取东西的状态
[消费者开始从缓冲区buffer取东西]
V(S_producter); //将缓冲区设置成能够放东西的状态。
}
}
这种只有一个缓冲区的状态,他们的PV操作是一种交替方式的。
V操作相当于voice一样,就是告诉对方可以进行操作了。
P操作相当于position,此时的状态是怎么样的。
如果缓冲区可以放置n个数据
int B[n];
int k=0,t=0; //使用k,t两个指针表示生产者在缓冲区存物品和消费者在缓冲区取物品的相对位置
Semaphore SP=n,SG=0; //表示的是生产者一开始可以存放n个东西
cobegin
void producer(){
while(1){
[生产者生产东西]
P(SP); //P操作使得资源数减一
B[k]=product; //将生产物品放入k号空间
k=(k+1)%n; //缓冲器循环使用,就像一个循环队列一样,因为数组从0开始,所以需要K+1
V(SG); //V操作是得消费者可消费数加一
}
}
void comsumer(){
while(1){
P(SG);
[消费者消费B[t]东西]
t=(t+1)%n;
V(SP) //V操作使得生产者可生产数加一
}
}
coend;
如果有p个生产者和q个消费者,并且有n个缓冲区
int B[n];
int k=0,t=0;
Semaphore SP=n,SG=0;
Semaphore S=1;
cobegin
void producer(){
while(1){
[produce a product];
P(SP);
P(S); // 互斥信号量S,表示只能由一个生产者或者消费者来进行放入或者取出操作.
B[k]=product;
k=(k+1)%n;
V(SG);
V(S);
}
}
void comsumer(){
while(1){
P(SG);
P(S);
[take product from B[t] ];
t=(t+1)%n;
V(SP);
V(S);
}
}
coend;
读者和写者问题:
两个并发进程: 读者和写者.他们共享一个文件F
- 允许多个读者可同时对文件进行读操作
- 任意写者在写之前不允许其他读者或者写者工作
- 写者进行写操作前,应该让已有的读者或写者退出操作
int rc=0; //rc对读进程进行计数
Semaphore W=1, mutex=1; // W表示是否允许写的信号量,mutex表示对于计数器rc的互斥信号量
cobegin;
void readi(){
P(mutex); //可以开始进行读操作
rc=rc+1; //读者数量增加
if(rc==1)
P(W); //如果有读者在里面,写者不能操作,信号量-1
V(mutex); //还是允许读操作
[read file]
P(mutex); //又不允许读了,读完了
rc=rc-1;
if(rc==0)
V(W); //最后一个人读完了,就释放文件
V(mutex);
}
void writej(){
P(W);
[写文件]
V(W);
}
coend;
银行家算法(判断安全状态,找出安全序列)
进程调度算法
- 先来先服务(First Come Frist Service, FCFS)
- 短进程优先调度算法(短作业优先调度算法)
- 最短剩余时间优先调度算法
- 时间片轮转调度算法
- 优先级调度算法
- 多级反馈队列调度算法(了解)
资源分配图的化简
分页及分段存储管理中的地址转换
页面置换算法 (FIFO、LRU、LFU),要求给出完整调度过程
磁盘移臂调度算法,要求给出完整调度过程图
磁盘旋转调度
记录的成组与分解
磁盘空间管理(磁盘(柱面、磁道和扇区)、块号、位示图之间的对应关系)
多道批处理作业调度算法 (FCFS、SJF、HRRF),要求给出完整调度过程表
以上是关于操作系统:万字长文,重点知识梳理(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章