进程、线程以及进程与线程的区别
进程
1.什么是进程?
进程是进程实体的运行过程,是系统进行资源分配和资源调度的一个独立单位。
进程实体(又叫进程映像)由进程控制块(PCB),程序段,数据段三部分构成。
PCB
进程控制块(Processing Control Block),是操作系统核心中一种数据结构,主要表示进程状态,其作用是使一个程序成为一个能够独立运行的基本单位,并且可以并发执行。或者说,OS是根据PCB来对并发执行的进程进行控制和管理。PCB通常是占用系统内存中一块连续的内存空间,存放着操作系统用于描述进程情况及控制进程运行的全部信息,如进程标识符PID,上下文数据,程序计数器,内存指针(指向虚拟地址空间),I/O信息(进程打开的文件描述符)等。
程序段
进程中能被进程调度程序在CPU上执行的程序代码段。
数据段
一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据。
2.为什么要有进程?
操作系统引入进程的主要目的是为了更好地管理系统资源,提高系统的并发性和效率。通过进程,操作系统可以将CPU时间、内存等资源分配给不同的程序,从而实现多个程序同时运行的效果。此外,进程还可以实现程序之间的通信和同步,使得程序之间可以相互协作,完成更加复杂的任务。
线程
1.什么是线程?
线程是计算机中的基本执行单位。每个线程包含一个独立的执行序列、执行状态和相关的系统资源。多个线程共享同一个进程的地址空间和其他的资源,因此它们之间的通信和协调比较容易。在多线程程序中,多个线程可以同时执行不同的任务,在单处理器系统中,通过在不同的时刻切换不同的线程执行,可以实现伪并发的效果。线程包含线程独立栈,寄存器,以及程序计数器。
2.为什么要有线程?
1.更加易于调度
2.提高并发性,因为可以创建多个线程去执行同一个进程的不同部分
3.开销少,因为创建进程的话要创建PCB,存放上下文信息,文件信息等等,开销比较大,二创建线程的话开销就会比较少
进程与线程的区别
1. 进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位。
2.进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间;线程没有独立的地址空间(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
3.线程之间通信更方便,同一个进程下,线程共享全局变量,静态变量等数据;进程之间的通信需要以通信的方式(IPC)进行(但多线程程序处理好同步与互斥是个难点)。
4. 每个进程都有独立的代码和数据空间(程序上下文),进程之间的切换会有较大的开销;而所属同一个进程的线程共享代码和数据空间,线程之间切换的开销小。线程为什么比进程切换开销小
总结:
多进程的优势在于cpu核心数,及资源数量,适用于cpu密集型工作环境
多线程的优势在于切换代价小,适用于IO密集型工作环境涉及频繁IO阻塞导致的线程切换