操作系统复习

第1章 操作系统概述

基本没有考点

在这里插入图片描述

第2章 处理器管理

1、处理器的两个状态以及指令

  • 指令系统

    (1) 数据处理类指令;
    (2) 转移类指令;
    (3) 数据传送类指令;
    (4) 移位与字符串指令;
    (5) I/O类指令。

  • 特权指令 & 非特权指令

    特权指令是指只能提供给操作系统的核心程序使用的指令,如启动I/O设备、设置时钟、控制中断屏蔽位、清主存、建立存储键,加载PSW等。

    非特权指令:应用程序可以使用的指令

  • 用户态&核心态

    处理器状态的转换

    1) 用户态→系统态:

    (1)程序请求操作系统服务;
    (2)程序运行时产生中断;
    (3)程序运行时产生异常。

    **2)系统态→用户态:**加载程序状态字(特权指令)

    ◼ **程序状态字PSW:**运行程序的一组动态信息
    ◼ 每个程序都有一个与其执行相关的PSW,每个处理器都设置一个PSW寄存器。程序占有处理器执行,它的PSW将占有PSW寄存器 。
    用于OS在用户态与系统态之间的转换。

2、了解中断技术

  • 中断源分类

    ◼ 外部中断:又称为中断或异步中断,是指来自于处理器之外的中断信号,包括时钟中断、键盘中断、它机中断和外部设备中断等。
    ◼ 内中断:又称为异常或同步中断,是指来自于处理器内部的中断信号,通常是由于在程序执行过程中,发现与当前指令相关联的、不正常的或错误的事件。可细分为:
    ① 访管中断:执行系统调用
    ② 硬件故障中断:电源失效、奇偶校验错误等
    ③ 程序性异常:非法操作、地址越界、页面故障、除数为零等

    image-20201228154707911

3、进程的三态,不考线程

image-20201228155255589

image-20201228155511769

image-20201228155623168

4、处理器调度的三个层次

  • 高级调度

    ➢ 作用:选择外存上处于后备队列的一个或几个作业调入内存、分配必要资源 ,并将新创建的进程排在就绪队列中。

  • 低级调度

    ➢ 作用:从就绪队列中选择一个进程,分配处理机,执行进程。

  • 中级调度

    ➢ 作用:负责进程在内存和外存对换区之间换进换出,是内存对换功能的一部分。
    ➢ 目的:提高内存利用率和系统吞吐量

5、调度算法,会求带权、平均带权等计算题

6、作业调度和低级调度算法

周转时间=完成时间-到达时间

平均周转时间 = 周转时间/作业数

带权时间=周转时间/cpu执行时间

平均带权周转时间 = 带权周转时间/cpu执行时间

  • 先来先服务 SCFS

    优点:易于实现,优待长作业

    缺点:效率不高

    特点:

    (1) 比较有利于长作业,而不利于短作业。
    (2) 有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
    (3) 简单公平

  • 最短作业优先算法 SJF

    ◼ 优点:
    比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;
    提高系统的吞吐量;
    ◼ 缺点:
    对长作业非常不利,可能长时间得不到执行;
    未能依据作业的紧迫程度来划分执行的优先级;
    难以准确估计作业(进程)的执行时间,从而影响调度性能。
    存在饥饿现象

  • 最短剩余时间优先 SRTF

  • 最高响应比优先算法 HRRF

    响应比=1+等待时间/执行时间

    • 短作业容易得到较高响应比,
    • 长作业等待时间足够长后,也将获得足够高的响应比,
    • 饥饿现象不会发生。

  • 优先权调度算法

  • 时间片轮转调度算法

  • 多级反馈队列调度算法

第3章 同步、通信与死锁

主要是同步和死锁,编程题

一、生产者--消费者问题 
类型1
1.问题描述
系统中的进程:n个生产者,m个消费者共享k个缓冲区

2.	问题分析
(1)互斥:缓冲池 
(2)同步:缓冲池未满,生产者可将消息送入缓冲池;缓冲池未空,消费者可从缓冲池取走一个消息。 
(3)进程间需要交换信息

3.信号量设计
(1)缓冲区互斥信号量(公用):mutex 
(2)生产者信号量(私有):empty 空缓冲数量 
(3)消费者信号量(私有):full 满缓冲数量

4.算法设计

item B[k]; 
semaphore empty=k; //可以使用的空缓冲区,empty=0表示缓冲区满
semaphore full=0; //已经占用的缓冲区,full=0表示缓冲区为空
//缓冲区内可以使用的产品数 
semaphore mutex=1; //互斥信号量 
int in=0; 
//放入缓冲区指针 
int out=0; 
//取出缓冲区指针 
main(){ 
cobegin 
process producer_i ( ) //i=1,2,…n 
process consumer_j ( ) // j=1,2,…m 
coend 
}

//生产者
process producer_i ( ) 
{ 
while(true) { 
produce( ); 
P(empty); 
P(mutex); 
append to B[in]; 
in=(in+1)%k; 
V(mutex); 
V(full); 
} 
} 

//消费者
Process consumer_j ( ) 
{ 
while(true){ 
P(full); 
P(mutex); 
take( ) from B[out]; 
out=(out+1)%k; 
V(mutex); 
V(empty); 
consume( ); 
} 
}


5.	生产者-消费者问题算法中的信号量使用分析
(1)PV操作必须成对出现(同一个程序中(互斥),不同的程序中(同步)) 
(2)P操作的次序很重要,使用不当会死锁
(3)V操作的次序无关紧要

类型2
1.	问题描述
系统中的进程:1个生产者,1个消费者,共享1个缓冲区(缓 
冲区中只能放一个产品,即k=1的情形)
2.问题分析
由于缓冲区中只能放一个产品,生产者生产一个产品,消费者消费一个产品,生产者和消费者紧密同步,同步即互斥,所以缓冲池不需要互斥信号量。
3.信号量设计
(1)生产者信号量(私有):empty=1
(2)消费者信号量(私有):full=0
4.算法设计

int B; 
semaphore empty=1; 
//可以使用的空缓冲区数 
semaphore full=0; 
//缓冲区内可以使用的产品数 

main(){ 
cobegin 
process producer ( ) 
process consumer ( )  
coend 
}

process producer ( ) { 
while(true) { 
Produce( ); 
P(empty); 
append( ) to B; 
V(full); 
} 
} 

process consumer( ) { 
while(true) { 
P(full); 
take( ) from B; 
V(empty); 
consume( ); 
} 
}


二、生产者消费者应用
例1.苹果桔子问题(多类生产者多类消费者共享一个缓冲池)
1.	问题描述
桌上有一只盘子,可容纳10个水果,每次只能放入一个水果。爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果。 请用信号量和PV操作写出能够正确执行的同步算法
2.	问题分析
多类生产者多类消费者共享一个缓冲池,生产者每类一个,消费者每类一个,缓冲池大小为10
(1)互斥:盘子
(2)同步:盘子未满,爸爸或妈妈可将水果放入盘子;盘子未空,儿子或女儿可从盘子取走一个水果。 
(3)进程间需要交换信息
3.信号量设计

(1)盘子互斥信号量:mutex=1
(2)生产者信号量(爸爸和妈妈两类生产者共有):disk=10
(3)儿子(消费者)信号量:orange=0
(4)女儿(消费者)信号量:apple=0

4.算法设计
semaphore disk=10,apple=0,orange=0;
 /* 盘子里可以放几个水果 , 盘子里有桔子 , 盘子里有苹果*/ 
semaphore mutex=1; //互斥的信号量 
main() { 
cobegin 
process father (); 
process mother(); 
process son (); 
process daughter (); 
coend 
}

process father() { 
While(1){ 
P(disk); 
P(mutex); 
把苹果放入plate; 
V(apple); 
V(mutex);} 
} 
process mother () { 
While(1){ 
P(disk); 
P(mutex); 
把桔子放入plate; 
V(orange); 
V(mutex); } 
} 
process son(){ 
whle(1){ 
P(orange); 
P(mutex); 
从plate中取桔子; 
V(disk); 
V(mutex);
} 
} 
process daughter() { 
while(1){ 
P(apple); 
P(mutex); 
从plate中取苹果; 
V(disk); 
V(mutex); 
}
}

例2.橘子汁问题(一个生产者,三类消费者共享一个缓冲池)
1.	问题描述
设有一个供应者能源源不绝地供应糖、水和橘子精,有三个负责制造橘子汁的进程,每 
个进程都已经拥有了一种原材料:A 拥有糖,B 拥有水,C 拥有橘子精。供应者每次随机拿 
出两种原材料供加工者加工一次。当容器中有加工者进程所需的另外两种原材料时,可以 
取走相应的材料。然后供应者再像容器中放入另外两种原材料。如果没有取走原材料,则 
供应者睡眠。写出供应者与加工者能正确执行的同步程序。 
2.	问题分析
一类生产者多类消费者共享一个缓冲池,生产者每类一个,消费者每类一个,缓冲池大小为1,紧密同步即互斥。
3.	进程设计
(1)四个进程:S,A,B,C 
(2)S 为供应者,A,B,C 为三个负责制造橘子汁的进程,A 拥有糖,B 拥有水,C 拥有橘子精 
4.信号量设计
缓冲池大小为1,紧密同步即互斥。
(1)mutex:S进程需要的信号量,初值为 1 (这里信号量的命名为mutex,但是不是互斥信号量,是同步,不要混淆)
(2)SA:A 进程需要的信号量,初值为 0 
(3)SB:B 进程需要的信号量,初值为 0 
(4)SC:C 进程需要的信号量,初值为 0 
5.算法设计
semaphore mutex=1,SA=0,SB=0,SC=0; 
cobegin 
process S() 
{ while(1) 
{ 
P(mutex); //同步即互斥 
取出两种原材料放到容器中; 
if(orange&&water) V(SA); //如果放的是 A 进程需要的材料,则唤醒 A 进程 
else if(orange&&sugar) V(SB); //如果放的是 B 进程需要的材料,则唤醒 B 进程 
else V(SC); //如果放的是 C 进程需要的材料,则唤醒 C 进程 
} 
}
process A() 
{ while(1) 
{ 
P(SA); //测试有没有 A 需要的原材料,没有则睡眠 
从容器中取走两种原材料; 
V(mutex);//唤醒生产者 S 
加工橘子汁; 
} 
}
process B() 
{ while(1) 
{ 
P(SB); //测试有没有 B 需要的原材料,没有则睡眠 
从容器中取走两种原材料; 
V(mutex);//唤醒生产者 S 
加工橘子汁; 
} 
}
process C() 
{ while(1){ 
P(SC); //测试有没有 C 需要的原材料,没有则睡眠 
从容器中取走两种原材料; 
V(mutex);//唤醒生产者 S 
加工橘子汁; 
} 
} 
coend

1、信号量与PV操作

P221 多个生产者 多个消费者 一个共享区

死锁产生原因

◼ (1)进程推进顺序不当产生死锁
◼ (2)PV操作使用不当产生死锁
◼ (3)资源分配不当引起死锁

2、死锁的必要条件

image-20201226093539483

(1) 破坏条件1(互斥条件)
策略:使资源可同时访问而非互斥。
有些资源可以采取此策略,如:只读文件、时钟、磁盘等,有些资源不能采取,如:可写文件、键盘、磁带机等。
(2) 破坏条件2(占有和等待)
策略:采用静态分配策略
静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行。如果有一种资源不能满足进程,即使其它资源都空闲,也不分配给进程,而让进程等待。
优点:简单、易于实现、安全
缺点:降低了资源的利用率
(3) 破坏条件3(不剥夺条件)
策略:采用剥夺式调度方法。(适用于内存和处理器资源)
当进程在申请资源未获准许的情况下,应主动释放已经保持了的资源,以后再去重新申请。这被认为使进程已经占有的资源被剥夺了。
(4) 破坏条件4(循环等待条件)
策略:采用层次分配策略
资源被分成多个层次,当进程得到某一层的一个资源后,它只能再申请较高层次的资源。当进程要释放某层的一个资源时,必须先释放占有的较高层次的资源;当进程得到某一层的一个资源后,它想申请该层的另一个资源时,必须先释放该层中的已占资源。

3、灵活运用银行家算法

进程通信

  • 信号通信机制
  • 管道通信机制
  • 共享主存通信机制
  • 消息传递通信机制

第4章 存储管理

1、分页存储管理,主要是掌握p209页的翻译快表

image-20201226103230514

image-20201226103244685

image-20201226115031581

image-20201226115138365

image-20201226122445343

image-20201226123346630

image-20201226123431261

image-20201228204034926

2、分段存储管理,掌握地址转换,掌握P220页

3、各类算法:OPT\LRU\FIO

image-20201226154937552

image-20201226154948836

image-20201226155001556

image-20201226155016083

image-20201226155028058

image-20201226155035762

image-20201226155047538

image-20201226160532081

image-20201226160541888

image-20201226160549598

第5章 设备管理

1、设备管理技术:设备管理器软件、缓冲、虚拟技术等

image-20201226165841190

image-20201228205311236

image-20201228205528588

image-20201228205740586

2、磁盘:算法

image-20201226170844826

image-20201228143340630

image-20201226172004668

image-20201226172028664

image-20201226173211685

image-20201226173502270

image-20201226175818571

image-20201226175835956

image-20201226175849435

image-20201226175907327

image-20201226175923263

image-20201226175933769

image-20201226175944096image-20201226181156062

image-20201226180806062

第6章 文件管理

1、文件目录:什么情况用什么目录
2、文件组织与数据存储,其中物理结构重点与磁盘联系
3、文件空间管理:主要掌握p312页知识点

image-20201226193900308

image-20201226193918209

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值