进程的基本状态转换
处于就绪状态的一旦获得CPU就会进入执行状态。
处于执行状态的CPU一旦发出I/O请求,就会进入阻塞状态,让出CPU。另一种情况是处于执行状态的进程一旦分配给该进程的时间片段用完,该进程同样会进入就绪队列。
进入阻塞状态的进程I/O请求一旦执行完毕,就会进入到就绪队列中。
挂起状态--为了系统和用户观察和分析进程
引入原因:
①终端用户请求(当终端用户在自己的程序运行期间发现有可以问题,希望暂停自己的程序的运行,使之停止下来,一遍用户研究其执行情况或对程序进行修改)
②父进程请求(有时父进程希望挂起自己的某个子进程,以便考察和修改该子进程,或者协调各子进程间的活动)
③负荷调节需要(当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行)
④操作系统的需要(操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账)
挂起状态是进程的静态状态,进程是被调入到外存上的;非挂起是进程的活动状态。此时进程是在内存中的。
当进程处于未被挂起的就绪状态时,称此为活动就绪状态,此时进程可以接受调度。当将该进程挂起后,该进程便转变为静止就绪状态,处于静止就绪状态的进程不在被调度。
当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状态,当将它挂起后,进程便转变为精致阻塞状态,处于该状态的进程在其所期待的时间出现后,它将从静止阻塞变为静止就绪状态。
处于静止就绪状态的进程被激活后,该进程将转变为活动就绪状态
处于静止阻塞状态的进程被激活后,该进程将转变为活动阻塞状态
进程结构:
PCB(Process Control Block):是OS中最重要的记录型结构(C语言中的结构体),OS用PCB对并发进程进程进行管理和控制。PCB是进程存在的唯一标志.PBC常驻内存。OS专门开辟PCB区将所有的的PBC组织成若干个链表和队列。
具体作用:
①作为独立运行基本单位的标志。(当一个程序配置了PCB后,就表示它已是一个能在多道程序环境下独立运行的、合法的基本单位,也就具有取得OS服务的权利)
②能实现间断性运行方式。(在多道程序环境下,程序是采用停停走走间断性的运行方式运行的。当进程因阻塞而暂停运行时,它必须保留自己运行时的CPU现场信息,再次被调度运行时,还需要恢复其 CPU现场信息。在有了PCB后,系统就可将CPU现场信息保存在被中断进程的PCB中,供该进程再次被调度执行时回复CPU现场时使用)
进程控制块的中的信息
①进程标识符:分别内部标识符(进程唯一的数字标号,给OS使用)和外部标识符(由字母、数字组成,给用户使用)
②处理机状态:处理机中主要的寄存器状态:
(1)通用寄存器8-32个,暂存信息用
(2)指令计数器: 要访问的下一跳指令地址
(3)程序状态字PSW 条件码、执行方式(系统态和用户态)、中断屏蔽标志(允不允许被打断)
(4)用户栈指针:用户进程拥有的系统栈,存放过程和系统调用参数及调用地址
③进程调度信息:在OS进行调度时,必须了解进程的状态及有关进程调度的信息,这些信息包括:
(1)进程状态
(2)进程优先级(优先级高的进程优先获得处理机)
(3)与调度算法有关信息(如该进程进入执行状态多长时间,在就绪队列中等待了多长时间等)
(4)事件 是指进程由执行状态转变为阻塞状态所等待发生的事件,如:阻塞原因
④进程控制信息:是指进程控制所必须的信息:
(1)程序和数据地址
(2)进程同步和通信机制
(3)资源清单:除CPU之外的所需资源与已经分配资源清单(进程执行之前,并不是将它所需的所有资源都分配给它之后才能运行,只需分配给它最近所需的资源即可,在该进程慢慢的执行过程中,再将其他的资源分配给它)
(4)链接指针:它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址
PCB的组织方式:PCB在系统中是如何存放的
(1)线性方式:将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中。
(2)链接方式
把统一状态的PCB,用其中的链接字链接成一个队列。如:就绪队列、阻塞队列(根据不同阻塞原因)、空白队列。
每个PCB后面的数字是指下一个PCB的地址(0代表该队列结束)。
(3)索引方式
建立就绪索引表、阻塞索引表等。把索引表在内存的首地址放在内存专用单元中。
程序段
数据段