美文网首页
进程与线程相关

进程与线程相关

作者: 学不好语文的LJ码农 | 来源:发表于2016-12-15 11:17 被阅读22次

以下内容整理自互联网,仅用于个人学习


1. 进程

1.1 进程的定义

  • 进程是程序运行的一次执行过程。
  • 进程是一个程序及其数据在处理机上顺序执行所发生的活动。
  • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

为了使参与并发执行的程序(含数据)能独立的运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段、相关数据段和PCB三部分过程了进程映像(进程实体)。所谓创建进程,实质上是创建进程映像中的PCB;而撤销进程实质上是撤销进程的PCB。值得注意的是,进程映像是静态的,进程则是动态的

PCB是进程存在的唯一标识!

引入进程实体的概念后,我们可以把传统操作系统中的进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

1.2 进程状态转换

  • 运行状态:进程正在处理机上运行。但处理机环境下,每一时刻最多只有一个进程处于运行状态。
  • 就绪状态:进程已处于准备运行状态,即进程获得了除了处理机之外的一切所需资源,一旦得到处理机即可运行。
  • 阻塞状态:又称为等待状态。进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理器空闲,该进程也不能运行。
  • 创建状态:进程正在被创建,尚未转入到就绪状态。进程创建需要多个步骤:首先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息;然后由系统为该进程分配运行时所必需的资源;最后把该进程转入就绪状态。
  • 结束状态:进程正从系统中消失,这可能是进程正常结束或其他原因中断退出运行。当进程需要结束运行时,系统首先必须置该进程为结束状态,然后进一步处理资源释放和回收等工作。
进程状态转换.jpg
  • 就绪→运行:处于就绪状态的进程被调度后,获得处理机资源(分派处理机时间片),于是进程由就绪状态转运行状态。
  • 运行→就绪:处于运行状态的进程在时间片用完后,不得不让出处理机,从而进程由运行状态转换为就绪。此外,在可剥夺的操作系统中,当有更高级的进程就绪时,调度程度将正执行的进程转换为就绪状态,让更高优先级的进程执行。
  • 运行→阻塞:当进程请求某一资源(如外设)的使用和分配或等待某一事件的发生(如I/O操作的完成)时,它就从运行状态转换为阻塞状态。进程以系统调用的形式请求操作系统提供服务,这是一种特殊、由用户态程序调用操作系统内核过程的形式。
  • 阻塞→就绪:当进程等待的时间到来时,如I/O操作结束或中断结束时,终端处理程序必须把相应的进程状态由阻塞状态转为就绪状态。

2. 线程

引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

线程就是"轻量级进程",它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程自己不拥有系统资源,只拥有在运行中必不可少的资源,但与其他线程共享进程所拥有的全部资源。

线程也有 就绪阻塞运行 三种基本状态。

引入线程后,进程的内涵发送了改变:进程只作为除CPU以外系统资源
的分配单元,线程则作为处理机分配单元。

3. 进程与线程比较

3.1 调度

在传统操作系统中,用于资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。统一进程中,线程的切换不会引起进程切换。在不同进程中的线程切换,如从一个进程内的线程切换到另一个进程的线程时,会引起进程切换。

3.2 资源

不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源(也有一点必不可少的资源),但线程可以访问其隶属进程的系统资源。

3.3 并发性

在引入线程的操作系统中,不仅进程之间可以并发执行,而且多个线程之间也可以并发执行,从而使操作系统具有更好的并发性,提高系统的吞吐量。

3.4 系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等,因此操作系统所付出的开销远大于创建或撤销线程时的开销。

类似的,在进行进程切换时,涉及当前执行进程CPU环境的保存以及新调度到进程CPU环境的设置,而线程切换只需保存和设置少量寄存器内容,开销很小。

此外,由于同一个进程内的多个线程共享进程的地址空间,因此,这些线程之间的同步与通信非常容易实现,甚至无需操作系统的干预。

3.5 地址空间和其他资源(如打开文件)

进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见。

3.6 通信

进程间通信(IPC)需要进程同步和互斥手段辅助,以保证数据的一致性,而线程间可以直接读写进程数据段(如全局变量)来进行通信。

相关文章

  • 进程与线程、线程池

    进程与线程的相关总结进程与线程的简单解释进程: 基本的资源分配资源线程: 最小调度单元 线程安全 线程安全是多线程...

  • Python多线程与多进程

    内容简述: 线程与进程的相关概念1、程序,进程,线程,多进程,多线程2、线程的生命周期3、并行与并发,同步与异步4...

  • iOS面试进阶篇(二)

    目录 UITableViewCell相关试题多线程相关试题进程与线程相关试题网络相关试题TCP与UDPTCP连接的...

  • 22.iOS底层学习之多线程原理

    本篇提纲:1、线程与进程2、多线程3、多线程相关面试题4、线程安全问题5、线程与runloop的关系 线程与进程 ...

  • Java多线程--线程及相关的Java API

    Java多线程--线程及相关的Java API 线程与进程 进程是线程的容器,程序是指令、数据的组织形式,进程是程...

  • Android学习之旅-Android中的多进程模式[艺术探索学

    进程与线程 在学习多进程之前有必要了解下进程与线程的区别以及相关的概念,线程是 CPU调度的最小单元,同时线程是一...

  • Java多线程中的10个面试要点

    1、进程与线程区别以及线程相关概念 进程就是运行中的程序,每个进程占用独自的内存空间;线程属于进程,一个进程可以有...

  • 进程与线程相关

    以下内容整理自互联网,仅用于个人学习 1. 进程 1.1 进程的定义 进程是程序运行的一次执行过程。 进程是一个程...

  • 浅谈进程和线程的区别

    进程和线程的由来 进程和线程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位 所有与进程相关的资源,都...

  • Java多线程与并发

    进程和线程的区别 进程和线程的由来 进程是资源分配的最小单位,线程是CPU调度的最小单位 所有与进程相关的资源,都...

网友评论

      本文标题:进程与线程相关

      本文链接:https://www.haomeiwen.com/subject/dcwwmttx.html