进程和线程的差别与联系

在很多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 仅仅是维护应用程序所需的各种资源。而线程则是真正的执行实体。


为了让进程完毕一定的工作,进程必须至少包括一个线程。



进程。直观点说,保存在硬盘上的程序执行以后,会在内存空间里形成一个独立的内存体。这个内存体有自己的地址空间,有自己的堆。上级挂靠单位是操作系统。

操作系统会以进程为单位,分配系统资源。所以我们也说。进程是资源分配的最小单位。很多其它详情,请看《进程的介绍》


线程存在与进程其中,是操作系统调度执行的最小单位。说通俗点,线程就是干活的。


进程是具有一定独立功能的程序关于某个数据集合上的一次执行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体。是 CPU 调度和分派的基本单位,它是比进程更小的能独立执行的基本单位。

线程自己基本上不拥有系统资源。仅仅拥有一点在执行中不可缺少的资源(如程序计数器。一组寄存器),可是它可与同属一个进程的其它的线程共享进程所拥有的所有资源。



假设说进程是一个资源管家。负责从主人那里要资源的话,那么线程就是干活的苦力。一个管家必须完毕一项工作,就须要最少一个苦力,也就是说,一个进程最少包括一个线程,也能够包括多个线程。苦力要干活,就须要依托于管家,所以说一个线程。必须属于某一个进程。进程有自己的地址空间,线程使用进程的地址空间,也就是说。进程里的资源,线程都是有权訪问的,比方说堆啊,栈啊。静态存储区什么的。




线程就是个无产阶级,但无产阶级干活,总得有自己的劳动工具吧,这个劳动工具就是栈。线程有自己的栈。这个栈仍然是使用进程的地址空间,仅仅是这块空间被线程标记为了栈。

每一个线程都会有自己私有的栈。这个栈是不能够被其它线程所訪问的。



进程所维护的是程序所包括的资源(静态资源), 如:地址空间。打开的文件句柄集,文件系统状态,信号处理handler。等;


线程所维护的执行相关的资源(动态资源),如:执行栈。调度相关的控制信息,待处理的信号集。等;


线程和进程在使用上各有优缺点:线程执行开销小。但不利于资源的管理和保护;而进程正相反。



【推广】 免费学中医,健康全家人
原文地址:https://www.cnblogs.com/llguanli/p/8492659.html