操作系统(6)进程---进程概念:进程控制、进程状态、三状态模型、挂起模型;线程概念:用户线程、内核线程、轻权线程

版权声明:版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lililuni/article/details/83713511

1:进程相关概念

1. 进程的概念

进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。也就是说程序在对数据进行处理的时候,操作系统是如何维护的。

  1. 进程的组成
    ==1==
  2. 进程的特点
    1. 动态性:操作系统可动态的创建、结束进程。
    2. 并发性:进程可以独立调度并占用处理机运行。我们通常所说的程序执行只是一个指令指针在执行,在操作系统中,可以交替执行多个程序,这些程序可以在操作系统的调度下占用CPU来执行。
    3. 独立性:不同进程的工作不相互影响。
    4. 制约性:多个进程因访问共享数据/资源或进程间同步而产生制约。
  3. 进程与程序的联系
    ==2==
  4. 进程与程序的区别
    ==3==

2. 进程控制块

操作系统管理控制进程运行所用的集合,是操作系统中最重要的数据结构
==4==

  1. 进程控制块的使用
    ==5==

  2. 进程控制块包含的内容

    1. 进程标识信息
    2. 处理机现场保存:用于进程交替运行的时候,保存当前进程的信息
    3. 进程控制信息

    ==6==

  3. 进程控制信息内容
    ==7==

  4. 进程控制块的组件结构
    ==8==


3. 进程状态

操作系统为了维护进程执行过程当中的所有信息的变化,那么它有必要知道继承在什么情况下是什么状态,会发生什么变化。

  1. 生命周期的划分
    创建、执行、等待、抢占、唤醒、结束。但是这种划分在每种操作系统中是不同的
  2. 进程创建
    创建一个进程的过程就相当于进程控制块的一个资源准备过程,比如说把代码,数据拷进去。
    ==9==
  3. 进程执行
    进程创建好后,就会将进程对应的进程控制块放到内核的就绪队列里,等待cpu的调度运行。至于cpu如何选择调度,则对应后面将会学习的处理机的调度算法。
    ==10==
    4.进程等待
    注意,进程等待肯定是由于进程内部的原因,而不是来源于外部。
    ==11==

  1. 进程抢占
    出现这种情况一般有两种,意识高优先级进程进入了就绪状态,这时候就需要马上运行高优先级进程。二是当前进程已经执行的最长可用时间用完(由调度算法决定),操作系统会强制抢先让下一个进程投入运行。被抢占后,进程进入了就绪状态
    ==12==
  2. 进程唤醒
    当进程被唤醒后,进程等待–〉就绪状态
    ==13==
  3. 进程结束
    ==14==

4. 三状态进程模型(就绪、运行、阻塞/等待)

在进程的整个生命周期过程中,可以看出三个核心状态就是就绪、运行、等待。
==15==

  1. 运行:表示进程正在处理机上运行
  2. 就绪:进程获得了除处理机外的所需资源,得到处理机即可运行
  3. 等待:进程正在等待某一个时间的出现而暂停运行
  4. 创建:进程正在被创建,还没有被转到就绪之前的状态
  5. 退出:进程正在从系统消失的状态,这时因为进程结束或者其他原因导致

5. 挂起进程模型

在前面讨论的状态模型,主要讨论的是和CPU相关的这些状态。但实际上,在进程的状态里面,还有一些是跟存储相关的,也就是说进程的一部分存储是在外存里面,和虚拟存储关联起来了。 相比三状态进程,多了就绪挂起和等待挂起两个状态(这两种状态实际上描述了在外存当中的进程的状态)。
==16==

  1. 挂起状态

    1. 等待挂起:进程在外存并等待某事件的发生,也就是在等待状态的基础上加了一个进程位置的信息(内存/外存)
    2. 就绪挂起:进程在外存,但只要进入内存即可运行。
  2. 与挂起相关的状态转换
    挂起:把一个进程从内存转到外存

    1. 等待到等待挂起:没有进程处于就绪状态或者就绪进程要求更多的内存资源
    2. 就绪到就绪挂起:当有高优先级等待(系统认为很快有绪的)的进程时,低优先级的当前就绪进程就会挂起
    3. 运行到就绪挂起:对抢先式分时系统,当有高优先级等待挂起进程因事件出现时,当前进程进入就绪挂起。

    在外存时的状态转换有

    1.等待挂起到就绪挂起:当有等待挂起因相关事件出现

    激活:把一个进程从外存转到内存

    1.就绪挂起到就绪:没有就绪进程,或者当前的挂起就绪进程优先级高于就绪进程
    2. 等待挂起到等待:当一个进程释放了足够内存并且,当前进程是高优先级等待挂起进程

  3. 状态队列
    ==17==


2:进程控制

1. 进程切换

  1. 进程切换概念以及要求
    ==1==
  2. 完整的切换步骤
    ==2==
  3. 进程控制块PCB
    ==3==

2. 进程创建

==4==

3. 进程加载

==5==

4. 进程的等待与退出

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述


3:线程相关概念

1. 线程的概念

  1. 为什么引入线程
    在进程的执行过程中,它的指令执行是由一个叫指令指针的寄存器来描述,该寄存器描述当前的进程执行到什么地方。在实际使用过程中,在进程内部也希望进程有更好的并发性,这就是引入线程的原因。

  2. 线程的特性
    线程之间可以并发执行,同时,也共享相同的地址空间。

  3. 线程的概念
    线程是进程的一部分,描述指令流执行状态。它是进程中的指令执行流的最小单位,是CPU调度的基本单位.
    ==18==

  4. 进程和线程的关系
    ==20==
    ==21==


2. 用户线程

  1. 线程的三种实现方式

    用户线程:在用户空间里,通过函数库的形式来支持线程的创建删除和切换。

    ==22==

  2. 用户线程概念以及特征
    在下图中,内核中只有进程控制块来描述处理机的调度情况
    ==23==
    ==24==

  3. 用户线程的不足
    因为操作系统不管理线程,所以存在下图中的问题
    ==25==


3. 内核线程

由内核通过系统调用的方式来实现的线程机制,由内核完成线程的创建、终止和管理。

  1. 原理图
    进程控制块里有指针指向自己相应的线程控制块,线程控制块在内核里。
    ==26==
  2. 内核线程的特征
    ==27==

4. 轻权线程

一个进程可有一个或多个轻量级进程,每个轻量级进程由一个单独的内核线程来支持。
==28==

猜你喜欢

转载自blog.csdn.net/lililuni/article/details/83713511