没有合适的资源?快使用搜索试试~ 我知道了~
操作系统进程管理实验[定义].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 108 浏览量
2021-10-12
04:24:17
上传
评论
收藏 133KB PDF 举报
温馨提示
试读
11页
操作系统进程管理实验[定义].pdf
资源推荐
资源详情
资源评论
基于 Linux 的操作系统实验系统 第 1 页
第二章 进程管理实验
【实验目的】
1、加深对进程概念的理解,明确进程和程序的区别;
2、进一步认识并发执行的实质;
3、分析进程争用资源的现象,学习解决进程互斥的方法;
4、了解 Linux 系统中进程通信的基本原理
【准备知识】
一.基本概念
1、进程的概念;进程与程序的区别。
2、并发执行的概念。
3、进程互斥的概念。
4、进程通信的基本原理。
二.系统调用
系统调用是一种进入系统空间的办法。 通常, 在 OS 的核心中都设置了一组用于
实现各种系统功能的子程序,并将它们提供给程序员调用。程序员在需要 OS提供某
种服务的时候, 便可以调用一条系统调用命令, 去实现希望的功能, 这就是系统调用。
因此,系统调用就像一个黑箱子一样, 对用户屏蔽了操作系统的具体动作而只是控制
程序的执行速度等。各个不同的操作系统有各自的系统调用,如 windows API,便是
windows 的系统调用, Linux 的系统调用与之不同的是 Linux 由于内核代码完全公开,
所以可以细致的分析出其系统调用的机制。
1 系统调用和普通过程的区别
1.1 运行于不同的系统状态
用户程序可以通过系统调用进入系统空间,在核心态执行;而普通过程则只能
在用户空间当中运行。
1.2 通过软中断切换
由于用户程序使用系统调用后要进入系统空间,所以需要调用一个软中断;而
基于 Linux 的操作系统实验系统 第 2 页
普通过程在被调用时没有这个过程。
2 系统调用的类型
系统调用的作用与它所在的操作系统有密切关系,根据操作系统的性质不同,
它们所提供的系统调用会有一定的差异, 不过对于普通操作系统而言, 应该具有下面
几类系统调用 : (1) 进程控制类型; (2) 文件操纵类型; (3) 进程通信类型;
(4) 信息维护类型。
3 系统调用的实现机制
由于操作系统的不同,其系统调用的实现方式可能不同,然而实现机制应该是
大致相同的,一般包含下面几个步骤:
3.1 设置系统调用号
在系统当中,往往设置多条系统调用命令,并赋予每条系统调用命令一个唯一
的系统调用号。根据分配系统调用号方式的不同分为:直接方式和参数表方式。
系统调用的参数表方式有分为直接和间接两种方式,如图 2.1 。
3.2 处理系统调用
操作系统中有一张系统调用入口表。 表中的每个表目都对应一条系统调用命令,
它包含有该系统调用自带参数的数目、 系统调用命令处理程序的入口地址等等。 操作
系统内核便是根据所输入的系统调用号在该表中查找到到相应的系统调用, 进而转入
它的入口地址去执行它。
4 Linux 的系统调用机制
L inux 的系统调用是通过中断机制实现的。 中断,这个概念涉及到计算机系统结
构方面的知识,显然它与微处理器等硬件有着密不可分的关系。
变元表: N
参数 1
参数 2
……
参数 n
(a) 直接方式
trap
参数 1
参数 2
……
参数 n
××
变元表:
N
指针
(b) 间接方式
图 2.1 系统调用的参数表方式
基于 Linux 的操作系统实验系统 第 3 页
中断(Interrupt ),是指计算机在执行期间, 系统内发生任何非寻常的或非预期
的急需处理事件, 使得 CPU暂时中断当前正在执行的程序而转去执行相应的事件处理
程序,待处理完毕后再返回原来被中断处继续执行的过程。 其发生一般而言是 “异步”
的,换句话说就是在无法预测何种情况下发生的(比如系统掉电) 。所以计算机的软
硬件对于中断的相应反应完全是被动的。
软中断,是对硬中断的一种模拟,发送软中断就是向接收进程的 proc 结构中的
相应项发送一个特定意义的信号。软中断必须等到接收进程执行时才能生效。
陷阱( Trap ),由软件产生的中断,指处理机和内存内部产生的中断,它包括程
序运算引起的各种错误,如地址非法、校验错、页面失效等。它由专门的指令,如
X86 中的“ INT n ”,在程序中有意的产生。所以说陷阱是主动的, “同步”的。
异常(Exception ),一般也是异步的, 多半是由于不小心造成的,比如在进行除
法操作时除数为 0,就会产生一次异常。
三.相关函数。
1 fork( )函数
fork() 函数创建一个新进程。
其调用格式为: int fork() ;
其中返回 int 取值意义如下:
正确返回: 等于 0:创建子进程,从子进程返回的 ID 值;
大于 0:从父进程返回的子进程的进程 ID 值。
错误返回: 等于- 1:创建失败。
2 wait( )函数
wait() 函数常用来控制父进程与子进程的同步。在父进程中调用 wait() 函数,
则父进程被阻塞, 进入等待队列, 等待子进程结束。当子进程结束时, 会产生一个终
止状态字, 系统会向父进程发出 SIGCHLD信号。 当接到信号后, 父进程提取子进程的
终止状态字,从 wait() 函数返回继续执行原程序。
其调用格式为: #include <sys/type.h>
#include <sys/wait.h>
(pid_t) wait(int *statloc) ;
正确返回:大于 0:子进程的进程 ID 值;
等于 0:其它。
错误返回:等于- 1:调用失败。
剩余10页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功