一文理解进程与线程 ---操作系统
Posted waibizi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文理解进程与线程 ---操作系统相关的知识,希望对你有一定的参考价值。
进程与线程
进程:
百度百科的定义: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
个人理解: 进程是可并发程序执行的时候的一个实例。从内核的观点看,进程的目的就是分配系统资源(CPU时间,内存等)和调度的基本单位
线程:
百度百科的定义: 线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
个人理解: 线程是进程中的一个实体,是系统分配处理器时间资源的基本单元,是程序执行的最小单位。
进程VS线程:
操作系统实际运行的是线程,进程只是一个容器。
线程是操作系统进行运行调度的最小单位。
包含在进程之中,是进程中实际运行工作的单位。
一个进程可以并发多个线程,每个线程执行不同任务。
|
进程 |
线程 |
资源 |
资源分配的基本单位 |
不拥有资源 |
调度 |
独立调度的基本单位 |
独立调度的最小单位 |
系统开销 |
进程系统开销大 |
线程系统开销小 |
通信 |
进程IPC |
读写同意进程数据通信 |
注:是指在不同进程之间传播或交换信息。是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。
IPC的方式通常有管道(PIPE)(包括无名管道和命名管道)、消息队列、信号量、共享内存、套接字(Socket)、Streams、旗语等。其中 Socket和Streams支持不同主机上的两个进程IPC。
线程与进程的区别可归纳为以下4点:
1) 地址空间和其他资源:进程之间相互独立,同一进程的各线程间共享。某进程内的线程在其他进程不可见。
2) 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信
------需要进程和互斥的辅助,保证数据的一致性。
3) 调度和切换:线程上下文切换比进程上下文切换要快得多。
4) 在多线程OS中,进程不是一个可执行的实体。
详解进程:
上图是任务管理器中的进程(通过此图我们可以更容易理解进程)
进程通常是由程序,数据和进程控制块组成(PCB)组成。
- PCB:PCB是进程存在的唯一标志;用于描述和控制进程运行的通用数据结构;记录进程当前状态和控制进程运行的全部信息;PCB使得进程是能够独立运行的基本单位。
- 程序:程序部分描述了进程需要完成的功能
- 数据:数据部分包括程序执行时所需的数据及工作区。
PCB(程序控制块)内容:(主存中的进程形态)
标识符:标识符唯一标记一个进程,用于区别其他进程。
状态:标记进程的进程状态,如运行态,阻塞状态。
程序计数器:进程即将被执行的下一条指令的地址。
内存指针:程序代码,进程数据相关的指针。
上下文数据:进程执行时处理器存储的数据。
IO状态信息:被进程IO操作所占用的文件列表
记账信息:使用处理器时间,时钟数总和等。
以上几点可归纳为:进程标识符,处理机状态,进程调度信息,进程控制信息。
进程的三态模型
三种基本状态:运行,就绪和阻塞
运行:当一个进程在处理机上运行时,则称该进程处于运行状态。
阻塞:阻塞也成等待或睡眠状态,一个进程正在等待某一件事发生(例如请求I/O完成等)。
就绪:一个进程获得了除处理机外的一切资源,一旦得到处理机即可运行。
五态模型
线程详解
进程想要执行任务就需要依赖线程,一个进程至少有一个线程
多线程:想要理解多线程,先知道串行和并行
串行:所谓的串行就是按照一定的顺序去进行的,如下图所示,当任务A没有完成时,任务B没办法执行
并行:可以同时进程多个任务,如下图
那究竟什么是多线程呢
我们拿一个安全软件来举个例子哦,如果说开启这个软件,即我们创建了一个进程,
但是如果是单线程的话,那么我们这个杀毒软件在杀毒的时候就不能边清理垃圾。
但是如果是多线程的话,可以边杀毒,边清理垃圾等等,这个是严格意义上的同一时刻发生的,没有执行的先后顺序。
以上是关于一文理解进程与线程 ---操作系统的主要内容,如果未能解决你的问题,请参考以下文章