操作系统(3)进程及其实现

1、引入进程的目的:

1)刻画系统的动态性,发挥系统的并发性。

2)解决共享性,正确地描述程序的执行状态。

2、可再入程序:指能够被多个程序同时调用的程序。是纯代码,在执行过程中不被修改,调用它的各应用程序提供工作区。编译程序通常是“可再入”程序,可同时编译若干源程序。

可再用程序:在被调用过程中可以自身修改,在调用它的程序退出之前是不允许其他程序来调用的。

3、进程:

是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。拥有结构性,共享性,动态性,独立性,制约性,并发性。

三态模型:

1)运行态:进程占用处理器运行的状态。

2)就绪态:进程具备运行条件,等待系统分配处理器以便其运行的状态。

3)等待态:又称阻塞态或睡眠态,指进程不具备运行条件,正在等待某个事件完成。

注意:处于运行态的进程个数不能大于处理器的个数,处于就绪态和等待态的进程可以有多个。

4、创建进程需要两个步骤:

首先为新进程分配所需资源,建立必要的管理信息,然后,设置此进程为就绪态,等待被调度执行。

类似的,进程终止:

首先,等待操作系统或相关进程进行善后处理(如抽取信息),然后,回收被占用的资源并由系统删除进程。处于终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失。

5、挂起进程:

等同于不在主存的进程,因此,挂起进程不会参与低级调度知道它们被对换进主存。挂起进程具有以下特征:

此进程不能被立即执行。此进程可能会等待某事件发生,所等待的事件独立于挂起条件,事件结束并不能导致进程具备可执行条件。此进程进入挂起状态是由于操作系统、父进程或进程自身组织其运行。进程挂起状态的结束命令只能通过操作系统或父进程发出。

6、进程映像:某时刻进程的内容及其状态集合。包括以下要素:

1)进程控制块PCB:每个进程捆绑一个控制块,用来存储进程的标志信息、现场信息和控制信息。进程创建时建立控制块,进程撤销时回收其,它与进程一一对应。

2)进程程序块:是被执行的程序,规定进程的一次运行所应完成的功能。

3)进程核心栈:进程在核心态工作时使用,用来保存中断/异常现场,保存函数调用的参数和返回地址,等等。

4)进程数据块:是进程的私有地址空间,存放各种私有数据,用户栈也要在数据块中开辟,用于在函数调用时存放栈帧、局部变量等参数。

7、进程上下文:进程物理实体和支持进程运行的环境的合称。由三部分组成:

1)用户级上下文:由正文(程序)、数据、共享存储区、用户栈锁组成,它们占用进程的虚拟地址空间。

2)寄存器上下文:由程序状态字寄存器、指令寄存器、栈指针、控制寄存器、通用寄存器组成。

3)系统级上下文:由进程控制块、主存管理信息(页表或段表)、核心栈组成。

8、进程队列及其管理:

把处于同一状态的所有进程的PCB链接在一起的数据结构称为队列。有三种通用的队列组织方式:

1)线性方式:操作系统根据系统内进程的最大数目,静态的分配主存中的某块空间,所有进程的PCB都组织在一个线性表中。

2)链接方式:对于同一状态进程的PCB,通过PCB中的链接指针将其链接成队列,可以采用单向或双向链表。

3)索引方式:利用索引表记录不同状态进程的PCB地址,系统建立若干索引表,如就绪索引表、等待索引表、空闲索引表等。

注意:为了标志和识别队列,系统为每个队列均设置队列标志,存放于内核空间中。不同状态的进程可以排成不同的队列,如运行队列、就绪队列和等待队列。

9、进程上下文切换:进程切换必定在核心态而非用户态发生。

内核在下列情况下会发生上下文切换:

1)当进程因各种原因进入等待态时。

2)当进程完成其系统调用返回用户态,但尚无资格获得CPU时。

3)当内核完成中断处理,进程返回用户态但尚无资格获得CPU时。

4)当进程执行的时间片到时或进程结束时。

10、进程切换的实现步骤如下:

1)保存被中断进程的处理器现场信息。

2)修改被中断进程PCB的有关信息,如进程状态等。

3)把被中断进程的PCB加入相关队列。

4)选择占用处理器运行的另一个进程。

5)修改被选中进程PCB的有关信息,如改为就绪态。

6)设置被选中进程的地址空间,恢复存储管理信息。

7)根据被选中进程的上下文信息来恢复处理器现场。

11、处理器模式切换:模式切换不同于进程切换,它不一定会引起进程状态的转换。

注意:用户空间和内核空间的数据不能互访,在应用程序执行系统调用的过程中,如果有需要,可通过内核函数copy_from_user( )和copy_to_user( )将数据在用户空间和内核空间中进行复制。

12、原语:

在核心态执行,是完成系统特定功能的不可分隔的过程,它具有原子操作性,其程序段不允许被中断,或者说原语不能并发执行。原语的实现方法之一是以系统调用的方式提供原语接口,采用屏蔽中断的方式来实现。

13、进程的创建源于以下事件:

1)提交批作业处理。2)有交互式作业登录终端。3)操作系统创建服务进程。4)已存在的进程创建新进程。

进程的创建过程如下:

1)在进程列表中增加一项,从PCB池中申请一个空闲PCB,为新进程分配唯一的进程标识符。

2)为新进程的进程映像分配地址空间,以便容纳进程实体。由进程管理程序确定加载至进程地址空间中的程序。

3)为新进程分配除主存空间以外的其他各种资源。

4)初始化PCB,如进程标识符、处理器初始状态、进程优先级等。

5)把新进程的状态设置为就绪态,并将其移入就绪进程队列。

6)通知操作系统的某些模块,如记账程序、性能监控程序。

在windows中,使用Win32 API的CreateProcess( )函数创建进程,返回一个进程句柄。

14、进程阻塞和唤醒:

阻塞是指使进程让出处理器,转而等待一个事件,如等待资源。等待I/O操作完成、等待某事件发生等。进程通常自调用阻塞原语来阻塞自己,所以阻塞是进程的自主行为,是一个同步事件。

15、进程挂起和激活:

当出现引起挂起事件时,检查要被挂起进程的状态,若处于活动就绪态,就修改为挂起就绪态;若处于等待态,就修改为挂起等待态,被挂起进程PCB的非常驻部分要交换到磁盘对换区。

注意:挂起原语既可以由进程自己也可以由其他进程调用,但是激活原语只能由其他进程调用。







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值