以下为《《操作系统》实验指导书-软件工程班-》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
中 央 民 族 大 学
操作系统
实验指导书
教师姓名:
职 称:
中央民族大学信息***
年 月
目录
前言……………………………………………………………………………………………..3
实验格式………………………………………………………………………………………..4
实验一:Linux的初步认识……………………………………………………………………5
实验二: 系统调用实验………………………………………………………………………..8
实验三:进程同步实验………………………………………………………………………..15
实验四:进程通信实验………………………………………………………………………..20
实验五:页面调度算法模拟…………………………………………………….…………….27
实验六:Linux Socket编程文件系统…………………………………………………………60
前 言
《操作系统》课程是计算机科学与技术专业的主干课。操作系统是现代计算机系统中必不可少的基本系统软件,对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。
《操作系统》课程是一门理论和实践相结合的课程。通过《操作系统》实验教学,可以是使学生深入地掌握操作系统的基本概念、基本原理,同时也可以使学生能够运用《操作系统》提供的方法与技巧对实际问题进行算法设计和程序设计,即能更好地实现与课程同步练习,又进一步深化理解和灵活掌握教学内容;又能培养学生程序设计及上机调试的能力。这将为其后继课程如《计算机体系结构》、《计算机网络》等打下必要的基础,同时也为今后在相关领域开展工作打下坚实的基础。
实验一:Linux的初步认识
实验课时:3学时
一、实验目的
1、了解Linux系统的安装过程
2、掌握基本的Shell命令
3、了解vi编辑器的使用
4、设计一个Shell批处理程序
5、设计C程序,在Shell下使用gcc编译器编译C程序
6、设计一个makefile文件
二、实验基本原理
1、安装过程
安装方法1:
(1)首先安装vitualbox-3.2.8***.exe虚拟机.
(2)在虚拟机上安装ubuntu-7.10***.iso过程
设置普通用户名demo,***
(3) 如何修改root用户密码,及登陆
默认的我们会以安装时建立的用户来登录到linux系统,如wuw/xxxxx,但安装VMWare Tools时,必须以root用户登录。
Ubuntu的安装过程中,我们也未曾接触到root用户的密码设置,如何登录?
参看网文得知,开启一个终端,运行"sudo passwd root",输入***;teacher”,输入确认***,root用户的密码就设置好了。
此时,我们仍然不能以root用户的身份登录到系统,还需要进行另一项设置,
选择 System -> 系统管理(administration) -> 登录窗口(login window),此时会让你输入当前linux登录用户的密码,进行权限验证,输入正确密码,出现下图所示设置界面
选择Security选项卡,勾选“Allow local system administrator login”,允许系统管理员登录,关闭窗口(关闭窗口就会保存设置),重启虚拟机(红色的按钮)或在linux里选择关机或重启。
(4)、共享windows文件夹
1)安装增强功能
察看菜单”applications”->accessories->terminal
将terminal终端拖入linux桌面
b) 在菜单”设备”中,点击”安装增强功能”运行
c) 双击桌面”terminal”,输入cd /media/cdom0 回车(或者cd /media/cdrom)
输入ls可察看目录
输入 sudo ./VBoxLinuxAdditions-x86.run
输入demo用户***
等待完成此步骤。
安装完毕后会提示要重启该Ubuntu,确保成功安装。
2). 设置共享文件夹
重启完成后点击"设备(Devices)" -> 分配数据空间 菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。共享名可以任取一个自己喜欢的,比如"gongxiang" 或者“aaa”,尽量使用英文名称。
3). 挂载共享文件夹
重新进入虚拟Ubuntu,在命令行终端下输入:
sudo mkdir /mnt/shared
sudo mount -t vboxsf gongxiang(你自己共享文件夹的名称,上图为aaa) /mnt/shared
其中"gongxiang"是之前创建的windows共享文件夹的名字。OK,现在Ubuntu和主机可以互传文件了。
假如您不想每一次都手动挂载,可以在/etc/fstab中添加一项
gongxiang /mnt/shared vboxsf rw,gid=100,uid=1000,auto 0 0
这样就能够自动挂载了。
4). 卸载的话使用下面的命令:
sudo umount -f /mnt/shared
安装方法2:
(1)安装vmware,安装Linux
https://jingyan.baidu.com/article/ad310e801a04db1849f49e3a.html
(2)Vmware虚拟机实现windows和linux的文件共享:
启动VMware虚拟机下的Linux操作系统。打开VMware虚拟机之后点击“开启此虚拟机”。
等待Linux操作系统正常启动完毕,然后点击VMware菜单栏“虚拟机”下的“安装VMware Tools”。
然后,会在Linux的系统桌面上生成一个名字为“VMware Tools”的光驱文件。
双击“VMware Tools”光驱文件并进入,会看到一个后缀为.tar.gz的压缩文件。
将压缩文件复制到home目录下,home目录即左侧的主目录文件夹。复制过程用鼠标操作完成即可。复制完毕如下图所示。
打开命令行终端,默认应该就是home目录,如果不是home目录,在命令行终端输入“cd ~”命令进入home目录下,在home目录下输入"ls"命令就可以看到我们刚刚复制的压缩包文件。
将压缩包用tar -zxvf命令解压,命令如下图所示。
解压完毕用“ls”命令查看,会看到在home目录下产生一个“vmware-tools-distrib”文件夹。
用“cd vmware-tools-distrib”命令进入vmware-tools-distrib文件夹,然后在命令行执行:“sudo ./vmware-install.pl”命令,输入用户密码即可进行vmware tools的安装。
等待VMware Tools安装完毕。安装成功会显示“Found VMware Tools CDROM mounted at ......"的字样,如下图所示。
(3)设置共享文件夹的目录
1. 将Ubuntu关机(power off),否则不能添加共享文件夹
2. 在VMware虚拟机窗口,选择虚拟机->设置->选项->共享文件夹
3. 点右边的“添加”,点“下一步”->选择Win7共享目录的路径,然后点“下一步”->选中 启动共享->完成
4. 在窗口的右边,选择“总是启用”
5. 点 确定 退出
开启虚拟机,至此就可以在/mnt/hgfs目录下看到Win7的共享文件夹目录。
(4)操作方式 进入系统后,点击鼠标右键,选择“Open Terminal”即可练习命令。
2、Linux基本指令
监视系统的几个Linux基本命令:
PS--查看系统的进程
tty--查看当前使用的终端
df--查看系统的文件系统的空间使用情况
du--查看具体某个文件和目录的磁盘空间的占用情况
free--查看使用的内存资源的情况
一些其他常用的Linux命令:
cal--显示日历 date--显示系统的日期和时间
clear--清屏 passwd--更改密码的指令
cd--改变当前目录命令 pwd--显示目前所在目录的指令
chmod--变更档案属性 mkdir--建立子目录
rmdir--删除子目录命令 touch--建立一个文件
rm--删除文件命令 mv--文件改名命令
cp--文件复制命令 ls—列出指定目录的内容
find--查找文件
groups 查看当前登录用户的组内成员
whoami 查看当前登录用户名
ls -alt
drwxr-xr-x第一个字符表示文件类型,d为目录 -为普通文件 l为连接 b为可存储的接口设备 c为键盘鼠标等输入设备2、3、4个字符表示所有者权限,5、6、7个字符表示所有者同组用户权限,8、9、10为其他用户权限
useradd testuser 创建用户testuser
useradd xgx -m 在home下创建文件夹
passwd testuser 给已创建的用户testuser设置密码
说明:新创建的用户会在/home下创建一个用户目录testuser
删除用户命令:userdel testuser -r删除用户testuser
userdel [-r] 用户名其中,参数-r为删除用户的home目录。其实,可能在系统其他地方也有该用户文件,要完整删除一个用户和其文件要先找到属于他的文件:
rm -rf testuser 删除用户testuser所在目录
chown -R xgx:xgx /home/xgx 修改文件的拥有者
语法:chmod [who] [+ | - | =] [mode] 文件名
chmod 700 /home/xgx 修改文件权限
chmod o w xxx.xxx 表示给其他人授予写xxx.xxx这个文件的权限 chmod go-rw xxx.xxx 表示删除xxx.xxx中组群和其他人的读和写的权限
其中: u 代表所有者(user) g 代表所有者所在的组群(group) o 代表其他人,但不是u和g (other) a 代表全部的人,也就是包括u,g和o r 表示文件可以被读(read) w 表示文件可以被写(write) x 表示文件可以被执行(如果它是程序的话) 其中:rwx也可以用数字来代替 r ------------4 w -----------2 x ------------1 - ------------0 行动: 表示添加权限 - 表示删除权限 = 表示使之成为唯一的权限
命令中各选项的含义为
u 表示“用户(user)”,即文件或目录的所有者。g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。o 表示“其他(others)用户”。a 表示“所有(all)用户”。它是系统默认值。操作符号可以是:+ 添加某个权限。- 取消某个权限。= 赋予给定权限并取消其他所有权限(如果有的话)。设置mode所表示的权限可用下述字母的任意组合:r 可读。w 可写。x 可执行。X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。t 保存程序的文本到交换设备上。u 与文件属主拥有一样的权限。g 与和文件属主同组的用户拥有一样的权限。o 与其他用户拥有一样的权限。
su xgx切换用户
passwd xgx 为用户创建*** /etc/group
more /etc/passwd Linux里查看所有用户
我们看到root这个用户后面是#?号说明是root权限的用户,而:说明是普通用户
练习下面的基本命令
cd / 进入根目录
cd ** 进入目录
cd /usr/src/
ls | wc ls显示目录
wc a.txt 统计指定文件中的字节数、字数、行数,并将统计结果显示输出
ls |grep a
ps 查看进程pid号功能
kill -9 pid号 杀死进程
more a.txt>a 重定向写入a
more a
more b.txt>>a
ls |head -2
head -10 ***.txt 显示文件前10行
tail -2 a.txt
history 显示执行命令的历史
./a.out (c执行程序)>b
more b 显示文件内容
./a.out &
w 执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。
su 切换用户的工具
pstree 显示系统进程树
wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
wc -c filename:显示一个文件的字节数
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
格式
grep -r ‘energywise’ * //在当前目录及其子目录下搜索'energywise'行的文件
grep -n root /etc/passwd //将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号
grep [options]
主要参数[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及 行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。pattern正则表达式主要参数:\: 忽略正则表达式中特殊字符的原有含义。^:匹配正则表达式的开始行。$: 匹配正则表达式的结束行。\:到匹配正则表达式的行结束。[ ]:单个字符,如[A]即A符合要求 。[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。。:所有的单个字符。* :有字符,长度可以为0。
bg fg jobs使用方法
(1)& 最经常被用到
这个用在一个命令的最后,可以把这个命令放到后台执行
(2)ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停(即挂起)
(3)jobs 查看当前有多少在后台运行的命令
(4)fg 将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
(5)bg 将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
(6)前台进程的终止: ctrl+c
作业调度是shell的一个特性,它允许用户使用作业调度命令,所谓作业调度实际上是时钟守护进程cron按照用户所提交的确定的时间在这个时间内执行某些运行作业,cron守护进程将在设定的日期规定的时间内自动地执行某样任务。
可在系统负载较轻时安排这些非交互式作业的运行,在unix中与cron配合提交任务的命令有三种:at,batch,crontab。
3、vi编辑器的使用
进入VI编辑器
# vi filename,显示内容,如果没有此文件,则创建
(2)用ESC进行VI和EX的切换
(3)set nu 显示行号
(4)输入 "i" 进入插入模式。字符 "i" 将不会回显。此后你输入的任何东西都将显示在缓存中
(5)退出操作
:wq保存文件,退出
:q退出。防止没有保存就退出。
:q! 退出。无论保存与否,都退出
vi编辑器
vi是UNIX和类UNIX环境下的可用于创建文件的屏幕编辑器。vi有两种工作模式:命令模式和文本输入模式。启动vi需要输入vi,按[Spacebar]键并输入文件名后回车。
切换模式键
vi从命令模式切换到文本输入模式。每个键以不同方式使vi进入文本输入模式。按[ESC]键使vi从文本输入模式回到命令模式。
表1列出了vi从命令模式切换到文本输入模式的命令键及其功能。
表1 切换到文本输入模式的命令键
键
功能
i
在光标左侧输入正文
I
在光标所在行的行首输入正文
a
在光标右侧输入正文
A
在光标所在行的行尾输入正文
o
在光标所在行的下一行增添新行,光标位于新行的行首
O
在光标所在行的上一行增添新行,光标位于新行的行首
?
说明:1. 光标的位置由双下划线(%P)标明。
2. 当前行指光标所在的那一行。
vi文本编辑器的用法
基本上每一个Linux/Unix系统都装有vi编辑器。开启一个vi编辑器可使用如下命令:
vi file.txt
vi编辑器的工作有插入(编辑)模式和浏览(命令)模式。当你最开始编辑时,你处于浏览模式,你可以使用箭头或者其他导航键在文本中导 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 n",CLIENT_PORT);
exit(1);
}
if (connect(clifd,(struct sockaddr*)&servaddr, socklen) < 0)
{
printf("can't connect to %s!\n",argv[1]);
exit(1);
}
length = recv(clifd,buf,BUFFER_SIZE,0);
if (length < 0)
{
printf("error comes when recieve data from server %s!",argv[1]);
exit(1);
}
printf("from server %s :\n\t%s ",argv[1],buf);
close(clifd);
return 0;
}
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《《操作系统》实验指导书-软件工程班-》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。