操作系统原理实验报告

上传人:aa****6 文档编号:30017956 上传时间:2018-01-26 格式:DOC 页数:54 大小:1.08MB
返回 下载 相关 举报
操作系统原理实验报告_第1页
第1页 / 共54页
操作系统原理实验报告_第2页
第2页 / 共54页
操作系统原理实验报告_第3页
第3页 / 共54页
操作系统原理实验报告_第4页
第4页 / 共54页
操作系统原理实验报告_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《操作系统原理实验报告》由会员分享,可在线阅读,更多相关《操作系统原理实验报告(54页珍藏版)》请在金锄头文库上搜索。

1、HUNAN UNIVERSITY操作系统原理实验报告本实验是在 Linux RedHat 9.0 环境下完成的,所用的 Linux 内核为 2.4.20-8,gcc 版本为,Part 1由于 Linux 下的命令众多,因而选取了实验材料中常用的大部分命令进行演示,结果如下:实验一(1)显示当前目录的全路径名(2)将当前目录改变为根目录(3)跳到自己的 home directory(4)列出本目录中的文件(5)在用户主目录中创建一个名为 mydir 的新目录。然后调用长列表命令来查看/home/ 用户名 mydir 目录和/home/ 用户名目录(只查看目录文件的信息)(6)touch 命令在

2、mydir 目录创建名为 myfile1,myfile2 的两个文件(7)用 cat 查看/etc/passwd 文件的内容(8)建立 shell 脚本运行 shell 脚本结果(9)使用 cat 命令与重定向,创建一个名为 junk 的文件。先随便输入几行内容使用 cat 命令在你刚刚创建的文件的末尾新加入几行文本(10)显示/etc/passwd 文件的前 10 行的内容显示/etc/passwd 文件的后 10 行的内容(11)报告当前进程状态(12)实时监测进程状态(13)在一台机子上从控制台同时登录两个用户,g1,g2,g1 给 g2 发一封邮件。写上主题,忽略抄送(Cc:选项)首先

3、查看本机 IP用户创建然后进行远程登录(首先要检查时候安装 telnet,否则要先安装,然后才可能登陆成功。由于 root 用户一般情况下不能进行远程登录,所以如果当前用户是 root 时,远程登陆不会成功,要首先切换到普通用户,然后进行远程登录邮件由 g1 发送G2 邮件接收(14)送一个通知给所有的用户,告诉他们你已经完成了这个练习通知由 g2 发出(15)写个简单的程序,并且运行Part 2实验一 中断处理一、实习内容模拟中断事件的处理。二、实习目的现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。中断机构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时

4、停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。对不同的中断事件,由于它们的性质不同,所以操作系统应采用不同的处理。通过实习了解中断及中断处理程序的作用。本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。三、实习题目模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。(1) 计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中断寄存器的每一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成“1”。处理器每执行一条指令后,必须查中断寄存器,当

5、中断寄存器内容不为“0”时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加 1 来模拟处理器执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示发生了时钟中断事件,转时钟中断处理程序。 (2)假定计算机系统有一时钟,它按电源频率(50Hz)产生中断请求信号,即每隔2

6、0 毫秒产生一次中断请求信号,称时钟中断信号,时钟中断的间隔时间(20 毫秒)称时钟单位。可按确定的频率在键盘上键入“0”或“1”来模拟按电源频率产生的时钟中断信号。(3) 中断处理程序应首先保护被中断的现行进程的现场(通用寄存器内容、断点等) ,现场信息可保存在进程控制块中;然后处理出现的中断事件,根据处理结果修改被中断进程的状态;最后转向处理器调度,由处理器调度选择可运行的进程,恢复现场使其运行。本实习主要模拟中断事件的处理,为简单起见可省去保护现场和处理器调度的工作。(4) 为模拟时钟中断的处理,先分析一下时钟中断的作用。利用时钟中断可计算日历时钟,也可作定时闹钟等。计算日历时钟把开机时

7、的时间(年、月、日、时、分、秒)存放在指定的称为“日历时钟”的工作单元中,用一计时器累计时钟中断次数。显然,根据时钟中断的次数和时钟单位(20 毫秒)以及开机时的日历时钟可计算出当前的精确的日历时钟(年、月、日、时、分、秒) 。因此,可按需要计算出一个作业装入时的时间,一个作业撤离时的时间,终端用户使用终端的时间,以及其它场合需要确定的时间。定时闹钟对需要定时的场合,例如,处理器调度采用“时间片轮转”策略调度时,可把轮到运行的进程的时间片值(以时钟单位计算)送到称为“定时闹钟”的工作单元中,每产生一次时钟中断就把定时闹钟值减 1,当该值为“0”时,表示确定的时间已到,起到定时的作用。 (5)

8、本实习的模拟程序可由两部分组成,一部分是模拟硬件产生时钟中断,另一部分模拟操作系统的时钟中断处理程序。模拟程序的算法如图 1-1。其中,保护现场和处理器调度的工作在编程序时可省去。约定处理器调度总是选择被中断进程继续执行。(6) 按模拟算法设计程序,要求显示或打印开机时间、定时闹钟初值、定时闹钟为“0”四、 主要数据结构及符号说明local = localtime( st=asctime(local);/获取进程开始时间,即开机时间int count=0,count1=0,k=8,w/设置为时钟闹铃为 8,每个时间单位为 2 秒五、程序初值及运行结果开机时间:Dec 7 11:01:49 20

9、11定时闹钟(时钟单位) 闹钟结束时间(年、月、日、时、分、秒)2 Dec 7 11:02:05 20111 Dec 7 11:01:57 20113 Dec 7 11:02:13 2011六、实验体会和思考题通过本次实验明白了中断处理的详细过程,即中断处理程序应首先保护被中断的现行进程的现场,然后处理出现的中断事件,根据处理结果修改被中断进程的状态;最后转向处理器调度,由处理器调度选择可运行的进程,恢复现场使其运行。但是由于能力有限,对现场保护的过程不是很清楚,因此在实验的时候省去了这一过程,使得实验结过程大大简化。但是在今后的学习过程中会进一步探索中断保护的详细过程,希望能够有所突破。附录

10、源码:interupt_dispose.cpp#include #include #includeint main()double p;int a,m,r,n,e,o,u;struct tm *local; char *st,s27;time_t t; t=time(NULL); local = localtime( /call library asctime(&) function display the process start timest=asctime(local);int i;for(i=0;i=0.5)p=a+1;else p=a;m=(int)p;printf(time ha

11、ve passed :%dn,m);r=s17-48;/count the passed time n=s18-48;e=r*10+n;p=p+e;if(p#include #define MAX 5 /define the time below 5using namespace std;enum Statusrunning,ready,block; /define state of processenum Algorithmspf,rr; /define two algorithmstypedef class PCB /define PCB class which store informa

12、tion of PCBpublic:int id,cputime,alltime,startblock,blocktime;Status state;class PCB *next;PCB()PCB,*PCBptr,*PCBpp;PCBpp pp;void Print(PCBptr head) /print information of PCBPCBptr p;coutnext;p=p-next)if(p-next-state=running)coutnext-id;break;coutnext;p=p-next)if(p-next-state=ready)coutnext-idnext;p=

13、p-next)if(p-next-state=block)coutnext-idnext;p=p-next)coutnext-idnext-cputimenext-alltimenext-startblocknext-blocktimenext-state)case ready:coutnext!=p) q=q-next;q-next=p-next;delete p;void InsertSort(PCBpp Rdy,PCBpp RdyEd,Algorithm algthm) /sort ready queue as least nedd time if use spf algorithmif

14、(*(Rdy+1) /queue is not NULLif(RdyEd-1!=Rdy+1) /there are more than one PCB in the ready queueif(algthm=spf)if(*(RdyEd-1)-alltimealltime)/if the previous PCB still nend time is long than the next /then sort the queuePCBpp tt;*Rdy=*(RdyEd-1);*(RdyEd-1)=*(RdyEd-2);for(tt=RdyEd-3;(*Rdy)-alltimealltime;

15、tt-)*(tt+1)=*tt;*(tt+1)=*Rdy; void Run_To_Block(PCBpp Run,PCBpp &BlkEd) /convert process from run to block(*Run)-state=block;*BlkEd=*Run;BlkEd+;void Ready_To_Run(PCBpp &Rdy,PCBpp Run,Algorithm algthm)/convert process from ready to runif(algthm=spf)if(*(Rdy+1)(*(Rdy+1)-state=running;*Run=*(Rdy+1);Rdy+;else if(*Rdy)(*Rdy)-state=running;*Run=*Rdy;Rdy+;void Run_To_Ready(PCBpp Run,PCBpp Rdy,PCBpp &RdyEd,Algorithm algthm)/convert process from run to ready(*Run)-state=ready;*RdyEd=*Run;RdyEd+;if(algthm=spf)InsertSort(Rdy,RdyEd,algthm);int main()coutn) cerrnext=Listq; List

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号