操作系统实验报告.docx
《操作系统实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
操作系统实验报告
学生学号
实验课成绩
武汉理工大学
学生实验报告书
实验课程名称操作系统
开课学院计算机科学与技术学院
指导老师姓名
学生姓名
学生专业班级
2014—2015学年第一学期
实验课程名称:
操作系统
实验项目名称
Linux键盘命令和vi
实验成绩
实验者
专业班级
软件0901
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
Linux键盘命令和vi
要求:
掌握Linux系统键盘命令的使用方法。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
VI编辑器的常见命令:
vi filename :
打开或新建文件,并将光标置于第一行首
vi +n filename :
打开文件,并将光标置于第n行首
vi + filename :
打开文件,并将光标置于最后一行首
vi +/pattern filename:
打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :
在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....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
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
Linux下部分命令操作:
进入vim
Vim中编辑:
三、实验小结、建议及体会
通过这次实验对Linux操作系统有了进一步的了解。
初步掌握了一些Linux系统常用的命令。
同时也熟悉了在Linux常用到的Vi编辑器。
对自己的学习有很大的帮助。
在以后的学习中会多多动手实践,进而提到自己的能力。
实验课程名称:
操作系统
实验项目名称
Linux下C编程
实验成绩
实验者
专业班级
软件0901
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
Linux下的C编程
要求:
掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。
内容:
设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
#include
intmain()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%-2d",i,j,i*j);
}
printf("\n");
}
return0;
}
三、主要仪器设备及耗材
Ubuntu操作体统
Vi编辑器
gcc编译
第二部分:
实验调试与结果分析(可加页)
一、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
Vim下编辑源程序:
编译运行:
二、实验小结、建议及体会
通过这次实验vi编辑器有了进一步的应用,同时学会了在Linux进行简单的C语言编程,掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。
在以后的学习中会加大努力加强自己的编程能力。
实验课程名称:
操作系统
实验项目名称
SHELL编程和后台批处理
实验成绩
实验者
专业班级
软件0901
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
SHELL编程和后台批处理
要求:
掌握Linux系统的SHELL编程方法和后台批处理方法。
内容:
(1)将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。
(2)将上面SHELLL程序后台运行。
观察原C程序运行时输入输出情况。
(3)修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
Nine.c文件如下:
#include
intmain()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%-2d",i,j,i*j);
}
printf("\n");
}
return0;
}
SHELL文件:
#!
/bin/bash
#program:
#thisprogramisusedtorunthenine*ninetable
gcc-oninenine.c
chmodu+xnine
./nine
三、主要仪器设备及耗材
Ubuntu操作体统
Vi编辑器
第二部分:
实验调试与结果分析(可加页)
一、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
二、实验小结、建议及体会
通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解。
实验课程名称:
操作系统
实验项目名称
Linux系统调用(time)
实验成绩
实验者
专业班级
软件0901
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
Linux系统调用使用方法。
要求:
掌握Linux系统调用使用方法。
内容:
学习使用time,ctime,sleep,exit等Linux系统调用使用方法。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
#include
#include
#include
intmain()
{
time_ttimep;
intseconds=time((time_t*)NULL);
time(&timep);
printf("nowis%s\n",ctime(&timep));
sleep(20);
printf("Allsecondsfrom1970.1.1tonow:
%d\n",seconds);
return0;
}
三、主要仪器设备及耗材
Ubuntu操作系统
Vi编辑器
GCC编译器
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
ctime(将时间和日期以字符串格式表示)
表头文件
#include
定义函数
char*ctime(consttime_t*timep);
函数说明
ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为“WedJun3021:
49:
081993\n”。
若再调用相关的时间日期函数,此字符串可能会被破坏。
返回值
返回一字符串表示目前当地的时间日期。
time(取得目前的时间)
表头文件
#include
定义函数
time_ttime(time_t*t);
函数说明
此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。
如果t并非空指针的话,此函数也会将返回值存到t指针所指的内存。
返回值
成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。
sleep(让进程暂停执行一段时间)
表头文件
#include
定义函数
unsignedintsleep(unsignedintseconds);
函数说明
sleep()会令目前的进程暂停,直到达到参数seconds所指定的时间,或是被信号所中断。
返回值
若进程暂停到参数seconds所指定的时间则返回0,若有信号中断则返回剩余秒数。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
通过这次实验学习使用time,ctime,sleep,exit等Linux系统调用使用方法,在以后会多多了解Linux系统调用的更多方法。
实验课程名称:
操作系统
实验项目名称
Linux进程控制(fork)
实验成绩
实验者
专业班级
软件0901
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
Linux系统进程控制
要求:
掌握Linux系统中进程控制原语fork的使用方法。
内容:
设计C程序,其中主进程创建一个子进程,以特定次序各自执行规定操作后退出。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
#include
#include
#include
#include
intmain()
{
pid_tpid;
if((pid=vfork())<0)
{
printf("forkerror!
\n");
exit
(1);
}
elseif(pid==0)
{
printf("childprocessisprinting!
\n");
}
else
{
printf("parentprocessisprintint!
\n");
}
exit(0);
}
三、主要仪器设备及耗材
Ubuntu操作体统
Vi编辑器
GCC编译
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
pid_tfork( void);
(pid_t是一个宏定义,其实质是int被定义在#include中)
返回值:
若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1
函数说明:
一个现有进程可以调用fork函数创建一个新进程。
由fork创建的新进程被称为子进程(childprocess)。
fork函数被调用一次但返回两次。
两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。
注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。
linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。
fork会返回两次:
由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。
因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
通过这次实验掌握Linux系统中进程控制原语fork的使用方法。
同时发现自己对Linux有很多的不熟悉的地方,在以后会进一步加强。