操作系统实验报告.docx
- 文档编号:26750617
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:117
- 大小:1.55MB
操作系统实验报告.docx
《操作系统实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告.docx(117页珍藏版)》请在冰豆网上搜索。
操作系统实验报告
中南民族大学
学生实验报告
院系:
计算机科学学院
专业:
软件工程
年级:
2009级
课程名称:
操作系统基本原理
指导教师:
帖军
组号:
19
学号:
************************
090650420906504909065075
姓名:
吴松明李莎梁井远詹天文张超刘宇翔
2012年6月7日
年级
2009
专业
软件工程
班级
1/2/3班
组号
19
实验室
9#204/205
日期
2012/6/1
实验
名称
操作系统实验环境熟悉(Linux操作命令、Linux/Windows平台编程工具、Shell编程)
实
验
内
容
分项内容
实验级别
Linux常用命令的使用,Linux系统基本操作
操作系统使用级
Vi/Emacs等编辑软件的使用
操作系统使用级
cc、gcc、g++、gdb命令的使用
操作系统使用级
VisualC++、C++Builder等windows平台下IDE中API的使用
操作系统使用级
Shell编程
操作系统使用级
小组成员
姓名
学号
组内分工
自评
教师评分
吴松明
09065020
Shell编程
A
李莎
09065030
VisualC++windows平台API的使用
A
梁井远
09065034
无
A
詹天文
09065042
cc、gcc、g++、gdb命令的使用
A
张超
09065049
Linux常用命令的使用和系统基本操作
A
刘宇翔
09065075
Vi/Emacs等编辑软件的使用
A
小
组
成
绩
评
定
教师签名:
年月日
实验分项1
Linux常用命令的使用
实
验
目
的
熟悉掌握linux环境下的一些指令的使用
实
验
要
求
Linux常用命令的使用(操作系统使用级)
Linux系统基本操作(启动与退出、文件和目录操作、文档备份与压缩、联机帮助等)
(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)
实
验
原
理
步
骤
(
算
法
流
程
)
下面是一些常用指令的执行结果:
Mkdir/rmdir/cd命令执行结果:
Gzip/gunzip命令执行结果:
Cat指令执行结果:
Cp指令执行结果:
Grep指令执行结果:
Find指令执行结果:
Exit指令执行结果:
其余指令执行结果以实验,在此不一一列举。
(写不完时,可另加附页。
)
实
验
结
果
及
分
析
实验结果如实验流程所示。
通过这些结果可以看出,不同的指令的作用。
通过这些操作,可以更加了解Linux下一些常用指令的作用。
心
得
体
会
通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。
实验分项2
Vi/Emacs等编辑软件的使用
实
验
目
的
Vi/Emacs等编辑软件的使用
实
验
要
求
具体题目
Vi/Emacs等编辑软件的使用
系统平台
Linux操作系统平台
实
验
原
理
步
骤
(
算
法
流
程
)
对Vi的编辑软件的使
在终端下vi的启动:
Vifile#file如果为新文件名,则在当前目录下新建一个文件,名字为file
插入操作:
启动vi编辑器后,需要按i,a,o,I,A,O才能进行插入操作。
i为在光标出插入,a为在光标后追加,o为在当前行下插入新行,I为在行首插入,A为在行末追加,O为在当前行上插入新行。
删除操作:
在文本编辑时吗,按ESC键进入命令模式,在命令模式下输入删除命令x为删除光标处的字符,d0为从光标处删除到行首,dd删除光标所在行,#d删除光标所在行和之后的#行(#是数字),X,D为从光标处删除到行末,dw删除光标后的一个单词,#x删除光标所在处的#个字符。
修改替换操作:
在命令模式下,输入命令R/cc替换/修改整行,C修改光标后的部分,S替换光标所在行,R从当前字符开始替换。
搜索定位操作:
在命令模式下,输入命令,对文本进行搜索定位操作。
0定位行首,:
#定位到#行,$定位行末,/exp向后定位到exp(exp为要定位的字符串),?
exp向前定位到exp,/^exp定位到行首为exp的行。
搜多与替换操作:
在命令项模式下,输入命令进行搜索替换字符操作。
:
s/exp1/exp2/g将当前行的exp1替换成exp2,:
n,ms/exp1/exp2/g将n~m行中的exp1替换为exp2,:
n,mg/exp1/s//exp2/g将n~m行中的exp1替换为exp2,:
g/exp1/s//exp2/g将全文中的exp1替换为exp2。
文件的移动、复制、删除操作:
在命令模式下输入命令,:
n1,n2d删除n1~n2行的内容,:
n1,n2w[!
][file]将n1~n2行的内容写入文件file,:
n1,n2tn3将n1~n2行的内容复制到n3,:
n1~n2mn3将n1~n2行的内容移动到n3。
vi的退出:
:
w保存文件,但不退出,:
x保存并退出,:
q退出(若文件已更改,不能退出),:
q!
不保存且退出,ZZ保存文件且退出vi,:
wq[!
]保存且退出,:
w>>file将现行文件的内容
追加到文件file,:
wfile将现行文件的内容写入file,:
w!
file将现行文件内容写入已存在的file,ZQ不保存且退出。
(写不完时,可另加附页。
)
实
验
结
果
及
分
析
能熟练运用VI编辑器编辑文本,熟练的进行命令输入,和增删改操作。
需要记住并能熟练的运用VI编辑器的所有命令的格式。
心
得
体
会
在实验过程中,使用VI编辑器虽然不能像window操作系统那样对文本进行熟练度编辑,但是,VI编辑器使用命令来操作,将可以锻炼我的记忆力、对键盘的熟练读,还能帮助我们尽快适应linux操作系统的操作。
实验分项3
cc、gcc、g++、gdb命令的使用
实
验
目
的
熟悉掌握linux环境下的一些常用编辑指令的使用
实
验
要
求
具体题目
cc、gcc、g++、gdb命令的使用(开发调试环境)(操作系统使用级)
系统平台
FedoraLinux
实
验
原
理
步
骤
(
算
法
流
程
)
test.c中的代码:
#include
Intmain()
{
printf(“HelloWorld!
!
”);
return0;
}
(写不完时,可另加附页。
)
实
验
结
果
及
分
析
实验得到的结果,符合预期应该得到的结果。
实验中编写的是一个简单的输出HelloWorld!
!
到屏幕的程序,然后用cc、gcc、g++命令分别对其编译,能够得出正确的输出结果。
之后又用gdb命令对其进行调试。
心
得
体
会
原本对liunx下的编译和调试环境不是很熟悉,但通过这次的实验,让我熟悉了linux下的编译器和调试器的使用。
实验分项4
VisualC++、C++Builder等windows平台下IDE中API的使用
实
验
目
的
掌握windows下IDE中API的使用
实
验
要
求
实验题目:
VisualC++、C++Builder等windows平台下IDE中API的使用(操作系统使用级)
操作系统:
windows系统
实
验
原
理
步
骤
(
算
法
流
程
)
#include
#pragmacomment(lib,"user32.lib")
intAPIENTRYWinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
MessageBox(
NULL,
"Hello,2012",
"Greetings",
MB_OK);
return0;
}
实
验
结
果
及
分
析
WindowsAPI是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。
该程序在调用MessageBox()API函数之后退出
心
得
体
会
API接口属于一种操作系统或程序接口。
通过实验,我了解了Windows的这种机制,加深了对API函数的理解。
实验分项5
Shell编程
实
验
目
的
熟悉掌握linux环境下的Shell编程
实
验
要
求
Linux下Shell编程
实
验
原
理
步
骤
(
算
法
流
程
)
//shell.sh代码如下:
#!
/bin/sh
#set-v
func()//键盘输入1--9
{
whiletrue
do
readx
if[$x-eq9]
then
exit0
else
echo"IReceivedSignal$x"
fi
done
}
func1()//本函数为功能1,计算1到10的和
{
x=0;y=1
until[$y-gt10]
do
x=`expr$x+$y`
y=`expr$y+1`
done
echo"1+2+3+4+5+6+7+8+9+10=$x"
}
func2()//本函数为功能2,计算2*5*8*10*14的乘积
{
x=1;y=2
until[$y-gt14]
do
if[$y-eq2]||[$y-eq5]||[$y-eq8]||[$y-eq10]||[$y-eq14]
then
x=`expr$x\*$y`
fi
y=`expr$y+1`
done
echo"2*5*8*10*14=$x"
}
func3()//本函数为功能3,功能为建50个文件并设置权限
{
mkdiruserdata
cduserdata
umask023
num=0
while[$num-lt50]
do
num=`expr$num+1`
mkdiruser$num
done
}
whiletrue
do
echo"0.显示键盘输入1.计算1--10的和2.计算2,5,8,10,14的乘积3.创建目录并分配权限q.退出"
readz
执行文件操作如下:
chmod777shell.sh//先将shell.sh设置为可执行文件,为了方便,直接使用777
bashshell.sh//用bash命令进行编译
实
验
结
果
及
分
析
演示功能结果如下图:
功能3的结果如下:
建的文件夹usedata
文件夹里的文件user1~~user50截图:
新建的user1~~user50文件的权限截图:
心
得
体
会
通过这次Shell编程的一些操作和应用,更加了解Linux中的Shell编程的的语言的不同。
使得我的编程范围更加拓展了。
年级
2009
专业
软件工程
班级
1/2/3班
组号
19
实验室
9#204/205
日期
2012/6/1
实验
名称
进程控制与通信管理
实
验
内
容
分项内容
实验级别
Linux系统常用进程管理命令的使用
操作系统使用级
Linux系统常用进程创建与管理的系统调用
原码阅读与系统编程级
Windows平台常用进线程控制API
原码阅读与系统编程级
进程同步与互斥控制
原码阅读与系统编程级
简单进程通信
原码阅读与系统编程级
小组成员
姓名
学号
组内分工
自我评分
教师评分
吴松明
09065020
Linux系统常用进程管理命令的使用
A
李莎
09065030
Linux系统常用进程创建与管理的系统调用
A
梁井远
09065034
无
A
詹天文
09065042
简单进程通信
A
张超
09065049
Windows平台常用进线程控制API
A
刘宇翔
09065075
进程同步与互斥控制
A
小
组
成
绩
评
定
教师签名:
年月日
实验分项1
Linux系统常用进程管理命令的使用
实
验
目
的
熟悉Linux系统常用进程管理命令的使用
实
验
要
求
具体题目:
Linux系统常用进程管理命令的使用
系统平台:
linux
实
验
原
理
步
骤
(
算
法
流
程
)
1.Linux系统常用进程管理命令的使用
ps命令:
输入ps命令,显示所有运行中的进程:
ps-A显示所有进程
top命令:
top命令提供了运行中系统的动态实时视图。
在命令提示行中输入top:
按q退出,按h进入帮助。
任务:
显示进程的树状图。
pstree以树状显示正在运行的进程。
树的根节点为pid或init。
如果指定了用户名,进程
将以用户所拥有的进程作为根节点。
获得线程信息
ps-eLf
&命令
功能:
将进程放到后台运行
方法:
在要运行的程序命令的最后加上“&”字符。
kill命令
功能:
终止(或撤销)一个进程。
格式:
kill[options]pid
常用选项:
-l
输出信号名列表
-p
指kill只输出已命名pid,而且不送信号给它
-s<信号名>
指出欲发出的信号,信号是以信号名或数字给出的。
(写不完时,可另加附页。
)
实
验
结
果
及
分
析
实验结果如预想一样。
通过PS命令和Kill等命令,了解了一些常用进程管理命令的使用。
心
得
体
会
通过这次试验,了解了常用进程命令的使用,让我进一步了解Linux操作系统的东西。
实验分项2
Linux系统常用进程创建与管理的系统调用
实
验
目
的
熟悉掌握linux环境下常用进程创建与管理
实
验
要
求
熟悉掌握Linux系统常用进程创建与管理的系统调用
实
验
原
理
步
骤
(
算
法
流
程
)
进程创建代码:
#include
main()
{
intp1,p2;
while((p1=fork())==-1);/*创建子进程p1*/
if(p1==0)putchar('b');
else
{
while((p2=fork())==-1);/*创建子进程p2*/
if(p2==0)putchar('c');
elseputchar('a');
}
}
2、
#include
main()
{
intp1,p2,i;
while((p1=fork())==-1);/*创建子进程p1*/
if(p1==0)
for(i=0;i<10;i++)
printf("daughter%d\n",i);
else
{
while((p2=fork())==-1);/*创建子进程p2*/
if(p2==0)
for(i=0;i<10;i++)
printf("son%d\n",i);
else
for(i=0;i<10;i++)
printf("parent%d\n",i);
}
}
进程管理参考代码:
#include
#include
main()
{
intpid;
pid=fork();/*创建子进程*/
switch(pid)
{
case-1:
/*创建失败*/
printf("forkfail!
\n");
exit
(1);
case0:
/*子进程*/
execl("/bin/ls","ls","-1","-color",NULL);
printf("execfail!
\n");
exit
(1);
default:
/*父进程*/
wait(NULL);/*同步*/
printf("lscompleted!
\n");
exit(0);
}
}
(写不完时,可另加附页。
)
实
验
结
果
及
分
析
进程创建结果:
进程管理:
结果如上所示,分别显示了进程创建和管理的结果。
心
得
体
会
通过这次实验,更加了解了Linux下进程创建和管理的方式和代码。
加强了进程的认识。
实验分项3
Windows平台常用进线程控制API
实
验
目
的
熟悉掌握和了解Windows平台常用进线程控制API
实
验
要
求
熟悉掌握和了解Windows平台常用进线程控制API
实
验
原
理
步
骤
(
算
法
流
程
)
线程创建参考代码:
#include
#include
#include
#include
DWORDWINAPISubThread(LPVOIDpUnUse)
{
inti;
for(i=0;i<5;i++)
{cout<<"SubThread"<
Sleep(2000);
}
return0;
}
//-----------------------------------------
intmain()
{
inti;
cout<<"CallStart"< SubThread(NULL); cout<<"CallEnd"< cout< for(i=0;i<5;i++) {cout<<"MainThread"< Sleep(2000);} cout< cout<<"ThreadCreateStart"< DWORDIDThread; HANDLEhThread; hThread=CreateThread(NULL,//nosecurityattributes 0,//usedefaultstacksize SubThread,//threadfunction NULL,//nothreadfunctionargument 0,//usedefaultcreationflags &IDThread);//returnsthreadidentifier if(hThread==NULL) cout<<"CreateThreaderror"< cout<<"ThreadCreateEnd"< cout< for(i=0;i<5;i++) {cout<<"MainThread"< Sleep(2000);} cout< cin.get(); return0; } 进程创建参考代码: //--------------------------------------------------------------------------- #include #include"iostream.h" intAPIWinExec(); intAPIShellExecute(); intCreateProcess(); //--------------------------------------------------------------------------- intmain(intargc,char*argv[]) { APIWinExec(); APIShellExecute(); CreateProcess(); cin.get(); return0; } //--------------------------------------------------------------------------- /*UINTWinExec(LPCSTRlpCmdLine,//addressofcommandline UINTuCmdShow//windowstylefornewapplication ); */ intAPIWinExec() { cin.get(); cout<<"WinExec(\"NotePad\",SW_RESTORE)"< WinExec("NotePad",SW_RESTORE); cin.get(); cout<<"WinExec(\"NotePad\.\\test.txt\",SW_RESTORE)"< WinExec("NotePad\.\\test.txt",SW_RESTORE); cin.get(); cout<<"WinExec(\"Calc\",SW_RESTORE)"< WinExec("Calc",SW_RESTORE); cin.get(); cout<<"WinExec(\"Rundll32.exeshell32.dll,Control_RunDLLtimedate.cpl\",SW_RESTORE)"< WinExec("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告