操作系统设计与实现 第二章 进程(一)

2.1 进程介绍

严格来说,在一个瞬间,CPU只能运行一道程序。一秒内运行了多道程序,这样就给用户一种并行的错觉。即伪并行,区分多处理机系统的真正的硬件并行。

2.1.1 进程模型

一个进程就是一个正在执行的程序。每个进程都拥有它自己的虚拟机CPU。当然,实际上真正的CPU在各进程之间来回切换。如第一章所示,这种快速的切换称为多道程序设计。

关键思路:一个进程是某种类型的活动,它有程序、输入、输出及状态。单个处理机被多个进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。
这里写图片描述

2.1.2 进程的创建

进程的创建有四个主要的原因:
1. 系统初始化。
2. 正在运行的一个进程执行了创建进程的系统调用。
3. 用户请求创建一个新进程。
4. 批处理作业的初始化。

启动操作系统时,通常会创建若干个进程。其中一些是前台进程,也就是通用户交互并替他们完成工作的进程。另一些是后台进程,它们不与特定的用户相联系,而是具有某些专用功能。例如,一个后台进程可能用来接受请求访问这台机器上网页的请求消息,在请求消息到来时就会醒来并处理这个请求。这些处于后台的进程称为守护进程。在大型系统中,通常会有很多守护进程。

MINIX3中,ps程序可以显示当前运行的所有进程。

最后一种创建进程的情形仅在大型机的批处理系统中应用。用户在这种系统中提交批处理作业。

在MINIX3系统中,只有一个系统调用用来创建新的进程:fork。这个系统调用会创建一个与调用进程相同的副本。在调用fork后,父进程和子进程类似。通常子进程会执行一个execve或一个类似的系统调用,以修改其存储映像并运行一个新的程序。

在MINIX3和UNIX中,在进程创建后,父进程和子进程各自拥有独立的内存空间。改变对另一个进程是不可见的。

2.1.3 进程的终止

进程终止的原因:
1. 正常退出(自愿)。
2. 出错退出(自愿)。
3. 严重错误(非自愿)。
4. 被其他进程杀死(非自愿)。

第一个原因:多数进程由于完成了它们的工作而终止。
第二个原因:eg: 若用户输入cc foo.c来编译文件,而该文件并不存在,那么编译器简单退出。
第三个原因:由于进程引起的错误,通常是由于程序中的错误所致。如引用了不存在内存、除数为0,等等。
第四种原因:某个进程执行了系统调用通知系统杀死某个进程。

2.1.4 进程的层次结构

在某些系统中,进程创建了另一个进程后,父进程和子进程就以某种形式继续保持关联。子进程自身可以创建更多的进程,组成一个进程的层次结构。进程只有一个父进程。

进程和它的所有子进程及其后裔共同组成一个进程组

在引导映像中有两个特殊的进程:再生服务器和init。再生服务器进程的任务是启动或重启驱动和服务器。它初始时处于阻塞态,等待消息告诉他该创建什么。init进程执行/etc/rc脚本,并向再生服务器发送命令启动引导映像中不存在的驱动和服务器。

2.1.5 进程的状态

三种状态:
1. 运行态:Running,在该时刻实际占用处理机。
2. 就绪态:Ready,可运行,因为其他进程正在运行而暂时被挂起。
3. 阻塞态:Blocked,除非某种外部事件发生,否则不能运行。

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值