Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

os之进程与线程 #15

Open
jyzwf opened this issue Jul 25, 2017 · 0 comments
Open

os之进程与线程 #15

jyzwf opened this issue Jul 25, 2017 · 0 comments

Comments

@jyzwf
Copy link
Owner

jyzwf commented Jul 25, 2017

process

进程

  1. 是程序的一次执行过程
  2. 是一个程序及其数据在处理机上顺序执行时所发生的活动
  3. 具有独立功能的程序在一个数据集合上运行的过程

进程创建

  1. 为新进程分配一个唯一的进程标识符,并申请一个空白的 PCB(PCB是有限的) 。若 PCB 申请失败则创建失败
  2. 为进程分配资源,为新进程的程序和数据,以及用户栈分配必要的内存空间。注:这里如果资源不足(如内存空间),并不是创建失败,而是出于 等待状态 ,或者为 阻塞状态 ,等待的是内存这个资源
  3. 初始化 PCB ,主要包括初始化标志信息、初始化处理机状态信息、初始化处理机控制信息,以及设置进程的优先级等
  4. 如果进程就绪队列能够接纳新进程,就将新进程插入到就绪队列,等待被调度运行

进程终止

  1. 根据被终止进程的标识符,检索 PCB ,从中读出该进程的状态
  2. 若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程
  3. 若该进程还有子进程,则应将其所有子进程终止

进程切换

  1. 保存处理机上下文,包括程序计数器和其他寄存器
  2. 保存 PCB 信息
  3. 把进程的 PCB 移入相应的对列,如就绪队列、在某事件阻塞等对列
  4. 选择另一个进程执行,更新其 PCB
  5. 更新内存管理的数据结构
  6. 恢复处理机的上下文

父进程创建子进程与主程序调用子程序的区别

父进程创建子进程后,父进程与子进程同时执行(并发)。主程序调用子程序后,主程序暂停在调用点,子程序开始执行,直到子程序返回,主程序才开始执行

PCB

创建后就常驻内存,进程结束后删除

组成

  1. 进程描述信息
    - 用户标识符
    - 进程标识符

  2. 进程控制和管理信息
    - 进程当前状态
    - 进程优先级

  3. 资源分配清单

  4. 处理机相关信息,主要指处理机中各寄存器值,当进程切换时,处理机的状态就必须保存在相应的 PCB
    中,以便在该进程重新执行的时候,能再从断电处继续执行

问题

  1. 在单处理器系统中,任何时刻只有一个进程处于运行状态
    错 ---- 在系统发生死锁的时候,可能所有进程都处于阻塞状态

  2. 同一个程序经过多次创建,运行在不同的数据集上,形成了 不同 的进程
    进程是程序在一个数据集合上运行的过程,不同的数据集,进程也不同

@jyzwf jyzwf changed the title os之进程 os之进程与线程 Jul 25, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant