操作系统实验指导书操作系统课程组2008-9-201第一部分操作系统上机指导Linux操作系统环境:RedHatEnterpriseLinuxESrelease3(TaroonUpdate1)(2.4.21-9.EL)RedFlagLinuxrelease4.0(HOT)(2.4)登录到系统常用命令练习:用root账号(超级用户)注册,口令为computer(注意大小写)。注册成功出现#号(超级用户系统提示符,普通用户的系统提示符为$)。1.注销(退出)系统:logout或exit3.练习使用命令ls(注意Linux命令区分大小写。)使用ls查看当前目录内容;使用ls查看指定目录内容,如/目录,/etc目录使用ls–all查看当前目录内容;使用dir查看当前目录内容4.使用cd改变当前目录cd..回到上层目录;cd/回到根目录5.pwd显示当前路径6.建立目录mkdirLastlogin:webOct2015:35:17tty1注意密码没有回显登录成功LocalhostLogin:Password:登录界面*用户名:root*密码:computer在GRUB中选择RedFlagLinux(ConsoleMode)/*命令行模式*/启动GrubRedFlagLinux在GRUB中选择RedHatEnterpriseLinuxES(2.4.21-9.EL)启动GrubRedHatLinux2mkdir目录名;mkdir/home/s2001/newdir7.删除目录:rmdir;8.复制文件cp:如cp文件名1文件名29.移动文件或目录:mv10.删除文件rm11.显示文件内容:more(分页显示);12.显示文件:cat文件名建立文件:cat文件名,ctrl+d结束输入使用编辑器vi编辑文件1.进入linux的文本模式之后,在命令行键入vifilename.c然后回车。下面作一些简单的解释:首先vi命令是打开vi编辑器。后面的filename.c是用户即将编辑的c文件名字,注意扩展名字是.c;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。2.最基本的命令I:当进入刚打开的文件时,不能写入信息,这时按一下键盘上的I键(insert),插入的意思,就可以进入编辑模式了。如下图所示:3.a与i是相同的用法4.当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。如果不想保存退出,则在第二步键入冒号之后,键入q!(不带w,机尾部保存)。如下图所示:5.退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是:gccfilename.c3[-ooutputfilename.out],其中gcc是c的编译器。参数:filename.c是要编译的源文件的名称,outputfilename表示输出文件名称,中括号表示括号内部的内容可输入也可以不输入(中括号本身不再命令行中出现)。如果不输入outputfilename.out,默认的输出文件是a.out。6.最后一步是运行程序,方法如下:./outputfilename.out添加新用户、修改文件属性1.添加新用户(在root下,按默认值回答)adduser用户名;如addusers2001;以新用户登录到系统2.修改用户口令passwd用户名3.控制文件属性使用ls–l查看文件属性改变用户的所有权:chown用户名文件名改变文件权限:chmodg+w文件名;chmodo-r文件名或使用数字方式修改:如chmod644文件名;chmod755文件名u(user用户),g(group组),o(other其他);w写访问权限,r读访问权限,x执行权限4.查看相关命令的帮助:man命令名5.显示当前系统中已注册的用户信息:who6.显示当前注册的用户信息:whoamiTip:Unix文件目录的属性显示格式:如:-rw-rw-rw-1steveusers138Apr519:34readmedrwxrwxrwx3steveusers80Apr519:43dir1三种权限:ownergroupothers文件或目录名最后修改的日期和时间文件的拥有者用户所在的组与文件链接的数文件的访问权限4第二部分操作系统实验实验1Linux基本环境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()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:ChildProcessllisKilledbyParent!ChildProcessl2isKilledbyParent!父进程等待两个子进程终止后,输出如下的信息后终止ParentProcessisKilled!5②在上面的程序中增加语句signal(SIGNAL,SIG-IGN)和signal(SIGQUIT,SIG-IGN),观察执行结果,并分析原因。(4)进程的管道通信编制一段程序,实现进程的管理通信。使用系统调用pipe()建立一条管道线;两个子进程P1和P2分别向管道中写一句话:Child1issendingamessage!Child2issendingamessage!而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。4、思考(1)系统是怎样创建进程的?(2)可执行文件加载时进行了哪些处理?(3)当首次调用新创建进程时,其入口在哪里?(4)进程通信有什么特点?实验3进程间通信1、实验目的Linux系统的进程通信机构(IPC)允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉Linux支持的消息通讯机制及信息量机制。2、实验预备内容阅读Linux系统的msg.c、sem.c和shm.c等源码文件,熟悉Linux的三种机制。3、实验内容(1)消息的创建,发送和接收。①使用系统调用msgget(),msgsnd(),msgrev(),及msgctl()编制一长度为1k的消息的发送和接收程序。②观察上面的程序,说明控制消息队列系统调用msgctl()在此起什么作用?(2)共享存储区的创建、附接和段接。使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。实验4存储管理1、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。2、实验内容(1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:①50%的指令是顺序执行的;②50%的指令是均匀分布在前地址部分;③50%的指令是均匀分布在后地址部分。具体的实施方法是:①在[0,319]的指令之间随即选取一起点m;②顺序执行一条指令,即执行地址为m+1的指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m′;6④顺序执行一条指令,其地址为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]中的随机数。实验5文件系统设计1、实验目的通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。2、实验内容为linux系统设计一个简单的二级文件系统。要求做到以下几点:(1)可以实现下列几条命令(至少4条);login用户登陆dir列文件目录create创建文件delete删除文件open打开文件close关闭文件7read读文件write写文件(2)列目录时要列出文件名、物理地址、保护码和文件长度;(3)源文件可以进行读写保护。3、实验提示(1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。(2)用户创建的文件,可以编号存储于磁盘上。如file0,file1,file2...并以编号作为物理地址,在目录中进行登记。实验6处理器调度一、实验内容选择一个调度算法,实现处理器调度。二、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。三、实验题目本实验有两个题,学