您的当前位置:首页正文

操作系统实验内容

2023-04-18 来源:欧得旅游网
实验内容1(Linux)

实验1 Linux基本环境 1、实验目的

(1)熟悉Linux下的基本操作,学会使用各种Shell命令去操作Linux,对Linux有一个感性认识。

(2)学会使用vi编辑器编辑简单的C语言程序,并能对其编译和调试。 2、实验预备内容

(1)参阅相关Linux操作系统的安装手册,熟悉Linux的基本安装和配置; (2)参阅相关Linux的命令参考手册,熟悉Linux下的操作命令。 3、实验内容 (1)

以root用户身份登陆,并使用“ls”,“cat”“cd”等命令来实现基本的文件

操作并观察Linux文件系统的特点;

(2)

使用vi编辑器编写一C程序,并用gcc命令进行编译和链接,并用a.out来

进行输出结果。

4、思考

(1)Linux系统在用户登陆和操作界面以及文件系统上有哪些特点? 实验2 进程管理 1、实验目的

(1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。

(3)分析进程竞争资源现象,学习解决进程互斥的方法。 (4)了解Linux系统中进程通信的基本原理。 2、实验预备内容

(1)阅读Linux的sched.h源文件,加深对进程管理概念的理解。 (2)阅读Linux的fork.c源文件,分析进程的创建过程。 3、实验内容 (1)进程的创建

编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;

子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。

(2)进程的控制

修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。

如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

(3)①编写一段程序,使其现实进程的软中断通信。

要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:

Child Processll is Killed by Parent! Child Processl2 is Killed by Parent!

父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is Killed!

②在上面的程序中增加语句signal (SIGNAL, SIG-IGN) 和signal (SIGQUIT, SIG-IGN), 观察执行结果,并分析原因。

(4)进程的管道通信

编制一段程序,实现进程的管理通信。

使用系统调用pipe()建立一条管道线;两个子进程P1和P2分别向管道中写一句话: Child 1 is sending a message! Child 2 is sending a message!

而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。 要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。 4、思考

(1)系统是怎样创建进程的?

(2)可执行文件加载时进行了哪些处理? (3)当首次调用新创建进程时,其入口在哪里? (4)进程通信有什么特点? 实验4 存储管理 1、实验目的

存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。

2、实验内容

(1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①50%的指令是顺序执行的;

②50%的指令是均匀分布在前地址部分; ③50%的指令是均匀分布在后地址部分。 具体的实施方法是:

①在 [0,319] 的指令之间随即选取一起点m; ②顺序执行一条指令,即执行地址为m+1的指令;

③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m′; ④顺序执行一条指令,其地址为 m′+ 1;

⑤在后地址[m′+ 2,319]中随机选取一条指令并执行; ⑥重复上述步骤①-⑤,直到执行320次指令。 (2)将指令序列变换为页地址流 设:①页面大小为1k;

②用户内存容量为4页到32页; ③用户虚存容量为32k。

在用户虚存中,按每k存放10条指令排在虚存地址,即320条指令在虚存中的存放方式为:

第0条-第9条指令为第0页(对应虚存地址为[0,9]); 第10条-第19条指令为第一页(对应虚存地址为[10,19]);

„ „

第310条~第319条指令为第31页(对应虚地址为[310,319])。 按以上方式,用户指令可组成32页。

(3)计算并输出下述各种算法在不同内存容量下的命中率。 ①先进先出的算法(FIFO); ②最近最少使用算法(LRR);

③最佳淘汰算法(OPT)先淘汰最不常用的页地址; ④最少访问页面算法(LFR); ⑤最近最不经常使用算法(NUR)。 其中③和④为选择内容。

命中率=1-页面失效次数/页地址流长度

在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

3、随机数产生办法,Linux或UNIX系统提供函数strand()和rand(),分别进行初始化和产生随机数。例如:

srand ();

语句可初始化一个随机数; a[0]=10*rand()/65535*319+1; a[1]=10*rand()/65535*a[0]; 语句可用来产生a[0]与a[1]中的随机数。

实验内容2

实验一:进程同步与互斥

一、实验目的和要求:

通过本实验,掌握临界区和临界资源的概念,并发的进程对临界区的同步与互斥的操

作,能用信号量来实现进程的同步与互斥。熟悉进程控制机制的主要数据结构设计及同步机构的通信机构的实施。要求设计一个程序:

(1)能动态地模拟出A B C三进程互斥使用资源S1; (2)能模拟出A B同步使用资源S2:

二、实验预习要求:

(1)能明确wait,signal的含义;

(2)能明确进程同步、进程互斥的含义。理解和掌握同步、互斥的定义及概念。

三、实验范例:

(1)实验内容用wait,signal来实现A B C进程之间的关系

② A B C互斥访问资源S1;

② A B二进程同步使用资源S2:

(2)实验说明:

① wait是原子操作;描述如下:

wait(s):while s>=0 do no-op; s:=s-1;

② signal是原子操作;描述如下:

signal(s): s:=s+1;

③ 临界资源一次只允许一个进程使用,各进程对临界资源互斥操 作进程间的这种关系称为进程互斥

④ 为完成同一任务而相互进行合作的各个进程间的这种协同关系

称为进程同步。

四、问题描述及算法:

(1)问题描述1及算法1

设资源S1属于临界资源,A B C三进程对它进行操作由随机数进行控制, 随机产生1~4之 间的随机数:

当随机数为4时,表明此刻无进程申请使用该资源 当随机数为3时,表明C进程要求使用资源 当随机数为2时,表明B进程要求使用资源 当随机数为1时,表明A进程要求使用资源

可对资源S1 设置一标量,为0时表示为空闲,1时表示忙。A B二进程对 资源S2进行同步操作,则可对资源S2设置一标量,若A已对资源S2操作 完后,则将标志量置1。请自行设定A,B,C三个进程使用该资源时分别所需的时间。 算法1如下:

①设置标志量flag,当flag为0时表明资源S1为空闲,flag为1时表明资源S1为忙。 ②连续产生1~4之间的随机数x switch(x)

{case 1: A进程要求访问资源S1,判断是否能访问,否则 进入等待队列。 case 2:B进程要求访问资源S1 case 3:C进程要求访问资源S1 case 4:表示临界资源S1为空闲 }

2、问题2描述及算法2

设置两个标志量:flag1与flag2。flag1为1时表明资源S2为忙,为0时表明资源S2为空闲,flag2为1时表明S2已经被同步进程访问,而为0时 则相反,初始化时flag1=0,flag2=0。

产生一随机数:若1表示A进程要求访问资源 若2表示B进程要求访问资源。 算法及框图:

五、附程序(略)

实验二:哲学家进餐

一、 实验目的和要求:

通过本实验,掌握经典的进程同步问题,能更好地理解进程同步概念及实现方法,能掌握如何描述这些经典问题,及它们之间的控制关系,找出相应的信号量,描述它们的流程,并注意避免死锁问题的发生。要求设计一个程序:

(1)能模拟出五个哲学家进餐而不会产生死锁

(2) 在实验报告中要写出实验步骤及过程,实验结果及分析,要附程序或算法。

二、实验预习要求:

(1) 能明确哲学家进餐的含义

(2) 掌握避免哲学家进餐死锁问题的方法

三、 实验范例:

实验内容:

选择一经典同步算法——哲学家进餐问题并编程实现 实验说明:

哲学家进餐死锁问题是经典的进程同步问题,避免这一问题的死锁可采取: 至多只允许四个哲学家进餐。

仅当哲学家的左、右筷子可用时才允许进餐。

规定奇数号的哲学家先拿他左边的筷子,然后去拿他右边的筷子,偶号则相反。 本实验指导中采用第一种方法。请自行设定每一个哲学家进餐需要的时间。

四、 问题描述及算法:

问题描述:

①给五个哲学家编号为1、2、3、4、5 ②给五个筷子编号为1、2、3、4、5。

③产生一个1~5之间的随机数,规定允许几个哲学家进餐设为X(X<=4) ④产生X个随机数,(表明哪几个哲学家想进餐) 算法及框图(略)

五、附程序(略)

实验三:时间片轮转算法的模拟

一、实验目的:

通过本实验,掌握并发进程的调读算法。如调度算法、时间片轮转调度算法、优先权调度算法、高响应调度算法、多级队调度算法等等,掌握各种调度算法所适应的各种环境 ;各种调度算法的特点。要求设计一个程序能动态,并从运行结果中看出进程按先来先服务排成一个就绪队列,按一定的时间片获得处理进行情况。

二、实验预习要求:

弄清RR轮转调度算法的基本原理。

三、实验范例:

(1) 实验内容

模拟出并发进程的RR轮转调度算法。 (2) 实验说明

时间片轮转调度算法是调度就绪队列中若干个进程,按先来先服务的原则,给进程分配时间片,运行进程。

四.问题描述及算法:

设有三个进程A B C,它们的服务时间为 10、5、7,

时间片为4,假设A B C三进程在就绪队列中的顺序为A B C。则用时间片轮转算法结果为

A进程被调度 0、12、20 B进程被调度 4、16、1 C进程被调度 8、7、3

A进程被调度 12、16、2 B进程被调度 16、17、完成 C进程被调度 17、20、完成 A进程被调度 20、22、完成

A被调度3次,B被调度2次,C被调度2次 算法描述如下:

(1)首先输入就绪队列中有几个进程。为N (2)再输入时间片。

(3)按时间片轮转算法调度进程。 (4)输出各进程所用时间片次数。

五、附程序(略)

实验四:存储器管理

一、 实验目的:

通过本实验,使学生熟悉存储器管理系统的设计方法, 进一步了解各种存储

器管理方法对常用的存储器实现算法,熟悉了解它们的特点。要求设计一个模拟系统,

该系统

(1) 能明确地表示出虚拟的管理方法,如页面淘汰,页面设置等,用先

进先出页面置换算法或最近最久末使用置换算法。

(2) 要在结果中能看到被置换的叶面,以及算出缺页率。

二、 实验预习要求:

熟悉虚拟存储的管理方式,如分叶、分段管理方式。 熟悉页面分配、置换、调入的方法和策略。 熟悉几个常用的叶面置换算法。

三、 实验范例:

实验内容

选择一种存储器管理方法设计一模拟系统:

 模拟支持虚拟存储器的动态分页、存储管理系统淘汰算法,用FIFO或LRU算法

四、问题描述及算法:

例如:用LRU算法实现页面置换:

当一进程所访问的叶面的叶面号的序列为 4 7 0 7 1 0 12 1 2 6 栈为3时,则变化情况为:

7 0 7 7 0 1 7 0 1 1 0 2 1 1 2 2 6 1 2 4 4 4 4 0 7 7 0 0 0 1 算法:

设置一队列表示栈的变化 输入进程所需的叶面号

用LRU算法,将栈顶队列的第一个结点淘汰 打印出队列的结点

五. 附程序(略)

因篇幅问题不能全部显示,请点此查看更多更全内容