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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

操作系统实验指导书自编.docx

1、操作系统实验指导书自编操作系统实验指导书广东商学院信息学院目 录实验项目一3实验项目二13实验项目三16概述Linux系统作为一个多用户、多任务的操作系统,因其具有强大的网络服务和网络管理功能,近年来受到网络用户和网络服务提供商的青睐。为配合操作系统课程的教学,使学生深入理解操作系统的分类、基本概念、工作原理以及实现技术,配套三个基于Linux平台的验证型实验。一、实验安排实验一 Linux综合实验(2学时,第7周)实验二 Linux进程管理(2学时,第9周)实验三 Linux进程通信(2学时,第11周)二、实验环境1、 软件环境Linux RedHat 7.1以上;TurboC 2.0。2、

2、 硬件环境局域网络;P2以上计算机;联机投影。三、实验要求1、 实验前认真作好相关知识准备,明确实验目的,掌握实验方法;2、 利用实验条件认真操作,预测并分析实验结果;3、 实验结束后按照要求撰写实验报告并按时提交。四、考核办法可以有几种考核办法:1、 根据实验课的考勤情况、实验结果占平时成绩的20%;2、 在期末试题中体现一定比例的实验内容。实验项目一 Linux综合实验一、 实验目的1、 体会多用户、多任务网络操作系统Linux的工作特点;2、 理解操作系统的分类、相关概念和资源管理功能。二、 预备知识1、 复习操作系统的分类、概念以及基本功能;2、 复习作业与进程管理、处理机调度、存储器

3、管理、文件管理以及设备管理的基础知识,理解相应的调度策略以及分配与回收算法;3、 复习Windows系统的管理功能、DOS命令的使用以及C程序设计语言等。三、 实验内容熟悉Linux的各种命令,体会操作系统提供给用户的命令接口的操作特点。(一)使用常识1、 超级用户与普通用户超级用户是对系统的一切资源均具有访问权限的用户,即系统管理员,用户名为:root,命令提示符为:#;普通用户由超级用户创建和删除,仅具有超级用户指定的访问权限,命令提示符为:$。超级用户和普通用户可以相互切换;要养成用普通用户登录、使用系统的习惯。2、 登录开机启动后,系统提示:Login:用户名 Password:口令输

4、入超级用户名root,出现提示符:#;输入普通用户名,出现提示符:$。在提示符后就可以输入各种Linux命令了。3、 创建和删除用户必须在超级用户下完成。创建新用户:# useradd 用户名 创建/修改口令: # passwd 口令删除用户: # userdel r 用户名4、 用户切换普通用户切换到超级用户:$ su password:口令超级用户切换到普通用户: # su 普通用户名5、 退出为避免其他用户非法盗用自己的用户名,停止使用系统时要退出。退出系统有很多方法:可以在命令提示符下键入exit 或logout命令,也可以使用组合键Ctrl+d。6、 关机普通用户没有关机权限,只有超

5、级用户才能关闭系统。关机方式有命令方式和组合键Ctrl+Alt+Del两种方式,可以使用halt或shutdown命令: # halt (显示System halted时才可以关闭电源) # shutdown (系统默认2分钟后关机) shutdown h now(系统立即关机) shutdown r now(系统立即重新开机) shutdown h 20:25(系统将在20:25分关机) shutdown h +10(系统在10分钟后关机)(二)基本的常用命令Linux命令格式说明:1、 Linux的文件名长度不超过256个字符,且不能使用如下字符: ! # $ & * ( ) “ 、 /

6、; 空格2、 Linux文件区分大小写;3、 文件名中如有多个圆点,则最右边一个为分隔符,且多表示文件类型;4、 Linux使用“/”为根目录、目录分隔符和目录与文件的分隔符。命令介绍:1、 ls命令功能:查看指定目录下的文件和目录。格式:ls options filename/dirname常用选项说明: -a 显示所有文件和目录,包括隐含文件 -l 显示文件的完整信息 -f 对文件添加一特定后缀字符指出其类型 / 子目录* 可执行文件 无 普通文件 .开头 隐含文件 -r 将文件以相反次序显示 -t 将文件以建立时间先后列出 -R 若目录下有文件,则文件也依序列出示例: ls ltr s*

7、 将当前目录下所有以s开头的文件按建立时间的逆序列出完整信息 ls lR bin 将bin目录下所有目录及文件的详细信息列出 ls alf 将当前目录下包括隐含文件在内的所有文件信息完整列出,并在文件名后添加特殊后缀以表示文件类型2、 man命令功能:查看某个命令的使用方法。格式: man 命令名3、 clear命令功能:清屏。格式: clear4、 cat命令功能:显示或链接ASCALL文件。格式:cat 文件名示例: cat text 显示text的文件内容 cat file1 file2 依次显示file1和file2的内容 cat file1file2 将file1的内容附加到file

8、2后面,但file1仍存在 cat file1 将键盘输入(以Ctrl+c结束)的内容输出到file15、 pwd命令功能:显示当前目录。格式:pwd6、 cd命令功能:进入或修改指定的目录。格式:cd 目录名7、 mkdir命令功能:建立新的目录。格式:mkdir 新的目录名8、 rmdir命令功能:删除空目录。格式:rmdir 空目录名9、 rm 命令功能:删除指定的文件或目录。格式:rm options filename/dirname常用选项说明: -i 删除前逐一询问确认 -f 即使文件属性为只读,也直接删除无需确认 -r 将指定目录下的所有文件及子目录一并删除 -v 显示指令执行过

9、程示例: rm i *.c 删除 C 语言程序文件,删除前逐一询问确认 rm r finished 删除finished子目录及子目录中的所有文件10、 du命令 功能:显示当前目录所占用的硬盘空间。格式:du abC 目录/文件名称 选项说明: -a 表示要显示所有目录及每个目录所占用的空间,单位是Kb -b 表示显示空间大小的单位是byte -C 表示显示一个目录的总空间的大小 不加任何参数,则显示当前目录下各目录占用的空间及所有文件所占总空间11、 df命令功能:查看硬盘目前所剩的空间。格式:df12、 cp命令功能:复制文件或目录。格式:cp r 源文件/目录名 目标文件/目录名示例:

10、 cp file1.c file2.doc 将file1.c复制为file2.doc cp r /tmp/ /abc/ 将tmp子目录中的文件及下属子目录一同复制到abc子目录 13、 mv命令功能:移动文件或目录。格式:mv 源文件/目录名 目标文件/目录名14、 more命令功能:按页查看指定的文件。格式:more options filename常用选项说明: -num 一次显示的行数 +num 从第num行开始显示 -d 在屏幕下方显示提示信息Press space to continue,q to quit. -l 取消遇见特殊字符L时会暂停的功能 -f 计算行数时按实际的行数,而非

11、自动换行的行数记数 -p 不以卷动的方式显示每一页,而是先清屏后显示 -c 先显示内容再清除旧资料 -s 将连续两行以上的空白行代换为一行空白行 filenames 欲显示内容的文件,可为复数个数示例: more s testfile 逐页显示文件testfile的内容,如有连续两行以上空白行则以一行空白行显示 more +20 testfile 从第20行开始显示文件testfile的内容15、 find命令功能:将符合组合条件expression的文件列出来。格式:find path expression常用参数说明:命令中第一个“-”之前的部分为path,之后的部分为expression

12、。如果path是空字符串则使用目前路径,如果expression是空字符串则使用-print为默认expression。常用expression: -group 查找符合指定之群组名称的文件或目录 -help 在线帮助 -print 假设find命令的返回值为true,就将文件或目录名称在标准输出设备输出。格式为每列一个名称,每个名称前皆有“./”字符串 -user 查找符合指定的拥有者名称的文件或目录示例: find . name “*.c” 将当前目录及其子目录下所有后缀名为c的文件列出 find . ftype f 将当前目录及其子目录下所有一般文件列出find . ctime -20

13、将当前目录及其子目录下所有最近20分钟内更新过的文件列出(三)其他命令介绍1、 ps命令功能:显示正在执行的进程信息。格式:ps options pids常用选项说明: -l 以长列表的形式列出 -a 显示其它用户的进程 -e 显示环境 -r 只显示正在运行的进程栏目说明: UID 用户标识符 PID 进程标识符 PPID 父进程标识符 PRI 进程优先级 SIZE 虚拟内存大小 RSS 驻留空间大小 STAT 进程状态:R进程正在运行;S睡眠;D不可中断睡眠;T停止或跟踪; Z僵尸进程;W没有驻留页 TTY 进程所在的虚拟终端号 TIME 该进程已经运行的时间 COMMAND 该进程的名称2

14、、 jobs命令功能:列出当前正在运行的作业信息。格式:jobs3、 kill命令功能:终止(或撤消)一个进程(或作业)。格式:kill options pid/jid常用选项说明: -l 输出信号名列表 -p 指kill只输出已命名pid,而且不送信号给它 -s 指出欲发出的信号,信号是以信号名或数字给出的4、 nice命令功能:通过修改调度优先级来运行一个程序。格式:nice options COMMAND arg常用选项说明: -n 加上由指定的优先级而不是默认值10 -version 输出版本信息5、 &命令功能:将进程放到后台运行。格式:在要运行的命令最后加上“&”符号示例: yes

15、/dev/null& yes命令标准输出一串无穷尽的“y”; /dev/null象一个黑洞,任何被送入这个黑洞的数据都会消失6、 前后台作业切换 bg命令功能:将前台作业放到后台运行。格式:bg % 作业号示例: bg %2 将2号作业放到后台运行 或者:用Ctrl+Z终止该作业,在shell提示符下键入命令bg。 fg命令功能:将后台作业放到前台运行。格式:fg % 作业号示例: fg %2 将2号作业放到前台运行7、 top命令功能:显示系统动态的进程控制和进程调度,还可察看内存动态使用的实时信息。格式:top options常用选项说明: 空格键 立即更新显示 -i 不显示空闲的或僵尸进

16、程信息 -n或# 改变显示的进程数量 -q 退出top -r 重新调整一个指定进程的优先级 -f或F 在显示时加上或移去字段 -o或O 改变显示字段的顺序 -m 切换内存信息的显示 -t 切换进程和CPU状态的显示(四)常用工具介绍1、 vi编辑器vi编辑器的三种工作模式:1 命令模式(Command mode):控制屏幕光标的移动、字符的插入或删除、字符的移动或复制、进入插入模式或底线命令模式;2 插入模式(Insert mode):完成字符的输入;3 底线命令模式(Last line mode):存储文件或退出编辑器,也可设置编辑环境。vi工作模式的切换:1 进入命令模式:在命令提示符后输

17、入:vi ;2 切换到插入模式:在命令模式下按键i、a、o进入插入模式 i(插入):在当前光标位置输入字符; a(增加):从当前光标的前一个位置开始输入字符; o(插入新行):从新行行首开始输入字符。3 切换到命令模式:在插入模式下按Esc键;4 切换到底线命令模式:在命令模式下按“:”进入底线命令模式。命令模式功能键:1 移动光标 k、j、h、l:上、下、左、右移动光标; Ctrl+b:向后移动一页; Ctrl+f:向前移动一页; Ctrl+u:向后移动半页; Ctrl+d:向前移动半页; G:移到文件最后一行;1G:移到文件第一行;$:移到该行的行尾;O:移到该行的行首;#|:移到该行的第

18、#个位置。2 删除命令 x:删除光标所在位置一个字符; #x:删除光标所在位置后面#个字符; X:删除光标所在位置前一个字符;#X:删除光标所在位置前面#个字符 dd:删除光标所在的行; #dd:删除光标所在行后面的#行;?3 修改命令 r:取代光标所在处的字符; R:取代字符直到按Esc键为止; cw:更改光标所在处的字符到字尾; c#w:更改光标所在处后#的个字符。4 复制命令 yw:复制光标所在处到字尾的字符; p:粘贴yw复制的字符到光标后。 yy:复制光标所在行; p:粘贴yy复制的行到光标后。 #yy:复制光标所在行后面的#行; p:粘贴#yy复制的若干行到光标后。5 跳转命令 C

19、trl+g :列出光标所在行的行号; #G:移动光标到第#行行首。底线命令简介:1 列出行号 :set nu 在每一行前面列出行号;2 跳至某一行 :# 光标跳至第#行;3 查找字符串 /关键词 查找指定的关键词,按n继续向下找;?关键词 查找指定的关键词,按n继续向下找;4 存盘命令:w filename 将文件存入指定的文件filename中; :#,#w filename 截取文件的某些行存成另一个文件filename;5 退出命令 :wq 按原文件名存盘并退出vi; :q! 强制退出并放弃编辑的文件。2、 调试程序gdb gdb(GNU DeBugger)是GNU的调试器,一般和GCC

20、(GNU Compiler Collection)配搭使用。要使用GDB进行调试,编译程序时要指定-g或-ggdb的编译选项,这样,gcc就会在生成可执行文件时产生调试信息。示例:gcc g main.c-g用于产生一般的调试信息 gcc ggdb main.c -ggdb则用于产生gdb特有的调试信息;使用-ggdb时,可执行文件的尺寸会大大增加gdb的基本指令: f(ile) :指定一个可执行文件进行调试,gdb将读取这些文件的调试信息,如f a.exe l(ist):列程序出源文件 r(un):装载完要调试的可执行文件后,可以用run命令运行可执行文件 b(reak):设置断点(brea

21、k point),如b 25,则在源程序的第25行设置一个断点,当程序执行到第25行时,就会产生中断;也可以使用b funcname,funcname为函数的名称,当程序调用些函数时,则产生中断 c(ontinue):c命令可以另中断的程序继续执行,直到下一个中断点或程序结束 p(rint):输入某个变量的值,如程序定义了一个int aa的就是,p aa就会输出aa的当前值 n(ext):程序执行到断点时中断执行,可以用n指令进行单步执行 s(tep):程序执行到断点时中断执行,可以用s指令进行单步执行进某一函数 q(uit):退出gdb3、 编译程序gcc在提示符下利用工具gcc对c或c+源

22、程序进行编译: gcc o 目标文件 源文件其中,目标文件为可执行文件,扩展名为.exe;源文件名为c语言文件,扩展名为.c。4、 运行可执行程序在提示符下输入:./目标文件名,运行编译后的目标程序。5、 编译命令make利用命令make编译形成工程文件。6、 在线帮助man在提示符下输入:man 命令名查看命令详细信息。四、 思考题1、 如何查看文件目录?如何查看文件内容?2、 如何创建子目录?进入指定的子目录?以及删除子目录及其下的文件?3、 如何查看硬盘空间?4、 如何复制或移动文件?5、 如何使用vi编辑器进行源程序的编辑?如何编译和运行程序?实验项目二 进程管理一、实验目的1、 加深

23、对进程概念的理解,明确进程与程序的区别;2、 进一步认识并发进程的实质;3、 分析进程竞争资源的现象,学习解决进程互斥的方法;4、 了解Linux系统中进程通信的基本原理。二、预备知识1、 阅读Linux的sched.c源码文件,加深对进程管理概念的理解;2、 阅读Linux的fork.c源码文件,分析进程的创建过程。三、实验内容1、进程的创建任务:编写一段程序,利用fork()创建两个子进程,其中父进程显示字符“a”,两个子进程分别显示字符“b”和“c”。观察和记录屏幕上的显示结果,并分析原因。程序:#includemain() int p1,p2,i; while (p1=fork()=-

24、1); if (p1=0) putchar(“b”); else while (p2=fork()=-1); if (p2=0) putchar(“c”); else putchar(“a”); 结果:bca(有时会出现bac)分析:理论分析看,输出bac,acb等情况都有可能。因为fork( )创建进程所需的时间多于输出一个字符需要的时间,故在父进程创建子进程2的同时,子进程1输出了字符“b“;而子进程2和父进程的输出次序是随机的,所以出现上述可能的输出顺序。2、进程的控制任务:将以上程序的输出由一个字符分别改为一句话,观察和分析结果;如果利用系统调用lockf()给每个进程加锁实现进程间的

25、互斥,再观察和分析结果。程序1:#includemain() int p1,p2,i; while (p1=fork()=-1); /*创建子进程p1*/ if (p1=0) /*子进程1创建成功*/ for (i=0;i5;i+) printf(“son%dn”,i); /*输出500个字符串“son“*/ else while (p2=fork()=-1); /*创建子进程p2*/ if (p2=0) /*子进程2创建成功*/ for (i=0;i5;i+) printf(“daughter%dn”,i); /*输出500个字符串“daughter“*/ else for (i=0;i5;

26、i+) /*父进程执行*/printf(“children%dn”,i); /*输出500个字符串“children“*/ 结果:sondaughterchildren或sondaughter.sonchildren等等分析:由于函数printf( )输出的字符串之间不会被中断,故字符串内部的顺序不变;但由于进程并发执行时的调度顺序和处理机分配的问题,输出字符串的先后顺序随执行的不同而不同。程序2:#includemain() int p1,p2,i; while (p1=fork()= =-1); /*创建子进程p1*/ if (p1= =0) /*子进程1创建成功*/ lockf(1,1,

27、0);for (i=0;i50;i+) printf(“son%dn”,i);lockf(1,0,0); else while (p2=fork()= =-1); /*创建子进程p2*/ if (p2= =0) /*子进程2创建成功*/ lockf(1,1,0); for (i=0;i50;i+) printf(“daughter%dn”,i); lockf(1,0,0); else lockf(1,1,0);for (i=0;i50;i+) printf(“children%dn”,i); lockf(1,0,0); 结果:大致与程序1的执行结果相同,但不会出现同一组字符串间隔出现的情形。分

28、析:由于lockf( )函数锁定标准输出设备屏幕,故不可能出现一个字符串序列还没有显示完,就被其他进程抢占输出的情形;各组字符串的输出顺序可能不同,但必定连续输出500次。四、思考题1、 系统是怎样创建进程的?2、 当首次调用新创建进程时,其入口在哪里?3、 进程的互斥是如何实现的?实验项目三 进程通信一、实验目的1、 了解和熟悉管道通信机制;2、 理解消息通信机制的工作原理。二、预备知识1、阅读Linux的msg.c、sem.c、shm.c等源码文件;2、熟悉Linux的几种通信机制的工作原理。三、实验内容1、 进程的管道通信任务:编制程序,实现进程的管道通信:利用系统调用pipe( )创建管道,利用write( )向管道写入消息,利用read( )从管道读出消息。两个子进程p1和p2分别向管道各写一句话:Child1 is sending message!Child2 is sending message!而父进程则从管道分别读出来自两个子进程的消息并显示。程序:# include# include# includemain( ) in

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

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