Linux下进程与线程-瞎胡写

Linux下进程与线程-瞎胡写_第1张图片
1513473592384.jpg

进程与线程

进程就是处于执行期的程序(目标码存放在某种存储介质上)。但是进程并不仅仅局限于一段可执行代码段。通常进程还要包含其他资源,例如:打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的的内存地址空间及一个或者多个执行线程(thread of execution)等。实际上,进程就是正在执行的程序代码的实时结果。

线程(thread),或者成为执行线程,是在进程中活动的对象。每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程而不是进程。在传统的Unix/Linux系统中,一个进程只包含一个线程,但现代操作系统中,包含多个线程的多线程程序司空见惯。

进程——资源分配的最小单位
线程——程序执行的最小单位

进程有独立的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是进程切换时,耗费资源较大,效率要差一些(据统计是线程的30倍左右)。但是对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程

为什么使用多线程而不是多进程

线程间方便的通信机制。对于不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其他线程所用。

并发和并行

并发又称共行,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。 比如,现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借由处理器的时分复用, 以在一个处理器上表现出同时运行的感觉。

并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行。

并发和并行的区别就是一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务。 前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生。

以上这些都是一些比较浅显的概念,深入的概念可以去查阅相关的linux/Unix相关资料。

时:2018年4月18日

你可能感兴趣的:(Linux下进程与线程-瞎胡写)