操作系统知识点.docx
《操作系统知识点.docx》由会员分享,可在线阅读,更多相关《操作系统知识点.docx(26页珍藏版)》请在冰豆网上搜索。
![操作系统知识点.docx](https://file1.bdocx.com/fileroot1/2023-2/2/7fd27ec9-4115-438e-8a53-6aa1f18d5326/7fd27ec9-4115-438e-8a53-6aa1f18d53261.gif)
操作系统知识点
操作系统书本知识点
第一章操作系统引论
主要内容
v操作系统的目标、作用和模型
v操作系统的发展过程
v操作系统的基本特征
vOS(OperatingSystems)的主要功能
vOS的结构设计
本章要点
v计算机系统结构:
了解操作系统的地位
v什么是操作系统:
3种基本观点
v现代操作系统的功能、特性、类型
v基本概念:
批处理、多道程序、作业、进程、任务、虚拟技术、并发性、异步性
操作系统的作用
(1)
v作为用户与计算机硬件系统之间的接口
v作为计算机系统资源的管理者
v处理机管理:
分配和控制处理机
v存储器管理:
分配及回收内存
vI/O(Input/Output)设备管理:
I/O分配与操作
v文件管理:
文件存取、共享和保护
监视这些资源
实施某种资源分配策略
分配这种资源
回收这种资源
vOS实现了对计算机资源的抽象
操作系统的发展过程
1.2.1无操作系统时的计算机系统
v人工操作方式
٭如纸带输入机。
٭特点是用户独占全机及CPU等待人工操作。
v脱机I/O方式(图1.3)
٭引入I/O机的概念,解决前者的缺点。
٭特点是减少了CPU的空闲时间且提高I/O速度。
单道批处理系统
v处理过程(图1.4)
٭概念:
系统对作业的处理都是成批进行的、且内存中始终只保持一道作业,称为单道批处理系统(simplebatchsystem)。
٭批处理系统的引入是为了提高系统资源的利用率和吞吐量
٭概念:
运行控制权
v特征
٭自动性、顺序性、单道性
多道批处理系统
(1)
v优点
٭资源利用率高
٭系统吞吐量大
٭平均周转时间长
٭无交互能力
v缺点
٭平均周转时间长、无交互能力
分时系统
v分时系统的产生
٭概念:
指一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户共享主机中的资源,各个用户都可通过自己的终端以交互方式使用计算机。
v分时系统在实现中的关键问题
٭及时接收:
多终端卡、输入缓冲区
٭及时处理:
交互作业应在内存、响应时间应短
v分时系统的特征
٭多路性
٭独立性
٭及时性
٭交互性
٭可靠性
v类型
▪实时控制
▪实时信息处理
实时系统
(2)
v实时任务类型
٭按任务执行是否呈现周期性来划分
▪周期性的(联系周期);
▪非周期性的(联系开始或完成截止时间)
٭根据对截止时间的要求来划分
▪硬实时任务
▪软实时任务
v实时、分时的比较
٭多路性:
相同
٭独立性:
相同
٭及时性:
实时系统要求更高
٭交互性:
分时系统交互性更强
٭可靠性:
实时系统要求更高
思考
试在交互性、及时性和可靠性方面,将分时系统和实时系统进行比较。
操作系统的基本特征
(1)
v并发性
٭并行是指两或多个事件在同一时刻发生。
٭并发是两或多个事件在同一时间间隔内发生。
٭进程:
系统中能独立运行并作为资源分配的基本单位。
引入线程后,独立运行的单位变为线程。
v共享性
٭系统中资源可供内存中多个并发执行的进程共同使用
٭互斥共享:
一段时间只允许一个进程访问该资源
٭同时访问:
微观上仍是互斥的
v虚拟性
٭通过某种技术把一个物理实体变为若干个逻辑上的对应物。
若n是某一物理设备所对应的虚拟的逻辑设备数,则虚拟设备的速度必然是物理设备速度的1/n。
v异步性
٭运行进度不可预知。
操作系统的功能
处理器管理功能
(1)进程和作业调度
⏹进程:
指在系统中能独立运行并作为系统资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个活动实体。
⏹作业调度(又称高级调度或长程调度):
用于把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
2)进程控制
v为作业创建进程,撤消已结束的进程、阻塞进程和唤醒进程。
(3)进程同步
v使并发执行的诸进程之间能有效的共享资源和相互合作,从而使程序的执行具有可再现性。
可能存在两种制约关系:
间接相互制约关系、直接相互制约关系。
(4)进程通信
v进程间信息的交换
存储器管理功能
v主要指内存管理,即如何分配内存空间,如何提高存储器的利用率以及能从逻辑上扩充内存。
(1)内存的分配
⏹静态分配方式:
每个作业的内存在作业装入时确定;在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许作业在内存中“移动”。
⏹动态分配方式:
允许作业在内存中“移动”。
为此,需内存分配的数据结构及内存分配和回收功能
2)存储保护
v指存储管理应确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。
例:
设置上、下界寄存器,每条指令进行越界检查(一般是硬件实现)
(3)地址映射
v完成逻辑地址到物理地址的转换
(4)内存扩充
v采用虚拟技术实现内存扩充,具有请求调入和页面置换功能。
设备管理功能
v完成设备的分配和回收,设备的控制和信息传输,提高CPU和I/O设备的并行程度和利用率,方便、快捷地完成用户提出的I/O请求。
如:
CPU快则应多创建缓冲区
(1)缓冲管理
有效地缓和CPU和I/O设备速度不匹配问题,提高
CPU利用率,提高系统吞吐量。
常见的缓冲区机制有:
单缓冲机制、双缓冲机制
(2)设备分配
▪包括:
设备,设备控制器,I/O通信的分配和回收
(3)设备处理
▪指控制设备进行实际的操作,包括读、写等以及向CPU发中断。
▪设备处理/驱动程序应能根据用户的I/O请求,自动地构成通道程序。
4)设备独立性
▪独立性,即program与设备无关性,使program易于重定向,增加了可移植性。
(5)虚拟设备管理
文件管理功能
对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。
(1)文件存储空间的管理
(2)目录管理
▪使用户按名存取,提高速度。
(3)文件的读/写管理和保护
用户接口
٭一、命令接口
▪由一组“命令”集组成,分为联机和脱机用户接口
▪1.联机用户接口
–由一组键盘操作命令及命令解释程序所组成
▪2.脱机(批处理用户接口)
–用JCL写作业说明书
٭二、程序接口
٭系统调用
٭高级语言的库函数
٭三、图形接口
٭如win的copy文件,采用“拖”来完成,生动,不需记忆
OS的结构设计
v无结构操作系统
v模块化结构操作系统
v分层式结构操作系统
v微内核操作系统结构
v1.无结构操作系统
v一组过程集,各过程可相互调用,也叫整体系统结构。
v缺点:
逻辑复杂,维护困难.
v2、模块化操作系统
v通过分解来控制大型软件复杂度。
v如:
进程模块、内存模块…,各模块内进一步划分子模块。
v优点:
v提高了OS设计的可维护性
v增强的OS的可适应性
v加速了OS的开发过程:
并行开发模块
v缺点:
v接口不易确定
v模块依赖关系可能复杂(对于大型软件而言)
v3、分层式操作系统
v有序分层的基本概念
v可简化设计的复杂度
v下层为上层提供服务
v层次的设置应考虑的因素
v程序嵌套:
各模块间嵌套关系复杂
v运行频率:
随层次的增高,相应软件的运行速度就随之下降
v公用模块:
低层
v用户接口:
高层
微内核操作系统结构
(1)
v提高了系统的灵活性和可扩充性
v提高了软件的可靠性
v适合于分布式系统
微内核操作系统结构
(2)
v面向对象的程序设计技术
٭概念:
٭优点:
▪a.可扩展性
▪b.继承性
v微内核技术
٭引入:
提高系统的灵活性;
٭采用C/S模式
٭基本功能
▪进程、内存、IPC等基本管理功能
第二章进程管理
程序顺序执行时的特征
(1)顺序性
(2)封闭性
程序是在封闭的环境下运行的。
即程序在运行时,它独占全机资源。
一旦运行,不受外界影响.
(3)可再现性
只要程序执行时的环境和初始条件相同,当程序多次重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。
进程的特征
(1)动态性
⏹进程是程序的一次执行过程,因此,属于动态概念,是进程
的最重要的特征。
动态性还表现为:
“它由创建而产生,由调度而
执行,因得不到资源而暂停执行,以及由撤消而消亡”。
可见,进
程有一定的生命期。
而程序只是一组有序指令的集合,并长期存
放在某种介质上,本身并无运动的含义,因此,程序是个静态实
体。
⏹进程和程序不是一一对应的,如几个进程可同时执行一个程
序。
(2)并发性
⏹这是指多个进程实体,同存于内存中,能在一段时间内同时运行。
并发性是进程的第二个最重要特征。
引人进程的目的也正是为了使其程序能并发执行,而程序是不能并发执行的。
(3)独立性
⏹这是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
凡未建立进程的程序,都不能作为一个独立的单位参加运行。
(4)异步性
⏹
这是指进程按各自独立的、不可预知的速度向前推进;或者说,进程按异步方式运行。
正是这一特征,将导致程序执行的不可再现性。
因此,在OS中必须采取某种措施来保证各程序之间能协调运行。
(5)结构特征
⏹从结构上看,进程实体是由程序段、数据段及进程控制块三部分
组成。
进程的三种基本状态
注意:
*可逆:
仅就绪◊⇓执行
*主动:
仅执行阻塞
*微观上:
执行状态时,程序在运行
*宏观上:
进程建立后直至撤消,程序都在运行。
1)就绪(Ready)状态
●一个刚被创建的进程,它的初始状态是就绪。
●进程所请求的一次打印输出结束后,将使进程状态从等待态变为就绪态。
2)执行状态
●单CPU系统中,最多只有一个进程处于运行状态。
●分配到必要的资源并获得处理机时的进程状态是执行状态。
如:
某进程已获得运行所需的其它资源(CPU除外),将处于就绪,当它获得CPU时,就将处于运行(执行)状态。
●进程从运行状态进入就绪状态的原因可能是时间片用完。
3)阻塞状态
进程管理中,在等待的事件发生情况下,进程将从阻塞状态变为就绪状态。
一个进程状态转换的发生是否一定会导致另一个状态的转换发生,列出所有可能:
进程同步基本概念
(1)
进程同步的两种形式的制约关系:
1.间接相互制约关系。
此时进程同步的主要任务是保证诸进程能互斥的访问临界资源。
因此,资源应由系统同一分配。
2.直接相互制约关系。
此时此时进程同步的主要任务是保证相互合作的进程在执行次序上的协调,避免出现与时间有关的错误。
临界资源
一次仅允许一个进程使用的资源叫临界资源。
属于临界资源的物理设备,如输入机、打印机、磁带机等。
属于临界资源的软件资源,如多个进程共享的变量、数据、队列等。
v两个交往的并发进程,其中一个进程对另一个进程的影响常常是不可预期的,甚至是无法再现,因为两个并发进程执行的相对速度无法控制,所以一个进程的速率通常无法为另一个进程所知。
如:
两个进程P1,P2共享变量counter(初值5):
P1P2
registerl=counter;register2=counter;
registerl=registerl+1;register2=register2–1;
Counter=register1Counter=register2;
如果一个进程先执行,然后另一进程再执行,则counter的值仍为5。
如改变执行次序,counter可能为4或6。
原因:
两个进程共享了变量counter.
解决方法:
把counter作为临界资源处理。
临界区
程序上如何实现互斥使用临界资源呢?
只要把进程中访问临界资源的那段代码分离出来(它被称为临界区),诸进程互斥地进入自己的临界区即可。
信号量机制
1965年,荷兰学者dijkitra提出的信号量机制是一种卓有成效的进程同步工具。
现在信号量机制已被广泛地应用于单处理机和多处理机系统,以及计算机网络中。
P、V操作
v操作系统利用信号量实现对进程和资源的控制和管理。
信号量的值仅由P、V操作来改。
P、V操作是能够实现对临界区管理要求的两条原语,P操作起到了限制一次只有一个进程进入临界区的作用,而V操作将唤醒位于阻塞队列中的头一个进程,使其可以进入临界区,保证了进程在临界区内逗留有限时间。
vP原语操作的主要动作是:
1.Semaphore减1;
2.若Semaphore减1后仍>=0,则进程继续执行。
3.若Semaphore减1后<0,则进程被阻塞在与该信号相对应的队列中,然后转进程调度。
vV原语操作的主要动作是:
1.Semaphore加1;
2.若Semaphore加1后仍>0,则进程继续执行。
3.若Semaphore加1后<=0,则从信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
利用信号量实现前驱关系
Vara,b,c,d,e,f,g:
semaphore:
=0;
Begin
parbegin
s1:
v(a);v(b);
p(a);s2;v(c);v(d);
p(b);s3;v(e);
p(c);s4;v(f);
p(d);s5;v(g);
p(e);p(f);p(g);s6;end;
Parend
end
设有一个作业由4个进程组成,这4个进程必须按下图所示的次序运行,试用P、V操作表达4个进程的同步关系。
2.4经典进程同步问题
在多道程序环境个,进程同步问题是十分重要的,也是相当有趣的问题,因而吸引了不少学者对它进行研究,由此而产了一系列经典的进程同步问题,其中“生产者—消资者问题”、“读者—写者问题”、“哲学家进餐问题”很具有代表性,是许多实际的进程同步问题的抽象,具有实用价值。
1、生产者-消费者问题
v生产者-消费者问题是一个著名的同步问题。
其描述的是:
有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。
为使生产者进程和消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中,消费者可从一个缓冲区中拿走产品去消费。
生产者与消费者是等效的,只要有空时,生产者可送入,只要有满buf,消费者可取走。
这是多个进程相互合作的一种抽象,如输出时:
计算进程是生产者,打印进程是消费者。
分析:
从资源的观点很容易解这个问题。
1.有空buf生产者才能送数据,可设
计数信号量empty,初值为n。
2.有装满数据的buf,消费者才能取数据,
故设数信号量full,初值为0。
3.对某个buf应互斥使用,
设互斥信号量mutex,初值为1。
如何用P.V操作同步:
此处可以看到:
1.P.V操作必须成对出现
2.两个P操作次序不可颠倒,为什么?
对于n个环行buf的生产者—消费者问题的进程同步算法描述:
varmutex,empty,ful1:
semaphore:
=1,n,0;
buffer:
array[0,…,n-1]ofitem;
in,out:
integer:
=0,0;
begin
parbegin
producer:
begin
repeat
produceraniteminnextp;
wait(empty);
wait(mutex);
buffer(in):
=nextp;
in:
=(in+1)modn;
signal(mutex);
signal(full);
untilfalse
end
consumer:
begin
repeat
wait(full);
wait(mutex);
nextc:
=buffer(out);
out:
=(out+1)modn;
signal(mutex);
signal(empty);
consumertheiteminnextc;
untilfalse
end
parend
end
2哲学家进餐问题
哲学家进餐问题是典型的同步问题。
它是由Dijkstra提出并解决的。
该问题是描述有五个哲学家,它们的生活方式是交替地进行思考和进餐。
哲学家们共用一张圆桌,分别坐在周围的
五张椅子上。
在圆桌上有五个碗和五支筷子,平时一个哲学家
进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有
在他拿到两支筷子时才能进餐。
进餐毕,放下筷子又继续思考。
利用记录型信号量解决哲学家进餐问题
经分析可知,筷子是临界资源,用如下信号量数组实现互斥:
varchopstick:
array[0,…,4]ofsemaphore;
所有信号量被初始化为1,第i个哲学家的活动可描述为:
repeat
wait(chopstick[i]);先拿左边的筷子
wait(chopstick[(i+1)mod5]);再拿右边的筷子
eat;
signal(chopstick[i]);
signal(chopstick[(i+l)mod5]);
think;
untilfalse;
问题:
哲学家如各自拿起左边的筷子时,就会产生死锁。
对于这样的死锁问题可采取以下几种解决方法:
(1)至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。
(2)仅当哲学家的左、右两支筷子均可用时,才允许他拿起筷子进餐。
(3)规定奇数号哲学家先拿他左边的筷子,然后再去拿他右边的筷子;而偶数号哲学家则相反。
按此规定,将是1、2号哲学家竞争1号筷子;3、4号哲学家竞争3号筷子。
即五个哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一个哲学家能获得两支筷子而进餐。
3、读者一写者问题
v一个数据文件和记录,可以被多个进程共享,我们把只要求读该文件的进程称为reader进程,把其他进程称为writer进程。
允许多个进程同时读一个共享对象,因为读操作不会使数据文件混乱。
但不允许一个writer进程和其他reader进程或writer进程同时访问共享对象。
一.利用信号量机制解法:
设置两个信号量,一个整型变量。
写互斥信号量wmutex:
用于实现一个写者与其它读写者互斥访问共享对象,事实上,它被第一个进入的读者和最后一个离去的读者使用,中间读者不用。
读互斥信号量rmutex:
使读者互斥访问readcount——当前读者进程数。
一个整型变量:
readcount初值为0。
读者—写者问题可描述如下:
semaphorermutex=1,wmutex=1;
Intreadcount=0;
While(true)
wait(rmutex);(rmutex代表的是读进程互斥访问readcount)
ifreadcount==0wait(wmutex);
readcount=readcount+1;
signal(rmutex);
Performreadoperation;
wait(rmutex);
readcount=readcount一1;
ifreadcount=0signal(wmutex);
signal(rmutex);
writer:
repeat
wait(wmutex);
Performwriteoperation;
signal(wmutex);
untilfalse;
end
进程通信
v进程的互斥与同步就是一种进程间的通信方式。
由于进程互斥与同步交换的信息量较少且效率较低,因此称这种通信方式为低级进程通信方式,相应的也将P、V原语称为两条低级进程通信原语。
第3章处理机调度与死锁
高级调度
•作业控制块JCB过程
每当作业进入系统时,系统便为每个作业建立一个JCB,根据作业类型将它插入相应后备队列中。
作业调度程序依据一定的调度算法来调度它们,被调度到的作业将会装入内存。
在作业运行期间,系统就按照JCB中的信息对作业进行控制。
当一个作业执行结束进入完成状态时,系统负责回收分配给它的资源,撤销它的作业控制块。
低级调度
进程调度可采用下述两种方式:
•1.非抢占方式(Non-PreemptiveMode)
•采用这种调度方式时,一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而被阻塞时,才再把处理机分配给其它进程,决不允许某进程抢占已经分配出去的处理机。
•优点是实现简单、系统开销小,适用于大多数的批处理系统环境。
但它难于满足紧急任务的要求:
立即执行,因而可能造成难以预料的后果。
显然,在要求比较严格的实时系统中不宜采用这种调度方式。
•2.抢占方式(PreemptiveMode)
•这种调度方式,允许调度程序根据某种原则,去停止某个正在执行的进程,将已分配给该进程的处理机,重新分配给另一进程;抢占的原则有:
•
(1)时间片原则。
各进程按时间片运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。
这种原则适用于分时系统、大多数实时系统,以及要求较高的批处理系统。
•
(2)优先权原则。
通常是对一些重要的和紧急的作业赋予较高的优先权。
当这种作业到达时,如果其优先权比正在执行进程的优先权高便停止正在执行的进程,将处理机分配给优先权高的进程,使之执行
•(3)短作业(进程)优先原则,当新到达的作业(进程)比正在执行的作业(进程,明显地短时,将剥夺长作业(进程)的执行,将处理机分配给短作业(进程),使之优先执行。
中级调度
•中级调度又称为中程调度(Medium-TermScheduling)。
引入中级调度的主要目的,是为了提高内存的利用率和系统吞吐量。
为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。
•中级调度实际上就是存储器管理中的对换功能。
调度算法
•先来先服务调度算法(FCFS)
•作业调度和进程调度都可使用,最简单,本质上属于非剥夺方式。
•有利于长作业/进程。
显然有利于CPU繁忙型的作业(如通常的科学计算),而不利于I/O繁忙阻的作业/进程(如大多数的事务处理)。
•短作业(进程)优先调度算法(SJF/SPF)
•有利于短作业/进程。
平均周转时间短,系统吞吐量高。
•缺点:
长作业可能发生“饥饿”现象,也不能保证紧迫性作业(进程)会得到及时处理,用户可能会有意或无意地缩短其作业的估计执行时间。
•优先权调度算法
一、优先权调度算法的类型
为了照顾到紧迫型作业在进入系统后便能获得优先处理引入
最高优先权调度算法,它常被用于批处理系统中作为作业调度