操作系统之进程

进程的概念(3方面):
  • CPU执行任务的单位
  • 获得计算机资源(内存、文件、IO等)的单位
  • 正在执行中的程序
进程在计算机中的组成(4部分,共同构成进程映像(process image)):
  • code :将被执行的程序(在内存中或者虚拟内存中)
  • data :将被程序调用的数据(可能在栈中也可能在寄存器或者内存或虚拟内存中)
  • 系统栈:每个进程有一个或多个这样的栈,用于参数调用或中断后的系统调用(在内存中)
  • PCB(进程控制块):操作系统控制进程需要的数据(在内存中,详见下图)
标志符
  • 进程ID
  • 父进程ID
  • 用户ID
用户可见寄存器  
系统控制寄存器(程序状态字PSW)
  • 对齐位
  • 标志符位
  • 回复标志
  • IO特权级
  • 方向标志
  • 中断允许标志
  • 陷阱标志
  • 嵌套任务标志
  • 虚拟8086模式
  • 虚拟中断挂起
  • 虚拟中断标志
  • 辅助进位标志
  • 进位标志
  • 溢出标志
  • 奇偶校验标志
  • 符号标志
  • 零标志
栈指针  
调度信息
  • 优先级
  • 进程状态(见下7种状态)
  • 调度算法需要用到的数据
  • 等待的事件
队列指针 进程在不同的状态时处于不同的队列中
进程间通信的数据结构  
进程特权 有的系统分用户态和系统态两种,有的系统则分:普通、管理、特权、系统等4个等级
存储管理 在内存及虚拟内存中的位置
资源所有权和使用情况 正在使用及使用过的资源的情况
 
进程的状态(7种):
  • 新建:已经创建PCB,但是还没载入内存
  • 就绪:已经载入内存,等待被执行
  • 运行:执行中
  • 阻塞:因为请求IO事件等被阻塞
  • 挂起阻塞:从内存转移到磁盘中等待引发阻塞的事件发生
  • 挂起就绪:阻塞事件已经发生,但是还没重新载入内存
  • 退出:已经完成或意外终止,不将再被执行,但是进程控制块还没清空,等待其他 程序收集其中的数据
进程切换:
  • 进程的切换的原因:
时钟中断 进程执行超过最大时间片
IO中断 每个指令执行后,下一个指令执行前,操作系统会先检查有没有IO活动等待事件,如果有比当前进程优先级高的IO事件,操作系统会中断当前执行的进程
内存失效 进程要访问的虚拟内存地址不在物理内存中时
陷阱 错误或者异常发生时
系统调用 调用操作系统的函数
 
  • 进程切换的过程:
  1. 调用中断处理程序,进入内核态
  2. 当前进程的上下文保存在进程控制块中(中断产生时,处理器的状态信息的保存和恢复由硬件完成)
  3. 将进程控制块移到相应的进程状态队列
  4. 选择另一个进程执行,并更新其PCB的状态
  5. 更新内存结构
  6. 恢复换入进程的上次执行的上下文
posted @ 2013-02-02 17:19  丛林中的小毛鼠  Views(1395)  Comments(0)    收藏  举报