操作系统实验指导书

2018-12-29 22:58

《 操作系统》课程实验指导书

一.实验总学时(课外学时/课内学时):4/8 总学分:8/44

必开实验个数: 4 选开实验个数:0

二.适用专业: 网络工程、计算机科学与技术2007级

三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程及实验结果在实验现场逐一检查考核。

四.配套的实验教材或指导书: 自编实验指导书 五. 实验项目:

实验1 SHELL命令的使用

1、实验目的

通过对LINUX的系统启动、注销、关闭和关机,帐号管理,文件系统的日常管理,文件系统的权限控制等常用基本命令的使用及与Windows下DOS SHELL的比较,了解现代操作系统SHELL的特点和功能。

了解编辑器vi的使用方法。 2、实验工具及环境

LINUX系统网络环境或单机,Windows系统网络环境或单机。 3、实验计划学时

2学时上机实际操作。 4、实验内容及操作步骤 ⑴系统启动和关闭

① 使用自己的账户登录UNIX系统,查看系统提示符确定自己使用的shell程序类型

别。

◎开机后,系统自检启动后提示 login: (输入:root↙)

password: (输入:用户口令↙,root用户为redhat) ◎ 查看/etc/passwd文件可以获得用户使用的shell #grep $LOGNAME /etc/passwd↙

可能的显示为:user001:*:200:50::/usr/user001:/bin/sh 请思考上述命令怎样得到了当前使用的shell类型的? 使用下面的命令也可以查看当前shell: #echo $SHELL

② 注销和关机命令。 ◎ 用户注销使用: $exit↙

或$+↙ 或$logout↙ ◎ 超级用户关机使用: #shutdown↙

该命令将结束所有的进程,当执行此命令后系统提示“Safe to Power off or Press Any Key

to Reboot”时可以关闭电源或按任一键重启系统。 ◎haltsys(halt),reboot只能由超级用户在单用户模式下使用。 ⑵帐号管理

① 添加用户,删除用户,修改个人口令后重新进行登录; ◎ 添加用户的shell命令:

#useradd user08↙(Linux系统中可以为adduser)

上述命令采用默认属性,UNIX也可以使用选项来指定创建帐户的属性: -c comment用户说明

-d directory 指定用户主目录

-m 若用户的起始目录不存在则创建 -g group指定用户所属组 -s shell 指定用户使用的shell -u uid为用户分配标识 ◎ 修改口令

对linux系统而言,用adduser增加的用户应该随即用passwd命令来修改口令。 #passwd user08↙

new password:(输入口令,屏幕不回显) ↙ new password(again):(再次输入口令) ↙ ◎ 删除用户的shell命令

userdel命令用来删除已经存在的用户及相关的文档,其命令格式如下: # userdel 〔选项〕用户名 userdel命令的常用选项:

-r将用户目录下的文档一并删除。在其他位置上的文档也将一一找出并删除。

Userdel不允许移除正在线上的用户帐号,因此,如果想删除这类用户帐号,必须先杀掉用户在系统上运行的程序才能进行帐号删除。 ② 组的添加、删除管理; ◎ 组信息保存在/etc/group文件中,文件记录格式为: userg1::21:user01,user02,user08

其中:userg1为组名,组ID号为21,组成员有user01,user02,user08。 ◎ 添加用户组

可以直接编辑/etc/group文件来创建一个新组。

③ 用who命令查看当前登录在系统中的用户列表、用户总数、系统启动时间等信息; #who -H↙

④ 查看当前用户的标识符及当前进程的状态; #ps –lf | pg↙

观察上述命令的输出。

⑤ 用cal命令查看自己的生日是星期几。如: #cal 9 1983↙

根据显示可以得到答案。 ⑶文件系统的日常管理

① 文件的显示、复制、移动和删除; ◎ #cat /etc/passwd↙ ◎ #cat>filea↙ ◎ #cat >> filea↙

◎ #more /etc/filea↙ ◎ #pg /etc/filea↙ ◎ cp filea fileb↙ ◎ mv filea /fileb↙ ◎ rm /fileb↙

② 目录的建立、删除、显示、改变和复制 ◎ #mkdir dira↙ ◎ #ls dira↙ ◎ #mkdir –p dirb/dirc↙ ◎ #cp –r dirb dira↙ ◎ ls –R dira↙ ◎ #rmdir –p dira↙

③ UNIX系统访问DOS或Windows下文件(FAT),完成读DOS格式的软盘文件或

DOS格式的硬盘文件的过程。mount和umount命令。

◎以超级用户登录,使用mkdir命令为DOS硬盘创建一个挂载点; #mkdir /mnt/zipdos↙

◎用mount命令指定文件系统的类型、设备名称及挂载点: #mount -t msdos /dev/hdal /mnt/zipdos ↙

◎挂载完成后可以使用df命令查阅设备挂载的情况; ◎ 完成挂载后,可以在Linux系统下查阅到DOS目录下的文件内容。 #cd /nt/zipdos↙ #ls ◎ 使用完后使用umount命令进行卸载: #umount /mnt/zipdos↙

完成这些操作后,在根目录下除了包含有Linux系统中典型文件系统的内容外,还增加了一个/mnt/zipdos子目录。此目录是将DOS分区中的C盘挂在了Linux系统的根目录下,安装完成后普通用户就可以对其中的文件直接进行访问。

? 在LINUX系统下挂载U盘 1) 插入U盘

2) 通常使用mount /dev/sda1 /usb即可

3) 如果不行,输入 fdisk -l /dev/sda 查看输出结果,在输出信息中查看系统中U盘的

Device名称,将前面命令中的sda1改命重新挂载即可。

4) 如果U盘是fat16就使用下面的命令选项 -t msdos ;如果是fat32 则为-t vfat 。 ⑷文件系统的权限控制 ① 文件权限的表示 ◎ #ls –l /etc|more↙ ◎ #ls –l /dev|more ↙

② chmod、chown、chgrp和umask命令; ◎ #ls –l filea

#chmod 640 filea↙ ◎ #chown user08 fi1ea↙ ◎ #chgrp userg1 fi1ea↙ ◎ #umask ↙ /*不带参数的umask显示系统的设置情况*/

#mkdir dirx↙

#ls –l dirx↙ /*查看新建的目录权限*/ #umask 027↙ #mkdir diry↙ #ls –l diry↙ 比较有什么不同。

(5)在Windows下启动DOS SHELL,即输入CMD运行,对照在Linux下的文件管理操作,完成相应的操作后记录实验结果。

(6)使用vi编辑一些文本文件,熟悉vi中的操作命令、工作模式切换及功能键的使用。掌握vi的启动、模式转换、文件的保存、退出操作。 ◎ #vi↙ 或 #vi text1↙ ◎ 输入”a,i”进入插入编辑方式 ◎ 输入文本后,按“ESC”退回到命令行方式。 ◎ 输入“:”进入末行命令方式,再键入“w”,“q”或“wq”存盘或退出。 5、实验报告

要求认真书写实验报告,报告的内容包括:实验目的、实验内容、实验步骤、实验结果等。

思考问题:你觉得Linux SHELL的命令使用方式与Windows或DOS比较,有何不同?

实验二 进程管理综合实验

1、实验目的

熟悉在C语言源程序中使用LIUNX所提供的系统调用的方法;掌握LINUX中子进程的创建方法以及调度执行情况,理解进程与程序的区别;

掌握LINUX系统中vi编辑器和gcc编译器的用法;

掌握Linux信号量的使用方法和P、V操作函数的定义,掌握使用P、V操作实现进程间的互斥的方法;进一步理解进程同步和互斥的概念;

掌握fork( ) 配合exec( )使用创建进程的方法,熟悉进程的睡眠、同步、撤消等进程控制方法。

通过实验建立起较为完整的进程并发、同步和互斥的概念,对LINUX下进程相关的系统调用有初步的掌握。 2、实验工具及环境

LINUX系统网络环境或单机,gcc编译器。 3、实验计划学时

4学时上机实际操作。 4、实验内容

1)GNU C编译器

(1)Linux的基本c开发环境由以下几部分组成:c程序库glibc,c编译器 gcc或cc,系统头文件glibc_header,库文件、包含文件和生成的可执行文件存放在/usr/lib目录下。

编译连接可用以下的命令进行,假定源程序有两个文件分别是f1.c,f2.c,生成的可执行文件名为hello.exe,缺省目标名称的时候,gcc 编译出来的文件是a.out,用“-o”选项可以指定输出文件名,例:

#gcc -o hello.exe fi.c f2.c

更详尽的用法请参考联机帮助。 GCC也可以指定编译器处理步骤。-c选项告诉GCC仅把源代码编译为目标代码而跳过汇编和连接步骤。这个选项使用得非常频繁因为它编译多个C程序时速度更快且更易于管理。默认时GCC建立的目标代码文件有一个.o的扩展名。

执行程序格式: ./可执行文件名 例: ./hello.exe (2)gdb调试工具

LINUX包含了一个叫gdb的GNU调试程序,能在程序运行时观察程序的内部结构和内存的使用情况。它具有以下一些功能:

·监视程序中变量的值;

·设置断点以使程序在指定的代码行上停止执行; ·一行行的执行代码。

以下是利用gdb进行调试的步骤:

? 必须使程序在编译时包含调试信息。调试信息里包含程序里的每个变量的类型和在

可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。在编译时用 –g 选项打开调试选项。 ? gdb基本命令

命 令 描 述 file 装入欲调试的可执行文件 kill 终止正在调试的程序 list 列出产生执行文件的源代码部分 next 执行一行源代码但不进入函数内部 step 执行一行源代码并进入函数内部 run 执行当前被调试的程序 quit 终止gdb watch 监视一个变量的值而不管它何时被改变 break 在代码里设置断点,使程序执行到这里时被挂起 make 不退出gdb就可以重新产生可执行文件 shell 不离开gdb就执行UNIX shell 命令

? 应用举例

设有一源程序greet.c编译(gcc -ggdb –o greet greet.c)出错,

运行gdb greet ,出现提示符(gdb),此时可在提示符下输入gdb的命令,如: (gdb)run (gdb)list

用(gdb)quit退出调试状态,返回系统提示符。

2)阅读理解下列程序后编译运行,分析得到的结果,与自己的预计有差别吗?反复多次运行后,再观察结果。

#include main() {

int p1; putchar('x'); while((p1=fork())==-1); if(p1==0)

putchar('b'); else putchar('a'); putchar('y'); }

3)阅读理解下列程序后编译运行,分析得到的结果,与自己的预计有差别吗?反复多次运行后,再观察结果。 #include


操作系统实验指导书.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:长春版小学语文古诗词全解(六年级上册)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: