武汉理工操作系统试验报告.docx

上传人:b****3 文档编号:5716744 上传时间:2023-05-09 格式:DOCX 页数:22 大小:152.76KB
下载 相关 举报
武汉理工操作系统试验报告.docx_第1页
第1页 / 共22页
武汉理工操作系统试验报告.docx_第2页
第2页 / 共22页
武汉理工操作系统试验报告.docx_第3页
第3页 / 共22页
武汉理工操作系统试验报告.docx_第4页
第4页 / 共22页
武汉理工操作系统试验报告.docx_第5页
第5页 / 共22页
武汉理工操作系统试验报告.docx_第6页
第6页 / 共22页
武汉理工操作系统试验报告.docx_第7页
第7页 / 共22页
武汉理工操作系统试验报告.docx_第8页
第8页 / 共22页
武汉理工操作系统试验报告.docx_第9页
第9页 / 共22页
武汉理工操作系统试验报告.docx_第10页
第10页 / 共22页
武汉理工操作系统试验报告.docx_第11页
第11页 / 共22页
武汉理工操作系统试验报告.docx_第12页
第12页 / 共22页
武汉理工操作系统试验报告.docx_第13页
第13页 / 共22页
武汉理工操作系统试验报告.docx_第14页
第14页 / 共22页
武汉理工操作系统试验报告.docx_第15页
第15页 / 共22页
武汉理工操作系统试验报告.docx_第16页
第16页 / 共22页
武汉理工操作系统试验报告.docx_第17页
第17页 / 共22页
武汉理工操作系统试验报告.docx_第18页
第18页 / 共22页
武汉理工操作系统试验报告.docx_第19页
第19页 / 共22页
武汉理工操作系统试验报告.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

武汉理工操作系统试验报告.docx

《武汉理工操作系统试验报告.docx》由会员分享,可在线阅读,更多相关《武汉理工操作系统试验报告.docx(22页珍藏版)》请在冰点文库上搜索。

武汉理工操作系统试验报告.docx

武汉理工操作系统试验报告

实验课成绩学生学号0121110680125

武汉理工大学书告实验报学生

操作系统实验课程名称

院计算机科学与技术学院学开课

刘军指导老师姓名

名李帅学生姓

软件1101学生专业班级

学期20142013—学年第一

实验课程名称:

操作系统

实验项目名称

Linux键盘命令和vi

实验成绩

实验者

李帅

专业班级

软件工1101

组别

同组者

实验日期

第一部分:

实验分析与设计(可加页)一、实验内容描述(问题域描述)

Linux键盘命令和vi

1.要求:

掌握Linux系统键盘命令的使用方法

1.使用mkdir命令建立一个子目录subdir

2.使用cat或more命令查看file1文件的内容。

3.将date命令的用法附加到文件file1的后面:

4.利用ls-lfile1命令列出文件file1的较详细的信息。

5.利用rmfa命令将文件fa删除。

再利用ls-l命令查看工作目录内容。

6.运行mvfile1file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中

2.vi操作

1.了解vi编辑器的作用和功能

2.熟悉vi的操作环境和切换方法

3.掌握vi操作的方式(几个常用键)

4.了解常用的快捷键

二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)

VI编辑器的常见命令:

vifilename:

打开或新建文件,并将光标置于第一行首

vi+nfilename:

打开文件,并将光标置于第n行首

vi+filename:

打开文件,并将光标置于最后一行首

vi+/patternfilename:

打开文件,并将光标置于第一个与pattern匹配的串处

vi-rfilename:

在上次正用vi编辑时发生系统崩溃,恢复filename

vifilename....filename:

打开多个文件,依次进行编辑

键盘命令:

1.cat,more,less命令

2.Is命令

3.cp命令

4.rm命令

5.mv命令

VI命令:

1.vi进入vi缓冲区

2.vifile1:

进入文件file1

vi

3.退出

三、主要仪器设备及耗材Ubuntu操作体统编辑器Vi

第二部分:

实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)subdir

命令建立一个子目录1使用mkdir文件的内容。

命令查看file12使用cat或more的后面:

命令的用法附加到文件file13将datefile1的较详细的信息。

4利用ls-lfile1命令列出文件ls-l命令查看工作目录内容。

命令将文件fa删除。

再利用利用5rmfa?

命令查看这两个文件是否都还在工作目录中mvfile1file_a命令,然后用ls6运行不在工作目录中在工作目录中,而file1file_a显然,只有

二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

Free显示系统中已用空闲内存数量

Rm:

删除文件或目录

三、实验小结、建议及体会操作系Windows对比有些不同需要时间去适应。

通过这次实验对LinuxLinux系统常用的命令。

Linux初步掌握了一些统有了进一步的了解。

通过这仅一个周时间的一些最基本知识,我会在后的学习中不断完善和加以扩充的学习,我们只是了解了linux

知识的学习。

linux

操作系统实验课程名称:

实验项目名称

编程CLinux下

实验成绩

实验者

李帅

专业班级

软件1101

组别

同组者

实验日期

第一部分:

实验分析与设计(可加页)一、实验内容描述(问题域描述)

编程下的CLinux程序的源程序编辑方法;下Cvi编辑器的使用方法;掌握Linux要求:

掌握编译、连接和运行方法。

程序,其中包含键盘输入内容:

设计、编辑、编译、连接以及运行一个C和屏幕输出语句。

二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)

#include

usingnamespacestd;

intmain(){intbegin,end;

inttemp=0;cout<

<>begin>>end;

if(begin>end)

{temp=begin;

begin=end;end=temp;

}for(inti=begin;i<=end;i++){

cout<

}cout<

return0;}

编译G++Vi编辑器Ubuntu操作体统三、主要仪器设备及耗材

第二部分:

实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)viJamesJi.c建立文件

(1).先用vi的插入界面输入

(2).在#include

intmain(void)

{printf(JamesJi.gcc!

\r\n);

return0;}

gcc-oJamesJiJamesJi.c文件:

(3).编译生成JamesJi./JamesJi

文件:

运行JamesJi(4).

二、实验小结、建议及体会

语C编辑器有了进一步的应用,同时学会了在viLinux进行简单的通过这次实验程序的源程序编辑方法;编译、连接和运行方法。

在以后CLinux下言编程,掌握的兼容linux的印象,的学习中会加大努力加强自己的编程能力。

加深了对linuxC/C++性很强。

仍旧可以在上面编译成功。

实验课程名称:

操作系统

实验项目名称

SHELL编程和后台批处理

实验成绩

实验者

李帅

专业班级

软件1101

组别

同组者

实验日期

第一部分:

实验分析与设计(可加页)三、实验内容描述(问题域描述)

SHELL编程和后台批处理

要求:

掌握Linux系统的SHELL编程方法和后台批处理方法。

内容:

(1)将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。

(2)将上面SHELLL程序后台运行。

观察原C程序运行时输入输出情况。

(3)修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。

四、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)

test.cpp文件如下:

#include

usingnamespacestd;

intmain()

{

inti,j;

inta[10][10]={0};

a[0][0]=1;

for(i=1;i<=9;i++)

{

for(j=0;j<=i;j++)

{

if((j==0)||(i==j))

a[i][j]=1;

else

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}for(i=0;i<=9;i++){for(j=0;j<=i;j++)cout<<<

cout<

}

return0;

}test.sh文件如下#!

/bin/bash#Program:

#Thisprogramisusedtocompileandrunafileofcpp#History#2011/06/01

g++-otest.outtest.cppchmodu+xtest.out./test.out

三、主要仪器设备及耗材

操作系统UbuntuVi编辑器第二部分:

实验调试与结果分析(可加页)四、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

调试过程中未发现任何问题

五、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

六、实验小结、建议及体会

系统下的编程有了进一步的了解。

也对通过这次实验熟悉了shellLinux编程,对Linux里面编有进一步的认识,如何使用命令来打开文件以及在编辑器vi终端方式使用的编辑器vi写内容等,。

总之,通过这次实验,对课本上的知识有了进一步的理解以及巩固。

操作系统实验课程名称:

)系统调用(timeLinux实验成绩实验项目名称

组别专业班级李帅软件实验者1101

同组者实验日期

第一部分:

实验分析与设计(可加页)一、实验内容描述(问题域描述)系统调用的实现框架、用户界LinuxLinux内核的系统调用,理解、掌握学习内核源代码,通过添加一个简单的系返回过程。

阅读Linux面、参数传递、进入/Linux操作系统处理系统调用的统一流程。

统调用实验,进一步理解系统调用使用方法。

Linux系统调用使用方法。

要求:

掌握Linux系统调用使用方法。

Linux内容:

学习使用time,ctime,sleep,exit等

二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#include#include

#include#include

usingnamespacestd;

intmain(){while

(1){chartimebuf[100];

time_tt;

time(&t);

%d%m月strftime(timebuf,sizeof(timebuf),%Y年%H:

%M:

%S,localtime(&t));日cout<

fflush(stdout);

sleep

(1);

}

return0;}这个系统调用的功能是实在现有的系统中添加一个不用传递参数的系统调用。

现遍历进程。

实验主要内容:

添加系统调用的名字库进行包装利用标准C添加系统调用号在系统调用表中添加相应表项

的实现sys_mysyscall

三、主要仪器设备及耗材Ubuntu操作系统Vi编辑器G++编译器第二部分:

实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

#include

#include

#define__NR_mysyscall223

intmain()

{

*/或/*syscall(223)syscall(__NR_mysyscall);

在此加入在屏幕输出每个进程相关信息的代码;//}

用gcc编译源程序

–#gccotesttest.c运行程序

#./test命令查看遍历进程输出的信息用shell

#dmesg

二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

三、实验小结、建议及体会但是通过查找资料和与老师的交流之后还是顺利完成了实这次实验有点难度,验,希望以后相关能力能够得到加强。

实验课程名称:

操作系统

实验项目名称

Linux进程控制(fork)

实验成绩

实验者

李帅

专业班级

软件1101

组别

同组者

实验日期

第一部分:

实验分析与设计(可加页)一、实验内容描述(问题域描述)

Linux系统进程控制

要求:

掌握Linux系统中进程控制原语fork的使用方法。

内容:

设计C程序,其中主进程创建一个子进程,以特定次序各自执行规定操作后退出。

二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)

#include

#include

#include

usingnamespacestd;

intmain()

{

cout<

<

pid_tiRet=fork();

if(iRet<0)

cout<

<

elseif(iRet==0)

{

cout<

is:

<

}

else{id

child<

is:

<

return0;}

三、主要仪器设备及耗材Ubuntu操作体统Vi编辑器G++编译

第二部分:

实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)【进程的创建】1)(()创建两个子进程,当此进程运行时,在系fork编写一段程序,使用系统调用父进让每一个进程在屏幕上显示一个字符,统中有一个父进程和两个子进程活动,,试观察记录屏幕上的显c”和字符“”程显示字符“a”;子进程分别显示字符“b示结果,并分析原因。

【源程序】#include

intmain()

{

intp1,p2;

while((p1=fork())==-1);

if(p1==0)//第一子进程putchar('b');

else{

while((p2=fork())==-1);

if(p2==0)

第二子进程putchar('c');//else

父进程putchar('a');//}

return0;

}

…bac,,acbcbabca运行多次:

主要输出有,偶尔输出cab和,abc生成的子进程和父进程是并行运行fork()会有如此多种不同输出,主要是因为很大概率系统的,所以先运行哪个进程是由系统的调度算法决定的,ubuntu9.04()运行之后很大概率先运行子进程,在ubuntu9.04fork是因为会先输出bca导当然也有可能先运行父进程后子进程,再运行父进程。

再加上进程间的并发性;

致了输出的多样性。

输出次序带有随机性。

【进程的控制】

(2)将每个进程输出一个字符改为每个进程输出一句修改已编写的程序,并分析原因。

在观察程序执行时屏幕上出现的现象,,话:

【源代码】#include

intmain(){

intp1,p2;

while((p1=fork())==-1);

;第一个子进程if(p1==0)

printf(Child1isrunning!

\n);

else{

while((p2=fork())==-1);

if(p2==0);第二子进程printf(Child2isrunning!

\n);

else;父进程printf(Fatherisrunning!

\n);

}

return0;

}

运行多次,大部分运行后输出:

Child1isrunning!

Child2isrunning!

Fatherisrunning!

少数输出:

Child2isrunning!

Child1isrunning!

Fatherisrunning!

Fatherisrunning!

Child1isrunning!

Child2isrunning!

……

但由还是由于系统的调度算法,程序的并发性影响;理论上是有6种不同的结果,在输出字符串时不会被中断,因此,字符串内部字符顺序输出不printf()于函数变。

所以与打印单字符的结果相同。

观察并分析,,创建进程使用exec函数族使子进程执行新的目标程序出现的现象。

【源代码】:

#include

#include

intmain()

{

printf(===systemcallexecltesting===\n);

execlp(date,date,0);

printf(execerror!

\n);

return0;

}

输出:

===systemcallexecltesting===

21:

35:

18CST星期五月04日2009年12

输出结果分析:

函数时,用指定的目标进程exec是一种exec函数,当进程调用一种execlp调用成功后,调用进程的正文段被指定的文件的正文Exec更好进程的执行映像。

以后的所有语句,所以本exec段所覆盖。

调用成功时,exec不返回,从而不执行”的情况。

如果调用失CST星期五21:

35:

1812月04日例就只有输出“2009年,执行剩余指令。

败,返回-1

(3)【进程信号处理】让再用系统调用singal()编写程序使用系统调用fork()创建两个子进程,

父进程,键);当捕捉到中断信号后即按父进程捕捉键盘上来的中断信号(Ctrl+c

子进程捕捉到信号后分别输出下列信,用系统调用Kill()向两个子进程发出信号:

息后终止ChildProcess11isKilledbyParent!

ChildProcess12isKilledbyParent!

:

输出如下的信息后终止父进程等待两个子进程终止后ParentProcessisKilled!

【源代码】:

#include

#include

intwait_mark;

voidwaiting()

{

while(wait_mark==1);

}

voidstop()

{

wait_mark=0;

}

intmain()

{

intp1,p2;

while((p1=fork())==-1);

;第一个子进程if(p1==0)

{

wait_mark=1;

signal(SIGINT,SIG_IGN);

signal(16,stop);

waiting();

lockf(1,1,0);;加锁printf(ChildProcess11isKilledbyParent!

\n);

lockf(1,0,0);;解锁exit(0);

}

Else

{

while((p2=fork())==-1);

;第二个子进程if(p2==0)

{

wait_mark=1;

signal(SIGINT,SIG_IGN);

signal(17,stop);

waiting();

;加锁lockf(1,1,0);

printf(ChildProcess12isKilledbyParent!

\n);

;解锁lockf(1,0,0);

exit(0);

}

Else;父进程{

wait_mark=1;

signal(SIGINT,stop);

waiting();

kill(p1,16);

kill(p2,17);

wait(0);

wait(0);

printf(ParentProcessisKilled!

\n);

exit(0);

}

}

}

输出结果有两种:

ChildProcessllisKilledbyParent!

ChildProcessl2isKilledbyParent!

ParentprocessisKilled!

ChildProcessl2isKilledbyParent!

ChildProcessllisKilledbyParent!

ParentprocessisKilled!

二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

三、实验小结、建议及体会的使用方法。

同时发现自forkLinux通过这次实验掌握系统中进程控制原语有很多的不熟悉的地方,在以后会进一步加强。

己对Linux

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2