最新考研计算机强化班讲义汇编.docx
《最新考研计算机强化班讲义汇编.docx》由会员分享,可在线阅读,更多相关《最新考研计算机强化班讲义汇编.docx(246页珍藏版)》请在冰点文库上搜索。
最新考研计算机强化班讲义汇编
操作系统
第一章操作系统概述
1.1操作系统的目标和作用
1.1.1操作系统的目标
目标:
1.方便性。
不需要人人都是程序员
2.有效性。
工作协调高效
3.可扩充性。
各自独立发展
4.开放性。
移植和互操作
1.1.2操作系统的作用
1.OS作为用户与计算机硬件系统之间的接口OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
(从用户角度来看,来操纵计算机。
)
(1)命令输入。
形式又分为以下几种:
命令行(CommandLineInput):
由OS提供的一组联机命令(语言),用户可通过键盘输入有关命令,来直接操纵计算机系统。
图形用户界面(GUI):
用户通过显示设备上的窗口和图标来操纵计算机系统和运行自己的程序。
自然输入方式(NUI):
用户通过语音识别输入来操纵计算机系统和运行自己的程序。
(2)系统调用方式(SystemCall)。
OS提供了一组系统调用,用户可在自己的应用程序中通过相应的使用编程调用API
1.1.3推动操作系统发展的主要动力
1.不断提高计算机资源利用率
2.方便用户
3.器件的不断更新换代
4.计算机体系结构的不断发展用户的需求是推动OS发展的根本动力
2.OS作为计算机系统资源的管理者在一个计算机系统中通常都含有各种各样的硬件和软件资源。
需要空间和时间来使用这些资源,OS合理调配和使用。
(这是从管理者的角度来看)
3.OS用作扩展机、虚拟机隐藏了计算机具体细节,为用户展现的是一台虚拟机,功能上扩展了几个功能部件的组合。
(这是从发展的角度来看)Government
1.2操作系统的发展过程
1.2.1无操作系统的计算机系统
1.人工操作方式
从第一台计算机ENIAC诞生(1945年2月)到50年代中期的计算机,属于第一代。
这种人工操作方式有以下两方面的缺点:
(1)用户独占全机。
(2)CPU等待人工操作。
2.脱机输入/输出(Off-LineI/O)方式这种脱机I/O方式的主要优点如下:
(1)减少了CPU的空闲时间。
(2)提高I/O速度。
1.2.2单道批处理系统
1.单道批处理系统(SimpleBatchProcessingSystem)的处理过程
2.单道批处理系统的特征
该系统的主要特征如下:
(1)自动性。
(2)顺序性。
(3)单道性。
1.2.3多道批处理系统
1.多道程序设计的基本概念
多道批处理系统(MultiprogrammedBatchProcessingSystem)。
在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为后备队列;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
这种调度称之为作业调度。
1.2.4分时系统
1.分时系统(TimeSharingSystem)的产生
如果说,推动多道批处理系统形成和发展的主要动力,是提高资源利用率和系统吞吐量,那么,推动分时系统形成和发展的主要动力,则是用户的需求。
用户的需求具体表现在以
下几个方面:
(1)人机交互。
(2)共享主机。
(3)便于用户上机。
2.分时系统实现中的关键问题
分时系统性能好坏的主要指标是响应时间。
(1)及时接收。
(2)及时处理。
(3)符合使用习惯。
在OS中引入多道程序设计技术可带来以下好处:
(1)提高CPU的利用率。
(2)可提高内存和I/O设备利用率。
(3)增加系统吞吐量。
2.多道批处理系统的特征
(1)多道性。
(2)无序性。
(3)调度性。
3.多道批处理系统的优缺点
(1)资源利用率高。
(2)系统吞吐量大。
(3)平均周转时间长。
(4)无交互能力。
4.多道批处理系统需要解决的问题
(1)处理机管理问题。
(2)内存管理问题。
(3)I/O设备管理问题。
(4)文件管理问题。
(5)作业管理问题。
3.分时系统的特征
(1)多路性。
(2)独立性。
(3)及时性。
(4)交互性。
1.2.5实时系统
实时系统(Real-TimeSystem)是指系统能及时(或即时)响应外部事件的请求,在规定的间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
1.3操作系统的基本特性
1.3.1并发(Concurrence)
并行性和并发性是既相似又有区别的两个概念,并行性是指两个或多个事件在同一时刻发生;而并发性是指两个或多个事件在同一时间间隔内发生。
最基本的特征!
1.3.2共享(Sharing)
在操作系统环境下,所谓共享是指系统中的资源可供内存中多个并发执行的进程(线程)共同使用。
1.3.3虚拟(Virtual)
操作系统中的所谓虚拟,是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。
1.3.4异步性(Asynchronism)
在多道程序环境下,多个进程是以停停走走的方式运行。
失去封闭性
第二章进程管理
2.1进程的基本概念
2.1.1程序的顺序执行及其特征
2.1.2前趋图
前趋图(PrecedenceGraph)是一个有向无循环图,记为DAG(DirectedAcyclicGraph),用于描述进程之间执行的前后关系。
2.1.3程序的并发执行及其特征
2.1.4进程的特征与状态
OneprogramwhichhasanindependentfunctionworksoncertaindatasetdynamicallyandallocateresourcesdynamicallyWhatisaprocess?
一个具有一定独立功能的程序对某个数据
集合上的一次动态执行过程和资源分配过程
Code,Data,ProcessTableTheDifferenceBetweenProcessandProgramProcessisdynamic,andtheprogramisstaticProcessistemporary,theprogramispermanence
TheelementsofprocessandprogramisdifferentCodeData–PTTherelationshipsofprocessandprogramarecomplexCreateSystemcall
2.进程的三种基本状态
1)就绪(Ready)状态2)执行状态3)阻塞状态
2.1.5进程控制块
1.进程控制块的作用
进程控制块的作用是记录一个独立运行的进程的基本信息。
或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
2.进程控制块中的信息
3.进程控制块的组织方式
1)链接方式2)索引方式
2.2进程控制
2.2.1进程的创建
(1)用户登录。
(2)作业调度。
(3)提供服务。
(4)应用请求。
(1)申请空白PCB。
(2)为新进程分配资源。
(3)初始化进程控制块。
(4)将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就
绪队列。
2.进程的终止过程
(1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
(2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
(3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。
(4)将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
(5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息。
2.2.2进程的终止
1)正常结束(自愿的)
2)异常结束
普通错误退出(自愿的)
致命错误退出(非自愿的)
3)外界干预(非自愿的)
2.2.3进程的阻塞与唤醒
1.引起进程阻塞和唤醒的事件
1)请求系统服务
2)启动某种操作
3)新数据尚未到达
4)无新工作可做
2.2.4进程的挂起与激活
2.3进程同步
2.3.1进程同步的基本概念
1.两种形式的制约关系
(1)间接相互制约关系。
(2)直接相互制约关系。
2.临界资源(CriticalResource)
3.临界区(criticalsection)
一个飞机订票系统,两个终端,运行T1、T2进程
T1:
……
read(x);
ifx>=1then
x:
=x-1;
write(x);
……
T2:
……
read(x);
ifx>=1then
x:
=x-1;
write(x);
……
CriticalRegions
Comingdatablocks
Synchronization
4.同步机制应遵循的规则
(1)空闲让进。
(2)忙则等待。
(3)有限等待。
(4)让权等待。
(Peterson’sAlgorithm):
先修改、后检查、后修改者等待正确的算法
turn=j;描述可进入的进程(同时修改标志时)
在进入区先修改后检查,并检查并发修改的先后:
检查对方flag,如果不在临界区则自己进入--空闲则入
否则再检查turn:
保存的是较晚的一次赋值,则较晚的进
程等待,较早的进程进入--先到先入,后到等待
MutualExclusionwithBusyWaiting
Enteringandleavingacriticalregionusingthe
TSLinstruction
Sleepand
Wakeup
Producer-consumerproblemwithfatalracecondition
2.3.2信号量机制
1.整型信号量
最初由Dijkstra把整型信号量定义为一个整型量,仅能通过初始化和两个标准的原子操作(AtomicOperation)wait(S)和signal(S)来访问。
两个操作被分别称为P、V操作(primitive)。
wait(S):
whileS≤0donoop
S∶=S-1;
signal(S):
S∶=S+1;
2.记录型信号量
在整型信号量机制中的wait操作,只要是信号量S≤0,就会不断地测试。
因此,该机制并未遵循让权等待的准则,而是使进程处于忙等的状态。
记录型信号量机制,则是一种不存在忙等现象的进程同步机制。
但在采取了让权等待的策略后,又会出现多个进程等待访问同一临界资源的情况。
为此,在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。
记录型信号量是由于它采用了记录型的数据结构而得名的。
P原语wait(s);down(s);P(s)
--s.count;//表示申请一个资源;
if(s.count<0)//表示没有空闲资源;
{调用进程进入等待队列s.queue;阻塞调用进程;}
V原语signal(s);up(s);V(s)
++s.count;//表示释放一个资源;
if(s.count<=0)//表示有进程处于阻塞状态;
{从等待队列s.queue中取出一个进程P;进程P进入就绪队列;}
Semaphores
Theproducer-
consumer
problemusing
semaphores
Monitors
Exampleofamonitor
2.4经典进程的同步问题
2.4.1生产者消费者问题
1.利用记录型信号量解决生产者消费者问题
DiningPhilosophers
Philosopherseat/think
Eatingneeds2forks
Pickoneforkatatime
Howtopreventdeadlock
2.4.2哲学家进餐问题
让奇数号的哲学家先取右手边的筷子,让偶数号的哲学家先取左手边的筷子。
send(i)
begin
ifimod2=0thenelse
{{
P(c[i]);P(c[i+1mod5]);
P(c[i+1mod5]);P(c[i]);
eat;eat;
V(c[i+1mod5]);V(c[i]);
V(c[i]);V(c[i+1mod5]);
}}
end
2.4.3读者写者问题
读者-写者问题描述
TheReaders
andWriters
Problem
1.利用记录型信号量解决读者写者问题
TheSleepingBarberProblem
TheSleeping
Barber
Problem
Solutionto
sleepingbarber
problem
Sharedmemory(共享内存)
Message(消息机制)
Pipe(管道)
Signal(信号)
Socket(套接字)
InterprocessCommunication
2.5进程通信2.5.1进程通信的类型
1.共享存储器系统(SharedMemorySystem)
(1)基于共享数据结构的通信方式。
(2)基于共享存储区的通信方式。
2.消息传递系统(Messagepassingsystem)
在消息传递系统中,进程间的数据交换,
是以格式化的消息(message)为单位的;
在计算机网络中,又把message称为报
文。
程序员直接利用系统提供的一组通信命令
(原语)进行通信。
3.管道(Pipe)通信
管道是指用于连接一个读进程和一个
写进程以实现他们之间通信的一个共享文
件,又名pipe文件。
这种方式首创于UNIX
系统,由于它能有效地传送大量数据,因
而又被引入到许多其它操作系统中。
2.5.2消息传递通信的实现方法
1.直接通信方式
通信命令(原语):
Send(Receiver,message);发送一个消息给接收进程;
Receive(Sender,message);接收Sender发来的消息;
例如,原语Send(P2,m1)表示将消息m1发送给接收进程P2;而原语Receive(P1,m1)
则表示接收由P1发来的消息m1。
不指定发送者的接收原语可表示为:
Receive(id,message);
利用直接通信原语,解决生产者消费者问题。
repeat
…
produceaniteminnextp;
…
send(consumer,nextp);
untilfalse;
repeat
receive(producer,nextc);
…
consumetheiteminnextc;
untilfalse;
Message
Passing
.The
producer-
consumer
problem
withN
messages
2.间接通信方式
(1)信箱的创建和撤消。
(2)消息的发送和接收。
Send(mailbox,message);将一个消息发送到指定信箱;
Receive(mailbox,message);从指定信箱中接收一个消息;
3.进程同步方式
(1)发送进程阻塞、接收进程阻塞。
(2)发送进程不阻塞、接收进程阻塞。
(3)发送进程和接收进程均不阻塞。
2.6线程
2.6.1线程的基本概念
为使程序能并发执行,系统还必须进行以下的一系列操作。
1)创建进程
2)撤消进程
3)进程切换
1.线程的引入
TheThreadModel
(a)Threeprocesseseachwithonethread
(b)Oneprocesswiththreethreads
ForExampleTheThreadModel
Eachthreadhasitsownstack
2.线程的属性
(1)轻型实体(容易创建和撤销)。
(2)独立调度和分派的基本单位。
(3)可并发执行。
(4)共享进程资源。
(5)适应硬件的发展
TheThreadModel
Itemssharedbyallthreadsinaprocess
Itemsprivatetoeachthread
3.线程的状态
(1)状态参数。
(2)线程运行状态。
5.多线程OS中的进程
在多线程OS中,进程是作为拥有系统资源的基本单位,通常的进程都包含多个线程并为它们提供资源,但此时的进程就不再作为一个执行的实体。
多线程OS中的进程有以下属性:
(1)作为系统资源分配的单位。
(2)可包括多个线程。
(3)进程不是一个可执行的实体。
4.线程的创建和终止
在多线程OS环境下,应用程序在启动时,通常仅有一个线程在执行,该线程被人们称为初始化线程。
它可根据需要再去创建若干个线程。
终止线程的方式有两种:
一种是在线程完成了自己的工作后自愿退出;另一种是线程在运行中出现错误或由于某种原因而被其它线程强行终止。
2.6.2线程间的同步和通信
1.互斥锁(mutex)
互斥锁是一种比较简单的、用于实现线程间对资源互斥访问的机制。
2.条件变量
Useofabarrier
processesapproachingabarrier
allprocessesbutoneblockedatbarrier
lastprocessarrives,allareletthrough
2.6.3内核支持线程和用户级线程
1.内核支持线程
这里所谓的内核支持线程,也都同样是在内核的支持下运行的,即无论是用户进程中的线程,还是系统进程中的线程,他们的创建、撤消和切换等,也是依靠内核实现的。
此外,在内核空间还为每一个内核支持线程设置了一个线程控制块,内核是根据该控制块而感知某线程的存在的,并对其加以控制。
ImplementingThreadsintheKernel
Athreadspackagemanagedbythekernel
2.用户级线程
用户级线程仅存在于用户空间中。
对于这种线程的创
建、撤消、线程之间的同步与通信等功能,都无须利用
系统调用来实现。
对于用户级线程的切换,通常是发生在
一个应用进程的诸多线程之间,这时,也同样无须内核的
支持。
由于切换的规则远比进程调度和切换的规则简单,
因而使线程的切换速度特别快。
可见,这种线程是与内核
无关的。
ImplementingThreadsinUserSpace
Auser-levelthreadspackage
HybridImplementations
Multiplexinguser-levelthreadsontokernel-
levelthreads
TheMultithreadingRevolution
第三章处理机调度与死锁
3.1处理机调度的基本概念
BurstsofCPUusagealternatewithperiodsofI/Owait
aCPU-boundprocess
anI/O-boundprocess
SchedulingAlgorithmGoals
3.1.1高级、中级和低级调度
Threelevelscheduling
FCFS
SJF
HRF
SRF
FCFS
SPF
RR
PS
1.高级调度(HighScheduling)
宏观调度
在每次执行作业调度时,都须做出以下两个决定。
1)接纳多少个作业?
2)接纳哪些作业?
2.低级调度(LowLevelScheduling)微观调度
1)非抢占方式(Non-preemptiveMode)
优点:
实现简单、系统开销小。
调度时机:
①正在执行的进程执行完毕退出
②发生某事件而被阻塞(外部原因)
③执行中的进程提出阻塞请求(自我原因)
2)抢占方式(PreemptiveMode)
优点:
处理及时,实现复杂
抢占的时机:
①具有抢先权的进程创建就绪
②具有抢先权的进程被唤醒进入就绪
③具有抢先权的进程从挂起进入就绪
3.中级调度(Intermediate-LevelScheduling)
中程调度
引入中级调度的主要目的,是为了提高内存利用率和系统吞吐量。
中级调度的算法主要由内存管理来实现,与高级调度和低级调度的算法不同。
3.1.2调度队列模型
1.仅有进程调度的调度队列模型
2.具有高级和低级调度的调度队列模型
3.同时具有三级调度的调度队列模型
3.1.3选择调度方式和调度算法的若干准则
1.面向用户的准则
(1)周转时间短(批处理)
平均周转时间
带权周转时间WT/TS
而平均带权周转时间
(2)响应时间快(交互式系统)
(3)截止时间的保证(实时系统)
(4)优先权准则(特权处理)
2.面向系统的准则
(1)系统吞吐量高(批处理)
(2)处理机利用率好(所有的)
(3)各类资源的平衡利用(所有的)
符合习惯思维(交互式)
具有前瞻预测(实时系统)
3.2调度算法
3.2.1先来先服务和短作业(进程)优先调度算法
1.先来先服务调度算法
2.短作业(进程)优先调度算法
FCFS的特点
比较有利于长作业,而不利于短作业。
有利于CPU繁忙的作业,而不利于I/O繁
忙的作业。
SJF的特点
优点:
比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;提高系统的吞吐量;
缺点:
对长作业非常不利,可能长时间得不到执行;未能依据作业的紧迫程度来划分执行的优先级;难以准确估计作业(进程)的执行时间,从而影响调度性能。
SJF的变型
.“最短剩余时间优先”SRT(Shortest
RemainingTime)
允许比当前进程剩余时间更短的进程来抢占
.“最高响应比优先”HRRN(Highest
ResponseRatioNext)
响应比R=(等待时间+要求执行时间)/要
求执行时间
是FCFS和SJF的折衷
3.2.2高优先权优先调度算法
1.优先权调度算法的类型
1)非抢占式优先权算法
2)抢占式优先权调度算法
2.优先权的类型
1)静态优先级
创建进程时就确定,直到进程终止前都不改变。
通常是一个整数。