实验设计与指导(学生用)

上传人:kms****20 文档编号:40445768 上传时间:2018-05-26 格式:DOC 页数:28 大小:275KB
返回 下载 相关 举报
实验设计与指导(学生用)_第1页
第1页 / 共28页
实验设计与指导(学生用)_第2页
第2页 / 共28页
实验设计与指导(学生用)_第3页
第3页 / 共28页
实验设计与指导(学生用)_第4页
第4页 / 共28页
实验设计与指导(学生用)_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《实验设计与指导(学生用)》由会员分享,可在线阅读,更多相关《实验设计与指导(学生用)(28页珍藏版)》请在金锄头文库上搜索。

1、1计算机操作系统实 验 设 计 与 指 导计算机与信息学院2011-2012 学年度第一学期2目目 录录实验一实验一 Linux 入入门门.3实验二实验二 Linux 进程控制进程控制.6实验三实验三 进程间通信进程间通信.10实验四实验四 页面置换算法模拟页面置换算法模拟.17实验五实验五 简单多用户文件系统简单多用户文件系统.223实验一实验一 Linux 入门入门【实验目的实验目的】 1、了解LINUX运行环境的命令及使用格式。 2、熟悉 LINUX 的常用基本命令。 3、练习并掌握 LINUX 下 C 语言程序的编写、编译、调试和运行方法。 【实验内容实验内容】 1、熟悉 LINUX

2、的常用基本命令如 logout/exit、adduser、deluser、ls、cd、pwd、mkdir、rmdir、rm、cp、mv、cat 、man 等。 2、用 vi 编写一个简单的显示“hello word!”的程序,用 gcc 编译并观察编 译后的结果,运行生成的可执行文件。 【实验过程实验过程】 记录自己这实验课上具体的操作内容、过程 【实验小结实验小结】 实验收获、实验过程中遇到的问题已经心得【实验指导实验指导】 一、一、介绍虚拟机安装以及使用方法介绍虚拟机安装以及使用方法 1、虚拟软件 Vmware 是一个虚拟软件,本质就是利用软件技术,在母机 hosts 中虚拟出另外一台或

3、者几台子机 guests,而在子机中,可以随意进行任何操作,并且都不会影响主 机 Vmware 中创建的 OS 实际上是在硬盘上创建了一个文件夹,该 OS 中的所有东 西都保存在这个文件夹中的文件里面。比如:BIOS、硬盘、配置文件等。 Vmware 虚拟的是一台“真正”的机器,主机所支持的 OS 一般 Vmware 也都支 持。 虚拟机内存直接使用主机的内存,一般要分配至少占主机一半的内存给虚拟机 用。 以根用户登录:用户名:root 密码:redhat 2、设置共享 Windows: d:lin_share Linux: /mnt/hgfs/sharefolders/二、二、常用基本命令的

4、使用常用基本命令的使用4用 root 账号(超级用户)注册,口令为 redhat(注意大小写) 。注册成功出 现#号(超级用户系统提示符,普通用户的系统提示符为$) 。 命令格式: 命令 选项 处理对象 注意:(1)命令一般是小写字串。注意大小写有别(2)选项通常以减号(-)再加上一个或数个字符表示,用来选择一 个命令的不同操作(3)同一行可有数个命令,命令间应以分号隔开(4)命令后加上 11显示文件:cat 文件名 建立文件:cat 文件名,ctrl+d 结束输入 添加新用户、修改文件属性添加新用户、修改文件属性 12添加新用户(在 root 下,按默认值回答) adduser 用户名;如

5、adduser s2001 ; 以新用户登录到系统 13修改用户口令 passwd 14查看相关命令的帮助:man 命令名显示一屏后,按键将显示更多与 命令有关的用户手册内容;按返回命令行提示符。 15显示当前系统中已注册的用户信息:who 16显示当前注册的用户信息:whoami 三、使用编辑器三、使用编辑器 vi 编辑文件编辑文件5vi 是在 linux 上被广泛使用的中英文编辑软件。vi 是 visual editor 的缩写, 是 linux 提供给用户的一个窗口化编辑环境。 进入 vi,直接执行 vi 编辑程序即可。显示器出现 vi 的编辑窗口,同时 vi 会将文件复制一份至缓冲区(

6、buffer) 。vi 先对缓冲区的文件进行编辑,保留在 磁盘中的文件则不变。编辑完成后,使用者可决定是否要取代原来旧有的文件。vi 提供二种工作模式:输入模式(insert mode)和命令模式(command mode) 。使用者进入 vi 后,即处在命令模式下,此刻键入的任何字符皆被视为 命令,可进行删除、修改、存盘等操作。要输入信息,应转换到输入模式。1.进入 linux 的文本模式之后,在命令行键入 vi filename.c 然后回车。下面 作一些简单的解释:首先 vi 命令是打开 vi 编辑器。后面的 filename.c 是 用户即将编辑的 c 文件名字,注意扩展名字是.c;当

7、然,vi 编辑器功能很 强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s; 也可以直接用 vi 打开一个新的未命名的文件,当保存的时候再给它命名, 只是这样做不很方便。 2.最基本的命令 I :当进入刚打开的文件时,不能写入信息,这时按一下 键盘上的 I 键(insert) ,插入的意思,就可以进入编辑模式了。如下图所 示: 3.a 与 i 是相同的用法 4.当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一 下键盘上的 Esc 键;2)键入冒号(:),紧跟在冒号后面是 wq(意思是保 存并退出) 。如果不想保存退出,则在第二步键入冒号之后,键入!q(不 带 w,

8、机尾部保存) 。如下图所示:在输入模式下,按 ESC 可切换到命令模式。命令模式下,可选用下列指令6离开 vi: :q!离开 vi,并放弃刚在缓冲区内编辑的内容 :w q将缓冲区内的资料写入磁盘中,并离开 vi:Z Z同 wq:x同 wq :w将缓冲区内的资料写入磁盘中,但并不离开 vi :q离开 vi,若文件被修改过,则要被要求确认是否放 弃修改的内容,此指令可与:w 配合使用5.退出 vi 编辑器的编辑模式之后,要对刚才编写的程序进行编译。四、四、GNU C 编译器编译器 LINUX 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会 编程许可证的基础上,因此可以自由发布。

9、 LINUX 上的 GNU C 编译器(GCC)是一个全功能的 ANCI C 兼容编 译器,而一般 UNIX(如 SCO UNIX)用的编译器是 CC。下面介绍 GCC 和 一些 GCC 编译器最常用的选项。 通常后跟一些选项和文件名来使用 GCC 编译器。GCC 命令的基本用法如 下:gcc options filenames 命令行选项指定的编译过程中的具体操作 当不用任何选项编译一个程序时,GCC 将建立(假定编译成功)一个名为 a.out 的可执行文件。例如, gcc test.c 编译成功后,当前目录下就产生了一个 a.out 文件。 也可用-o 选项来为即将产生的可执行文件指定一个

10、文件名来代替 a.out。例 如: gcc o count count.c 此时得到的可执行文件就不再是 a.out,而是 count。6.编译的命令是:gcc filename.c -o outputfilename,其中 gcc 是 c 的编译器。 参数:filename.c 是刚才编辑的 c 文件(当然也可以是以前编写好的 c 文 件) ;后面中括号里面的参数是可选的,它是一个输出文件。如果不选, 默认的输出文件是 a.out ,选了之后输出文件就是 outputfilename.out 7.最后一步是运行程序, 执行文件 7格式: ./可执行文件名 方法如下:./outputfilen

11、ame.out8实验二实验二 Linux 进程控制进程控制【实验目的实验目的】 1)加深对进程概念的理解,明确进程和程序的区别; 2)进一步认识并发执行的概念,区别顺序执行和并发执行; 3)掌握进程创建的方法 4)熟悉进程的睡眠,同步和撤销等进程控制方法 5)分析进程争用临界资源的现象,学习解决进程互斥的方法; 【实验内容实验内容】 1)编写一段程序,使用系统调用 fork()创建两个子进程。各进程显示不 同的信息,如父进程显示字符“a” ,子进程分别显示字符“b”和“c” 。 多次运行观察显示结果,并分析产生这种执行效果的原因。 2)修改已编写的程序,将每个进程输出一个字符改为每个进程输出一

12、句 话,在观察程序执行时屏幕出现的现象,并分析原因 3)一个父进程创建一个子进程,子进程通过 exec 系统调用执行另一个文 件。各自的代码中显示不同的信息,从其运行结果可看出两个进程并 发执行的效果。 4)利用 wait()来控制进程执行顺序,并用 exit()来终止进程执行,分析 wait( )是如何实现进程同步的 5)选作: 如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程 之间的互斥,观察并分析出现的现象。 【实验要求实验要求】 1)仔细观察实验中的各种现象及出现的问题。分析产生各种现象的原因。 寻找解决问题的办法。 2)实验报告中给出程序的主要语句并且加入相应的注

13、释即可,程序太多时 不需要给出程序的全部语句,给出输出的结果及对各种现象的分析意见。【实验指导实验指导】 Linux 系统中,进程是进程映像的执行过程,也就是正在执行的进程实体。 它由三部分组成: 用户级上、下文。主要成分是用户程序; 寄存器上、下文。由 CPU 中的一些寄存器的内容组成,如 PC,PSW,SP 及通用寄存器等;9系统级上、下文。包括 OS 为管理进程所用的信息,有静态和动态之 分。 一、所涉及的系统调用 1fork( ) 创建一个新进程。 系统调用格式: Int pid=fork( ) fork( )返回值意义如下: 0:在子进程中,pid 变量保存的 fork( )返回值为

14、 0,表示当前进程是子进 程。 0:在父进程中,pid 变量保存的 fork( )返回值为子进程的 id 值(进程唯 一标识符) 。 -1:创建失败。 如果 fork( )调用成功,它向父进程返回子进程的 PID,并向子进程返回 0, 即 fork( )被调用了一次,但返回了两次。 在 linux 下一个进程在内存里有三部分的数据,即:代码段、堆栈段和数 据段。堆栈段:存放的就是子程序的返回地址、子程序的参数以及程序的局部 变量。数据段:则存放程序的全局变量,常数以及动态数据分配的数据空间。 一个程序一旦调用 fork()函数,系统就为一个新的进程准备了前述三个段,首 先,系统让新的进程与旧的

15、进程使用同一个代码,因为它们的程序是相同的, 对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据 都可以留给子进程,但是子进程一旦开始运行,虽然它继承了父进程的一切数 据,但实际上数据都已经分开,相互之间不再有影响了,也就是说,它们之间 不再共享任何数据了。 2getpid( ) 取得目前进程的识别码(进程 ID) ,许多程序利用取到的此值来建立临时 文件,以避免临时文件相同带来的问题。 系统调用格式: int getpid() 例如:#includemain()printf(“pid=%dn”,getpid(); 3getppid( ) 取得目前进程的父进程识别码。 系统调用格式: int getppid() 例如:#includemain()printf(“My pare

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

当前位置:首页 > 生活休闲 > 科普知识

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