(1)操作系统的目标
1.有效性(提高系统资源利用率,提高系统的吞吐量) 2.方便性3.可扩充性4.开放性
(2)操作系统的作用
1.OS作为用户与计算机硬件系统之间的接口
2.OS作为计算机系统资源的管理者
3.OS实现了对计算机资源的抽象
(3)单道批处理系统概念
由于系统对作业的处理都是成批地进行的,且在内存中始终只保持一道作业,顾称为单道批处理系统。
特征:自动性,顺序性,单道性
(4)多道批处理系统概念
用户所提交的作业都先存放在外存上并排成一个队列,成为“后备队列”,然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使他们共享CPU和系统中的各种资源
(5)分时系统的特点(多独及交)将一台计算机提供给多个用户同时使用
在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互的方式使用计算机,共享主机中的资源
1.多路性2.独立性3.及时性4.交互性
(6)实时系统的特点
实时系统指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
(7)操作系统的概念
操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。
(8)分时系统和实时系统的比较
1.多路性(实时信息处理系统也按分时原则为多个终端用户服务。实时控制系统的多路性则主要表现在系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制。而分时系统中的多路性则与用户情况有关,时多时少。)
2.独立性(实时信息处理系统中的每个终端用户在向实时系统提出服务请求时,是彼此独立地操作,互不干扰;而实时控制系统中,对信息的采集和对对象的控制也都是彼此互不干扰。)
3.及时性(实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微秒。)
4.交互性(实时信息处理系统虽然也具有交互性,人与系统的交互仅限于访问系统中某些特定的专用服务程序。分时系统向终端用户提供数据处理和资源共享等服务。 )
5.可靠性(实时系统则要求系统具有高度的可靠性。在实时系统中,往往都采取了多级容错措施来保障系统的安全性及数据的安全性。)
(9)操作系统的基本特征
1.并发性
(并行与并发的区别:并行性是指两个或多个事件在同一时刻发生,并发性是指两个或多个事件在同一时间间隔内发生)
2.共享性
3.虚拟技术
4.异步性
(10)操作系统的主要功能
1.处理机管理2.存储器管理3.设备管理4.文件管理
(11)操作系统与用户之间的接口
1.用户接口(联机用户接口,脱机用户接口,图形用户接口)
2.程序接口
(1)进程的概念,结构
结构特征:由程序段,相关的数据段和PCB构成了进程实体
为了使程序能并发执行,且为了对并发执行的程序加以描述和控制,引入“进程”的概念
概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
(2)进程状态的转换 P38 图2.5 图2.6
(3)进程控制块
作用:进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。
进程控制块中的信息:1.进程标识符2.处理机状态3.进程调度信息4.进程控制信息
进程控制块的组织方式:1.链接方式2.索引方式
(4)原语(Primitive)
由若干条指令组成的,用于完成一定功能的一个过程。
(5)进程同步的两种制约关系
1.间接相互制约关系2.直接相互制约关系
(6)临界资源,临界区
许多硬件资源如打印机、磁带机等,都属于临界资源(Critical Resouce),诸进程间应采取互斥方式,实现对这种资源的共享。
人们把在每个进程中访问临界资源的那段代码称为临界区(critical section)。
(7)同步机制应遵循的规则
1.空闲让进2.忙则等待3.有限等待4.让权等待
(8)信号量机制 P50
1.整型信号量2.记录型信号量3.AND型信号量4.信号量集
(9)管程
代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个操作系统的资源管理模块,我们称之为管程。
一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
(10)进程通信类型
1.共享存储器系统2.消息传递系统3.管道通信系统
(11)线程概念,与进程对比
在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
对比:线程具有许多传统进程所具有的特征,所以又称为轻型进程,把传统进程成为重型进程。通常一个进程拥有若干个线程,至少有一个线程
1.调度性:线程作为调度和分派的基本单位,进程作为资源拥有的基本单位
2.并发性:进程和线程都可以并发执行,使得操作系统具有更好的并发性,提高系统资源利用率和系统的吞吐量。
3.拥有资源:线程不拥有系统资源,但可以访问其隶属的进程的资源,所有线程可以共享进程中的资源。
4.系统开销:进程远高于线程,由于进程中的多个线程具有相同的地址空间,在同步和通信的实现方面线程比进程容易。
(12)经典进程的同步问题P58
1.生产者-消费者问题
(原则:只要缓冲池未满,生产者可将消息送入缓冲池;只要缓冲池未空,消费者便可从缓冲池取走一个消息)先执行对资源信号量的wait操作,再进行对互斥信号量的wait操作。顺序不能颠倒,不然会导致进程死锁。
(记录型信号量)
Var mutex,empty,full:semaphore:=1,n,0;
Buffer:array[1,..,n-1]of item;
in,out:integer:=0,0;
begin
parbegin
Producer:
Var nextp:item;
begin
repeat
producer an item nextp;
wait(empty);
wait(mutex);
buffer(in):=nextp;
in=(in+1)mod n;
signal(mutex);
signal(full);
until false;
end
Consumer:
Var nextc:item;
begin
repeat
wait(full);
wait(mutex);
nextc:=buffer(out);
out:=(out+1)mod n;
signal(mutex);
signal(empty);
consumer the item nextc;
until false;
end
parend
end
AND信号量:用Swait(empty,mutex)代替wait(empty)和wait(mutex);等等
2.哲学家进餐问题
记录型信号量
Var chopstick:array[0,...,4] of semaphore;
Var mutex:semaphore:=1;
Philosophyi ;
Begin
Parbegin
Repeat
Think;
Wait(mutex);
Wait(chopstick[i]);
Wait(chopstick[(i+1)mod 5]);
Signal(mutex);
Eat;
Signal(chopstick[i]);
Signal(chopstick[(i+1)mod 5]);
Unitl false;
Parend
End
AND信号量(好)
Think;
Swait(chopstick[i],chopstick[(i+1)mod 5]);
Eat;
Ssignal(chopstick[i],chopstick[(i+1)mod 5]);
3.读者-写者问题(被用来测试新同步原语)
保证一个Writer进程必须与其他进程互斥地访问共享对象地同步问题.
实现读或写时的互斥设置一个互斥信号量,另外设置一个整型信号量Readcount表示正在读的进程数目。因为Readcount是一个可被多个reader进程访问的临界资源,为它设置一个互斥信号量rmutex。
只要有一个Reader进程在读,便不允许Writer进程去写
写者子程序设计
Writer:
Begin
Repeat
Wait(wmutex);
Perform write operation;
Sinal(wmutex);
Until false;
End
读者子程序设计
Reader:
Begin
Repeat
Wait(rmutex);
If readercount=0 then wait(wmutex);
Readercount:=readercount+1;
Signal(rmutex);
Perform read operation;
Wait(rmutex);
Readercount:=readercount-1;
If readercount=0 then signal(wmutex);
Signal(rmutex);
Until false;
End
(13)程序并发执行时的特征
程序并发执行时会产生间断性特征,失去封闭性和可再现性
1.高、中、低调度区别和联系
高级调度:又称为作业调度或长程调度,主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存。调度对象是作业
中级调度:又称中程调度,主要目的是为了提高内存利用率和系统吞吐量,实际上是存储器管理中的对换功能。应使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。中级调度实际上就是存储器管理中的对换功能。
低级调度:又称为进程调度或短程调度,它所调度的对象是进程(或内核级线程),进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型OS中,都必须配置这级调度。
主要功能是首先保存处理机的现场信息,按某种算法选取进程,把处理器分配给进程。
2.作业调度算法P91
周转时间=完成时间-到达时间;带权周转时间=周转时间/服务时间
1.先来先服务调度算法FCFS(有利于长作业(进程),不利于短作业(进程))
FCFS有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业
2.短作业(进程)SJ§F优先调度算法
该算法对长作业不利,完全没考虑作业的紧迫程度,作业进程的长短是根据用户所提供的估计执行时间而定的,可能不准确。
3.高优先权优先调度算法FPF
优先权=(等待时间+要求服务时间)/要求服务时间
等待时间与服务时间之和就是系统对改作业的响应时间,优先权又相当于响应比Rp,
Rp=响应时间/要求服务时间
4.基于时间片的轮转调度算法
3.时间片大小
在时间片轮转算法中,时间片大小应略大于一次典型的交互所需要的时间
考虑三个因素:系统对相应时间的要求,就绪队列中进程的数目和系统的处理能力
4.死锁概念,产生原因,必要条件,处理死锁方法
死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程将永远不能再向前推进
产生原因:1.竞争资源引起进程死锁2.进程推进顺序不当引起死锁
必要条件:1.互斥条件2.请求和保持条件3.不剥夺条件4.环路等待条件
处理死锁方法:1.预防死锁2.避免死锁3.检测死锁4.解除死锁
避免死锁的实质是:系统在进行资源分配时,如何使系统不进入不安全状态
进入了不安全状态仅说明当前情况下的资源分配出现不安全的因素,而随着时间的推移,资源的分配可能会发生变化的,原来占有临界资源的进程可能因为某些原因自己阻塞起来,并放弃已拥有的临界资源跑到阻塞队列后排队,这样原来请求这些临界资源的进程就有可能满足其需要而可以执行。
5.常用的几种实时调度算法
1.最早截止时间优先EDF算法
2.最低松弛度优先LLF算法
1.存储器的层次结构:
CPU寄存器、主存、辅存, 寄存器和主存储器又被称为可执行存储器
主存储器(简称内存或主存),用于保存进程运行时的程序和数据,也称为可执行存储器
寄存器用于加速存储器的访问速度
将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。
将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数
2.将一个模块装入内存时:程序装入的三种方式
绝对装入方式
在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。
绝对装入方式只能将目标模块装入到内存中事先指定的位置,只适用于单道程序环境
可重定位装入方式
在多道程序环境下,多个目标模块的起始地址通常都是从0开始,程序中的其他地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位。静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。
动态运行时装入方式(概念)
也称为动态重定位,程序在内存中如果发生移动,就需要釆用动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址均为相对地址,这种方式需要一个重定位寄存器的支持。动态重定位的特点是可以将程序分配到不连续的存储区中;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。
3.连续分配方式:
1.单一连续分配2.固定分区分配3.动态分区分配4.动态重定位分区分配
4.动态分区分配的分区分配算法:**
1.首次适应算法2.循环首次适应算法3.最佳适应算法4.最坏适应算法(前四统称为顺序搜索法)5.快速适应算法
5.伙伴系统:
伙伴系统规定,无论已分配分区或空闲分区,其大小均为2的k次幂,k为整数
在伙伴系统中,其分配和回收的时间性能取决于查找空闲分区的位置和分割、合并空闲分区所花费的时间。
6.可重定位分区分配:P127-128
什么是可重定位分区分配;
将内存中的所有作业进行移动,使它们全都相邻接,把原来分散的多个小分区拼接成一个大分区,这是作业即可装入,通过移动内存中作业的位置,把原来多个分散的小分区拼接成一个大分区的方法,成为“拼接”和“紧凑”,再拼接后某些用户程序在内存中的位置发生了变化,若不对程序和数据的地址进修修改变换,则无法执行,在每次“紧凑”后,都必须对移动了的程序或数据进行“重定位”。
重点关注动态重定位的实现4-10
在动态运行时装入的方式,作业装入内存的所有地址仍然是相对地址,将相对地址转换为物理地址的工作,被推迟到程序指令真正要执行时进行,为了不影响指令的执行速度,必须有硬件地址变换机构的支持,须在系统中增设一个重定位的寄存器,来存放程序在内存中的起始地址。程序在执行时,真正访问的内存地址时相对地址与重定位寄存器中的地址相加而成的。地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行,故称为动态重定位。
7.对换(Swapping)概念:
所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据调入内存。对换是提高内存利用率的有效措施。
8.基本分页存储管理方式P130 ——P132图4-13 图4-14结合图说原理
1)页面和物理块
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。
2) 页面大小
在分页系统中的页面其大小应适中。页面若太小,一方面虽然可使内存碎片减小,从而减少了内存碎片的总空间,有利于提高内存利用率,但另一方面也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存;此外,还会降低页面换进换出的效率。然而,如果选择的页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。因此,页面的大小应选择适中,且页面大小应是2的幂,通常为512 B~8 KB。
3)页表
在分页系统中,允许将进程的各个页离散地存储在内存不同的物理块中,但系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立了一张页面映像表,简称页表。可见,页表的作用是实现从页号到物理块号的地址映射。
地址变换机构:实现从逻辑地址到物理地址的转换(实际上只是将逻辑地址的页号转换为内存中的物理块号),借助页表来完成的。页表的功能可能由一组专门的寄存器来实现,页表大多驻留在内存中。页表寄存器PTR,在其中存放页表在内存的始址和页表长度。平时,进程未执行时,页表的始址和页表长度存放在本进程的PCB中,当调度程序调度某进程时,才将这两个数据装入页表寄存器中。
当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址(相对地址)分为页号和页内地址两部分,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。于是,这一错误将被系统发现并产生一地址越界中断。若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址到物理地址的变换。
提高地址变换速度,增设一个具有并行查询能力的特殊告诉缓冲寄存器,称为“联想寄存器”,或称为“快表”TLB。
在CPU给出有效地址后,由地址变换机构自动地将页号P送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的页号,便表示所要访问的页表项在快表中。于是,可直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中。如在块表中未找到对应的页表项,则还须再访问内存中的页表,找到后,把从页表项中读出的物理块号送地址寄存器;同时,再将此页表项存入快表的一个寄存器单元中,亦即,重新修改快表。但如果联想寄存器已满,则OS必须找到一个老的且已被认为不再需要的页表项,将它换出。
9.基本分段存储管理方式P135 ——P137(3地址变换机构图4-18 4分页和分段主要区别)
图4-18 图4-23
在该地址结构中,允许一个作业最长有 64 K个段,每个段的最大长度为64 KB。
在分段式存储管理系统中,则是为每个分段分配一个连续的分区,而进程中的各个段可以离散地移入内存中不同的分区中。为使程序能正常运行,亦即,能从物理内存中找出每个逻辑段所对应的位置,应像分页系统那样,在系统中为每个进程建立一张段映射表,简称“段表”。每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度,如图4-17 所示。段表可以存放在一组寄存器中,这样有利于提高地址转换速度,但更常见的是将段表放在内存中。 段表是用于实现从逻辑段到物理内存区的映射
地址变换机构:为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL,在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址,然后,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号;若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。
分页和分段的主要区别:
1.页是信息的物理单位,分页仅仅是由于系统管理的需要而不是用户的需要;段是信息的逻辑单位,分段的目的是为了能更好地满足用户的需要。
2.页的大小固定且由系统决定,是由机器硬件实现,段的长度不固定,决定于用户所编写的程序
3.分页的作业地址空间是一维的,分段的作业地址空间是二维的。
在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S
10. 虚拟存储器:
指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统.其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存
11.页面置换算法P150:
1.最佳Optimal置换算法(选择的淘汰的页面是以后永不使用的,或许在最长(未来)时间内不再被访问的页面。2.先进先出页面置换FIFO算法(淘汰最先进入内存的页面,选择在内存中驻留时间最久的页面予以淘汰)(1,2重点)3.最近最久未使用LRU置换算法(选择最近最久未使用的页面予以淘汰)
1.缓冲技术
什么是缓冲区,缓冲区的作用,有什么样的缓冲区及工作原理
作用:
1.缓和CPU和I/O设备间速度不匹配的矛盾
2.减少对CPU的中断频率,放宽对CPU中断响应时间的限制
3.提高CPU和I/O设备之间的并行性
单缓冲、双缓冲、循环缓冲、缓冲池
单缓冲:每当用户进程发出一个I/O请求时,操作系统便在主存中为其分配一个缓冲区
双缓冲(缓冲对换):为了加快输入和输出速度,提高设备利用率,在设备输入时,先将数据送入第一缓冲区,装满后变转向第二缓冲区。
循环缓冲:将多个缓冲组织成循环缓冲的形式,多缓冲区分为三个类型:空缓冲区R、以装满的缓冲区G和正在使用的工作缓冲区C,设置指针
缓冲池(公用缓冲池):池中设置了多个可供若干进程共享的缓冲区
缓冲区的工作方式:收容输入、提取输入、收容输出、提取输出
2.通道技术
什么是通道,为什么有通道
I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作
通道在CPU和设备控制器之间,主要目的为了建立独立的I/O操作,不仅使数据的传送能独立于CPU,而且也希望有关对I/O操作的组织、管理及其结束处理尽量独立,以保证CPU有更多的时间去进行数据处理。/或者说使一些原来由CPU处理的I/O任务转由通道承担,从而把CPU从繁忙的I/O任务中解脱。
通道的三种类型:1.字节多路通道2.数组选择通道3.数组多路通道
I/O通道控制方式:将对一个数据块为单位的干预减少到对一组数据块的读写及有关控制和管理为单位的干预,实现CPU、通道、I/O设备三者的并行操作
3.虚拟设备技术(Spooling系统)
什么是spooling系统?结构?工作机理?举例说明(打印机)
4.I/O设备与设备控制器间的接口的信号类型:数据信号线、控制信号线、状态信号线
5.设备控制器:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是I/O设备与CPU之间的接口
6.设备独立性:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。
好处:设备分配时的灵活性、易于实现I/O重定向
逻辑设备表(LUT)设备控制表(DCT)