zoukankan      html  css  js  c++  java
  • [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)共享进程资源。
    }
    
    
    
    
    
    


  • 相关阅读:
    Linux内核中的红黑树
    研究UEVENT相关东西,看到2篇优秀的博文,转载与此
    Nor Nand OneNand
    Linux设备模型(总线、设备、驱动程序和类)
    linux驱动的入口函数module_init的加载和释放(转)
    hwclock(Linux)
    Linux块设备驱动
    pdflush内核线程池及其中隐含的竞争
    Nand Flash与Nor Flash
    linux内核I2C体系结构(注意结构体原型)
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787198.html
Copyright © 2011-2022 走看看