ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:29.12KB ,
资源ID:8217450      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8217450.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验指导.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实验指导.docx

1、操作系统实验指导操作系统实验指导目录实验一 熟悉Linux环境 1实验二 进程创建及进程通信 1实验三 生产者-消费者问题 1实验四 存储管理实验 1上机实验报告内容 1附录1 Cygwin使用指南 11 引言 12 机理 13 安装设置cygwin 13.1 安装 13.2 改变cygwin的最大存储容量 1附录2 Linux简介 11 Linux的产生 12 文件存取权限和所有权限 13 常用命令用法 13.1 查询命令说明的 man命令 13.2 列出文件列表的ls命令 13.3 切换目录的cd命令 13.4 建立目录的mkdir 命令 13.5 删除目录的rmdir命令 13.6 拷贝

2、文件的cp命令 13.7 删除文件或目录的rm命令 13.8 more命令:每次以一个page显示 13.9 cat命令: 显示文件的内容 13.10 移动或更改文件名的mv命令 13.11 显示目前所在目录的pwd命令 13.12 less命令 13.13 find命令:寻找文件与目录 13.14 显示文件类型的file命令 13.15 搜寻字符串的grep命令 13.16 重定向与管道符 13.17 chmod命令:修改文件的权限 13.18 ps命令: 查询正在执行的进程 13.19 kill命令:终止正在执行的进程 13.20 clear 命令:清除屏幕 14 vi的用法 14.1 v

3、i概述 14.2 调用vi 14.3 保留和退出vi 14.4 vi态 14.5 在vi中移动光标 14.6 删除正文 14.7 修改正文 1附录3 源程序 1exam1.c 创建子进程示例1 1exam2.c 创建子进程示例2 1exam3.c利用管道实现单向通信 1exam4.c利用管道实现父子进程双向通信 1exam5.c 实现进程互斥示例程序 1exam6.c 实现进程同步示例程序 1exam7.c 生产者和消费者问题 1exam8.c 请求页式存储管理页面置换算法比较 1实验一 熟悉Linux环境实验目的:掌握linux常用命令的用法、vi编辑器的使用及Emacs编辑器的用法。实验内

4、容:Linux常用命令:ls、mkdir、rm、cp、pwdvi编辑器的使用Emacs编辑器的使用实验二 进程创建及进程通信实验目的:掌握linux进程创建的基本方法及进程间的通信实验内容:利用fork()创建子进程,利用pipe()实现进程间的通信。实验三 生产者-消费者问题实验目的:掌握进程之间的同步与互斥实验内容:利用信号量实现生产者-消费者问题。实验四 存储管理实验实验目的:通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。实验内容:(1) 通过随机数产生一个页地址流,共640页(2) 用户内存容量为4页到32页(3) 计算并输出下述各

5、种算法在不同内存容量下的命中率。1) FIFO 先进先出算法2) LRU 最近最少使用页面算法3) OPT 最佳淘汰算法上机实验报告内容一 实验题目与要求二 总的设计思想及环境语言、工具等三 数据结构与模块说明(功能与框图)四 源程序五 运行结果与运行情况六 自我评价与总结1 你认为你完成的作业哪些地方做得比较好或较出色。2 差距与局限,什么地方做的不太好,或什么地方可以做得更好,进一步的工作。3 从本作业得到的收获。对编写与调试过程中经验教训的总结。4 对实验题的评价和改进意见附录1 Cygwin使用指南1 引言cygwin是一个在windows平台上运行的unix模拟环境,是cygnus

6、solutions公司开发的自由软件。它对于学习unix/linux操作环境非常有用。2 机理cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法他们写了一个共享库(就是cygwin.dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于win32 api写了一个un

7、ix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。3 安装设置cygwin3.1 安装要安装网络版的cygwin,可以到,点击Install Cygwin Now!。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的

8、cygwin。按照每一屏的指示可以方便的进行安装。3.2 改变cygwin的最大存储容量Cygwin程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。添加一个DWORD键heap_chunk_in_mb并把它的值设为需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下:regtool -i set /HKLM/Software/Cygnus Solutions/Cygwin/he

9、ap_chunk_in_mb 1024regtool -v list /HKLM/Software/Cygnus Solutions/Cygwin附录2 Linux简介1 Linux的产生Linux操作系统的历史是与Unix操作系统的历史联系在一起的,在较小的程度上与一个称作Minix的程序也联系在一起。在1991年,一个名为Linus Torvals的芬兰大学生 ,他由于付不起研究Unix的巨大费用,他就产生了自己做一个与Unix性能相似的免费的系统供所有计算机爱好者使用。他把Minix系统中的一些计算机科学概念集成起来模仿Unix系统,几个月后,他开发出了Linux核心0.02版,Linu

10、x诞生了。Linux的发展离不开Internet网络,可以说是网络的产物,是全世界计算机爱好者开发出来的。它是自由的免费的软件。Linux只是一个内核,Linux发行版是Linux内核以及各种应用软件的集合,那么Linux出现了两种版本号。一种是内核版本,一种是发行版本号。例:发行版本:RedHat 7.2,内核版本号: 2.4.10。 Linux内核版本号的格式是由3位数字组成 n.x.y: 其中数字n是主版本号;数字x是标志位,当x是偶数时,表示此版本为稳定版,当x是奇数时,表示此版本为测试版,内核不很稳定;数字y表示错误修正次数。一般情况下,数字越大表示版本越高。2 文件存取权限和所有权

11、限每一个目录和文件都有一个所有者、一个分组和一系列存取权限。存取权限本身又分为对应着所有者、分组和全体用户的几个组成部分。文件的存取权限是使用长格式化文件列表命令( ls -l)列文件清单时出现在最左边的第一数据段。这个数据段又可以被分解为1 0个标志位。(1) 类型标志位存取权限数据段的第一位,或者第一个字母表示的是这个项目的类型,许多不同的项目会用到这个标志位:-表示该项目是一个普通文件d表示该项目是一个目录l表示该项目是一个符号链接s表示该项目是一个可执行文件,不论谁都可以像它的所有者那样调用它运行c表示该项目是一个字符设备驱动程序b表示该项目是一个块设备驱动程序(2) 存取权限三位组存

12、取权限的其余部分每三位一组,分为三组。类型位后面的第1个三位组定义了其所有者的存取权限。第2个三位组定义了其所在分组的存取权限;第3 个三位组则说明了系统上任何人的存取权限。从上面的介绍可以看出,认真设置这些标志位是非常重要的。(3) 解读三位组解读各个三位组的方法是完全一样的。每一个三位组是由3个不同的数据位组成的: 读标志位( r) 写标志位(w) 执行标志位(x)这些标志位永远都按照同一个顺序显示为rwx的形式。区别某个标志位是处于允许(on)还是禁止(off) 的状态就要看该标志位是显示为一个字母还是一个连字符(-)。举例来说,在rw-存取权限数据段表示读标志位在允许状态、写标志位在允

13、许状态、但是执行标志位就是禁止状态;所以这个三位组就表示具有读和写的权限,但是没有可执行权限。3 常用命令用法3.1 查询命令说明的 man命令Linux 操作系统中的许多命令都带有扩展文档。获得帮助最快的方法是使用man(英文manual的缩写)命令。它将显示该命令的使用手册页如果这个命令有使用手册页的话。输入“man command”打开一个使用手册页;按下q键从中退出。如果在某个使用手册页的开始部分说明这个文档将不再继续有效,需要另外使用texinfo程序阅读,请使用“info command”的格式阅读这个文件。 用法:man 命令名称 由于显示画面很长,我们可用pageup和page

14、down来上下切换画面。 注意:Linux中区分大小写,命令一般用小写。3.2 列出文件列表的ls命令作用:显示当前目录有哪些文件和子目录。不加任何参数 :显示当前目录的内容。 -a 显示所有文件和目录(若无此参数,句点开始的文件和目录不会显示出来) -A 显示所有文件和目录(它比-a 少显示.和.两项) -F 在特殊文件或目录上加上标示(子目录后加 /,程序文件后加上*) -l 以长格式显示。会显示文件或目录的详细信息。例:ls ls a ls -al /参数的混合使用 ls -l | more /符号|为管道操作,将ls l的输出作为more的输入3.3 切换目录的cd命令 cd . 切换

15、到上一级目录 cd / 切换到根目录 cd 切换到用户目录 “.” 表示当前目录。 cd 切换到指定的路径3.4 建立目录的mkdir 命令 mkdir data 在当前目录下建立data子目录 mkdir /data 在根目录下建立子data目录 注意: 用户不能在一个不存在的目录下建立子目录。3.5 删除目录的rmdir命令 rmdir 可用来删除空的子目录。 rmdir data rmdir /data 注意:如果要删除具有文件或子目录的目录,用rm会比较方便。3.6 拷贝文件的cp命令 cp data1.txt data2.txt cp data3.txt /tmp/data 关于cp

16、命令的参数。 -i 覆盖相同文件名称前先询问用户。 -v 显示命令的执行过程 -r 递归拷贝,即拷贝时将所有目录一并拷贝。3.7 删除文件或目录的rm命令 rm data.txt rm *参数说明: -f 强迫删除文件,不询问用户 -r 递归删除。(将参数中列出的全部目录和子目录删除) -i 进行交互式删除3.8 more命令:每次以一个page显示 一般和别的命令用管道符配合使用。例如: ls -l |more3.9 cat命令: 显示文件的内容 cat data.txt 显示文件的内容3.10 移动或更改文件名的mv命令 mv data.txt . 移动文件 mv data1.txt da

17、ta2.txt 更改文件名3.11 显示目前所在目录的pwd命令 pwd3.12 less命令与more命令相似,一次以一个page显示,可以前翻、后翻 less 文件名称3.13 find命令:寻找文件与目录 find / -name gzip -print3.14 显示文件类型的file命令 file 文件名3.15 搜寻字符串的grep命令 一般用来过滤先前的结果,而避免显示太多不必要的信息。3.16 重定向与管道符 | 管道操作,前一个命令的输出是后一个命令的输入 可将结果输出到文件中,如果该文件原来就存在,则该文件原有内容会被删除。 将结果附加到文件后面,原文件内容不会被清除。 ls

18、 l dir.txtcat data1.txt all_data.txt3.17 chmod命令:修改文件的权限 chmod u+rwx file1 chmod u-x file1 chmod g+rw,o+r file1 /同组用户对file1增加权限是可读、可写,其它用户则只能读 chmod 700 file13.18 ps命令: 查询正在执行的进程3.19 kill命令:终止正在执行的进程3.20 clear 命令:清除屏幕4 vi的用法任何计算机用户最常做的事之一就是创建和编辑文件,包括文档、报告和文字等。在Linux/Unix操作系统中vi是一个有效的、相对简单的全屏幕编辑。使用vi

19、,只要知道少量基本命令,然后,就能逐步扩大你的能力,去使用大量更复杂的命令。4.1 vi概述vi表示“visual editor”(直观编辑)。vi是一个Linux/Unix操作系统世界中极为普遍的全屏幕文本编辑器。vi提供了面向行和面向屏幕的有力特点,能完成任何正文编辑任务。vi使你能创建新文件、修改旧文件。4.2 调用vi在命令行上打入: $ vi filename如果文件存在,就能看到指定文件的前24行。如果文件是新的,就能在屏幕底部看到告诉你正在创建新文件的信息。一行开始处的波折号()表示文件的结尾。4.3 保留和退出vi在改变文件的屏幕样本时,未改变原始正文文件。改变成命令态,并打入

20、:w,则写或保留,作出对文件的改变。最好你经常保留你的改变。如果你不常保留,在掉电或计算机故障时,就损失了你的工作结果。当你完成了在文件上的工作后,打入:wq,写你改变后的文件,退出vi。:x和ZZ完成与:wq同样的工作。不要保留任何修改的退出,打入:q!,如果你已做了改变,但不希望保留它,这种用法是有用的。4.4 vi态vi使用了二种状态:命令态和插入态。当vi处于命令态时,打入的内容作为命令来解释。大多数vi命令是单字符。当vi处于插入态时,可打入正文给文件。调用vi后,设置为命令态。从插入态改变为命令态,按键。从命令态改变成插入态,使用以下插入命令之一。 a.命令i在光标处插入正文。 b

21、.命令I在一行开始处插入正文。 c.命令a在光标后追加正文。 d.命令A在行尾追加正文。 e.命令o在光标下面新开一行。 f.命令O在光标上面新开一行。在插入态处,不能打入命令,必须先按键,返回到命令态。你不知道自己处于何态,按,不管原先是何态,都回到命令态。4.5 在vi中移动光标在全屏幕编辑时,能移动光标到文件的某位置,以便打入正文或作改变。若键盘上有箭头键,就能在命令态中用它们,将光标进行上、下、左、右移动。在命令态中,使用以下命令,在文件内部移动。 a. h往左移动光标一个字符。b. l往右移动光标一个字符。 c. k向上移动光标一行。 d. j向下移动光标一行。 e. w向前移动光标

22、一个字。 f. b向后移动光标一个字。 g. $移动光标到一行结尾处。 h. O移动光标到一行开始处。 i. G移动光标到文件结尾。 j. 1G移动光标到文件开始。 k. +u向上移动半个屏幕。 l. +d向下移动半个屏幕。4.6 删除正文x删除光标处字符。X删除光标前字符。dw删除下一字符。dd删除整个一行。在删除命令前打入的数,表示执行此命令多少次,例如:15dd删除下15行。d$或D将从光标处到行结尾处均删除。d0或d将从光标处到行开始处均删除。u恢复前一次所做的删除。4.7 修改正文r后跟的一个新字符代替在光标处的字符。R打入需代替的一组正文字符,修改完后按返回命令态。cw代替整个字,

23、从打入起到按止。c$或C将替代光标到行结尾处的正文。c0将替代从光标到行开始处的正文。 cc使整个行空白,但保留光标位置,让你开始打入。如删除命令一样,在命令前打入的数,表示执行该命令多少次。附录3 源程序exam1.c 创建子进程示例1 /父进程创建一个子进程,父进程显示金木水火土,子进程显示日月星辰,多次运行该程序会得到不同的运行结果。#include #include #include main() int pid,n=0; srand(getpid();/*设置随机种子*/ if (pid=fork()!=0) while(n5) printf(%d,n+); printf(金木水火土

24、n); sleep(rand()%3); /睡眠 else while(n5) printf(%d,n+); printf(日月星辰n); sleep(rand()%3);exam2.c 创建子进程示例2 /子进程改变了全局变量globa 和局部变量vari的值。通过调试运行,体会进程的运动轨迹。#include #include #include int globa=4;int main(void) pid_t pid; int vari=5; printf(before forkn); if (pid=fork()0) printf(fork errorn); exit(0); else

25、if (pid=0) globa+; vari-; printf(Child changed the vari anf globa.n); else printf(Parent didnt changed the vari and globa.n); printf(globa=%d,vari=%dn,globa,vari); exam3.c利用管道实现单向通信/ 利用管道实现单向通信#include #include #include #define MAXLINE 80int main(void)int n,fd2;pid_t pid;char lineMAXLINE;if (pipe(fd

26、)0) printf(pipe error!n); exit(1); if (pid=fork()0) close(fd0); write(fd1,How are you?n,15); printf(Parent: successfully!n); else close(fd1); n=read(fd0,line,MAXLINE); printf(Child:Reading from the pipe:%sn,line); exam4.c利用管道实现父子进程双向通信/利用管道实现父子进程双向通信#include #include #include #define MAXLINE 80int m

27、ain(void)int n,fd12,fd22;pid_t pid;char lineMAXLINE;if (pipe(fd1)0) printf(pipe1 error!n); exit(1); if (pipe(fd2)0) printf(pipe2 error!n); exit(2); if (pid=fork()0) close(fd10);close(fd21); write(fd11,How are you?n,15); printf(Parent: successfully!n); n=read(fd20,line,MAXLINE); printf(Parent:Reading

28、 from the pipe:%sn,line); else close(fd11);close(fd20); n=read(fd10,line,MAXLINE); printf(Child:Reading from the pipe:%sn,line); write(fd21,Im fine, and you?n,30); printf(Child:successfullyn); exam5.c 实现进程互斥示例程序由于cgywin模拟器软件没有完全模拟linux的功能,比如信号量,内存共享、消息缓冲器等,所以实现进程的同步和互斥较为困难。本指导书提供了一个模拟的P和V操作,利用它可实现进程的互斥与同步,本模拟程序在运行过程中可能会出现一些问题,感兴趣的同学可参考本程序,共同研究探讨,逐步完善。/*源程序 sem.h 模拟P和V操作,在使用信号量时,先通过set_sem_init(int order,int value) 函数对信号量赋初值,参数order说明信号量序号,value为信号呈的初值。P操作的调用为p(int order),order 为信号量的序号。V操作的调用为v(int order),order 为信号量的序号,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1