北京工业大学操作系统实验报告0122

  • 格式:docx
  • 大小:487.51 KB
  • 文档页数:22

12070131

樊文舟

第 1 页 共 22 页

操作系统实验报告

专 业 计算机科学与技术

年 级 本科三年级

学 号 ********

姓 名 樊文舟

12070131 樊文舟

第 2 页 共 22 页

目录:

一、实验一 ---------------------------------------------3

1.实验目的-----------------------------------------------------------3

2.实验内容-----------------------------------------------------------3

3.实验要求-----------------------------------------------------------3

4.实验设计-----------------------------------------------------------3

5.实验程序-----------------------------------------------------------3

6.实验结果-----------------------------------------------------------4

7.实验感想-----------------------------------------------------------4

二、实验二 ---------------------------------------------4

1.实验目的-----------------------------------------------------------5

2.实验内容-----------------------------------------------------------5

3.实验要求-----------------------------------------------------------5

4.实验设计-----------------------------------------------------------5

5.实验程序-----------------------------------------------------------6

6.实验结果-----------------------------------------------------------7

7.实验感想-----------------------------------------------------------7

三、实验三 ---------------------------------------------8

1.实验目的-----------------------------------------------------------8

2.实验内容-----------------------------------------------------------8

3.实验要求-----------------------------------------------------------8

4.实验设计-----------------------------------------------------------9

5.实验程序-----------------------------------------------------------10

6.实验结果-----------------------------------------------------------11

7.实验感想-----------------------------------------------------------11

四、实验四 ---------------------------------------------12

1.实验目的-----------------------------------------------------------12

2.实验内容-----------------------------------------------------------12

3.实验要求-----------------------------------------------------------12

4.实验设计-----------------------------------------------------------12

5.实验结果-----------------------------------------------------------12

6.实验感想-----------------------------------------------------------12

个人总结 ---------------------------------------------12

12070131 樊文舟

第 3 页 共 22 页

实验一 UNIX/LINUX入门

一、 实验目的

了解UNIX/LINUX运行环境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握UNIX/LINUX下C语言程序的编写、编译、调试和运行方法。

二、 实验内容

1、熟悉UNIX/LINUX的常用基本命令如ls、who、pwd、ps等。(常用Linux命令在附录中列出,请参阅。)

2、熟悉UNIX/LINUX下C语言编译器cc/gcc的使用方法。编写一个简单的显示“Hello,World!”C语言程序,用gcc编译并观察编译后的结果,然后运行它。

具体方法如下:

(1)开机选择Linux操作系统进入,根据要求输入用户名root,密码rootroot。

(2)尝试使用实验指导书中提供的各种指令。步骤如下:

如果你机器是英文系统,找ApplicationsAccessories Terminal,并运行。

如果你机器是中文系统,找 应用附件终端,并运行。

注意:Terminal是一个命令行系统,尝试运行相关的命令。

(3)尝试写一个Hello world程序。步骤如下:

a) 选择一个目录下创建一个文件example.c

b) 双击代表example.c的图标进入编辑器并输入hello world代码

c) 保存并退出

d) 在终端(Terminal)中对example.c进行编译。编译命令为:

gcc example.c –o example

e) 运行编译好的程序。指令为:

./example

三、 实验要求

按照要求编写程序,放在相应的目录中,编译成功后执行。

四、 实验设计

Linux 系统常用命令格式:

command [option] [argument1] [argument2] ...

五、 实验程序

#include

#include

int main(void)

{

printf ("Hello World!\n");

system ("pause");

return 0;

} 12070131 樊文舟

第 4 页 共 22 页 六、 实验结果

七、 实验感想

通过第一次室验,熟悉了LINUX系统的操作,终端的使用,GCC编译c程序

实验二 进程管理

一、实验目的

加深对进程概念的理解,明确进程与程序的区别;进一步认识并发执行的实质。

二、实验内容

(1)进程创建

编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a“;子进程分别显示字符”b“和字符“c”。试观察记录屏幕上的显示结果,并分析原因。(提示:对每个进程的打印循环执行10次,则可以发现执行顺序的不同)

(2)进程控制

修改已编写的程序,将每一个进程输出一个字符改为用一个循环输出1000个字符(父进程输出1000个“a”,子进程分别输出1000个“b”和“c”),再观察程序执行时屏幕上出现的现象,并分析原因。

(3)进程的管道通信

编写程序实现进程的管道通信。使用系统调用pipe()建立一个无名管道,二个子进程P1和P2分别向管道各写一句话: 12070131 樊文舟

第 5 页 共 22 页 Child 1 is sending a message!

Child 2 is sending a message!

父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1的消息,再接收P2的消息)。

三、实验要求

按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。

四、实验设计

1、功能设计

实验要求建立一个管道实现父进程和子进程间的通信,子进程有两个,子进程向管道里写数据,父进程从管道里读出数据。管道的作用是将两个缓冲区相关连起来,使得一个缓冲区写的东西可以从另一个缓冲区读出来,遵循先进先出的顺序。

程序的顺序是这样的:先创建子进程1,向管道写入一句话,子进程1结束后创建子进程2,向管道写入一句话,最后父进程从管道中读出。

2、数据结构

子进程:使用pid_t fork()函数创建,返回值为子进程号。

管道:使用int pipe(int filedis[2])创建无名管道,filedis[2]为两个文件描述符。

3、程序框图

开始

定义子进程号

和文字描述符

创建子进程1

创建子进程2

父进程接收管道中数据

结束 子进程1开始

向管道中写入数据

子进程1结束

子进程2开始

向管道中写入数据

子进程2结束