操作系统课程实验教学大纲.docx
- 文档编号:9834062
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:24
- 大小:84.97KB
操作系统课程实验教学大纲.docx
《操作系统课程实验教学大纲.docx》由会员分享,可在线阅读,更多相关《操作系统课程实验教学大纲.docx(24页珍藏版)》请在冰豆网上搜索。
操作系统课程实验教学大纲
《操作系统》课程实验教学大纲
一、实验课名称:
中文名:
操作系统
英文名:
OperatingSystemPractice
二、实验课性质:
独立设课
三、适用专业:
信息管理与信息系统专业
四、采用教材及参考书:
1、汤子瀛、哲凤萍、汤小丹编:
《计算机操作系统》,西安电子科技大学出版社1996年12月;
2、张尧学,《计算机操作系统》,清华大学出版社;
3、周长林、左万历,《计算机操作系统教程》,高等教育出版社,1994年版;
4、孙钟秀,《操作系统教程》,高等教育出版社,1994年12月;
五、学时学分:
课程总学时:
54;课程总学分:
3;实验课总学时36;
六、实验项目名称和学时分配
序号
实验项目名称
学时
分配
实验
属性
实验
类型
实验者类别
每组
人数
必开/选开
1
熟悉使用计算机系统
3
专业类
设计性
本科生
1
必开
2
处理器调度
6
专业类
设计性
本科生
1
必开
3
作业调度
6
专业类
设计性
本科生
1
必开
4
同步机构
9
专业类
设计性
本科生
1
必开
5
资源分配
12
专业类
设计性
本科生
1
必开
七、实验教学的目的和要求
配合操作系统课程的学习,模拟实现操作系统的功能,目的是加深对操作系统理论的理解。
用户为了开发应用程序必须与操作系统打交道,编程时要借鉴操作系统的设计思想和算法。
操作系统实验使得学生从理论走向应用。
八、实验项目的内容和要求
实验一项目名称:
熟悉使用计算机系统
一、实验内容
选择一个计算机系统,熟悉该系统的操作命令,且掌握该计算机系统的使用方法。
二、实验目的
配合操作系统课程的学习,模拟实现操作系统的功能,有助于对操作系统的理解。
操作系统功能的模拟实现可以在计算机系统的终端上进行,也可以在一台微型计算机上进行。
根据您的学习条件,选择一个计算机系统,熟悉对该系统的使用,那么您可以顺利地完成本课程的实验。
为了尽快地熟悉计算机系统,可编辑一个源程序,且对编辑好的源程序编译、运行、显示/打印运行结果等。
三、实验题目
编制一个程序,求1010矩阵A的转置矩阵AT,即
要求确定两组初值,运行设计的程序,显示或打印每一组的A和AT。
四、实验报告
(1)实验题目。
(2)程序中使用的数据结构及符号说明。
(3)流程图。
(4)打印一份源程序并附上注释。
(5)打印两组A和AT的值。
实验二项目名称:
处理器调度
一、实验内容
选择一个调度算法,实现处理器调度。
二、实验目的
在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。
当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。
本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。
三、实验题目
设计一个按优先数调度算法实现处理器调度的程序。
[提示]:
(1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:
进程名
指针
要求运行时间
优先数
状态
其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。
指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。
要求运行时间——假设进程需要运行的单位时间数。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态——可假设有两种状态,“就绪”状态和“结束”状态。
五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
(3)为了调度方便,把五个进程按给定的优先数从大到小连成队列。
用一单元指出队首进程,用指针指出队列的连接情况。
例:
队首标志
K2
K1
P1
K2
P2
K3
P3
K4
P4
K5
P5
0
K4
K5
K3
K1
2
3
1
2
4
1
5
3
4
2
R
R
R
R
R
PCB1
PCB2
PCB3
PCB4
PCB5
(4)处理器调度总是选队首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“1”。
由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:
优先数-1
要求运行时间-1
来模拟进程的一次运行。
提醒注意的是:
在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。
在这里省去了这些工作。
(5)进程运行一次后,若要求运行时间0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。
(6)若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。
(7)在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。
(8)为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。
四、实验报告
(1)实验题目。
(2)程序中使用的数据结构及符号说明。
(3)流程图。
(4)打印一份源程序并附上注释。
(5)打印程序运行时的初值和运行结果。
要求如下:
ⅰ进程控制块的初始状态。
ⅱ选中运行的进程名以及选中进程运行后的各进程控制块状态。
对于ⅱ要求每选中一个进程运行后都要打印。
实验三项目名称:
作业调度
一、实验内容
模拟批处理多道操作系统的作业调度。
二、实验目的
每个用户请求计算机计算的一个计算任务叫做一个作业。
一个作业从输入初始数据到得到计算结果,要经过若干个步骤的相继执行。
例如,编辑、编译、运行等,其中每一个步骤称作一个作业步。
用户向系统提出作业加工步骤的方式称作业控制方式,作业控制方式有两种:
终端控制方式(又称直接控制方式或联机控制方式)和批处理控制方式(又称自动控制方式或脱机控制方式)。
在批处理控制方式下,用户采用系统提供的作业控制语言(JCL)写好作业说明书,说明作业加工的步骤。
操作员把一批作业组织成输入流,通过“预输入”手段使每个作业的信息(包括作业说明书、源程序、初始数据等)暂存在辅助存储器的“输入井”中。
批处理多道操作系统的作业管理有两个任务:
作业调度和作业控制。
采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。
作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业分配所需的系统资源。
对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。
本实验要求学生模拟作业调度的实现,了解作业调度在操作系统中的作用。
三、实验题目
采用先来先服务算法和运行时间最短者优先算法模拟设计作业调度程序。
[提示]:
(1)作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。
作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。
但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在这些作业中作出选择。
先来先服务算法是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业。
运行时间最短者优先算法总是按作业要求运行的时间来选择作业,每次挑选要求运行时间短且资源要求能满足的作业先进入主存执行。
(2)为了表示暂存在输入井中的各个作业的情况(作业信息在输入井中的位置、作业的资源要求等),常常采用二级目录结构:
作业表和预输入表。
例如:
用户名
作业名
资源要求
预输入表地址
作业表
文件名
文件属性
文件长度
在输入井中位置
预输入表
“预输入”程序为每个作业在作业表中占一登记栏,且把作业信息存放到输入井中并按文件(源程序文件、数据文件等)登记在预输入表中。
“预输入”程序工作时还把作业控制语句集中,作为作业说明书文件存放在输入井并登记在预输入表的第一栏中,同时把用户在作业说明书中提出的资源要求登记在作业表中。
本实验模拟作业调度,所以可不考虑有关“预输入”程序的工作。
假定“预输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了如下的作业表:
用户名
作业名
状态
运行时间
资源要求
预输入表
地址
主存
磁带
A
ZYA
收容
0.3小时
15k
2
B
ZYB
收容
0.5小时
60k
1
C
ZYC
收容
0.1小时
50k
3
D
ZYD
收容
0.4小时
10k
2
E
ZYE
收容
0.1小时
30k
3
其中状态分三种:
收容状态——作业已在输入井,但尚未被选中执行;
执行状态——作业被选中,正在执行;
完成状态——作业执行结束。
(3)假定主存中可容纳多道作业同时执行,那么作业调度按调度算法和资源分配情况查作业表,从中选择若干作业,对每个被选中的作业创建一个作业控制进程且使它们处于就绪状态,同时把选中作业的作业说明书读入主存。
处理器调度按调度策略选择作业调度进程或作业控制进程轮流占有处理器(处理器调度参见实验二)。
作业控制进程按作业说明书控制作业执行,当一个作业执行结束后,作业调度再从输入井中选择一个作业进入主存,直到输入井中的作业都执行结束,通知操作员再预输入一批作业。
本实验主要模拟作业调度,所以对处理器调度、作业控制过程简化。
用输入随机数模拟处理器调度,用输入“用户名、作业名”模拟一个作业已经执行结束。
于是,本实验的模拟流程可参考图11-1。
(4)假定某系统可供用户使用的主存空间共100k,并有5台磁带机。
主存分配采用可变分区分配方式且主存中信息不允许移动,对磁带机采用静态分配策略,主存中可同时执行的作业限定为两道,作业调度分别采用先来先服务算法和运行时间最短者优先算法,参考图11-1设计模拟作业调度的程序。
假定作业表的初值如提示
(2),分别在两种算法控制下运行设计的程序,依次显示被选中作业的用户名和作业名。
比较两种作业调度算法选择作业的次序。
在模拟作业执行结束输入被撤离作业的用户名、作业名时,应根据已在主存中的作业需运行的时间来决定撤离的先后次序。
四、实验报告
(1)实验题目。
(2)程序所用的数据结构及其说明。
(3)打印一份源程序且附上注释。
(4)打印程序运行前的作业表,运行不同算法的作业调度程序,打印每选择一个作业后的作业表变化情况以及作业被选中执行的次序。
图11-1作业调度模拟流程
实验四项目名称:
同步机构
一、实验内容
模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。
二、实验目的
进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。
我们把若干个进程都能进行访问和修改的那些变量称为公共变量。
由于进程是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。
为了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。
一般说,同步机构是由若干条原语——同步原语——所组成。
本实验要求学生模拟PV操作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。
三、实验题目
模拟PV操作同步机构,且用PV操作解决生产者——消费者问题。
[提示]:
(1)PV操作同步机构,由P操作原语和V操作原语组成,它们的定义如下:
P操作原语P(s):
将信号量s减去1,若结果小于0,则执行原语的进程被置成等待信号量s的状态。
V操作原语V(s):
将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。
这两条原语是如下的两个过程:
procedurep(vars:
semaphore);
begins:
=s-1;
ifs<0thenW(s)
end{p}
procedurev(vars:
semaphore);
egins:
=s+1;
ifs0thenR(s)
end{v}
其中W(s)表示将调用过程的进程置为等待信号量s的状态;R(s)表示释放一个等待信号量s的进程。
在系统初始化时应把semaphore定义为某个类型,为简单起见,在模拟实验中可把上述的semaphore直接改成integer。
(2)生产者——消费者问题。
假定有一个生产者和一个消费者,生产者每次生产一件产品,并把生产的产品存入共享缓冲器以供消费者取走使用。
消费者每次从缓冲器内取出一件产品去消费。
禁止生产者将产品放入已满的缓冲器内,禁止消费者从空缓冲器内以产品。
假定缓冲器内可同时存放10件产品。
那么,用PV操作来实现生产者和消费者之间的同步,生产者和消费者两个进程的程序如下:
B:
array[0..9]ofproducts;
s1,s2;semaphore;
s1:
=10,s2:
=0;
IN,out:
integer;
IN:
=0;out:
=0;
cobegin
procedureproducer;
c:
products;
begin
L1:
Produce(c);
P(s1);
B[IN]:
=C;
IN:
=(IN+1)mod10;
V(s2);
gotoL1
end;
procedureconsumer;
x:
products;
begin
L2:
p(s2);
x:
=B[out];
out:
=(out+1)mod10;
v(s1);
consume(x);
gotoL2
end;
coend.
其中的semaphore和products是预先定义的两个类型,在模拟实现中semaphore用integer代替,products可用integer或char等代替。
(3)进程控制块PCB。
为了记录进程执行时的情况,以及进程让出处理器后的状态,断点等信息,每个进程都有一个进程控制块PCB。
在模拟实验中,假设进程控制块的结构如图12-1。
其中进程的状态有:
运行态、就绪态、等待态和完成态。
当进程处于等待态时,在进程控制块PCB中要说明进程等待原因(在模拟实验中进程等待原因是为等待信号量s1或s2);当进程处于等待态或就绪态时,PCB中保留了断点信息,一旦进程再度占有处理器则就从断点位置继续运行;当进程处于完成状态,表示进程执行结束。
进程名
状态
等待原因
断点
图12-1进程控制块结构
(4)处理器的模拟。
计算机硬件提供了一组机器指令,处理器的主要职责是解释执行机器指令。
为了模拟生产者和消费者进程的并发执行,我们必须模拟一组指令和处理职能。
模拟的一组指令见图12-2,其中每条指令的功能由一个过程来实现。
用变量PC来模拟“指令计数器”,假设模拟的指令长度为1,每执行一条模拟指令后,PC加1,提出下一条指令地址。
使用模拟的指令,可把生产者和消费者进程的程序表示为图12-3的形式。
定义两个一维数组PA[0..4]和SA[0..4],每一个PA[i]存放生产者程序中的一条模拟指令执行的入口地址;每个SA[i]存放消费者程序中的一条模拟指令执行的入口地址。
于是模拟处理器执行一条指令的过程为:
取出PC之值,按PA[PC]或SA[PC]得模拟指令执行的入口地址,将PC之值加1,转向由入口地址确定的相应的过程执行。
(5)程序设计
本实验中的程序由三部分组成:
初始化程序、处理器调度程序、模拟处理器指令执行程序。
各部分程序的功能及相互间的关系由图12-4至图12-7指出。
模拟的指令
功能
p(s)
执行P操作原语
v(s)
执行V操作原语
put
B[IN]:
=product;IN:
=(IN+1)mod10
GET
x:
=B[out];out:
=(out+1)mod10
produce
输入一个字符放入C中
consume
打印或显示x中的字符
GOTOL
PC:
=L
NOP
空操作
图12-2模拟的处理器指令
序号
生产者程序
消费者程序
0
produce
p(s2)
1
p(s1)
GET
2
PUT
v(s1)
3
v(s2)
consume
4
goto0
goto0
图12-3生产者和消费者程序
·初始化程序:
模拟实验的程序从初始化程序入口启动,初始化工作包括对信号量s1、s2赋初值,对生产者、消费者进程的PCB初始化。
初始化后转向处理调度程序,其流程如图12-4。
图12-4初始化流程
·处理器调度程序:
在计算机系统中,进程并发执行时,任一进程占用处理器执行完一条指令后就有可能被打断而让出处理器由其它进程运行。
故在模拟系统中也类似处理,每当执行一条模拟的指令后,保护当前进程的现场,让它成为非运行态,由处理器调度程序按随机数再选择一个就绪进程占用处理器运行。
处理器调度程序流程见图12-5。
图12-5模拟处理器调度
·模拟处理器指令执行程序:
按“指令计数器”PC之值执行指定的指令,且PC加1指向下一条指令。
模拟处理器指令执行程序的流程图见图12-6和图12-7。
图12-6模拟处理器指令执行
(a)模拟P(s)(b)模拟V(s)
图12-7模拟PV操作的执行
另外,为了使得模拟程序有一个结束条件,在图12-6中附加了“生产者运行结束”的条件判断,模拟时可以采用人工选择的方法实现。
图12-7给出了P(s)和V(s)模拟指令执行过程的流程。
其它模拟指令的执行过程已在图12-2中指出。
四、实验报告
(1)实验题目。
(2)打印源程序并附上注释。
(3)从键盘上输入一组字符,由生产者每次读入一个字符供消费者输出。
运行模拟程序,打印依次读入的字符和经消费者输出的字符。
(4)把生产者和消费者进程中的P操作、V操作都改成空操作指令,观察在两者不同步的情况下可能出现的与时间有关的错误。
打印依次读入的字符和经消费者输出的字符。
实验五项目名称:
资源分配
一、实验内容
模拟实现资源分配。
二、实验目的
多个进程动态地共享系统的资源可能会产生死锁现象。
死锁的产生,必须同时满足四个条件,第一个是互斥条件,即一个资源每次只能由一个进程占用;第二个为等待条件,即一个进程请求资源不能满足时,它必须等待,但它仍继续保持已得到的所有其它资源;第三个是非出让条件,任何一个进程不能抢占另一个进程已经获得且未释放的资源;第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源。
防止死锁的机构只须确保上述四个条件之一不出现,则系统就不会发生死锁。
在实验中假定系统中任一资源在每一时刻只能则由一个进程使用,任何进程不能抢占它进程正在使用的资源,当进程得不到资源时必须等待。
因此只要资源分配策略能保证进程不出现循环等待,则系统就不会发生死锁。
本实验要求学生编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。
三、实验题目
用按序分配策略实现资源分配。
要求:
(1)设计一个3个进程共享10个资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
(2)设计用按序分配算法实现资源分配的资源分配程序,应具有显示或打印各进程依次要求申请的资源号以及依次分配资源地情况。
(3)确定两组各进程依次要求申请的资源号,要求其中的一组中各进程按序地申请资源,另一组中各进程申请资源不受序号限制,分别运行上述设计的资源分配程序,观察运行结果。
[提示]:
(1)防止进程发生循环等待的另一种资源分配策略是按序分配算法,其基本思想如下:
把系统中所有的资源排一个顺序,例如系统共有m个资源,用ri表示第i个资源,那么这m个资源是:
r1,r2,r3……,rm
规定任何进程不得在占用资源ri(1 可以证明,按这种策略分配资源时破坏了循环等待条件,故能防止发生死锁(证明略)。 (2)把各进程申请资源的情况记录在进程控制块PCB中,现假定进程控制块PCB的格式如下: 进程号 状态 当前等待资源号 上次申请资源号 其中“状态”可以为就绪态、等待态和完成态。 当进程处于等待态时,表示系统不能满足该进程的当前资源申请,此时,PCB中的“当前等待资源号”反映了该进程等待的资源。 当系统为进程分配了一个资源后,则把分配的资源号填入“上次申请资源号”一栏中。 (3)假定系统中拥有的资源数m=10,而系统中申请资源的进程数N=3。 按序分配算法程序流程见图13-4。 四、实验报告 (1)实验题目。 (2)程序中使用的数据结构及符号说明。 (3)打印一份源程序并附上注释。 (4)打印资源申请和分配情况 资源申请: 进程号 依次申请的资源数/资源号 分配情况: 序号 进程号 得到的资源数/资源号 等待资源数/资源号 图13-4按序分配算法模拟流程 以上所有实验都为设计型试验,应配备的主要设备名称和台件数如下: 序号 设备名称 每组应配台件数 现有台数 备注 所有 PII及以上的微机 1 九、实验课考核方式: 1、实验报告: 按照每次实验的要求写实验报告(具体格式统一印制)。 2、考核方式: 期末考试形式为机考。 最后成绩核算,平时成绩占30%,期末考试占70%。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程 实验教学 大纲