操作系统——进程管理
来源:互联网 发布:出身不好知乎 编辑:程序博客网 时间:2024/05/21 21:37
进程管理
4.1 什么是进程
进程具有以下特性:动态性,并发性,独立性(系统中独立存在的实体)。进程是操作系统分配资源的基本单位。动态性和并发性使进程的具有同步、互斥和死锁功能。一个程序可以对应多个进程,但一个进程只能对应一个程序。被执行的指令称为代码段。被加工的数据段称为源程序。生成的目标文件也是数据段。
进程是程序的一次执行过程。进程包括数据段和代码段,还有一个进程的控制块PCB。
4.2 进程状态变迁
就绪(Ready)状态:准备运行(运行所需要的资源都已经满足,就等CPU来运行)。
阻塞(Blocked)状态:因为等待I/O,或其他事件,处于暂停的状态。
运行状态:CPU执行进程的过程。
4.3 进程的组成
PCB结构——进程控制块是进程存在的唯一的标记,PCB是一个数据结构。记录进程的全部信息(进程名,标识符等信息)。
正文段(代码段)——记录进程的代码。
数据段——进程的数据。
PCB通过指针指向数据段和代码段。
4.3.1 进程控制块
一个进程只有一个PCB,PCB是进程存在与否的唯一标记。
描述信息:进程名字,标识符(PID),用户组号和用户号反映进程家族关系。
管理信息:管理进程的状态、优先级(为调度所用)、正文段、数据段。
资源清单:包括主存量,外设,优先级等
现场保护区:保护进程的上下文。
其他:包含一些其他信息(例如指向下一个PCB链接指针)。
4.3.2 实例
UNIX系统中,把proc结构,正文段和数据段称为进程映像。所以定义UNIX的进程为进程映像的执行过程。
4.4 进程上下文
研究进程上下文的目的是知道进程调度时应该保存哪些信息。
4.5 进程的控制
4.5.1 内核和微核内核(Kernel):OS中最靠近硬件的部分。内核中包含进程控制的软件模块。
微核(micro kernel):是把内核进一步细化,是内核中靠近硬件的部分,内核中包含很小的软件模块(原语:直接操作硬件的模块)。相当于把内核中直接操作硬件的部分软件叫做微核。所以微核的最大好处是便于OS在不同的硬件上的移植。
微核提供四类小型服务:
- 进程间通信(IPC,InterProcess Communication);
- 底层输入输出;
- 有限调度和有限进程控制;
- 最低级的存储管理。
内核或微核提供核外调用的过程或函数称为原语(primitive)。原语是一段用机器指令编写的完成特定功能的程序,在执行过程中不允许中断。
4.5.2 进程控制原语
创建原语create:生成一个新的进程。例如UNIX中的fork()调用。
撤消原语kill:撤销一个进程。例如UNIX中的kill()。
唤醒原语wakeup:
阻塞原语block:
4.6 进程互斥
4.6.1 临界资源一次只能由一个进程使用,这样的资源称为临界资源(critical resource),使用临界资源的那段程序称为临界段(critical section)。从进程角度看,临界资源被各个进程互斥且顺序地使用。
4.6.2 互斥工具——PV操作(即可互斥,也可同步)
lock为true表示该资源正在被使用,lock为false表示该资源空闲。
PV操作原语是荷兰科学家提出的互斥工具。把临界资源抽象成信号量,信号量有两个字段,一个为value,开始为1,当有程序使用它时,把value置为0,表示这个资源正在被使用;另一个为list,开始也为空闲,当资源被使用时(该进程进入阻塞状态),恰巧又有个进程申请资源,则把进程排列到list上,同时把value置为-1,-1表示后面有程序需要使用这个资源。
P(申请资源)操作的物理意义:某进程申请一个资源,如果申请成功则返回;申请失败,则挂在该资源的信号量上。
V(归还资源)操作的物理意义:如果没有进程等待该资源,则返回;如果有进程等待,把等待的进程从list移到就绪队列中。
- 识别临界资源,一看是否被共享,二看是否有排他性使用要求;
- 临界段代码应尽量短小,不能由死循环;
- P和V原语应分别紧靠临界段的头尾部。
4.7 进程同步
4.7.1 PV操作的同步机制生产者和消费者(producer/consumer)问题是经典的进程同步问题。生产者和消费者同步,生产者之间互斥,消费者之间互斥。
4.7.2 条件临界区
4.7 .3管程
把分散在各个进程中的同步段代码集中起来管理的想法引出管程(monitor)的机制。资源及其对资源的操作被认为是一种抽象数据类型,进程同步是发生在这种抽象数据类型上的事件。管程是关于资源抽象数据类型的一种实现机制,因为它对进程同步相当有效。
管程(monitor);线程(thread);进程(process);过程(procedure);例程(routine)。
4.8 进程间通信
信号量上的PV操作是最简单的进程间通信。
4.8.1 软中断
软中断是通过发送规定的信号到指定进程。软中断是对硬终端的一种模拟。
4.8.1.2 信号发送
供用户进程发送软中断信号的系统调用时kill(pid,sig),其中pid对对方进行的标识号,sig为信号名称。
4.8.1.3 信号接收与处理
UNIX系统V有一条系统调用signal(sig,func)用于软中断信号的接收与处理。Sig为信号名,func为对该信号的处理方式。
4.8.2 共享存储(在主存上实现共享)
把需要交换的信息发送到某一约定的存储区域,接收进程从该区域读取信息,从而实现2个或2个以上进程间的通信。这种通信方式称为共享存储。
涉及共享区的系统调用通常有创建、附接、断接、状态查询。
4.8.3 共享文件(在外存上实现共享)
利用共享文件进行通信的方式,在UNIX系统中称为管道通信。
4.8.3.1 PIPE机制
//Pipe的语法格式: int pipe(fildes) int fildes(2)读进程可以使用fildes[0],把管道中的数据取走。
写进程可以使用filder[1],往管道中写入数据。
4.8.3.2 PIPE通信
管道的最简单用法是在UNIX Shell命令中用符号“|”把两个相关命令连接起来。
例如:who|sort|more;who表示有谁在系统中?显示各个联机用户名;sort表示分类,按字母顺序分类排列;more表示分屏显示
4.8.4.3 信箱
信箱是两个进程为了达到通讯的目的而使用的工具。
信箱通信是构造电子邮件系统的基础。
缓冲容量问题:有限容量的情况下,生产者和消费者的进程通信产生了同步消息传递。
容量为零的情况下,没有缓冲区。
无限容量的情况下,发送消息和接收消息的进程通信,是异步消息传递。
4.8.4.5 微核中的IPC
Mach采用消息传递(message passing)方式通信
Port集(portset)概念
Message passing通信方式使Mach更为适合于松耦合的分布式多机体系结构。
Mapping(映射)方法和thread hand off(线程转手调度)方法。
4.9 进程调度
4.9.1 概述
剥夺方式(preemptive mode)和非剥夺方式(non-preemptive mode)。
- 剥夺方式是指当就绪队列中出现优先级高的进程时,进程调度则把运行中的优先级低的进程剥夺,使优先级高的进程开始运行。
- 非剥夺方式是指优先级高的进程不剥夺,静静等待运行进程的结束,再运行这个进程。
周转时间TT(turn around time)和平均周转时间ATT(average turn around time)。
响应时间RT(response time)
4.9.2.1 先来先服务(FCFS:first come first service)
根据队列中的顺序依次运行进程。FCFS本质上是非剥夺式的。
4.9.2.2 最短周期优先(Shortest Burst First,SBF)
SBF是把当前就绪队列中的下一个CPU周期最短的那个进程调度运行。即运行时间较短的进程优先被调度运行。
剩余最短优先:当新来的进程到来时,需要和正在运行的进程进行比较,若剩余时间大于新来的进程运行时间,则需要优先运行新来的进程。
4.9.2.3 优先级法
优先级调度的基本思想是,把当前处于就绪队列中优先级最高的进程投入运行,而不管各进程的下一个CPU周期的长短和其他因素。
优先级是如何确定的?
静态确定:进程运行前,根据某种或其他因素而算定。
动态确定:进程运行过程中,根据某种原则而确定的。
4.9.2.4 轮转法
轮转法是按一定时间片(记为q)轮番运行各个进程。Q的大小不仅影响CPU的利用率,也影响平均周转时间。
4.9.3 调度实现
- 保存下行进程的上下文;
- 按上述调度算法从就绪队列选出上行进程;
- 恢复上行进程的上下文,此时上行进程由断点处开始执行而成为现行进程。
4.10 进程死锁
4.10.1 死锁概念
死锁是多个进程竞争资源而形成的一种僵持局面。
死锁产生的根本原因有二,一是系统内的资源数量不足;二是进程推进的顺序不当。
系统某一时刻的状态可用进程资源图(PRG,process resource graph)表示。
系统进锁——全部进程处于死锁。
环路上的进程有可能死锁,也有可能不死锁。
死锁的产生条件:
- 互斥使用;(资源本省的性质)
- 保持和请求;(进程的行为)
- 不剥夺性;(系统的规定)
- 循环等待。(进程和资源之间的关系)
4.10.2 死锁的排除(预防,避免,检测)
死锁的排除就是破坏死锁产生的条件。
4.10.2.1 死锁预防——破坏死锁的必要条件
资源的静态分配:进程运行之前,把它所需的资源全部分配给它。缺点是资源利用率低。
资源编序:进程申请资源必须从低到高(破坏环路条件)。缺点是资源的序号不容易合理化。
4.10.2.2 死锁避免——银行家算法
定义:在T时刻系统是安全的或系统处于安全状态,仅当存在一个进程序列<p1,p2...pn>,对于进程pi(i=1,2,3...)满足:,称该序列为安全序列。
银行家算法:该算法判断当前资源分配是否是会导致系统进入不安全状态,若会则拒绝分配。
4.10.2.3 死锁检测
很多实际操作系统都采用死锁检测算法。检测到死锁时,则进行死锁解除。
4.10.2.4 死锁解除
方法一:撤销处于死锁状态的进程并收回它们的资源。
方法二:剥夺资源的方法。
方法三:进程回退。
- 操作系统—进程管理
- 操作系统——进程管理
- 操作系统——进程管理
- 操作系统——进程管理
- 操作系统原理——进程管理
- 操作系统复习——进程管理
- 操作系统——进程管理(1)
- 操作系统——进程管理(2)
- 操作系统——实验一.进程管理
- 哈工大操作系统实验3—进程管理
- 操作系统(2)—进程管理
- 操作系统------进程管理(进程)
- 汤子瀛 操作系统整理[2]——第二章 进程管理
- 《操作系统》课程设计指导——进程管理设计
- 计算机操作系统——进程管理(1)
- 计算机操作系统——进程管理(2)
- 计算机操作系统——进程管理(4)
- 计算机操作系统——进程管理(5)
- list去重复
- Hibernate单表操作
- 新人选择搭建个人网站需要考虑的8个问题
- Execution failed for task ':app:mergeDebugResources'. > Some file crunching
- 退学了
- 操作系统——进程管理
- Mongodb数据库与springmvc整合
- UItableview的一些总结
- Swift-基本运算符
- 给定单链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该节点
- lineReader 文件上传MySQL(可读每行)
- C++第6次作业
- 2016 百度之星资格赛 Problem C (Trie模板)
- 菜鸟上路,杭电OJ1002之大数相加