进程调度模拟实验
一.要求:掌握进程调度的策略及实现方法。实现按优先级与时间片相结合的进程调度算法。
二.内容:
1.设计进程控制块、进程队列结构(包括:就绪队列、等待队列、运行指针)等必要的数据结构。
2.模拟操作系统进程调度的功能,编写进程调度程序、模拟的处理机分派程序、进程等待函数和进程唤醒函数。
3.编写用户程序,创建6个用户进程。
三.进程调度的设计方法
1.数据结构
(1) 优先级与时间片的设计
· 进程因等待放弃CPU时,优先级置为1 (高优先级) ;
· 进程因时间片到放弃CPU时,优先级置为0 (低优先级) ;
· 优先级1 对应时间片4 ;优先级0 对应时间片10 。
(2) 进程控制块(PCB) 的内容
进程标识 3—9
进程优先级 0,1
进程优先级 0,1
进程等待时间 20
链接指针
Ù
running
Ù
wait
ready
PCB3
PCB4
PCB9
(3) 进程队列结构
2.程序算法
(1) PCB结构、变量与主程序
struct PCB
{ int pname;
int pri;
int runtime;
int waittime;
struct PCB *next;
}pcb[7];
struct PCB *running,ready,wait;
int sig=0;
main( )
{ 创建PCB[3]—PCB[9]并插入ready队列; /* pname分别为3—9,
pri=0,runtime=10,waittime=0 */
for(;;) /* 系统程序,完成初始化和处理机分派功能 */
{ case { sig=0:swtch;
sig=1:waiter;
sig=3:proc3;
sig=4:proc4;
sig=5:proc5;
sig=6:proc6;
sig=7:proc7;
sig=8:proc8;
sig=9:proc9; }
}
}
(2) 进程调度程序
swtch()
{ while(ready==NULL) wakeup();
移出就绪队列第一个PCB;
送running 指针;
若pri=1,则runtime=4,否则runtime=10;
将running®pname 送sig
}
(3) 进程等待函数
wait()
{ 将运行进程插入wait队列,优先数置1;
sig=0;
}
(4) 进程唤醒函数
wakeup()
{ 将wait队列中所有的PCB中waittime减1;
将wait队列中所有的waittime=0的PCB摘除;
插入到ready队列中第一个优先级为0的PCB前面
}
分页存储管理模拟实验
一.要求:
掌握分页存储管理的基本概念和实现方法。要求编写一个模拟的分页管理程序,能对一个已有的程序实现分页显示。
二.内容:
通过分页技术,在屏幕上显示data.txt中多个选定的数据。方法是:
· 读入数据为整数的逻辑地址(<0时退出);
· 将逻辑地址分解为页号、页内位移;
· 查页表,若该页不在内存块中(中断位为1),将该页从外存读入内存某一块中,淘汰策略为FIFO;否则,由页号得块号;
· 将内存中该数据显示在屏幕上。
三.分页存储管理的设计方法
1.数据结构
(1) 数据文件
在磁盘上创建一个包含1000个数据的文件data.txt。为了便于检查,数据依次为0、1、2、……、998、999。 从0开始,每100个数为一页。
(2) 页面映像表
设计页面映像表,包括:页号、中断位、块号。
(3) 内存缓冲区
申请存放300个字的缓冲区,设每100个字为一个内存块。初始状态:将数据文件的第一个页面装入到该缓冲区的第0块。
(4) 页面置换表
页面置换表的表项为3项,还有一个替换指针。采用先进先出页面置换算法。
2.程序算法
(1) 主程序
建立一个用户数据文件
初始化操作系统的数据结构;并装入用户数据文件的第一页。
(2) 调页程序
当读入数据的逻辑地址对应的块不在内存时,调用调页程序。该程序负责从数据文件中调入所需的页。
(3) 置换算法
当内存缓冲区中没有空闲块时,依置换策略选择一个可置换的页。
一.要求:掌握进程调度的策略及实现方法。实现按优先级与时间片相结合的进程调度算法。
二.内容:
1.设计进程控制块、进程队列结构(包括:就绪队列、等待队列、运行指针)等必要的数据结构。
2.模拟操作系统进程调度的功能,编写进程调度程序、模拟的处理机分派程序、进程等待函数和进程唤醒函数。
3.编写用户程序,创建6个用户进程。
三.进程调度的设计方法
1.数据结构
(1) 优先级与时间片的设计
· 进程因等待放弃CPU时,优先级置为1 (高优先级) ;
· 进程因时间片到放弃CPU时,优先级置为0 (低优先级) ;
· 优先级1 对应时间片4 ;优先级0 对应时间片10 。
(2) 进程控制块(PCB) 的内容
进程标识 3—9
进程优先级 0,1
进程优先级 0,1
进程等待时间 20
链接指针
Ù
running
Ù
wait
ready
PCB3
PCB4
PCB9
(3) 进程队列结构
2.程序算法
(1) PCB结构、变量与主程序
struct PCB
{ int pname;
int pri;
int runtime;
int waittime;
struct PCB *next;
}pcb[7];
struct PCB *running,ready,wait;
int sig=0;
main( )
{ 创建PCB[3]—PCB[9]并插入ready队列; /* pname分别为3—9,
pri=0,runtime=10,waittime=0 */
for(;;) /* 系统程序,完成初始化和处理机分派功能 */
{ case { sig=0:swtch;
sig=1:waiter;
sig=3:proc3;
sig=4:proc4;
sig=5:proc5;
sig=6:proc6;
sig=7:proc7;
sig=8:proc8;
sig=9:proc9; }
}
}
(2) 进程调度程序
swtch()
{ while(ready==NULL) wakeup();
移出就绪队列第一个PCB;
送running 指针;
若pri=1,则runtime=4,否则runtime=10;
将running®pname 送sig
}
(3) 进程等待函数
wait()
{ 将运行进程插入wait队列,优先数置1;
sig=0;
}
(4) 进程唤醒函数
wakeup()
{ 将wait队列中所有的PCB中waittime减1;
将wait队列中所有的waittime=0的PCB摘除;
插入到ready队列中第一个优先级为0的PCB前面
}
分页存储管理模拟实验
一.要求:
掌握分页存储管理的基本概念和实现方法。要求编写一个模拟的分页管理程序,能对一个已有的程序实现分页显示。
二.内容:
通过分页技术,在屏幕上显示data.txt中多个选定的数据。方法是:
· 读入数据为整数的逻辑地址(<0时退出);
· 将逻辑地址分解为页号、页内位移;
· 查页表,若该页不在内存块中(中断位为1),将该页从外存读入内存某一块中,淘汰策略为FIFO;否则,由页号得块号;
· 将内存中该数据显示在屏幕上。
三.分页存储管理的设计方法
1.数据结构
(1) 数据文件
在磁盘上创建一个包含1000个数据的文件data.txt。为了便于检查,数据依次为0、1、2、……、998、999。 从0开始,每100个数为一页。
(2) 页面映像表
设计页面映像表,包括:页号、中断位、块号。
(3) 内存缓冲区
申请存放300个字的缓冲区,设每100个字为一个内存块。初始状态:将数据文件的第一个页面装入到该缓冲区的第0块。
(4) 页面置换表
页面置换表的表项为3项,还有一个替换指针。采用先进先出页面置换算法。
2.程序算法
(1) 主程序
建立一个用户数据文件
初始化操作系统的数据结构;并装入用户数据文件的第一页。
(2) 调页程序
当读入数据的逻辑地址对应的块不在内存时,调用调页程序。该程序负责从数据文件中调入所需的页。
(3) 置换算法
当内存缓冲区中没有空闲块时,依置换策略选择一个可置换的页。
回复Comments
作者:
{commentrecontent}