操作系统实验报告Word格式.docx
《操作系统实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
在登录了Linux系统之后常用的系统命令如下:
●文件命令:
cat、more、less,Is,cp,rm,mv命令;
●目录命令:
pwd,cd,mkdir、rmdir命令;
●查找命令:
find,grep命令;
●进程命令:
ps,kill命令;
●联机帮助命令:
man命令。
VI编辑器的使用:
基本vi命令
vifilename:
打开或新建文件,并将光标置于第一行首
vi+nfilename:
打开文件,并将光标置于第n行首
vi+filename:
打开文件,并将光标置于最后一行首
vi+/patternfilename:
打开文件,并将光标置于第一个与pattern匹配的串处
vi-rfilename:
在上次正用vi编辑时发生系统崩溃,恢复filename
vifilename....filename:
打开多个文件,依次进行编辑
:
w将缓冲区写入文件,即保存修改
wq保存修改并退出
x保存修改并退出
q退出,如果对缓冲区进行过修改,则会提示
q!
强制退出,放弃修改
查找替换
/pattern向后搜索字符串pattern
?
pattern向前搜索字符串pattern
n下一个匹配(如果是/搜索,则是向下的下一个,?
搜索则是向上的下一个)
N上一个匹配(同上)
%s/old/new/g搜索整个文件,将所有的old替换为new
%s/old/new/gc搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
复制粘贴
dd删除光标所在行
dw删除一个字(word)
x删除当前字符
X删除前一个字符
D删除到行末
yy复制一行,此命令前可跟数字,标识复制多行,如6yy,表示从当前行开始复制6行
yw复制一个字
y$复制到行末
p粘贴粘贴板的内容到当前行的下面
P粘贴粘贴板的内容到当前行的上面
]p有缩进的粘贴,vim会自动调节代码的缩进
"
a将内容放入/存入a寄存器,可以支持多粘贴板
附:
比如常用的一个寄存器就是系统寄存器,名称为+,所以从系统粘贴板粘贴到vim中的命令为"
+p,注意此处的+不表示操作符,二十一个寄存器。
移动光标
在vim中移动光标跟其他的编辑器中有很大的区别,不过一旦学会了,就会飞速的在文本中移动了。
三、主要仪器设备及耗材
Ubuntu操作体统
Vi编辑器
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
(1)进入ubuntu
(2)打开终端teiminal
(3)输入常见Linux命令测试
(4)进入vi
(5)在vi中进行输入,修改查找操作
(6)退出VI
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
PS:
显示进程状态
Free显示系统中已用空闲内存数量
Ls:
显示文件属性和目录内容
进入vi编辑器
三、实验小结、建议及体会
本次实验是我第一次接触Linux操作系统,通过本次实验我对Linux系统有了初步的了解。
大体上掌握了Linux的常用命令。
Linux下C编程
Linux下的C编程
掌握vi编辑器的使用方法;
掌握Linux下C程序的源程序编辑方法;
编译、连接和运行方法。
内容:
设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。
#include<
iostream>
usingnamespacestd;
intmain()
{
intm;
inttemp=1;
cout<
<
请输入一个正整数:
endl;
cin>
>
m;
for(inti=1;
i<
=m;
i++)
temp=temp*i;
m的阶乘是:
temp;
return0;
}
G++编译
调试正常
这次实验的代码我是在Linux下的vi编辑器上书写的。
通过这次实验vi编辑器有了进一步的应用,同时学会了在Linux进行简单的C语言编程。
我不仅仅掌握Linux下C程序的源程序编辑方法;
编译、连接和运行方法,更加熟悉了Linux的使用,在以后的学习过程中,会多加实践。
SHELL编程和后台批处理
三、实验内容描述(问题域描述)
掌握Linux系统的SHELL编程方法和后台批处理方法。
(1)将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。
(2)将上面SHELLL程序后台运行。
观察原C程序运行时输入输出情况。
(3)修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。
四、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
test.cpp文件如下:
#include<
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;
cout<
"
a[i][j];
cout<
test.sh文件如下
#!
/bin/bash
#Program:
#Thisprogramisusedtocompileandrunafileofcpp
#History
#2011/06/01
g++-otest.outtest.cpp
chmodu+xtest.out
./test.out
四、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
调试正常
五、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
六、实验小结、建议及体会
通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解。
Linux系统调用(time)
Linux系统调用使用方法。
掌握Linux系统调用使用方法。
学习使用time,ctime,sleep,exit等Linux系统调用使用方法。
stdio.h>
unistd.h>
time.h>
while
(1)
chartimebuf[100];
time_tt;
time(&
t);
strftime(timebuf,sizeof(timebuf),"
%Y年%m月%d日%H:
%M:
%S"
localtime(&
t));
timebuf<
fflush(stdout);
sleep
(1);
return0;
Ubuntu操作系统
G++编译器
ctime(将时间和日期以字符串格式表示)
表头文件
定义函数
char*ctime(consttime_t*timep);
函数说明
ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为“WedJun3021:
49:
081993\n”。
若再调用相关的时间日期函数,此字符串可能会被破坏。
返回值
返回一字符串表示目前当地的时间日期。
time(取得目前的时间)
time_ttime(time_t*t);
此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。
如果t并非空指针的话,此函数也会将返回值存到t指针所指的内存。
成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。
sleep(让进程暂停执行一段时间)
unsignedintsleep(unsignedintseconds);
sleep()会令目前的进程暂停,直到达到参数seconds所指定的时间,或是被信号所中断。
若进程暂停到参数seconds所指定的时间则返回0,若有信号中断则返回剩余秒数。
这次实验主要是研究Linux中的系统调用方法。
其中主要包括time,ctime,sleep,exit等Linux系统调用使用方法,这次实验加深了自己对Linux下编程的理解,在以后会多多了解Linux系统调用的更多方法,并多加练习。
Linux进程控制(fork)
Linux系统进程控制
掌握Linux系统中进程控制原语fork的使用方法。
设计C程序,其中主进程创建一个子进程,以特定次序各自执行规定操作后退出。
stdlib.h>
Parentprocessid:
getpid()<
pid_tiRet=fork();
if(iRet<
0)
Createchildprocessfail!
elseif(iRet==0)
I'
mchildprocess,andidis"
ppidis:
getppid()<
else
Createchildprocesssuccesschild"
theidis:
iRet<
pid_tfork(void);
(pid_t是一个宏定义,其实质是int被定义在#include<
sys/types.h>
中)
返回值:
若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;
否则,出错返回-1
函数说明:
一个现有进程可以调用fork函数创建一个新进程。
由fork创建的新进程被称为子进程(childprocess)。
fork函数被调用一次但返回两次。
两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。
注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。
linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。
fork会返回两次:
由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。
因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。
在这次实验之前,我从没使用过fork方法,通过这次实验掌握Linux系统中进程控制原语fork的使用方法。
同时我还发现自己对Linux有很多的不熟悉的地方,在以后会进一步加强。