(完整word版)操作系统第一次试验报告_第1页
(完整word版)操作系统第一次试验报告_第2页
免费预览已结束,剩余16页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京邮电大学操作系统实验实验报告班号: 姓名:学号:_实验日期:2014.11.16实验名称:操作系统实验一、实验目的1、熟悉 LINUX 的基本环境,了解 LINUX 下进程和线程的实现二、实验内容1、熟悉 UNIX/LINUX 的常用基本命令2、利用 fork()生成子进程和 cione()生成线程。3、通过 mutex 来实现生产者和消费者问题。三、项目要求及分析(1)下载并安装LINUX,可以使用FEDORA或Ubuntu.(2) 熟悉UNIX/LINUX的常用基本命令如Is、who wc、pwd ps、pstree、top,cat,cd,chgrp,chmod,chow n, com

2、m,cmp,cp,rm,diff,mv,rmdir等, 了解环 境。(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。使用System V的信号灯,实现第二类读者-写者问题(写者优先,新来的 读者不允许进行写操作)。四、具体实现(1):熟悉 UNIX/LINUXUNIX/LINUX 的常用基本命令名称:Is使用权限:所有使用者使用方式:Is -alrtAFR name.说明:显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。参数:-a 显示所有档案及目录(Is

3、 内定将档案名或目录名称开头为.的视为隐藏档,不会列出)-I 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出-r 将档案以相反次序显示(原定依英文字母次序)-t 将档案依建立时间之先后次序列出-A 同-a,但不列出.(目前目录)及.(父目录)-F 在列出的档案名称后加一符号;例如可执行档则加*,目录则加/-R 若目录下有档案,则以下之档案亦皆依序列出協 C,Cweltlngubuntu:weiltngdbuntuIshello, chetlo.txthi,outmakeft le模坂未酣名文件央音乐hello.c-hello*txt-homework帕untu One视频文档

4、桌面hello, out hiI.homework-公共的園片 下载名称:who使用权限:所有使用者都可使用使用方式:who - husfV user说明:显示系统中有那些使用者正在上面,显示的资料包含了使用者ID,使用的终端机,从哪边连上来的,上限时间,呆滞时间,CPU 使用量,动作等等。参数:-h :不要显示标题列-u :不要显示使用者的动作/工作-s :使用简短的格式来显示-f :不要显示使用者的上线位置名称:wc功能说明:计算字数。语 法:wc -clw-help-version文件补充说明:利用 wc 指令我们可以计算文件的Byte 数、字数、或是列数,若不指定文件名称、或是所给予的

5、文件名为-”则 wc 指令会从标准输入设备读取数据。参 数:-c 或-bytes 或-chars 只显示 Bytes 数。-l 或-lines 只显示列数。-w 或-words 只显示字数。-help 在线帮助。-version 显示版本信息。k:ab:没右那个文件或目录Lettingubuntu:名称:pwd功能说明:显示工作目录。语法: pwd -help-version补充说明:执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。 参 数:-help 在线帮助。-version 显示版本信息。weilingubuntu:pwd /hone/wetltng名称:ps使用权限:所

6、有使用者使用方式:ps optio ns -help说明:显示瞬间行程(process)的动态参数:ps 的参数非常多,在此仅列出几个常用的参数并大略介绍含义-A 列出所有的行程-w 显示加宽可以显示较多的资讯-au 显示较详细的资讯-aux 显示所有包含其他使用者的行程au(x)输出格式:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDUSER:行程拥有者PID: pid%CPU:占用的 CPU 使用率%MEM:占用的记忆体使用率VSZ:占用的虚拟记忆体大小RSS:占用的记忆体大小TTY:终端的次要装置号码(minor device

7、 number of tty)STAT:该行程的状态:D:不可中断的静止(通悸頃 b 进行 I/O 动作)R:正在执行中S:静止状态T:暂停执行Z:不存在但暂时无法消除W:没有足够的记忆体分页可分配 fileName 到另一个档案) 参数:-n 或-number 由 1 开始对所有输出的行数编号-b 或-number-nonblank和-n 相似,只不过对于空白行不编号-s 或-squeeze-blank当遇到有连续两行以上的空白行,就代换为一行的空白行-v 或-show-nonprinting功能说明:变更文件或目录的所属群组。语 法:chgrp -cfhRv-help-version所属群

8、组文件或目录或 chgrp-cfhRv-help-reference=-version文件或目录.补充说明:在 UNIX 系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。 您可以使用 chgrp 指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码 皆可。参 数:-c 或-changes 效果类似-v参数,但仅回报更改的部分。-f 或-quiet 或-silent不显示错误信息。-h 或-no-dereferenee只对符号连接的文件作修改,而不更动其他任何相关文件。-R 或-recursive递归处理,将指定目录下的所有文件及子目录一并处理。-v 或-verbose显示

9、指令执行过程。-help 在线帮助。-reference=把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。-version显示版本信息。wetltngubuntucat h亡llo + v helloout #include#tnclude#i_nclude stnclude #i_nclude tnt Ratn(vold)int fd =-l;tntssize_t si2:e=* 1;char ftlenane- * hello * txt;char buf =,xuehao:201221151; char bufwagain =,Fxingming:hieiltngp;c

10、har bufre9die;fd = open(filename,O_RDWR|oGREAT|O_EXCL,S_IRWXU);prtntfFile is not extt!reopen ttp); fd=open(filenanieJ0_RDWR);/*reopen the file*/ prtntf(d:%dn,fd);名称:cd使用权限:所有使用者使用方式:cd dirName说明:变换工作目录至dirName。其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory (也就是刚 login 时所在的目录)。另外,也表示为 home

11、directory 的意思,则是表示目前所在的目录,则表示目前目录位置的上一层目录。名称:chgrp功能说明:变更文件或目录的所属群组。语 法:chgrp -cfhRv-help-version 所属群组文件或目录或 chgrp-cfhRv-help-reference=-version文件或目录.补充说明:在 UNIX 系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。 您可以使用 chgrp 指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码 皆可。参 数:-c 或-changes 效果类似-v参数,但仅回报更改的部分。-f 或-quiet 或-silent不显示错误

12、信息。-h 或-no-dereferenee只对符号连接的文件作修改,而不更动其他任何相关文件。-R 或-recursive递归处理,将指定目录下的所有文件及子目录一并处理。-v 或-verbose显示指令执行过程。-help在线帮助。-reference=把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。-version显示版本信息。指令名称 : chmod使用权限 : 所有使用者使用方式 : chmod -cfvR -help -version mode file.说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以

13、控制档案如何被他人所调用。参数 :mode : 权限设定字串,格式如下 : ugoa.+-=rwxX.,. ,其中 u 表示该档案的拥有者, g表示与该档案的拥有者属于同一个群体 (group) 者, o 表示 其他以外的人, a 表示这三者皆是。+ 表示增加权限、 - 表示取消权限、 = 表示唯一设定权限。r 表示可读取, w 表示可写入, x 表示可执行, X 表示只有当该档案是个子目录或者 该档案已经被设定过为可执行。-c : 若该档案权限确实已经更改,才显示其更改动作-f : 若该档案权限无法被更改也不要显示错误讯息-v : 显示权限变更的详细资料-R : 对目前目录下的所有档案与子目

14、录进行相同的权限变更(即以递回的方式逐个变更)-help : 显示辅助说明-version : 显示版本指令名称 : chown使用权限 : root使用方式 : chmod -cfhvR -help -version user:group file.说明 : Linux/Unix 是多人多工操作系统, 所有的档案皆有拥有者。 利用 chown 可以将 档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root) 所使用,一般使用者没有权限可以改变别人的档案拥有者, 也没有权限可以自己的档案拥有者改设为别人。 只 有系统管理者 (root) 才有这样的权限。参数 :user : 新的

15、档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体 (group)-c : 若该 档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息 -h : 只对于连结 (link) 进行变更,而非该 link 真正指向的档案 -v : 显示拥有者变更的 详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更 )-help : 显示辅助说明 -version : 显示版本 名称 : comm 功能说明:比较两个已排过序的文件。语法: comm -123-help-version 第 1 个文件 第 2 个文件 补

16、充说明: 这项指令会一列列地比较两个已排序文件的差异, 并将其结果显示出来, 如 果没有指定任何参数,则会把结果分成 3 行显示:第 1 行仅是在第 1 个文件中出现过的列, 第 2 行是仅在第 2 个文件中出现过的列, 第 3 行则是在第 1 与第 2 个文件里都出现过的列。 若给予的文件名称为 -,则 comm 指令会从标准输入设备读取数据。参 数:1 个文件里出现过的列。2 个文件里出现过的列。1 和第 2 个文件里出现过的列。-version 显示版本信息。名称 : cmp 功能说明:比较两个文件是否有差异。语 法: cmp -clsv-i -help 第一个文件 第二个文件 补充说明

17、: 当相互比较的两个文件完全一样时, 则该指令不会显示任何信息。 若发现有 所差异,预设会标示出第一个不同之处的字符和列数编号。 若不指定任何文件名称或是所给 予的文件名为 - ,则 cmp 指令会从标准输入设备读取数据。参 数:-c 或 -print-chars除了标明差异处的十进制字码之外,一并显示该字符所对应字符。-i或-ignore-initial=指定一个数目。-l 或 -verbose标示出所有不一样的地方。-s 或 -quiet 或-silent不显示错误信息。-v 或 -version显示版本信息。-help在线帮助。名称: cp使用权限:所有使用者使用方式:cp option

18、s source destcp options source. directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。参数:-a 尽可能将档案状态、权限等资料都照原状予以复制。-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。名称: rm 使用权限:所有使用者 使用方式: rm options name. 说明:删除档案及目录。参数: -i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -r 将目录及以下之档案亦逐一删除。执行命令后文件 a消

19、失。名称: diff 功能说明:比较文件的差异。语 法: diff -abBcdefHilnNpPqrstTuvwy-C -D -I -S-W-x-X-help-left-column-suppress-common-line文件或目录 1 文件或目录 2补充说明: diff 以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。参 数:-指定要显示多少行的文本。此参数必须与-c 或-u 参数一并使用。-1 不显示只在第 1-2 不显示只在第 2-3 不显示只在第 1-help 在线帮助。-a 或 -textdiff 预设只会逐行

20、比较文本文件。-b 或-ignore-space-change不检查空格字符的不同。-B 或 -ignore-blank-lines不检查空白行。-c 显示全部内文,并标出不同之处。-C或-context 与执行-c-指令相同。-d 或-minimal使用不同的演算法,以较小的单位来做比较。-D或 ifdef此参数的输出格式可用于前置处理器巨集。-e 或-ed此参数的输出格式可用于 ed 的 script 文件。-f 或-forward-ed输出的格式类似 ed 的 script 文件,但按照原来文件的顺序来显示不同处。-H 或 -speed-large-files比较大文件时,可加快速度。-

21、l 或 -ignore-matching-lines 若两个文件在某几行 有所不同,而这几行同时都包含了选项中指定的字符或字符串, 则不显示这两个文件的差异。-i 或-ignore-case不检查大小写的不同。-l 或 -paginate将结果交由 pr 程序来分页。-n 或 -rcs将比较结果以 RCS 的格式来显示。-N 或-new-file在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录:文件 A 若使用-N 参数,则 diff 会将文件 A 与一个空白的文件比较。-p 若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称。-P 或-unidire

22、ctional-new-file与-N 类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。-q 或-brief仅显示有无差异,不显示详细的信息。-r 或-recursive比较子目录中的文件。-s 或 -report-identical-files若没有发现任何差异,仍然显示信息。-S文件或-starting-file在比较目录时,从指定的文件开始比较。-t 或-expand-tabs在输出时,将 tab 字符展开。-T 或 -initial-tab 在每行前面加上 tab 字符以便对齐。-u,-U或-unified= 以合并的方式来显示文件内容的不

23、同。-v 或 -version显示版本信息。-w 或-ignore-all-space忽略全部的空格字符。-W 或-width 在使用-y 参数时,指定栏宽。-x或-exclude 不比较选项中所指定的文件或目录。-X或-exclude-from您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。-y 或-side-by-side以并列的方式显示文件的异同之处。-help 显示帮助。-left-column 在使用-y 参数时,若两个文件某一行内容相同,则仅在左侧的栏位显 示该行内容。-suppress-common-Iines在使用-y 参数时,仅显示不同之处。名称:mv使用权限:

24、所有使用者使用方式:mv opti ons source destmv opti ons source. directory说明:将一个档案移至另一档案,或将数个档案移至另一目录。 参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。执行命令后 a 中的内容移至 b 中名称:rmdir使用权限:于目前目录有适当权限的所有使用者使用方式:rmdir -p dirName说明:删除空的目录。参数:-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。(1)利用fork()生成子进程。fork()代码:#includetnt piain()Lni count=;tnt child;if(

25、J(child-fork()int t;printf(:.:; :%dn A.getpldO);elseprintf(,countPgetptd();编译后生成 fork.out 文件,执行 fork.out后运行结果如下:- rML.-Son1s count ISJand pid ts:2B15Son1s count is:1 and pid is:2015Son1s count佃;:2 and pid ls:2S15SonFs count is:3 and pid is:2B15Sonrs count tsj:4 and ptd ls:28iSSonhs count is:;5 and p

26、id is:2815sonrs count is;:6 and pid ts:28isSons count is:7 and pid ts:2B15SonFs count is:8 and pid Is:2815Son1s count is;and pid ts:2B15Sonrs count is:ie and pid is:2815Son1s count tsiill and pid is:2815Sonrs count is:12 and pid is:2B1SSons count is;:13 and pid is:28iSSonhs count is:14 and pid is:28

27、15sons count is:is and pid ts:Z8is5onrs count isj;16 and pid is:2815(3)利用clone()生成线程clone 代码:ffiriclude#incl.udefldefine FIBER STACK 7000;nt a;/(:id *stack;trit do_something() printf(,getptd()f+a);free(stack);extt();LTI1natn()a=;stack=mailoc(FIBER_STACK); if(Jstack)prlntffn;printf(n );clone(&do_

28、soFiething (*)t ack+FIBElR_STACK,);prtntfftgetpid(),);free(stack); whtle( ) sleep(); prlntf(,getpld()t+a); extt();编译后生成 clone.out 文件,执行 clone.out 后运行结果如下:Creating son threadthisisfmther,mypdis:2922,thea is;lthisissonthe pid is:2923the ais: 2thisIsfatherypldtS:29Z2,theats:2thisisfather,myptdis:2922Jt

29、hea is:3thisisfather,mypvdis:2922,theais:thtsIsfather nypldts:2922,theais:5thisIsfather.nypidis:292Ztthea is:6thisisfathertmypvdts:2922ithed ts:7thisisfatherypid15:2922,theis:athisIsfather,mypld13:2922,thea ts:9thisisfmtherFmypdts:2922,tlwa is;10thisisfathermypid15:2922,theais:llthisIsfatherpldtS:29

30、Z2,thea ts: 12thisisfather,myptdis:2922,thea is:13thisisf ather, niypldls:2922,theais:14通过 mutex 来实现生产者和消费者问题代码:s-r ict msgbtrL nsg *next;Lnt num;str it nsg *head= ;pthread_cond_t has_product=PTHREAD_COND_INITIALIZER; pthread_mutex_tIock=PTHREAD_nUTEX_INITIALIZER;:I *producer( oi i *p) struct msg *m

31、p;for(;) npmalloc(stzeofmsg);mp-nuE=mDcK+ ; prtntf C.Np-xiufi);pthread_mutex_lock(&lock); np-neKt=head;pthread_mutex_unlock(&lock); pthread_cond_signal(8has_product); sleep(rand()% );return:consumerC :*Pstruct msg *np;pt h rEmd_m u tE JC_1 oc k(医L ot lc); whtle(head= )( pthread_cond_waTt(ShBs_pradiJct;mp=head; head=mp-next; pthreadmutexunlockC&lock); pir intf ( mp-num);free(np); sle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论