操作系统中最核心的概念就是进程,进程是对正在运行中的程序的一个抽象,是系统进行资源分配和调度的基本单位。进程是一种抽象的概念,一般由程序、数据集合和进程控制块三部分组成,如下:
据进程通信时信息量大小的不同,可以将进程通信划分为两大类型,如下:
进程间的通信方式,有下面几种:
线程(thread)是操作系统能够进行运算调度的最小单位,其是进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,这些线程共享同一块内存,线程之间可以共享对象、资源,如果有冲突或需要协同,还可以随时沟通以解决冲突或保持同步。
线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制,下面是常用的线程通信机制,如下:
实现线程同步的方式有很多种,最常见的就是使用锁机制实现线程同步,线程同步的最终目标是实现对共享资源的安全访问。
进程是资源分配的最小单位,线程是CPU调度的最小单位,进程与线程的区别,如下:
进程 | 线程 | |
---|---|---|
概念 | 进程是对正在运行中的程序的一个抽象,是系统进行资源分配和调度的基本单位 | 线程(thread)是操作系统能够进行运算调度的最小单位,其是进程中的一个执行任务(控制单元),负责当前进程中程序的执行 |
内存分配 | 系统在运行的时候会为每个进程分配不同的内存空间 | 系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享进程资源 |
切换开销 | 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销 | 线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小 |
包含关系 | 一个进程可以包含多个线程 | 轻量级进程 |