操作系统原理-Linux环境下进程管理.pdf
文本预览下载声明
软 件 学 院
实 验 报 告
课程名称: 操作系统原理
实验项目: Linux环境下进程管理
实 验 室: 耘慧楼402
姓 名: 于思淼 学 号: 1220010523
专业班级: 软件12-5班 实验时间: 2014/12/13
实验成绩 评阅教师
一、实验目的及要求
1. 加深对进程概念的理解,明确进程和程序的区别;
2. 进一步认识并发执行的实质;
3. 分析进程争用资源的现象,学习解决进程互斥的方法;
4. 了解Linux 系统中进程通信的基本原理。
二、实验性质
验证性
三、实验学时
4学时
四、实验环境
1.实验环境: Linux 系统开发环境
2.知识准备:
(1) Linux 系统开发环境搭建;
(2) Linux 环境下GCC 编译器的使用;
(3)语言中函数定义与调用、指针和类型的定义与使用、结构的定义、动态内存
的申请等预备知识。
五、实验内容及步骤
1. 进程的创建
编写一段程序,使用系统调用fork ()创建两个子进程。当此程序运行时,在系统中
有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符
“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。
2. 进程的控制
修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序
执行时屏幕上出现的现象,并分析原因。
如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,
观察并分析出现的现象。
3. 用fork()创建一个进程,再调用exec()用新的程序替换该子进程的内容;利用wait()
来控制进程执行顺序。
4.进程的创建
4.1 进程
PCB 的数据结构如下:
(1)进程表项(ProcessTableEntry)。包括一些最常用的核心数据:
(2)U 区(UArea)。用于存放进程表项的一些扩充信息。
()系统区表项。以存放各个段在物理存储器中的位置等信息。
(4)进程区表
4.2 进程映像
UNIX 系统中,进程是进程映像的执行过程,也就是正在执行的进程实体。它由三
部分组成:
(1)用户级上、下文。主要成分是用户程序;
(2)寄存器上、下文。由CPU 中的一些寄存器的内容组成,如PC,PSW,SP 及
通用寄存器等;
()系统级上、下文。包括OS 为管理进程所用的信息,有静态和动态之分。
4. 所涉及的系统调用
4.4 核心为fork()完成以下操作
(1)为新进程分配一进程表项和进程标识符
(2)检查同时运行的进程数目
()拷贝进程表项中的数据
(4)子进程继承父进程的所有文件
(5)为子进程创建进程上、下文
(6)子进程执行
六、实验数据及结果分
练习1:
1.搭建Linux操作系统实验环境
图1:搭建Linux实验平台
2.编译fork2.c
图2:进程创建源程序1
1.运行fork1
图 :输出结果1
图4:输出结果2
图5:输出结果
实验结果分析:
从进程执行并发来看,输出abc的排列都是有可能的。原因:fork()创建进程所需的时
间虽然可能多于输出一个字符的时间,但各个进程的时间片的获得却不是一定是顺序的,
所以输出abc 的排列都是有可能的。
练习2:
1.编译fork2.c
显示全部