进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位。
动态性、独立性、并发性
程序、数据集合、进程控制块PCB
就绪、执行、阻塞
轮转调度算法
优先级调度算法
多队列调度算法
多级反馈队列调度算法
基于公平原则的调度算法
先来先服务算法FCFS
短作业优先算法SJF
时间片轮转算法RR
高响应比优先算法HRRF
测定是否有未响应的中断信号
保护被中断的CPU环境
转入相应的设备处理程序
中断处理
恢复CPU现场并退出
安全状态是指系统能按照某种进程推进序列(p1,p2,p3,…,pn)为每个进程pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利完成。此时称(p1,p2,p3,…,pn)为安全序列
死锁:在一组进程中,每一个进程都在等待仅由该组进程的其他程序才能引发的事件,我们称它们是死锁的
必要条件:互斥条件;请求与保持条件;不可抢占条件;循环等待条件
必要条件:互斥条件;请求与保持条件;不可抢占条件;循环等待条件
互斥条件需要加以保证不能改变
四种工作方式
收容输入;提取输入;收容输出;提取输出
由于一个作业装入到与其逻辑地址空间不一致的绝对地址空间,使得逻辑地址与绝对地址不同,而引起的对有关地址部分的调整,即逻辑地址转换成绝对地址的过程称为重定位,也称为地址转换。
静态重定位和动态重定位
・ 静态重定位是在作业装入的时候一次完成,动态重定位是在作业执行时再实现的;
・ 静态重定位是软件支持的,动态重定位是软件和硬件相互配合实现的;
・ 静态重定位不能实现主存的移动,而动态重定位可以;
・ 动态重定位还可能提供虚拟存储空间。
虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储管理系统。
分页存储、分段存储、段页式存储
先来先服务算法
最短寻道时间优先算法
扫描算法
循环扫描算法
寻道时间、旋转延迟时间、传输时间
寻道时间是磁盘调度算法主要考虑的
同:都是虚拟存储方式的具体实现方法;都是将原有作业进行拆分存储在不同的地址空间
异:页是信息的物理单位,分页仅仅是系统行为,对用户不可见;段是信息的逻辑单位,是一组有意义相对完整的信息。分段的目的是为更好满足用户需要
页的大小固定且由系统决定,而段的大小不固定,决定于用户所编写的程序
分页的用户程序地址空间是一维的。仅用一个记忆符就可表示一个地址;儿分段的用户程序地址空间是二维的,程序员在标识一个地址时,即需给出段名,又需给出段内地址。
buddyk(x)=x+2的k次方(若xMOD2的k+1次方=0)和 x-2的k次方(若xMOD2的k+1次方=2的k次方)
程序I/O控制方式;中断驱动I/O控制方式;直接存储器访问DMA控制方式;I/O通道控制方式
I/O通道控制方式CPU干预最少
输入井和输出井;输入缓冲区和输出缓冲区;输入进程和输出进程;井管理程序
该方法是根据任务的紧急(或松弛)程度来调度进程的。任务紧急程度越高,任务的优先级就越高,使之优先执行。
必须完成的时间-自身运行时间-当前时间
semaphore s, mutex
s = 150
mutex= 1
void reader( ){
while (1){
wait(s)
wait(mutex)
登记;
Signal(mutex)
阅读;
wait(mutex)
注销;
Signal(mutex)
Signal(s)
} }
(1) 用wait、signal操作管理这些并发进程时,应怎样定义信号量?写出信号量的初值以及信号量取值的含义。(2分)
Semaphore s,mutex;
S=100;mutex=1;
S代表座位资源;互斥信号量mutex代表对登记表的互斥使用
(2) 根据所定义的信号量,把应执行的wait、signal操作填入下述过程中,以保证进程能够正确地并发执行。(4分)
void reader( )
{
while (1)
{
wait(mutex);
__wait(s);
登记;
_signal(mutex);
阅读;
_wait(mutex);
注销;
signal(s);
signal(mutex)__
}
}
(1) 用wait、signal操作管理这些并发进程时,应怎样定义信号量?写出信号量的初值以及信号量取值的含义。(2分)
Semaphore mutex,MD;
Mutex=1;MD=1;countD=0
Mutex是互斥信号量,用来表示对独木桥的互斥使用
MD
countD用来计数同方向过路的人
(2) 根据所定义的信号量,把应执行的wait、signal操作填入下述程序中,以保证进程能够正确地并发执行。(4分)
从东向西的进程表示:
void dongtoxi()
{
while (1) {
wait(MD);
if(countD==0)_ wait(mutex)_ ;
countD++; ;
signal(MD);
过桥;
wait(MD);
countD–;______ ;
if(countD==0)signal(mutex)____;
signal(MD);
}
}
从西向东与上面相似。
(1) 设信号量empty,初值为1,表示盘子是空的;儿子进程的同步信号量orange,初值为0,表示爸爸尚未把桔子放入盘中;女儿进程的同步信号量apple,初值为0,表示爸爸尚未把苹果放入盘中。
(2) 根据所定义的信号量,把执行wait、signal操作的信号量填入下述过程中,以保证进程能够正确地并发执行。(6分)
(1) 用wait、signal操作管理这些并发进程时,设资源信号量S=200,表示有200个座位;互斥信号量mutex=1,表示登记和注销时,对登记表的互斥访问。
(2) 根据所定义的信号量,把执行wait、signal操作是的信号量填入下述过程中,以保证进程能够正确地并发执行。(6分)
void reader( ) {
while (1){
wait(s_)
wait(mutex_)
在登记表上登记;
signal(mutex____)
阅读;
wait(mutex_____)
在登记表上注销;
signal(mutex________)
signal(s__)
}
}
Void Getbuf(unsigned type)
{ wait(MS[type])
Signal(MS[type])
B(number) = Takebuf(type) ;
Wait(RS[type])
} Void Putbuf(type, number)
{ signal(MS[type])
Add(type,number) ;
wait(RS[type])
Signal(RS[type])
}
(1)最短寻道时间优先
(2)循环扫描算法(当前磁头移动的方向为磁道递增)
最短寻道时间优先 循环扫描算法
从57号磁道开始 从57号磁道开始(递增)
被访问的下一个磁道号 移动距离
(磁道数) 被访问的下一个磁道号 移动距离
(磁道数)
平均寻道长度: 平均寻道长度:
(1)按最短作业优先调度算法,选择作业顺序是___1.3.5.4.2_______。(2分)
(2)按最短作业优先调度算法,填写下表,计算作业的平均周转时间。(4分)
作业 提交时间(时) 运行时间(分) 开始时间(时) 完成时间(时) 周转时间(分)
1 8:00 60 8:00 9:00 60
2 8:10 50 10:10 11:00 170
3 8:20 10 9:00 9:10 50
4 8:40 40 9:30 10:10 90
5 9:00 20 9:10 9:30 30
平均周转时间:T= (60+170+50+90+30)/5=80
周转时间=作业完成时间-作业到达时间
平均带权周转时间=周转时间/运行时间
作业 执行时间
1 10
2 1
3 2
4 1
5 5
(1)按先来先服务(FCFS)调度算法,选择作业顺序是__1.2.3.4.5_____________。(2分)
(2)按先来先服务调度算法,填写下表,计算作业的平均周转时间。(4分)
作业执行次序 执行时间 等待时间 开始时间 完成时间 周转时间
1 10 0 0 10 10
2 1 10 10 11 11
3 2 11 11 13 13
4 1 13 13 14 14
5 5 14 14 19 19
平均周转时间:T= (10+11+13+14+19)/5
作业 执行时间
1 10
2 1
3 2
4 1
5 5
(1)按最短作业优先(SJF)调度算法,选择作业顺序是_____2.4.3.5.1______________。(2分)
(2)按最短作业优先调度算法,填写下表,计算作业的平均周转时间。(4分)
作业执行次序 执行时间 等待时间 开始时间 完成时间 周转时间
2 1 0 0 1 1
4 1 1 1 2 2
3 2 2 2 4 4
5 5 4 4 9 9
1 10 9 9 19 19
平均周转时间:T=
(0.
1) 段式存储管理的基本原理是什么? (4分)
将程序的地址空间划分为若干个段
为每个段分配一个连续的分区,而进程中的各个段可以不连续地存放在内存的不同分区中
程序通过分段 划分为多个模块,如代码段、数据段、共享段。
(2)一个作业由三段组成,段表如下表:
段号 起始地址 长度
0 220 300
1 1700 1000
2 23 150
有一个逻辑地址是1段,段内地址为30,请根据段表计算出对应的物理地址。(2分)
30+1700=1730
(1)填写下表(中间三行代表内存中的三个物理块) (3分)
访问串 0 1 2 3 0 1 4 0 1 2 3 4
分到的三个物理块 0 0 0 1 2 3 0 1 4 0 1 2
1 1 2 3 0 1 4 0 1 2 3
2 3 0 1 4 0 1 2 3 4
缺页否 T T T T T T T T T T
(2)缺页次数是多少?缺页率是多少? (2分)
10
10/12=1/2=0.5
(3)写出依次淘汰页的序号。(1分)
0.1.2.3.4.0.1
(4)假设页长为2048个字节,某时刻页表如下:
逻辑页号 物理块号
0 4
1 7
2 1
有逻辑地址5196,请根据页表计算出对应的物理地址,要有计算过程。(2分)
若给定一个逻辑地址为A,页面长度为L,则页号P=A/L取整数,页内地址d=A/L取余数。
5196/2048=2余1100
所有逻辑页号为2,业内地址为1100 ,物理块号1所对应的起始地址为2048*1=2048
所以对应的物理地址为2048+1100=3148
(1)填写下表(中间三行代表内存中的三个物理块) (3分)
访问串 4 3 2 1 4 3 5 4 3 2 1 5
分到的三个物理块 4 4 4 1 1 1 5 2 2 2
3 3 3 4 4 4 4 1 1
2 2 2 3 3 3 3 5
缺页否 T T T T T T T T T T
(2)缺页次数是多少?缺页率是多少? (2分)
9
9/12=75%
逻辑页号 物理块号
0 4
1 7
2 3
(3)写出依次淘汰页的序号。(1分)
4.3.2.1.5.4.3
(4)假设页长为2048个字节,某时刻页表如右表:
有逻辑地址5000,请根据页表计算出对应的物理地址,要有计算过程。(2分)
5000/2048=2….904
所以页号为2,偏移量为904
所有物理块号3对应的地址起始地址为3*2048=6144
所以对应的物理地址为6144+904=7048
(1)填写下表(中间三行代表内存中的三个物理块) (3分)
访问串 4 3 2 1 4 3 5 4 3 2 1 5
分到的三个物理块 4 4 4 1 1 1 5 2 2 2
3 3 3 4 4 4 4 1 1
2 2 2 3 3 3 3 5
缺页否 T T T T T T T T T T
(2)缺页次数是多少?缺页率是多少? (2分)
12 10/12=50%
(3)写出依次淘汰页的序号。(1分)
4.3.2.1.5.4.3
逻辑页号 物理块号
0 4
1 7
2 3
(4)假设页长为2048个字节,某时刻页表如右表:
有逻辑地址3500,请根据页表计算出对应的物理地址,要有计算过程。(2分)
3500/2048=1….1452
所以逻辑页号为1,偏移量为1452
物理块号7对应的地址始址为7*2048=14376
所有物理地址为14376+1452=15828
(1)如果一次存储器访问需要200μs,那么访问一个数据需要多长时间?(1分)
有一个一级页表,想要访问数据要先访问一次页表,根据页表所查信息再查一次内存
所以为200*2=400
(2)现在增加一个快表,在命中或失误时均有20μs的时间开销,假设快表的命中率为85%,那么访问一个数据的时间为多少(写出计算式子并算出结果)?(2分)
使用快表时,要么可以从快表中直接查出;若快表中没有则也需要访问两次内存
0.85*(200+20)+0.15*(20+200+200)=250
(3)今有一个长度为9K的进程P进入系统,分配给P的存储块有3块,进程的所有页面都是在该进程运行中动态装入。对于下述页面号访问序列:0,1,2,0,4,2,3,2,1,2,0,1(假设开始时,该进程没有页面在内存)填写下表,并计算缺页次数和缺页率。(5分)(中间三行代表内存中的三个物理块)
访问串 0 1 2 0 4 2 3 2 1 2 0 1
分到的三个物理块 0 0 0 0 0 0 3 3 3 3 0 0
1 1 1 4 4 4 4 1 1 1 1
2 2 2 2 2 2 2 2 2 2
缺页否 T T T T T T T
(1)如果一次存储器访问需要200μs,那么访问一个数据需要多长时间?(1分)
200*2=400
(2)现在增加一个快表,在命中或失误时均有20μs的时间开销,假设快表的命中率为85%,那么访问一个数据的时间为多少(写出计算式子并算出结果)?(2分)
0.85*(20+200)+0.15*(20+200+200)
(3)今有一个长度为9K的进程P进入系统,分配给P的存储块有3块,进程的所有页面都是在该进程运行中动态装入。对于下述页面号访问序列:0,1,2,0,4,2,3,2,1,2,0,1(假设开始时,该进程没有页面在内存)填写下表,并计算缺页次数和缺页率。(5分)(中间三行代表内存中的三个物理块)
访问串 0 1 2 0 4 2 3 2 1 2 0 1
分到的三个物理块
缺页否
请求序列: 1 2 3 4 5 6 7 8 9
欲访问的柱面号: 150 50 178 167 87 43 23 160 85
试用最短寻道时间优先算法、扫描算法(电梯调度算法),分别计算这两种算法的平均寻道长度,要求要有过程(8分)