操作系统原理-进程和线程的区别

进程和线程是两个紧密相关的概念,它们最主要的区别是线程是进程的一部分,一个进程可以包含多个线程,但是线程不能包含进程。每个可执行的程序都包含两个基本部分,即进程和线程。它们都是用于执行一系列的指令,都是由程序或系统进行初始化。

进程是可执行程序的一个实例,它包含程序代码和当前程序中的所有活动。根据不同的操作系统,一个进程可能有多个不同的线程并发的执行各自的指令。程序是一系列指令的集合,而这些指令最终都由进程执行。进程包含了执行程序时所需要的环境,即运行时所需要的系统资源,每个进程都有各自的内存空间。可能很多人以为进程等同于应用程序,但是实际上,一个应用程序在运行的时候,可能会包括很多个相关的进程。为了实现进程间通信 IPC(即 Inter Process Communication),很多系统都用 pipes、sockets 等工具来实现。IPC 不仅用于同一系统中的不同进程间的通信,还可用于不同系统的进程间通信。

一个线程可以执行一系列的程序指令,不同系统的进程和线程实现是不一样的。但是对所有系统来说,线程都是进程的组成部分,一个进程中至少要有一个线程。同一进程中的多个线程可共享这个进程的资源,这样也有利于实现线程间通信。

在单处理器系统中,处理器通过在不同的时间切换不同的线程来实现多任务并发。线程的切换速度是非常快的,所以会给人一种所有线程都同时在运行的感觉。在多处理器系统中,不同的线程可以在不同的处理器上同时运行,实现真正的并行处理。

综上,线程可以看作是轻量级的进程 ,它可以在一个进程里面执行一系列的指令。计算机系统可以并发或并行的运行多个进程和线程。

 

下表详细描述了进程和线程的区别

 

 

进程

线程

定义

一个程序的正在执行的实例叫进程

线程是进程的组成部分

处理方法

它从父进程中拷贝数据,并对这些数据进行操作

它可直接访问所在进程中的数据

通信

进程间通信只能通过 IPC 实现

一个进程中的线程间可直接相互访问

运行开销

通常进程运行的开销是比较大的

线程可当作轻量级进程,运行开销非常小

创建方式

新进程只能通过拷贝父进程的方式来创建

新线程的创建非常简单,无需复制,可直接生成

控制方式

一个进程只能控制它的子进程

一个进程中的所有线程间都可相互操作

改变影响

任何父进程的改变都不会影响到它的子进程

主线程的改变会影响到其它子线程的行为,而子线程的改变通常不会相互影响

运行内存

每个进程都运行在自己的内存空间中

所有子线程都共享同一内存空间

文件描述符

大多数文件描述符都不能共享

子线程可共享文件描述符

文件系统

文件系统的上下文不可共享

子线程间共享文件系统上下文

信号

信号处理不能共享

子线程间共享信息处理

控制者

进程由操作系统控制

通常主线程由进程控制,而子线程可由程序员创建和控制

依赖

一个进程的运行不需要依赖其它进程

线程的运行依赖于进程,即线程无法独立存在

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章