进程、线程 总结

前面的话

进程、线程问题很多面试题都会考,这里总结一下。

进程概述

引入进程的目的: 为了让多个程序能并发执行,实现操作系统的并发性与共享性。

进程定义

从不同角度看,进程有许多定义,比较典型的有:

  • 进程是程序及其数据在计算机上的一次执行活动
  • 进程是程序的一次执行过程
  • 进程是系统资源分配和调度的独立单位

进程实体

进程实体是由: 程序、数据、PCB(进程控制块)组成。
所谓创建进程,实质是创建进程实体中的PCB,而撤销进程,实质是撤销进程PCB。

注意:进程实体是静态的,进程是动态的。PCB是进程存在的唯一标志

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

进程的特征

  • 动态性: 进程是程序的一次执行过程,有生命周期。动态性是进程最基本的特征。
  • 结构性: 有程序段、数据段、进程控制块(PCB)三部分组成。
  • 并发性:多个进程可同时存于内存中,能在一段时间内同时进行。
  • 独立性:进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。
  • 异步性:进程按各自独立的、不可预知的速度向前推进

进程的状态与转换

进程在生命周期内,由于系统中各进程之间的相互制约关系及系统的运行环境的变化,使得进程的状态也在不断发生变化。一个进程会经历若干种不同的状态。

  • 就绪态:存在于调度队列中的所有进程,它们一旦得到CPU,就可以立即运行。
  • 运行态: 进程正在CPU上运行
  • 等待态(阻塞态):进程正在等待某一事件而暂停运行,即使给它CPU也不能运行。

注意: 就绪态是指进程只缺少CPU,只要获得CPU就可以立即执行;而等待态是指进程还需要其他资源(除了CPU)或要等待某一事件。
进程的状态变迁图:
在这里插入图片描述

进程控制

进程控制的主要功能:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程转换等功能。

原语: 把进程控制用的程序段称为原语。特点执行期间不允许中断,它是一个不可分割的基本单位。

进程控制块PCB

进程实体由三部分组成:程序段、数据、进程控制块(PCB)。

当进程创建时,操作系统就新建一个PCB结构,系统根据PCB来了解进程的状态信息,以便对进程控制和管理。

PCB的包含的内容:

1)进程描述信息

  • 进程标识符:标志个各进程,每个进程都有一个并且是唯一的标识号
  • 用户标识符:进程归属的用户,用户标识符主要为共享和保护服务

2)进程控制和管理信息

  • 进程当前状态: 描述进程的状态信息,作为CPU调度的依据
  • 进程优先级:描述进程抢占CPU的优先级,优先级高的进程可以优先获得CPU

3)资源分配清单

  • 用于说明有关内存地址空间或虚拟机地址空间的状况

4)CPU相关信息

  • 主要指CPU中各寄存器值,当进程被切换时,CPU状态信息都必须保存在相应的PCB中,以便在该进程重新执行时,能再从断点继续执行

进程通信

进程通信是指进程之间的信息交换。PV操作是低级通信方式,高级通信方式是指用户可直接利用OS提供的一组通信命令,以较高的效率传输大量数据的通信方式。高级通信方法主要有三类:

  • 共享存储 : 在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行读、写操作实现进程之间的信息交换。
    注意: 进程空间一般是独立的,想要让两个用户进程共享空间必须通过特殊的系统调用实现,而进程内的线程是自然共享进程空间的。

  • 消息传递:若进程之间不存在可直接访问的共享空间,则必须利用操作系统提供的消息传递方法进行进程通信。有两种通信方式:

    • 直接通信:发送进程直接把消息发送给接受者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。
    • 间接通信:发送进程将消息发送到某种中间实体中,接收进程从实体中取得消息。(计算机网络经常使用,相应的通信系统称为电子邮件系统)
    • 直接通信与间接通信方式的主要区别:前者需要两个进程都存在,后者不需要。
  • 管道通信: 是消息传递的一种特殊方式。所谓“管道”,指的用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。

线程概述

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

线程最直接的理解就是,线程是进程中的一个实体,是一个基本的CPU执行单元,是系统独立调度的基本单位,线程自己不拥有资源。一个线程可与同属于一个进程的其他线程共享进程所拥有的的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。由于线程之间的相互制约,使得线程在运行中也有就绪、运行、阻塞三种基本状态。

注意: 引入进程后,进程的内涵发生了变化,进程只作为除CPU以外的系统资源的分配单元,线程则是CPU的基本调度单元。

线程与进程的区别

  • 调度。 在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。引入线程的操作系统中,线程是独立调度的基本单元,进程是拥有资源的基本单元。同一个进程中,线程的切换不会引起进程的切换;不在同一个进程的线程之间的切换,会引起进程的切换
  • 拥有资源。进程是拥有资源的基本单元,而线程不拥有系统资源。
  • 并发性。引入线程的操作系统,不仅进程之间可以并发执行,而且多个线程之间也可以并发执行
  • 系统开销。创建或撤销进程的开销大于线程。
  • 通信方面。进程间的通信需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可直接读/写进程数据段来进行通信。

线程的实现

线程实现分为:用户级线程、内核级线程。

  • 用户级线程:有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。
  • 内核级线程:线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码。

多线程模型

有些系统同时支持用户线程和内核线程由此产生了不同的多线程模型,即实现用户级线程和内核级线程的连接方式。

  • 多对一: 多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。

      优点:线程管理是在用户空间进行的,因而效率比较高
      缺点:当一个线程在使用内核服务时被阻塞,那么整个进程都会被阻塞;
      	   多个线程不能并行地运行在CPU上
    
  • 一对一: 每个用户级线程映射到一个内核级线程。

      优点:当一个线程被阻塞后,允许另一个线程继续执行,所以并发能力强
      缺点:每创建一个用户级线程都需要创建一个内核级线程与其对应,
      		这样创建线程的开销比较大,会影响到应用程序性能。
    
  • 多对多: 将n个用户级线程映射到m个内核级线程上,要求m<=n

      特点:克服了多对一模型的并发度不高的缺点,又克服了一对一模型的一个用
      户进程占用太多内核级线程,开销太大的缺点。又拥有多对一和一对一模型的
      各自优点。
    
发布了229 篇原创文章 · 获赞 169 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_41257129/article/details/104032602