当前位置:文档之家› 第3章-进程管理与调度详解

第3章-进程管理与调度详解

操作系统讲义
孙清
房地产E网 西安财经学院
LOGO
Contents
课程内容安排
第一章 第二章 第三章 第四章 第五章 第六章 第七章
操作系统概述 系统启动及用户界面 进程管理与调度 进程同步 存储器管理 文件管理 设备管理
房地产E网 西安财经学院
管态(核心态):系统态 目态:用户态
状态之间的转换
• 目态→管态:唯一途径是中断 • 管态→目态:设置程序状态字PSW
房地产E网 西安财经学院
LOGO
进程控制块(PCB)
PCB:用于存放管理进程运行的必要信息。 PCB处于核心段,用户不能直接访问和修改PCB。 OS把所有PCB组织在一起,放在固定的内存区域, 构成PCB表。
房地产E网 西安财经学院
LOGO
进程的状态迁移
房地产E网 西安财经学院
LOGO
3.2 进程的控制
进程的控制使用原语实现。
原语(primitive)是在管态下运行,执行期间不 允许被中断。
原语的实现方法是以系统调用方式提供原语接口, 采用中断屏蔽方式来实现原语功能。
进程的控制原语包括:
创建、撤销、阻塞、唤醒、挂起、激活。
房地产E网 西安财经学院
LOGO
1、进程的创建
父进程创建子进程时,系统从空PCB池中取一个 空PCB,并在进程表中增加一项; 为新进程分配地址空间,传递环境变量,构造共 享地址空间; 查找辅存,将新进程正文装到内存;
LOGO
4、进程的唤醒 当进程所等待的事件发生,由系统进程或 事件发生进程调用唤醒原语。
将被唤醒的进程置为就绪态,并将其PCB 加入相关的就绪队列。
房地产E网 西安财经学院
LOGO
5、进程的挂起
主要用于中级调度,可以对活动等待态或活动就 绪态的进程挂起到静止等待态或静止就绪态。 将被挂起进程的非常驻部分交换到磁盘对换区。
PCB表的大小决定了系统可同时运行程序的最大 数目---道数。
进程的静态组成包括进程的程序、数据、系统/用 户栈和PCB,这些统称为进程影像。
房地产E网 西安财经学院
LOGO
PCB包含四部分内容
进程描述信息:pid,gid 进程控制信息:状态、优先级、运行统计信息、 同步和通信、代码执行入口地址、程序的外存地 址。。。 所拥有的资源和使用情况:占用内存大小及其管 理用数据结构指针、虚拟地址空间、共享数据段、 输入/输出设备、数据缓冲区、打开文件列表等。 CPU现场保护信息:寄存器值
房地产E网 西安财经学院
LOGO
2、进程的撤销(或终止)
撤销进程的情况:
正常终止; 由于错误导致非正常终止; 由祖先进程的要求而撤销。
调用exit()可终止进程。
找到该进程的PCB; 将该进程拥有的资源归还给父进程或操作系统; 若该进程拥有子进程,应先撤销它的所有子孙进程; 撤销进程出队列,归还它的PCB。
copy_process()
重点 理解!
verify_area():进程内存区域验证 copy_mem():内存分配函数
写时复制机制(copy on write):
在fork()执行过程中,新进程将与父进程共同使用父进 程已有的代码和数据内存页面。 只有当以后执行过程中,如果其中一个进程以写方式 访问内存时,才会在写操作前被复制到新申请的内存 页面中。
LOGO
创建进程实例
#include <stdio.h> main() { int p1,p2,i; while ((p1=fork())==-1) ; if (p1 ==0) for(i=0;i<10;i++) printf(“daughter %d\n”,i); else { while ((p2=fork())==-1) ; if (p2 ==0) for(i=0;i<10;i++) printf (“son %d\n”,i); else for(i=0;i<10;i++) printf(“parent %d\n”,i); }
房地产E网 西安财经学院
LOGO
6、进程的激活 激活是挂起的逆过程 将被挂起进程的非常驻部分交换到内存,并修改状 态。
房地产E网 西安财经学院
LOGO
源代码阅读理解----fork.c fork()调用以下模块:
find_empty_process()
房地产E行态进入等待态,由于等待某个事件(如, I/O存取)的发生。 停止进程执行,保存现场信息到PSW; 修改PCB的有关内容,将进程由执行态改为等待 态;
将PCB加入等待态队列。
房地产E网 西安财经学院
房地产E网 西安财经学院
LOGO
copy_process()
用于创建并复制进程的代码段和数据段以及环境。 为进程申请一页内存放PCB,并复制当前进程的PCB作为 新进程的PCB模板。 随后对数据进行修改,把当前进程设为父进程,复位新进 程各统计值。 设置新进程的代码段和数据段的基址和段限长, 复制当前进程内存分页管理的页目录项和页表项。 Linux0.11版,所有进程共用一个页目录表,新进程的页 表则需要另申请一页内存。 在GDT中设置新进程的TSS和LDT 将新进程设置成可运行状态,并向当前进程返回新进程号。
LOGO
第三章 进程管理与调度
进程的状态迁移及PCB 进程的控制 处理机调度 线程及其基本概念
Linux中相关源代码分析
LOGO
1
2 3 4 5
房地产E网 西安财经学院
3.1 进程的状态迁移及PCB
进程的定义 运行中的程序,有生命周期,占用系统资源,包 括:程序、数据、PCB(进程控制块) CPU处理机的工作状态
初始化PCB,为新进程分配PID,初始化PSW;
加入就绪队列。
房地产E网 西安财经学院
LOGO
用fork()系统调用创建子进程:
pid=fork() fork()的返回值:
0 在子进程中; >0 在父进程中; -1 创建失败。
房地产E网 西安财经学院
相关主题