操作系统要点总结
Posted tc_goshawk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统要点总结相关的知识,希望对你有一定的参考价值。
1.2.1.2脱机输入输出方式
1.为了解决人机矛盾和cup和i/o设备之间速度不匹配的矛盾
2.该技术是首先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的数据输入到磁带上。当cup需要这些程序和数据时,再从磁带上高速地调入内存
1.优点:a.减少cpu空闲时间 b.提高了i/o速度
1.2.2单道批处理系统
1.先将一批作业以脱机方式输入到磁盘上,在系统配有的监督程序的控制下,将这批作业一个接一个地连续处理
2.虽然系统对作业的处理时成批的,但在内存中始终只保持一道作业
3.缺点:系统资源得不到充分利用
1.2.3多道批处理系统
1.用户所提交的作业先放在外存上,排成“后备队列”,由调度程序按一定算法,从后备队列中选若干作业调入内存,使它们共享cpu和各种系统资源
2.优缺点:a.资源利用率高 b.系统吞吐量大 c.平均周转时间长 b.无交互能力
3.需要解决的问题:1)处理机争用 2)内存分配和保护 3).i/o设备分配 4)文件组织和管理 5)作业管理 6)用户和系统的接口问题
4.提高资源利用率和系统吞吐量
1.2.4分时系统
1.用户需求:1)人机交互 2)共享主机
2.实现中的关键问题:1)及时接受 2)及时处理
3.分式系统特征:1)多路性 2)独立性 3)及时性 4)交互性
1.2.5实时系统
1.任务类型:1)周期性和非周期性实时任务 2)硬实时任务和软实时任务
2.特征:1)多路性 2)独立性 3)及时性 4)交互性 5)可靠性
1.3操作系统的基本特征
1.并发 1)并发和并行 2)引入进程
2.共享 1)互斥共享 2)同时访问
3.虚拟 1)时分复用 2)空分复用 3)
4.异步:进程以不可预知的速度向前推进,称为进程的异步性
1.4操作系统主要功能
1.处理机管理
1)进程控制 2)进程同步 3)进程通信 4)调度
2.存储器管理
1)内存分配 2)内存保护 3)地址映射 4)内存扩充
3.设备管理
1)缓冲管理 2)设备分配 3)设备处理
4.文件管理
1)文件存储空间管理 2)目录管理 3)文件读/写管理和保护
5.操作系统与用户之间的接口
1)用户接口 2)程序接口
2.1程序执行
1.顺序执行的特征
1)顺序性 2)封闭性 3)可再现性
2.并发执行的特征
1)间断性 2)失去封闭性 3)不可再现性
2.2进程的描述
1.进程:由程序段、相关数据段和PCB三部分构成了进程实体
2.进程特征:1)动态性 2)并发性 3)独立性 4)异步性
3.进程三种基本状态 1)就绪状态 2)执行状态 3)阻塞状态
4.创建状态和终止状态
5.挂起和激活原语
6.进程控制块中的信息
1)进程标识符 2)处理机状态 3)进程调度信息 4)进程控制信息
7.进程控制块的组织方式
1)线性方式 2)链接方式形成多个队列 3)索引方式
2.3进程控制
1.操作系统内核
1)支撑功能 a.中断处理 b.时钟管理 c.原语操作
2)资源管理功能 a.进程管理 b.存储器管理 c.设备管理
2.进程创建
1)引起创建进程的事件 a.用户登录 b.作业调度 c.提供服务 d.应用请求
2)进程创建过程 a.获取空白PCB b.获取资源 c.初始化PCB d.插入队列
3.进程终止
1)引起终止的事件 a.正常结束 b.异常结束 c.外界干预
2)进程终止过程 a.检索PCB b.终止执行 c.终止子孙进程 d.归还资源 e.移出;队列
4.引起进程阻塞和唤醒的事件
1)向系统请求共享资源失败
2)等待某种操作的完成
3)新数据尚未到达
4)等待新任务的到达
5.进程阻塞过程
1)进程通过阻塞原语block进行主动阻塞,进程立即停止,将PCB中现行状态由“执行”改为阻塞,并将PCB插入阻塞队列,转调度程序重新调度,将处理机分配给其他就绪进程,进行上下文切换
6.进程唤醒过程
1)当被阻塞的进程所期待的时间发生时,由有关进程调用唤醒原语wakeup,将等待该时间的进程唤醒
2)首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中
3)block与wakeup应该成对出现
7.进程挂起与激活
1)suspend执行过程:检查被挂起进程的状态,若处于活动就绪,则改为静止就绪;对于活动阻塞,则改为静止阻塞;为了方便用户或父进程考查该进程运行情况,将该进程PCB复制到指定内存区域;若被挂起的进程正在执行,则转向调度程序重新调度
2)Active执行过程:激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,则改为活动就绪;若为静止阻塞,则改为活动阻塞;若采用的是抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列时,检查是否需要进行重新调度
2.4进程同步
1.两种制约关系
1)间接相互制约:由于共享邻接资源产生的制约
2)直接相互制约:由于相互合作产生的制约
2.临界资源
1)在一段时间内只允许一个进程访问的资源,称为临界资源或独占资源
2)对于临界资源,多个进程之间采用互斥方式进行资源共享
3.临界区
1)把在每个进程中访问临界资源的那段代码称为临界区
2)在临界区前增加的一段用于检查临界资源是否正在被访问的代码称为进入区
3)在临界区后加一段用于将临界资源正被访问恢复成未访问标志的代码称为退出区
4)进程中除了进入区、临界区、退出区之外的其他部分代码称为剩余区
4.同步机制应遵循的规则
1)空闲让进
2)忙则等待
3)有限等待,避免进入死等
4)让权等待,避免进入忙等
5.信号量机制
1)整型信号量:表示资源数目的整型量S,用原子操作 P、V操作
2)记录型信号量
为了解决整型信号量的“忙等”问题,再增加一个进程链表指针list,用于链接所有等待进程
3)AND型信号量
基本思想:对于需要多个共享资源时,将进程在整个运行过程中需要的所有资源,一次性分配给进程,用完后全部释放
4)信号量集
1)对AND信号量机制加以扩充,对进程所申请的所有资源Si以及每类资源不同的资源需求量di在一次P、V原语操作中完成申请或释放,对信号量Si的测试值不再是1,而是分配下限ti,即要求Si>=ti否则不分配
2)Swait(S1,t1,d1,...Si,ti,di) Ssignal(S1,d1,...,Sn,dn),即如果Swait(3,5,2)的情况,虽然S>d,但是S<t,所以分配不成功
3)特殊情况:a.Swait(S,d,d) b.Swait(S,1,1) c.Swait(S,1,0)
6.管程机制
1)管程定义:代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成的资源管理模块
2)管程组成:a.管程的名称 b.局部于管程的共享数据结构说明 c.对该数据结构进行操作的一组过程 d.对局部于管程的共享数据设置初始值的语句
3)间接访问临界资源:所有进程要访问临界资源时,都只能通过管程间接访问,而管程每次只准许一个进程进入管程,执行管程内的过程,从而实现了进程互斥
4)条件变量
a.为了解决一个进程调用管程后阻塞或挂起时,其他进程被迫长时间等待
b.在管程中设置多个条件变量,每个条件变量保存一个用于记录因该条件变量而阻塞的所有进程的链表
c.操作x.wait:正在调用管程的进程因x条件需要被阻塞或挂起,则调用x.wait将自己插入到x条件的等待队列上,并释放管程,直到x条件变化,其他进程可以使用该管程
d.操作x.signal:正在调用管程的进程发现x条件发生了变化,则调用x.signal,重新启动一个因x条件而阻塞或挂起的进程
2.5进程同步经典问题
1.利用记录型信号量解决生产者-消费者问题
Int in = 0, out = 0;
Item buffer[n];
Semaphore mutex = 1, empty = n, full = 0;
Void producer(){
Do{
Producer an item nextp;
....
Wait(empty);
Wait(mutex);
Buffer[n] = nextp;
In = (in+1)%n;
Signal(mutex);
Signal(full);
}while(true);
}
Void consumer(){
Do{
Wait(full);
Wait(mutex);
Nextc = buffer[out];
Out = (out+1)%n;
Signal(mutex);
Signal(empty);
}while(true);
}
Void main(){
cobegin
producer(); consumer();
coend
}
1)对与互斥信号量mutex和资源信号量empty、full的wait()和signal()操作需成对出现
2)对于程序中的wait操作顺序不能颠倒,先wait资源信号量,后wait互斥信号量,否则可能引起进程死锁。假设在生产者中,我们颠倒wait的顺序,先wait(mutex)后wait(empty),那么如果这时候空缓冲区用完了,那么进程将阻塞在wait(empty)上面,这时候执行消费者程序,我们会阻塞在wait(mutex)上面,那么这时候就形成了死锁。生产者在等待消费者产生新的空缓冲区,而消费者等待生产者退出临界区后使用临界区,这样的循环等待将无法解除。
2.利用AND信号量解决生产者-消费者问题
1)利用Swait()代替wait(),利用Ssignal()代替signal()。
3.利用管程解决生产者-消费者问题
Monitor producerconsumer{
Item buffer[N];
Int in, out;
Condition notfull, notempty;
Int count;
Public:
Void put(item x){
If(count >= N) cwait(notfull);
Buffer[in] = x;
In = (in + 1) % N;
Count++;
Csignal(notempty);
}
Void get(item x){
If(count <= 0) cwait(notempty);
X = buffer[out];
Out = (out+1)%N;
count--;
Csignal(notfull);
}
{
In = 0; out = 0; count = 0;
}
}PC;
Void producer(){
Item x;
While(TRUE){
...
Produce an item in nextp;
PC.put(x);
}
}
Void consumer(){
Item x;
While(TRUE){
PC.get(x);
Consume the item in nextc;
...
}
}
Void main(){
Cobegin
producer(); consumer();
Coend
}
4.哲学家进餐问题解决方法
1)至多只允许四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能进餐,等他用餐后释放两只筷子,从而更多的哲学家进餐
2)仅当哲学家的左、右两只筷子均可用时,才允许拿筷子
3)规定奇数号哲学家先拿左边的筷子,然后再拿右边的筷子;而偶数号哲学家则相反。
这个问题用AND信号量机制是最简洁的解法,相当于采用了第二种解决方法。
5.读写者问题
1)记录型信号量解决
Semaphore rmutex = 1, wmutex = 1; //rmutex表示对于readcount变量互斥访问
//wmutex表示对于文件的互斥访问
Int readcount = 0; //表示正在读的进程数量
Void reader(){
Do{
Wait(rmutex);
If(readcount == 0) wait(wmutex);
Readcount++;
Signal(rmutex);
..
Perform read operation;
Wait(rmutex);
Readcount--;
If(readcount == 0) signal(wmutex);
Signal(rmutex);
}while(true);
}
Void writer(){
Do{
Wait(wmutex);
Perform write operation;
Signal(wmutex);
}while(TRUE);
}
Void mian(){
Cobegin
Reader(); Writer();
coend
}
2)信号量集解决
Int Rn;
Semaphore L = RN, mx = 1;
Void Reader{
Do{
Swait(L,1,1); //首先测试是否还满足资源分配下限,满足则分配1个
Swait(mx,1,0); //开关,如果没有写进程,则可以读进程可以读
...
Perform read operation;
...
Ssignal(L,1); //释放1个读信号量
}
}
Void Writer{
Do{
Swait(mx,1,1, L, RN, 0); //既无写,又无读操作时,writer进程可以进入临界区
Perform wirte operation;
Signal(mx,1); //释放互斥信号量
}
}while(true);
Void main(){
Cobegin
Reader(); Writer();
coend
}
2.6进程通信
1.通信机制
1)共享存储器
a.共享数据结构 b.共享存储区:申请共享存储区的一个分区,并附加到自己的地址空间,不需要时归还给共享存储区
2)管道通信:管道是指用于连接一个写进程以字符流形式送入管道和一个读进程从管道接收数据以实现他们之间通信的一个共享文件,名pipe文件
a.互斥 b.同步 c.确定对方存在后才能通信
3)消息传递
a.直接通信 b.间接通信
4)客户机-服务器
a.套接字
b.远程过程调用和远程方法调用 存根
2.7线程
1.引入线程后
1)在引入线程后,线程成为了调度和分派的基本单位
2)线程并发性好,因为同一个进程中的线程可以并发,不同进程中的线程也可并发
3)进程是系统中拥有资源的基本单位,线程拥有少量保证运行的必须的资源,如TCB、程序计数器、寄存器和堆栈,但是共享进程拥有的资源
4)同一进程中的不同线程的独立性比不同进程中的低
5)线程在创建和撤销时的系统开销小
6)多线程分配到多个处理机上,使他们并行执行
2.内核支持线程
1)在内核空间实现创建、阻塞、撤销和切换,在内核空间每个内核线程都有TCB
2)优点:
a.多处理器系统中,内核能够同时调度同一进程中的多个线程并行
b.如果进程中的一个线程被阻塞,内核可以调度该进程中的其他线程占有处理 器,也可以运行其他进程中的线程
C.内核支持线程具有很小的数据结构和堆栈,切换快,开销小
D.内核本身也可以采用多线程,提高系统的执行速度和效率
3)缺点:对于用户的线程切换而言,模式切换开销较大,在同一个进程中切换线 程时,需要从用户态转到核心态,因为用户线程在用户态运行,线程调度和管理在 内核实现
3.用户级线程
1)对线程的创建、撤销、同步和通信等功能,都无需内核支持,线程控制块在用户空间设置
2)设置了用户级线程的系统,调度仍是以进程为单位进行。内核支持线程调度以线程为单位
3)优点:
A.线程切换不需要转换到内核空间
B.调度算法可以根据进程自身的需要选择,对自己的线程管理和调度
C.用户级线程的实现与OS平台无关,对于线程管理的代码属于用户程序,用户级线程甚至可以在不支持多线程机器的操作系统平台上实现
4)缺点:
A.系统调用会阻塞该线程所在进程中的所有线程,而在内核支持线程中,进程中其他线程仍然可以运行
B.在单纯的用户级线程实现中,多线程不能利用多处理机进行多重处理的优点,内核每次分配给一个进程的仅有一个cpu,进程中仅有一个线程能执行
4.内核支持线程与用户级线程组合方式
1)组合方式系统中,内核支持多个内核支持线程的建立、调度和管理,同时,也允许用户应用程序建立、调度和管理用户级线程
2)一些内核支持线程对应多个用户级线程,这是用户级线程通过时分多路复用支持线程来实现的
3)组合方式中,同一个进程内的多个线程可以同时在多处理器上并行执行,而且在阻塞一个线程时并不需要将整个进程阻塞
A.多对一模型:多个用户线程映射到一个内核控制线程
- 当用户线程需要访问内核时,将其映射到一个内核控制线程上,但每次只允许一个线程映射
- 优点:进程管理开销小,效率高 缺点:如果线程在访问内核发生阻塞,整个进程都会阻塞;在任意时刻,只有一个线程能够访问内核,多个线程不能同时在多个处理机上运行
B.一对一模型:一个用户级线程映射到一个内核支持线程
I.优点:当一个线程阻塞时,允许调度另一个线程运行,比多对一模型的并发性好;在多处理机系统中,允许多个线程并行运行在多个处理机系统上 缺点:每创建一个用户线程,都要相应创建一个内核线程,开销较大
C.多对多模型:多个用户级线程映射到同等数量或更少数量的内核线程上
I.优点:可以像一对一模型那样,使一个进程的多个线程并行地运行在多处理机上,也可以像多对一模型那样,减少管理开销和提高效率
5.线程的实现
1)内核支持线程实现:系统在创建一个新进程时,便为它分配一个任务数据区PTDA,其中包括若干个线程控制块TCB空间
A.当PTDA中的所有TCB空间已经用完,而进程还要创建新的线程,只要其所创建的线程数目未超过系统的允许值,系统可为之分配新的TCB空间
2)用户级线程实现:用户级线程运行在如:运行时系统和内核控制线程这样的中间系统上
a.运行时系统,实质上是用于管理和控制线程的函数的集合,这些函数都驻留在用户空间,作为用户级线程和内核之间的接口
i.用户级线程在切换时无须转入核心态,由运行时系统调用线程切换函数代替内核执行切换
Ii.不论是在传统OS,还是在多线程OS中,系统资源都由内核管理
iii.用户级线程不能利用系统调用,当需要系统资源时,通过运行时系统间接获得系统资源
b.内核控制线程:又称轻型进程LWP
I.LWP可通过系统调用获得内核提供的服务,用户级线程运行时,只需将它连接到一个LWP上,它便获得了内核支持线程的所有属性,这是组合方式
Ii.将LWP做成缓冲池,称为“线程池”。用户线程连接到LWP上,每个LWP都要连接到一个内核级线程上以获取内核服务。由LWP实现了内核与用户级线程之间的隔离,从而使用户级线程跟内核无关。
Iii.当用户级线程不需要与内核通信时,并不需要LWP。如果一个进程中含有多个LWP,则当一个LWP阻塞时,进程中的另一个LWP可继续执行,即使进程中的所有LWP全部阻塞,进程中的线程也仍然能继续执行,只是不再去访问内核
3.1处理机调度和调度算法的目标
1.处理机调度
1)高级调度:又称长程调度或作业调度,调度对象是作业
A.决定哪些作业调入内存,为它们创建进程、分配必要的资源,放入就绪队列
B.高级调度主要用于多道批处理系统,在分时和实时系统中不设置高级调度
2)低级调度:又称短程调度或进程调度,调度对象是进程或内核级线程
A.决定就绪队列中哪个进程获得处理机,并由分派程序将处理机分配给选中的进程
B.在多道批处理、分时和实时系统中都设置
3)中级调度:又称内存调度
A.目的是为了提高内存利用率和系统吞吐量
B.把那些暂时不能运行的进程,调至外存等待,此时的进程状态称为就绪驻外存状态或挂起状态。当它们具备运行条件且内存又稍有空闲时,内存调度把外存上的那些具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上
2.处理机调度算法的目标
1)处理机调度算法的共同目标
A.资源利用率
B.公平性,进程获得合理的cpu时间
C.平衡性,计算型和i/o型分配资源应该平衡
D.策略强制执行,对于如安全策略的需要
2)批处理系统的目标
A.平均周转时间短。周转时间:从作业提交给系统,到作业完成为止这段时间间隔(称为作业周转时间)。
- 四部分时间:作业在外存后备队列上等待作业调度的时间、进程在就绪队列上等待进程调度的时间、进程在cpu上执行的时间、进程等待i/o的时间操作完成的时间
- 平均周转时间就是所有作业的周转时间的均值,平均带权周转时间
B.系统吞吐量高:吞吐量是指单位时间内系统完成的作业数,如果单纯为了提 高系统吞吐量,应尽量选择短作业
3)分时系统的目标
A.响应时间快。响应时间:从用户通过键盘提交一个请求开始,直到屏幕上显示出处理结果为止的时间间隔。
三部分时间:
- 请求信息从键盘输入开始,到将其传送到处理机的时间
- 处理机对请求信息进行处理的时间
- 将所形成的响应信息回送到终端显示器的时间
B.均衡性:指系统响应时间的快慢应与用户请求服务的复杂性相适应
4)实时系统的目标
A.截止时间的保证。截止时间:指某项任务必须开始执行的最迟时间或必须完成的最迟时间。
B.可预测性,如多媒体系统中的视频播放。
以上是关于操作系统要点总结的主要内容,如果未能解决你的问题,请参考以下文章