2023年8月3日发(作者:)

学生学号

实验课成绩

武汉理工大学

学 生 实 验 报 告 书

实验课程名称 操作系统

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

指导老师姓名

学 生 姓 名

学生专业班级

201 — 201 学年 第 学期

实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux键盘命令和vi

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

1、 实验内容描述(问题域描述)

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

2、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

Vi编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi。

1.进入vi

在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

例如:$ vi myfile

有一点要注意,在进入vi之后,是处于“命令行模式”,要切换到“插入模式”才能够输入文字。

2. 切换至插入模式编辑文件

在“命令行模式”下按一下字母“i”就可以进入“插入模式”,这时候就可以开始输入文字了。

3. Insert 的切换

处于“插入模式”,就只能一直输入文字,按一下“ESC”键转到”命令行模式”能够删除文字。

4. 退出vi及保存文件

在“命令行模式”下,按一下“:”冒号键进入“Last line mode”,例如:

: w myfilename

: wq (输入”wq”,存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)

三、主要实验工具、仪器设备及耗材

安装Linux系统的计算机一台。

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

在整个过程中,最困难的就是记忆整个Vi命令。在查阅资料的情况下,这个问题得到了解决。

2、

实验结果描述

1.进入vi

在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面

图1 vi主界面

2.切换至插入模式编辑文件

在“命令行模式”下按一下字母”i”就可以进入”插入模式”。

3.退出vi及保存文件

在”命令行模式”下,按一下”:”冒号键进入”Last line mode”;输入w filename将文章以指定的文件名filename保存;输入 wq存盘并退出vi。

将编辑的内容以文件的形式保存在根目录下,如图2所示。

图2 根目录文件的显示

3、

实验小结、建议及体会

通过这次实验对Linux操作系统有了初步的了解并掌握了一些Linux系统常用的命令。感觉命令太多,需要多加记忆并配合练习才可以。 实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux下C编程

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。

内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。

二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#include

int main()

{

printf(“Hello World .n”);

return 0;

}

三、主要实验工具、仪器设备及耗材

Linux操作系统、emacs 编辑器、gcc编译器。

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

输入源代码

$ vi hello.c

#include

int main()

{

printf(“Hello World.n”);

return(0);

}

$ gcc –o hello hello.c

$ ./hello Hello World.

$ gcc –g –o hello hello.c

$ gdb hello

2、 实验结果描述

编译运行

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

通过本实验,简单学会了在Linux 下进行C语言编程,编译、连接部分仍然不熟悉,需要多加练习。

实验课程名称: 操作系统

实验项目名称

实验者

同组者

SHELL编程和后台批处理

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

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

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

(2) 将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。

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

二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#!/bin/sh

echo "hello shell"

三、主要实验工具、仪器设备及耗材

PC、操作系统:Ubuntu 13.04

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等

在实验时,最主要的就是后缀名发生了错误,应为.sh

在屏幕上述出用echo命令

2、 实验结果描述

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

通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解,也让我对操作系统有了全新的认识,实验中遇到了很多问题,随着自己的一步步解决,自身的技能也随之提升,我会继续努力学习操作系统。

实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux系统调用(time)

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

要求:掌握Linux系统调用使用方法。

内容:学习使用time, ctime, sleep, exit等Linux系统调用使用方法。

3、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#include

#include

int main()

{

time_t now;

now=time(NULL);

printf(“%s”,ctime(&now));

return 0;

}

三、主要实验工具、仪器设备及耗材

Ubuntu操作系统Vi编辑器GCC编译器

第二部分:实验结果分析(可加页)

一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

ctime(将时间和日期以字符串格式表示)

表头文件

#include

ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Wed Jun 30

21 :49 :08 1993n”。若再调用相关的时间日期函数,此字符串可能会被破坏。

返回值

返回一字符串表示目前当地的时间日期。

time(取得目前的时间)

表头文件

#include

函数说明

此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。

返回值

二、实验结果描述

三、实验小结,建议与体会

通过这次实验学习使用time, ctime, sleep, exit等Linux系统调用使用方法,在以后会多多了解Linux系统调用的更多方法。

实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux进程控制(fork)

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

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

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

4、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#include

#include

#include

int main (int argc, char *agrv[])

{

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 %dn",getpid());

else

printf("i am the parent process, my process id is %dn",getpid());

return 0;

}

三、主要实验工具、仪器设备及耗材

Ubuntu操作系统Vi编辑器GCC编译器

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

fork();

返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1

由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。

2、 实验结果描述

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

经过此次实验,我学会了如何在父子进程之间发送信号和传输数据以及一些保存文件的操作,还得多多学习。

2023年8月3日发(作者:)

学生学号

实验课成绩

武汉理工大学

学 生 实 验 报 告 书

实验课程名称 操作系统

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

指导老师姓名

学 生 姓 名

学生专业班级

201 — 201 学年 第 学期

实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux键盘命令和vi

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

1、 实验内容描述(问题域描述)

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

2、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

Vi编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi。

1.进入vi

在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

例如:$ vi myfile

有一点要注意,在进入vi之后,是处于“命令行模式”,要切换到“插入模式”才能够输入文字。

2. 切换至插入模式编辑文件

在“命令行模式”下按一下字母“i”就可以进入“插入模式”,这时候就可以开始输入文字了。

3. Insert 的切换

处于“插入模式”,就只能一直输入文字,按一下“ESC”键转到”命令行模式”能够删除文字。

4. 退出vi及保存文件

在“命令行模式”下,按一下“:”冒号键进入“Last line mode”,例如:

: w myfilename

: wq (输入”wq”,存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)

三、主要实验工具、仪器设备及耗材

安装Linux系统的计算机一台。

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

在整个过程中,最困难的就是记忆整个Vi命令。在查阅资料的情况下,这个问题得到了解决。

2、

实验结果描述

1.进入vi

在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面

图1 vi主界面

2.切换至插入模式编辑文件

在“命令行模式”下按一下字母”i”就可以进入”插入模式”。

3.退出vi及保存文件

在”命令行模式”下,按一下”:”冒号键进入”Last line mode”;输入w filename将文章以指定的文件名filename保存;输入 wq存盘并退出vi。

将编辑的内容以文件的形式保存在根目录下,如图2所示。

图2 根目录文件的显示

3、

实验小结、建议及体会

通过这次实验对Linux操作系统有了初步的了解并掌握了一些Linux系统常用的命令。感觉命令太多,需要多加记忆并配合练习才可以。 实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux下C编程

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。

内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。

二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#include

int main()

{

printf(“Hello World .n”);

return 0;

}

三、主要实验工具、仪器设备及耗材

Linux操作系统、emacs 编辑器、gcc编译器。

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

输入源代码

$ vi hello.c

#include

int main()

{

printf(“Hello World.n”);

return(0);

}

$ gcc –o hello hello.c

$ ./hello Hello World.

$ gcc –g –o hello hello.c

$ gdb hello

2、 实验结果描述

编译运行

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

通过本实验,简单学会了在Linux 下进行C语言编程,编译、连接部分仍然不熟悉,需要多加练习。

实验课程名称: 操作系统

实验项目名称

实验者

同组者

SHELL编程和后台批处理

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

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

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

(2) 将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。

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

二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#!/bin/sh

echo "hello shell"

三、主要实验工具、仪器设备及耗材

PC、操作系统:Ubuntu 13.04

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等

在实验时,最主要的就是后缀名发生了错误,应为.sh

在屏幕上述出用echo命令

2、 实验结果描述

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

通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解,也让我对操作系统有了全新的认识,实验中遇到了很多问题,随着自己的一步步解决,自身的技能也随之提升,我会继续努力学习操作系统。

实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux系统调用(time)

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

要求:掌握Linux系统调用使用方法。

内容:学习使用time, ctime, sleep, exit等Linux系统调用使用方法。

3、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#include

#include

int main()

{

time_t now;

now=time(NULL);

printf(“%s”,ctime(&now));

return 0;

}

三、主要实验工具、仪器设备及耗材

Ubuntu操作系统Vi编辑器GCC编译器

第二部分:实验结果分析(可加页)

一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

ctime(将时间和日期以字符串格式表示)

表头文件

#include

ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Wed Jun 30

21 :49 :08 1993n”。若再调用相关的时间日期函数,此字符串可能会被破坏。

返回值

返回一字符串表示目前当地的时间日期。

time(取得目前的时间)

表头文件

#include

函数说明

此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。

返回值

二、实验结果描述

三、实验小结,建议与体会

通过这次实验学习使用time, ctime, sleep, exit等Linux系统调用使用方法,在以后会多多了解Linux系统调用的更多方法。

实验课程名称: 操作系统

实验项目名称

实验者

同组者

Linux进程控制(fork)

专业班级

实验成绩

组别

实验日期

年 月 日

第一部分:实验分析与设计(可加页)

一、实验内容描述(问题域描述)

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

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

4、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 )

#include

#include

#include

int main (int argc, char *agrv[])

{

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 %dn",getpid());

else

printf("i am the parent process, my process id is %dn",getpid());

return 0;

}

三、主要实验工具、仪器设备及耗材

Ubuntu操作系统Vi编辑器GCC编译器

第二部分:实验结果分析(可加页)

1、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

fork();

返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1

由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。

2、 实验结果描述

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

经过此次实验,我学会了如何在父子进程之间发送信号和传输数据以及一些保存文件的操作,还得多多学习。