[OS] 第二章 进程管理

进程管理
  * 进程的基本概念 : 程序在并发环境中的执行过程, 资源分配和独立运行的基本单位 
  * 进程与程序的区别   
    程序顺序执行的特征 { 1, 顺序性 2, 封闭性 3, 可再现性 }
    程序并发执行的特征 { (1), 间断性       共享、合作、制约导致:执行—暂停—执行
                         (2), 失去封闭性   资源状态由多程序改变
                         (3), 不可再现性   相同环境和初始条件,重复执行结果不同。}
  * 进程控制 *
  * 进程同步 *
  * 进程通信 *
  * 线程 
  进程的特征 {
   1, 结构特征  {
    进程结构  {
    PCB 进程控制块  ->  动态特征的集中反映 [头脑] [记载很多信息,通话本地长途。。。常驻内存]
          程序段          ->  描述要完成的功能   [身子] [可能是动态调入的]
          数据段          ->  操作对象及工作区   [身子] [游戏地图]
        }
   2, 动态性  {
    进程最基本的特征是动态性
进程的生命周期:进程由创建而产生,由调度而执行,由撤销而消亡的过程。
}
   3, 并发性 { 多个进程同在内存中,且能在一段时间内同时运行。}
   4, 独立性 { 进程是一个能独立运行、独立分配资源、独立接受调度的基本单位。}
   5, 异步性 { 进程按各自独立的、不可预知的速度向前推进。}
  }
  进程定义 : 进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位。


进程和程序的关系 {
(1)进程是一个动态概念,程序是一个静态概念。
    (2)进程具有并行特征,程序没有。
    (3)进程是竞争资源的基本单位
    (4)一个程序对应多个进程,一个进程为多个程序服务。
  }
  进程的三种基本状态 {
     1, 就绪状态  [万事俱备,只欠东风] [进程已经分配了除处理机以外的所有必要资源,只要再获得处理机就能够执行的状态。这样的进程可能有多个,通常排成一个队列,称就绪队列。]
     2, 执行状态  [已经获得CPU,正在运行。在单处理机系统只有一个进程处于执行状态。多处理机系统则有多个处于执行状态。]
     3, 阻塞状态  [正在执行的进程由于发生某事件而暂时无法继续执行时,放弃处理机而进入的状态,又称等待状态。引起阻塞的事件:请求I/O,申请缓存。]
  }
  进程的基本状态转换  
          图片
  挂起状态  {
    引入原因:
   (1)终端用户请求
   (2)父进程请求
   (3)负荷调节需要 [实战OS多用]
   (4)操作系统的需要
  }
  挂起引起的状态转换
  静止状态  <->  活动状态
     ^             ^
     |             |
     V             V
  挂起状态  <->  非挂起状态
 PCB 进程控制块 {
  PCB是OS中最重要的记录型结构。
OS用PCB对并发进程进行管理和控制。
PCB是进程存在的唯一标志。
PCB常驻内存。
OS专门开辟PCB区将所有的PCB组织成若干个链表或队列。
 }
 PCB中的信息 {
  (1)进程标识符 {
  (1)内部标识符
                            进程唯一的数字编号,给OS使用。
(2)外部标识符
            由字母、数字组成,给用户使用。
   }
  (2)处理机状态  {
  处理机中主要的寄存器:
(1)通用寄存器  8-32个,暂存信息用
(2)指令计数器  要访问的下一条指令地址
(3)程序状态字PSW  条件码、执行方式、中断屏蔽标志 
(4)用户栈指针  用户进程拥有的系统栈,存放过程和系统调用参数及调用地址。
   }
  (3)进程调度信息  
  进程状态  进程优先级  与调度算法有关信息    事件 { 如:阻塞原因 }
  (4)进程控制信息  {
  程序和数据地址
进程同步和通信机制
资源清单:除CPU之外的所需资源与已经分配资源清单
  链接指针:本进程PCB所在队列的下一个地址。
   }
 }
 PCB的组织方式
  (1)链接方式
  把统一状态的PCB,用其中的链接字链接成一个队列。如:就绪队列、阻塞队列(根据不同阻塞原因)、空白队列。
  (2)索引方式
      建立就绪索引表、阻塞索引表等。把索引表在内存的首地址放在内存的专用单元中。
OS-6 : 进程管理
进程管理中最基本功能是进程控制   
进程控制任务:
     进程的创建、终止、进程状态的转变等
进程控制一般由OS内核来实现。
进程图 : 进程是一个家族关系,子进程可以继承父进程的资源。
引起创建进程的事件 {
(1) 用户登录。 比如 :unix
(2) 作业调度。 [批处理系统,在外存中选择一个或多个调入内存]
(3) 提供服务。 [OS向用户提供服务,比如打印什么的...] 
(4) 应用请求。 [由自己来创建自己的子进程] [1,2,3由内核管理]
}
----------------------
进程的创建 { 4步
 * 原语CREAT()按下述步骤创建一个新进程。
   (1), 申请空白 PCB
   (2), 为新进程分配资源。
   (3), 初始化进程的控制块
   (4), 将新进程插入就绪队列
}
PCB的初始化
 (1), 初始化标识信息
 (2), 初始化处理机状态信息
 (3), 初始化处理机控制信息 
 
引起进程终止的事件 {
 (1), 正常结束
 (2), 异常结束 {越界,运行超时,特权指令错,...}
 (3), 外界干预 
     (1), 操作员或OS干预 (2),被父进程终止 (3) 父进程终止
}
进程的终止过程 {
 从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
 若处于执行状态,终止该进程的执行,并置调度标志为真,重新调度。
 若有子孙进程,将所有子孙进程终止。
 将进程全部资源归还其父进程或系统。
 将其PCB从所在队列(或链表)中移出 
}
引起阻塞和唤醒的事件 {
   (1), 请求系统服务
   (2), 启动某种操作
   (3), 新数据尚未到
   (4), 无新工作可做
}
由阻塞原语BLOCK 完成
 进程阻塞过程  {
        入口
         | 
   保存当前进程的CPU现场
         |
     置该进程状态
         |
     进入等待队列 [阻塞队列]
         |
     转进程调度
 }
由唤醒原语WAKEUP  完成
 进程唤醒过程 {
       入口
         | 
 从等待队列中摘下被唤醒进程
         |
    置该进程为就绪 态
         |
     进入就绪队列
         |
     转进程调度或返回 [如果该进程的优先级特别高]
 }
注意 {
 BLOCK和WAKEUP是一队作用相反的原语。
 如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中,安排唤醒原语,以能唤醒阻塞进程;否则,被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无机会继续运行。
}
OS-7
进程的挂起 {进程3种基本状态 : 就绪,执行,阻塞}
  暂时从内存中调出去 - 解决系统种比较繁忙的状态
 1), 挂起原语 : SUSPEND()
 2), 挂起原语的执行过程
      检查被挂起进程的状态 {
       活动就绪 -> 静止就绪  <-激活-
       活动阻塞 -> 静止阻塞  <-激活-
       执行     -> 静止就绪
      }
      执行 -I/O请求-> 活动阻塞  【明白】
进程的两种制约关系 {
 *1 间接制约 进程间由于共享某种资源
        进程A <-> 资源 <-> 进程B
 *2 直接制约  进程间由于合作而形成的互相制约  
        进程A y = x+5 <-> 进程B x = 0+3
 互斥 间接制约 并发执行的进程由于竞争同一资源...
 同步 直接制约 进程间共同完成一项任务... {
   同步进程间具有合作关系,在执行时间上必须协调进程
 }
 每个进程的printf()都是使用临界区[厕所],一个printf,一个printf执行!
  进入区 -> 临界区 -> 退出区 -> 剩余区
同步机制遵循的原则 {
 (1), 空闲让进
 (2), 忙则等待
 (3), 有限等待
 (4), 让权等待 [让出CPU]
}
使用信号量来协调进程间的协调关系!
信号量 {
 *1, 信号量是一种数据结构
 *2, 信号量的值与相应资源的使用情况
 *3, 信号量的值由P, V操作改变。
}
S-11
进程通信
进程通信是指进程之间的信息交换
 交换的信息量  一个状态或数值
                 上千个字节
进程通信分类 {
 1), 低级通信:进程的互斥和同步
 2), 高级通信: 指用户可直接利用os提供的一组通信命令,高效地传送大量数据的一种通信方式。对用户透明(用户不用管)。
}
高级通信分类 {
	共享存储器系统 *2*
	消息传递系统   ***
	管道通信       ***
}
共享存储器系统, {
   (1)共享数据结构的通信方式  进程之间通过某种数据结构,如缓冲池进行通信属于低级通信方式;
   (2)共享存储区通信方式  为了传送大量信息,在存储器中划出一块共享存储区,进程可通过对共享存储区进行读或写来实现通信,属于高级通信方式。
}
消息传递系统 {
	信息交换的单位是消息或报文,分成两种:
	1.直接通信方式 
	2.间接通信方式 
	计算机网络中将消息称为报文。
}
 *1* {
   直接通信方式 {
    发送进程直接把消息发送给目标进程
    发送进程和接收进程都以显式方式分别提供对方的标识符。
    系统提供两条通信原语
      Send(Receiver,message);
      Receive(Send,message);
    例如: Send(P2,m1);
          Receive(P1,m1);
   }
解决生产者一消费者问题 {
 repeat        …
            produce an item in nextp;
                  …
           Send(consumer,nextp);
 until  false;
 repeat        
           Receive(producer, nextp);
                   …
           Consumer the item in nextc;
 until  false;
}
  *2* 间接通信方式 {
   进程之间的通信需要通过某种中间实体,该实体用来暂存发送进程发送给目标进程的消息;
   接收进程则从该实体中取出对方发送给自己的消息。
    这种中间实体称为信箱。
   消息在信箱中可以安全地保存.只允许核准的目标用户随时读取,故可实现非实时通信。
  }
	信箱的创建和撤消 {
		进程用信箱创建原语来建立一个新信箱。创建者进程应给出信箱名字、信箱属性(公用、私用或共享);
		对于共享信箱,还应给出共享者的名字。
		用信箱撤消原语来撤消
	}
  消息的发送与接收 {
    Send(mailbox,message):将一个消息发送到指定信箱;
    Receive (mailbox,message) 从指定信箱中接收一个消息
  }
  信箱分类 {
    私用信箱。 {
	    用户进程建立,作为该进程的一部分。
			拥有者有权读消息.其他用户只能发送。
		  采用单向通信链路。
	    进程结束时信箱也消失。
	  }
    公用信箱。{
	    它由OS创建.
			提供给系统中的所有核准进程使用。
			进程既发送也可取出。
			采用双向通信链路的信箱来实现。
			系统运行期间始终存在。
		}
    共享信箱。{
   	  由某进程创建,创建时提供共享进程(用户)的名字。
   	  信箱的拥有者和共享者,都有权从信箱中取走发送给自己的消息。
   	}
  }
  信箱通信时发送进程和接收进程的关系:
		一对一关系。建立一条专用的通信链路。
		多对一关系。服务进程与多个用户进程之间进行交互,又称客户/服务器交互。
		一对多关系。一个发送进程与多个接进程进行交互,使发送进程可用广播形式,向接收者发送消息。
		多对多关系。建立一个公用信箱,多个进程投递并取走自己的消息。
*管道通信** {
  管道通信方式建立在文件系统的基础上,利用共享文件来连接两个相互通信的进程,此共享文件称为管道(Pipe)。
  管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件
}
管道通信必需的协调能力 {
	(1)互斥  当一个进程正在对管道进行读/写操作时,另一进程必须等待。
	(2)同步  当写(输入)进程把一定量的数据(如4K)写入管道后,便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。当读进程发现管道空时也应睡眠等待,直至写进程将消息写入管道后,才将它唤醒.
	(3)判别对方是否存在.只有确定了对方存在时方能进行通信。
}
OS-12
线程 (多CPU和网络的OS上主要提出的)
 进程:使多个程序能并发执行,以提高资源利用率和系统吞吐量
 引入线程,是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性  
引入线程目的 {
	进程是可拥有资源的独立单位和可独立调度和分派的基本单位。
	创建、撤消和切换中,系统必须为之付出较大的时空开销。故进程,其数目不宜过多,进程切换的频率也不宜过高。
	进程不应同时作为拥有资源的单位和可独立调度和分派的基本单位,应该“轻装上阵”;
}
线程的属性 {
(1)轻型实体。线程中的实体基本上不拥有系统资源
(2)独立调度和分派的基本单位。    线程的切换非常迅速、开销小。
(3)可并发执行。
(4)共享进程资源。
}







原文地址:https://www.cnblogs.com/robbychan/p/3787198.html