操作系统进程进阶

进程进阶
    进程控制块:操作系统管理控制进程运行所用的信息集合,操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志
    进程的创建:首先为该进程创建一个PCB 
    进程的终止:回收他的PCB
    进程的组织管理:通过对PCB的组织管理来实现
    
    
    引起进程创建的三个主要事件:
        系统初始化时
        用户请求创建一个新进程
        正在运行的进程执行了创建进程的系统调用
        
    PCB含有的信息:
        进程标识信息:如本进程的标识,本进程的产生者标识(父进程标识);用户标识
        处理机状态信息保存区:保存进程的运行现场信息
            1.用户可见寄存器,用户程序可以使用的数据,地址等寄存器
            2.控制和状态寄存器,如程序计数器(PC),程序状态字(PSW)
            3.栈指针,过程调用/系统调用/中断处理和返回时需要用到它
        进程控制信息
            1.调度和状态信息,用于操作系统调度进程并占用处理机使用
            2.进程间通信信息,为支持进程间的与通信相关的各种标识,信号,信件等,这些信息存放在接收方的进程控制块(PCB)中
            3.存储管理信息,包含有指向本进程映像存储空间的数据结构
            4.进程所用资源,说明由进程打开,使用的系统资源,如打开的文件等
            5.有关数据结构连接信息,进程可以连接到一个进程队列中,或连接到相关的其他进程的PCP
            
    PCB的两种组织方式:
        链表:同一状态的进程其PCB成一链表,多个状态对应多个不同链表,各状态的进程形成不同的链表:如就绪链表,阻塞链表
        索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表,各状态的进程形成不同的链表:如就绪链表,阻塞链表
        
    进程运行:
        内核通过某种进程调度算法来选择一个就绪状态的进程,让他占用处理机并执行,cpu通过时间片来控制进程的运行时间
        
    进程等待:
        在以下情况下,进程会等待(阻塞)
            1.请求并等待系统服务,无法马上完成
            2.启动某种操作,无法马上完成
            3.需要的数据没有到达
        进程只能自己阻塞自己,因为只有进程自身才能知道何时需要等待某种事件的发生
        
    进程唤醒:
        唤醒进程的原因:
            1.被阻塞进程需要的资源可被满足
            2.被阻塞进程等待的事件到达
            3.将该进程的PCB插入到就绪队列
        进程只能被别的进程或操作系统唤醒
        
    进程结束:
        以下四种情形下进程结束:
            1.正常退出 (进程自愿的)
            2.错误退出 (进程自愿的)
            3.致命错误 (强制性的)
            4.被其他进程所杀 (强制性的)
            
进程状态变化模型:
    进程的三种基本状态:
        进程在生命周期结束前处于且仅处于三种基本状态之一,不同的系统设置的进程状态数目不同
            运行状态(running):当一个进程正在处理机上运行时
            就绪状态(ready):一个进程获得了除了处理机之外的所有资源,一旦得到处理机即可运行
            等待状态(又称阻塞状态blocked):一个进程正在等待某一事件而暂停运行时,如等待某资源,等待输入/输出完成
            
进程的其他基本状态:
    创建状态(new):一个进程正在被创建,还没被转到就绪状态之前的状态
    结束状态(exit):一个进程正在从系统中消失时的状态,这是因为进程结束或由于其他原因所导致
    
进程的状态变化:
    null -> new:一个新的进程被产生出来执行一个程序
    new -> ready:当进程被创建完成并初始化后,一切就绪准备运行时,变为就绪状态,其中进程有可能一直处于就绪状态而得不到cpu,所以cpu中设置了一个时钟
    ready -> running:处于就绪状态的进程被进程调度程序选中后,就分配到cpu上来运行
    running -> exit:当进程表示他已经完成或者因出错,当前运行进程会由操作系统做结束处理,因为进程不能自己删除自己的页表,pcb等
    running -> ready:处于运行状态的进程在其运行过程中,由于分配给他的处理机时间片用完而让出处理机,或有更高优先级的进程抢占,其过程由操作系统来完成
    running -> blocked:当进程请求某样东西且必须等待时,例如缺页异常,输入/输出
    blocked -> ready:当进程等待某事件到来时,他从阻塞态变到就绪态,例如已经将缺页加载到内存,或输入/输出完成
                其中进程执行后产生的数据会临时放到cpu的缓存,否则该进程的执行将没有任何意义
                
进程挂起:
    进程挂起是为了更加合理且充分地利用系统资源.note(内存是不可压缩型资源,如果内存不足,操作系统会根据算法来杀掉某些正在运行的进程或者报oom错误
    cpu是可压缩型资源,即使有太多进程,也会让他们排队而不是出现cpu不足现象),进程在挂起状态时,意味着进程没有占用内存空间,处在挂起状态的进程映像在磁盘上
    阻塞挂起状态(blocked -> suspend):进程在外存并等待某事件的出现
    就绪挂起状态(ready -> suspend):进程在外存,但进入到内存,即可运行

挂起(suspend):把一个进程从内存转到外存,可能有一下几种情况:
    阻塞到阻塞挂起:没有进程处于就绪状态或就绪状态进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程
    就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先就绪进程时,系统会选择挂起低优先级就绪进程
    运行到就绪挂起:对抢占式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态
    阻塞挂起到就绪挂起:当有阻塞挂起进程因相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程
    
与挂起相关的状态转换:
    解挂/激活(activate):把一个进程从外存转到内存;可能有以下几种情况:
        就绪挂起到就绪:没有就绪状态进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换
        阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程转换为阻塞进程
        
用进程的观点来看操作系统分为用户进程,磁盘管理进程,终端进程,应用进程等等,以进程为基本结构的操作系统,最底层为cpu调度程序(包括中断处理等)

状态队列:
    由操作系统来维护一组队列,用来表示系统当中所有进程的当前状态;
    不同的状态分别用不同的队列来表示(就绪队列,各种类型的阻塞队列);
    每个进程的PCB都根据他的状态加入到相应的队列中,当一个进程的状态发生变化时,他的PCB从一个状态队列中脱离出来,加入到另一个队列
                
        
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值