操作系统1.doc
《操作系统1.doc》由会员分享,可在线阅读,更多相关《操作系统1.doc(35页珍藏版)》请在冰豆网上搜索。
![操作系统1.doc](https://file1.bdocx.com/fileroot1/2022-10/7/fccac5a9-b709-48b2-86be-2559ae495b94/fccac5a9-b709-48b2-86be-2559ae495b941.gif)
院系:
计算机科学学院___
专业:
自动化
年级:
2008
课程名称:
操作系统
指导教师:
__刘晶
组号:
组员:
田长刚(08064086)
陆师(08064089)
涂润(08064085)
2010年12月15日
实验1Linux系统用户接口和编程界面实验(4学时)
一.实验目的
1.熟悉使用Linux字符界面、窗口系统的常用命令。
2.熟悉运用Linux常用的编程工具。
3.熟悉运用Linux的在线帮助系统。
4.掌握在Linux操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。
二.实验内容与步骤
1.登录Linux系统
步骤1:
启动linux系统,在登陆界面的左下方单击“会话”,在屏幕弹出的菜单中选择会话方式“GNOME”。
步骤2:
登录用户名:
root密码:
123456。
步骤3:
在菜单中单击“系统工具”->“终端”命令,显示终端窗口。
步骤4:
运行常用命令(login,logout,exit,halt,shutdown,pwd,cd,mkdir,rmdir,cat,cp,mv,rm,ls,chmod,find,grep,more,sort,gzip,unzip,tar,rpm,man,info,--help)
ls:
显示目录类容,命令格式ls【选项】【目录或文件】
cd:
改变工作目录命令,命令格式cd【路径】例子:
返回上一级目录cd··
进入子目录cdxh
mkdir:
创建目录命令,例子:
在当前目录下建立默认权限并且名字为student的子目录mkdirstudent
rmdir:
删除目录命令,例子:
删除当前目录先名为dir的空子目录rmdirdir
cat:
建立和显示文件命令,例子:
显示文本文件sdwa。
Txt的内容
cat–bsdwa。
txt
cp:
文件和目录复制命令命令格式cp【选项】源文件或目录目标文件或目录
rm:
删除文件和目录命令例子:
删除当前目录下的文件file1.txtrmfile1.txt
2.使用Linux的vi编辑器
用vi编辑一个打印“Hello,IamaCprogram”字串的C语言程序,然后编译并运行它。
熟悉gcc、gdb等编译器、调试器的使用。
步骤1:
在系统提示符后键入命令“vi”,后面跟上想要编辑或者建立的文件名,就可以进入vi环境了。
在vi环境中编辑一个打印“Hello,IamaCprogram”字串的C语言程序。
然后键入“:
wq”命令退出vi。
步骤2:
调用C语言编译器编译源程序
命令格式:
gcc[-o可执行文件名]源文件名
步骤3:
运行程序
使用命令行:
./可执行程序名
指导:
1.进入linux的文本模式之后,在命令行键入vihello.c然后回车。
下面作一些简单的解释:
首先vi命令是打开vi编辑器。
后面的hello.c是用户即将编辑的c文件名字,注意扩展名字是.c;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。
2.最基本的命令i:
当进入刚打开的文件时,不能写入信息,这时按一下键盘上的i键(insert),插入的意思,就可以进入编辑模式了。
如下图所示:
3.a与i是相同的用法
4.当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:
1)按一下键盘上的Esc键;2)键入冒号(:
),紧跟在冒号后面是wq(意思是保存并退出)。
如果不想保存退出,则在第二步键入冒号之后,键入!
q(不带w,机尾部保存)。
如下图所示:
5.退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。
W的配合使用
【注意:
如果不知道现在处于什么模式,可以多按几次Esc键,以便确定进入命令模式】
Vi的常用命令
【1】进入vi的命令
Vifilename:
打开或新建文件,并将光标置于第一行首
Vi+nfilename:
打开文件,并将光标置于第n行首
Vi+filename:
打开文件,并将光标置于最后一行行首
【2】插入文本类命令
i:
在光标所在位置前插入新的字符
o:
在当前行之下心开一行
【3】修改和删除命令
X:
删除光标前的字符
x:
删除光标后的字符
dd:
删除当前行
r:
替换光标所在字符
6.编译的命令是:
gcc-ohellohello.c,gcc编译器就会为我们生成一个hello的可执行文件。
其中gcc是c的编译器。
命令行中gcc表示我们是用gcc来编译我们的源程序,-o选项表示我们要求编译器给我们输出的可执行文件名为hello,而hello.c是我们的源程序文件。
最后一步是运行程序,在命令行界面输入:
./hello
具体操作:
用I命令进行编辑,类容如下
#include
intmain(){
print(“hello\n”);
return();
}
2.按ESC,在vi命令模式下使用:
wq命令进行保存,并退出编辑器
3.进入hello.c所在目录,使用gcc-ohellohello.c对源文件进行编译
4.要查看执行结果,使用./hello就可以在屏幕上看见结果了
实验2
进程控制
实
验
内
容
1Linux系统常用进程管理命令的使用(操作系统观察级)
2Linux系统常用进程创建与管理的系统调用(原码阅读与系统编程级)
3Windows平台常用进线程控制API(原码阅读与系统编程级)
实
验
要
求
学会对Linux系统常用进程管理命令的使用
学会创建简单常用进程,以及掌握一些常用的系统调用
了解Windows平台常用进线程控制API
小组成员
姓名
学号
组内分工
教师评分
Linux系统常用进程管理命令的使用(操作系统观察级)
Linux系统常用进程创建与管理的系统调用(原码阅读与系统编程级)
Windows平台常用进线程控制API(原码阅读与系统编程级)
小
组
成
绩
评
定
教师签名:
年月日
实
验
原
理
步
骤
(
算
法
流
程
)
一、Linux系统常用进程管理命令的使用(操作系统观察级)
1、ps命令
功能:
显示正在执行的进程的信息
格式:
ps[options][pids]
常用选项:
_l以长列表的形式列出
_a显示其他用户的进程
_e显示环境
_r只显示正在运行的程序
2、jobs命令
功能:
列出当前正在运行的作业信息,该命令没有选项和参数。
格式:
job
3、kill命令
功能:
终止(或撤销)一个进程。
格式:
kill[options]pid
常用选项:
_l输出信号名列表
_p指kill只输出已命名pid,而且不送信号给它
-s<信号名>指出欲发出的信号,信号十一信号名或数字给出的。
4、&命令
功能:
将进程放到后台运行
方法:
在要运行的程序命令的最后加上“&”字符。
例子:
yes>/dev/null&
[1]-yes的作业号
164-进程标识号
5、bg命令
功能:
把前台作业放到后台:
例如:
对2号作业
6、fg命令
功能:
把后台作业放到前台
例如:
对2号作业
二、Linux系统常用进程创建与管理的系统调用(原码阅读与系统编程级)
fock()函数创建进程
exec()系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。
exec()没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。
wait()
等待子进程运行结束。
如果子进程没有完成,父进程一直等待。
wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。
如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。
exit()
终止进程的执行。
例如:
编写一段程序,父进程通过建立子进程在同一显示器上同时分别循环显示“我是父进程”和“我是子进程”。
#include
#include
#include
#include
#include printf("I am the child progress,my progress ID is %d",getpid());~
main()
{
pid_t pid;
/*此时仅有一个进程*/
pid=fork();
/*此时已经有两个进程在同时运行*/
if(pid<0) /*进程没有创建成功*/
printf("error in fork!
");
else if(pid==0) /*子进程*/
printf("I am the child process, my process ID is %d",getpid());
else /*父进程*/
printf("I am the parent process, my process ID is %d",getpid());
}
三、Windows平台常用进线程控制API(原码阅读与系统编程级)
WCHARlpPath[]=L"notepad.exe";
STARTUPINFOsi={sizeof(si)};
//设置STARTF_USESHOWWINDOW标记,使得STARTUPINFO结构的wShowWindow字段有效
PROCESS_INFORMATIONpi;
BOOLbStatus=CreateProcess
(NULL,lpPath,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
实
验
结
果
及
分
析
一、各种目录命令的运用
二、父进程通过建立子进程在同一显示器上同时分别循环显示“我是父进程”和“我是子进程”
三、通过修改lpPath[]=L"notepad.exe"中双引号的内容来产生不同的进程。
心
得
体
会
通过这次试验,掌握了Linux系统常用进程管理命令的使用方法。
学会