前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础|进程和线程模型

基础|进程和线程模型

作者头像
double
发布2018-04-02 16:51:51
8780
发布2018-04-02 16:51:51
举报
文章被收录于专栏:算法channel算法channel

计算机中最重要的模型之一,莫过于进程模型和线程模型了,对于它们的深刻理解,直接关系到软件开发,算法设计等计算机细分方向。

01

进程模型

进程是指一个具有一定独立功能的程序在一个数据集合上的依次动态执行过程。 一个程序的执行,需要经历编译和链接生成可执行文件,然后经过加载到进程地址空间,如下图所示,一段运行的程序经过编译和加载后的过程如下所示:

02

进程组成

简单来说,进程包括了正在运行的一个程序的所有状态的信息,包括:

  • 代码
  • 数据
  • 状态寄存器,CPU状态CR0,指令指针IP
  • 通用寄存器,AX,BX,CX
  • 进程占用系统资源,比如打开文件,已分配内存等。

进程具有特点:动态性,并发性,独立性,制约性。在计算机中某一时刻只有一个进程执行,轮询获得CPU的时间片,只不过这个时间片会很小,这样进程之间的切换回很快,所以在宏观上感觉是并发执行的.

具体的轮流方法就是:先加载程序programA的上下文,然后开始执行 programA,保存程序 programA 的上下文,调入下一个要执行的 programB 的程序上下文,然后开始执行 programB,保存 programB 的上下文,依次轮询。

03

进程控制块

提到进程,怎么能不提起进程控制块呢,Process Control Block,它是操作系统管理控制进程运行所用的信息集合。

操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标识,每个进程都在操作系统中有一个对应的PCB。

进程创建时,生成该进程的PCB;进程终止时,回收它的PCB。进程的组织管理都是通过对PCB的组织管理来实现。

组织
  1. 链表,同一状态的进程其PCB组成一链表,多个状态对应多个不同的链表。
  2. 索引表,同一状态的进程归入一个索引表,由索引指向PCB,多个状态的对应多个不同的索引表。

04

进程的状态

下面看下形成这些状态的条件

进程创建

引起进程创建的情况:系统初始化时,用户请求创建一个新进程;正在运行的进程执行了创建进程的系统调用。

进程就绪

进程创建后就排到就绪队里里头,等待CPU的调用。

进程由就绪变为运行

在就绪队列中,如果没有其他进程运行,那它直接调度当前创建的进程由就绪变为运行。如果有多个进程在就绪状态,内核如何选择一个就绪的进程呢? 这就需要调度算法,会根据进程执行的特征。

进程由运行变为等待

如果进程执行的条件不够,或者说外部资源不足够,这时候进程会进入等待状态。等待状态可能的原因: 1.请求并等待系统服务,无法马上完成。 2. 启动某种操作,无法马上完成。 3. 需要的数据没有到达 注意:只有进程自身才能知道何时需要等待某种事件的发生。

进程由运行变为就绪

运行的进程被强占。发生的情况: 1. 高优先级进程就绪 2. 运行的进程执行当前时间用完

由等待变为就绪

唤醒进程的情况: 1. 被阻塞的进程需要的东西可被满足 2. 被阻塞的进程等待的事件到达。 注意:进程只能被别的进程或者操作系统唤醒。等待的进程不会因自身被唤醒。

进程由运行变为退出

进程结束的情况: 1. 正常退出(自愿的) 2. 错误退出(自愿的) 3. 致命错误(强制性的) 4. 被其他进程所杀(强制性的)

05

进程下的线程

上面说到,启动programA时,先加载程序programA的上下文,然后开始执行 programA,保存程序 programA 的上下文,这种粒度还有没有可能缩小呢?比如,我只想加载一次程序programA的上下文,然后里头有一些更小的模型并行执行任务。

有的,这个更小的共享programA的上下文环境的模型就是线程模型。

与进程相比,它是颗粒度更为细小的CPU时间段。

总结,进程和线程都是CPU的时间片,进程内的这些颗粒小的线程,共享进程的上下文环境。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提到进程,怎么能不提起进程控制块呢,Process Control Block,它是操作系统管理控制进程运行所用的信息集合。
  • 操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标识,每个进程都在操作系统中有一个对应的PCB。
    • 组织
      • 进程创建
        • 进程就绪
          • 进程由就绪变为运行
            • 进程由运行变为等待
              • 进程由运行变为就绪
                • 由等待变为就绪
                  • 进程由运行变为退出
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档