《操作系统原理》实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统原理》实验指导书
罗琼
广州大学物理与电子工程学院
1、Linux环境下基本命令的使用
2、进程管理实验
3、命令解释程序的实现
1、实验一Linux环境下基本命令的使用
一、实验目的:
(1)掌握Shell命令在Unix或Linux操作系统中的作用。
(2)理解Shell命令的解释和运行机制。
(3)掌握Unix或Linux系统环境下的常用的Shell基本操作命令。
二、实验内容:
(1)查看系统的命令提示符,确定系统使用的Shell程序类型,列出Linux系统常见的Shell 种类。
(2)查看当前登录在系统中的用户列表、系统中的用户总数和系统启动时间。
(3)查看当前的日期和时间。
(4)显示当前目录,改变到用户主目录并列出当前目录的内容。
(5)在当前目录下,创建名为“自己姓名(用自己学号代替)”的新目录。在所创建的目录下创建名为“newfile”的新文件。
(6)在屏幕上显示文件newfile的内容。
(7)删除“自己姓名”中的newfile文件。
(8)当前目录的目录“自己姓名”。
(9)列出所有文件。
三、实验步骤:
1、登录和退出
<1> 登录服务器系统: root (实际的用户名自己设置)。
<2> 在login:后输入用户帐号(第一次进入输入 root):
密码:未知
<3> 登录后,输入passwd命令来修改密码。根据提示输入当前密码,再输入两次新的密码。
<4> 输入logout命令或exit命令退出系统。
2、获取帮助信息
命令man提供了系统操作命令的在线帮助。例如,输入man passwd 可以获取命令passwd 的帮助说明;输入man open 可以获取open 函数的帮助说明。按空格键,翻页浏览。按
3、基本操作命令
<1>pwd:确定你当前的工作目录
<2> ls -al:显示当前工作目录的内容
<3> mkdir:建立一个子目录
<4> cd:转换目录
<5> cat或more:查看文件内容
<6> cp:复制文件
<7> rm -i:删除文件
<8> mv:重命名文件
<9> find:查找文件
<10> vi编辑命令新文件
<11> who查看当前登录在系统中的用户列表、系统中的用户总数和系统启动时间。
各个命令的具体使用方法,可以用man命令查看。
4、vi编辑器
vi编辑器是一个小巧但功能强大的程序。vi编辑器有三种不同的模式:
插入模式——这个模式是通过在命令模式按下“i”键进入的。
命令模式——这是用户输入单键命令的模式。在其他模式中按下ESC键就可以进入命令模式。
常见的执行删除操作的命令有:
dd 删除整个行
#dd 按照输入的数字(#),从当前行删除几行
D 删除光标位置后面全部内容
dw 删除光标所在位置的单词
冒号模式——从命令模式输入一个冒号(:)就可以进入这个模式。常见的冒号模式命令有:
:wq 保存且退出编辑器
:w 保存但不退出
:q 退出且不保存
:q! 强行退出vi,不保存。
:help 获取帮助
1)在系统提示符($)下输入命令vi和想要编辑(建立)的文件名
vi test.c
2)按键I进入插入模式。屏幕上看不到字符i,屏幕下方出现--INSERT--字样。
3)输入你的程序:
/*********************************************************************
#include
void my_print1(char *);
void my_print2(char *);
main ()
{
char string[] = “hello world”;
my_print1 (string);
my_print2 (string);
}
void my_print1(char *string)
{
printf(“The string is %s\n”, string);
}
void my_print2(char *string)
{
char *string2;
int size, i;
size = strlen (string);
string2 = (char *) malloc (size + 1);
for (i = 0; i < size; i++)
{
string2[size – i] = string[i];
}
string2[size+1] = ‘\0’;
printf (“The string printed backward is %s\n”, string2); }
4)按〈Esc〉键,从插入模式进入冒号模式。
5)输入wq,保存退出
四、实验报告要求:
1.记录输入LINUX相关命令后系统输出。
2.使用过程出现的问题及解决方法
实验二:进程管理实验
一、实验目的:
(1)了解有关Linux系统调用。
(2)学习有关Linux的进程创建,理解进程创建后两个并发进程的执行。
(3)加深对进程概念的理解,明确进程和程序的区别。
二、实验内容
(1)进程的创建。
在Linux环境下,编写一个程序使用系统调用fork()创建2个子进程。当此子进程运行时,在系统中由一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符’x’,子进程分别显示’y’和’z’。试记录屏幕上的显示结果,并分析原因。
(2)进程的管道通信。
编写一个程序使用系统调用fork生成3个子进程,并使用系统调用pipe创建一个管道,使得这3个子进程和父进程公用同一管道进行信息通信要求该程序实现数据的输入、输出以及信息提示
(3)加深对进程概念的理解,明确进程和程序的区别。
三、实验提示:
(一)、Linux的系统调用
1. 进程控制的系统调用
1)fork系统调用创建新的子进程
格式: pid=int fork()
fork调用返回时,系统中已有两个用户级环境完全相同的进程存在,这两个进程从fork调用中得到的返回值不同,其中子进程得到的返回值为零,父进程得到的返回值是新创建子进程的进程标识号。
2)exec系统调用
格式:int execl(path,arg0,arg1,…,argn,(char *)0)
char *path, *arg0, *arg1, …, *argn ;
exec调用进程的正文段被指定的目标文件的正文段所覆盖,其属性的变化方式与fork成功后从父进程那里继承属性的方式几乎是一样的。系统中绝大多数命令都是通过exec来执行的,不但shell进程所创建的子进程使用它来执行用户命令,shell进程本身和它的祖先进程也是用exec来启动执行的。