进程与线程

进程

进程拥有一个地址空间和一个控制线程,每个进程的地址空间相对独立.进程还会有一个线程表来调度和管理自己的线程.

线程

调度程序激活机制: 当内核了解到一个线程被阻塞以后,内核通知该进程的运行时系统,并且在堆栈中以参数形式传递被阻塞线程的编号和故障描述(上行调用).进程收到消息以后进行线程调度,从线程表中取出另一个已经就绪的线程装入该内核线程中继续执行.等到先前被阻塞的线程又可运行时,内核再次进行上行调用通知进程调整进程表,将该线程标记为可执行. ps:_上行调用: 内核通过一个已知起始地址启动运行时系统发出通知 ,向上层传递消息.

弹出式线程: 分布式系统中使用线程.一个消息到达导致系统创建一个线程去处理该消息.该类线程没有必须的寄存器,堆栈等,可以快速创建以致消息到达与处理之间时间非常短.

进程和线程区别

线程共享的进程中内容:
地址空间,全局变量,打开文件,子进程,信号与信号处理程序,账户信息,即将发生的报警
每个线程独有内容:

  1. 程序计数器: 记录线程接下来要执行的指令
  2. 寄存器: 保存线程当前的工作变量
  3. 堆栈: 记录执行历史
  4. 状态: 1.new(新生) 2.runnable(可运行) 3.running(正在运行) 4.blocked (被阻塞) 5.dead(死亡)

进程(线程)间通信

临界区域(critical region): 共享内存(临界资源)的程序片段
进程同步: 直接制约关系.为了合作完成某个任务,两个或多个进程在某些地方要求有不同的工作顺序而等待,传递消息所产生的制约关系
进程互斥: 间接制约关系.当一个进程使用临界资源时,另一进程必须等待,被阻塞直至占有临界资源的进程释放资源并退出临界区.

互斥解决办法:
1. 信号量:
2.互斥量:
3.管程(monitor):
4.消息传递
Table of Contents