第一次
- 进程由程序段,数据段,PCB组成
- 操作系统是进行计算机软硬件资源管理,提供接口的应用软件(×)不是应用
- 脱机I/O:事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带上的数据输入到磁带上。当CPU需要这些程序和数据时,再从磁带上高速地调入内存。
- 操作系统的特性:并发,虚拟,异步,共享
- 单道批处理:
一批作业以脱机的方式输入到磁带上,在监督程序的控制下使作业一个接一个地连续处理 - 进程和程序区别:
(1)进程是程序的一次执行
(2)进程是暂时的,程序是永恒的
(3)一段进程可以包含几段程序,一段程序可以对应多个进程 - 几种操作系统类型:
- 微内核:
- 进程的特征:动态性,独立性,并发性,异步性
- 操作系统提供的接口:
- 并发是操作系统的特性之一,为此引入进程
- 设有两道程序按A,B的优先次序运行,其内部计算和I/O操作如下:
A使用30ms CPU,后使用40ms I/O,最后用CPU 20ms
B使用60ms CPU,后使用20ms I/O,最后用CPU 30ms
计算两道程序多道共花费多少时间,比单道运行节省多少时间
单道:30+40+20+60+20+30=200ms
多道:30+60+20+30=140ms - n个进程的并发系统,处于三态的最少,最多
就绪:max:n-1(肯定有一个占用CPU其他才会就绪),min:0
运行:max:1,min:0
阻塞:max:n(全阻塞),min:0
第二次
- 退出区作用:将已访问标志恢复为未被访问
- 同步准则:空闲让进,忙则等待,有限等待,让权等待
- 为某临界资源设一把锁W ,W=1锁关,W=0锁开,写开锁和关锁的原语,实现互斥
原语:
lock(W)
{
while(W==1);
W=1;
}
unlock(W)
{
W=0;
}
int f(int W)
{
int old;
f(W=0)
lock
old=W
return old;
}
- 创建进程步骤:
(1)申请空白PCB
(2)为新进程分配所需资源(物理+逻辑)
(3)初始化PCB
(4)加入就绪队列 - my pid is 3135,my father’s pid is 3062
3136 3135
3138 3135
…简单的
第三次
- 试举例说明并发进程访问临界资源,在没有互斥条件下所产生的不可再现性
消费者和生产者的共享变量冲突
每个进程三条语句,两个并发 - TS互斥
old反映资源的状态,FALSE空闲,搞成忙碌,返回开始状态
while 循环,TRUE则一直循环,FALSE跳出循环(空闲),进入临界区
Swap:
- 这种定义下填空:
改变TS原语
F为忙碌
T为空闲
S=T
while(TS(S)!=T);
S=T;
- 信号量=1——空闲,信号量=0——忙碌,信号量=-n——有n个阻塞???
- 打印机,非共享数据,共享缓存,哪个不是临界资源(非共享数据)
- 甲乙丙丁,水果盘,甲可放梨子,乙放苹果,不同时,丙吃梨子,丁吃苹果,空则等待
semaphore A=1,B=0,C=0
甲:
{
P(A);
put pear;
V(B);
}while(TRUE)
乙:
{
P(A);
put apple;
V(C);
}while(TRUE)
丙:
{
P(B);
eat pear;
V(A);
}while(TRUE)
丁:
{
P(C);
eat apple;
V(A);
}while(TRUE)
丙想吃,甲放
丁想吃,乙放
semaphore A=1,B=0,C=0,D=0,E=0;
甲:
{
P(D);P(A);
put pear;
V(B);
}while(TRUE)
乙:
{
P(E);P(A);
put apple;
V(C);
}while(TRUE)
丙:
{
V(D);
P(B);
eat pear;
V(A);
}while(TRUE)
丁:
{
V(E);
P(C);
eat apple;
V(A);
}while(TRUE)
第四次
- 有n个进程公用一个程序段,每次最多允许m个进程进入临界区,求信号量的初值——m
- 临界区是 C //访问临界资源的代码
一段缓冲区
一段共享数据
一段程序
一段互斥资源 - 一个进程因在互斥信号量S上执行V(S)操作唤醒另一个进程时,S值<=0
- input,compute,output共享一buf,input每输入数据共compute计算,output打印m
V(Sc) P(Sb) P(Sd) V(Sd)
第五次
- 请求送烟送火
semaphore a=0,b=0,c=0,d=0
送烟,送货,用烟,用火
do{
P(a)
送烟
V(c)
}while(TRUE)
do{
P(b)
送烟
V(d)
}while(TRUE)
do{
V(a)
V(b)
P(c)
P(d)
}while(TRUE)
- 游戏厅有100个空位,进入登记,离开划掉,没有座位要等待
semaphore n=100,R=1
do{
P(n)
P(R)
register
V(R)
enter
P(R)
out
V(R)
V(n)
- 临界区进程不可中断吗——可以,临界区不是原语
- 哪些是临界资源 ABC
打印机,共享缓冲区,共享变量,非共享数据 - PV操作与前驱图
- P1P2
P1
m1=m2=0
n=1
n=n+2
V(m1)
O=n+1
P(m2)
n=O+n
P2
m=1
m=m+1
P(m1)
m=m+n
V(m2)
O=m+O
求O,m,n
O=9,m=5,n=7
第六次
- 调度的层次
处理机调度的层次
高级调度:作业一开始阶段——决定那几个作业调入内存——多道批处理系统
低级调度:决定就绪队列中哪个进程应获得处理机——多道批处理、分时、实时都要有
中级调度:提高内存利用率和系统吞吐量 - 三个作业A,B,C,按高响应比优先调度算法
P | 到达 | 服务 | 开始 | 结束 |
---|---|---|---|---|
A | 8:50 | 1.5 | 9:54 | 11.24 |
B | 9:00 | 0.4 | 9:30 | 9:54 |
C | 9:30 | 1 | 11:24 | 12:24 |
全部到达后运算优先级
A的等待时间是9:30-8:50
B的等待时间是9:30-9:00
- 5,ABCDE,几乎同时到达,运行时间2,4,6,8,10,优先级1,2,3,4,5(最高),计算下列算法的平均周转T
优先级,时间片(2), FIFO
P(FIFO) | 周转时间 |
---|---|
A | 2 |
B | 6 |
C | 12 |
D | 20 |
E | 30 |
T=(2+6+12+20+30)/5=14
P(优先级) | 周转时间 |
---|---|
A | 30 |
B | 28 |
C | 24 |
D | 18 |
E | 10 |
T=(10+18+24+28+30)/5=22
P(时间片) | 周转时间 | 和 |
---|---|---|
A | 0-2 | 2 |
B | 0-4,10-12 | 12 |
C | 0-6,10-14,18-20 | 20 |
D | 0-8,10-16,18-22,24-26 | 26 |
E | 0-10,10-18,18-24,24-28,28-30 | 30 |
T=(2+12+20+26+30)/5
4. 2道批处理,作业SJF,进程优先级可抢占
作业 | 到达 | 运行 | 优先级 | 进入 | 完成 |
---|---|---|---|---|---|
A | 10:00 | 40 | 3 | 10:00 | 11:10 |
B | 10:20 | 30 | 5 | 10:20 | 10:50 |
C | 10:30 | 50 | 4 | 11:10 | 12:00 |
D | 10:50 | 20 | 2 | 10:50 | 12:20 |
B抢占了A,因为优先级高
两道批处理——内存中可以有两个作业
平均周转周期:70min
带权周转周期:2.2625
第七次
PV是第一道大题
百货公司,最多允许n人购物,一个收银员,用PV关系表示
P-1,(申请资源)V+1(释放资源) =0时禁止进入
semaphore Sn=n,S1=0,S2=0
顾客:
do{
P(Sn)//查看是否满了
V(S1) //唤醒服务员
缴费
P(S2) //查看是否缴费
V(Sn)//出门
}while(1)
收银员:
do{
P(S1)//查看是否缴费
缴费
V(S2)
}while(1)
第二道大题调度
P | 到达 | 执行 | FCFS结束时间 | RR(t=2)结束时间 | RR(t=1) | SJP结束时间 |
---|---|---|---|---|---|---|
A | 0 | 3 | 3 | 5 | 4 | 3 |
B | 1.001 | 6 | 9 | 13 | 15 | 9 |
C | 4.001 | 4 | 13 | 15 | 14 | 15 |
D | 6.001 | 2 | 19 | 11 | 12 | 11 |
FCFS,RR(t=2),RR(t=1),SJP
死锁,银行家算法,程序题(哪些系统调用,程序结果)
两道解答题10分
选择20分
填空20分
判断20分