操作系统相关知识(面试用)一、 进程与线程
作为软件专业的人,在面试中被问到操作系统的相关知识可以说是经常事了。这个分类主要是记录从当前时间一直到我不写博客为止所看到的,遇到的所有的操作系统面试相关的知识。随时更新,本意是为了记录让自己不去忘记,当然能够帮助到别人那是最好的。
那么开始进入正题。
首先,提到操作系统面试官90%都会随口问出进程与线程的关系和区别,因为这可以说是操作系统中核心部分之一。既然进程与线程的关系和区别,那么一定要从定义开始分析才是。
进程的文字定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。(摘自百度百科)。
线程的文字定义:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务(摘自百度百科)。
根据这两个的定义,我们可以很容易的推出:一个进程包含至少一个线程,多个线程可以并行运行。
既然线程能够并行运行,那么进程能够并行运行吗?
首先,我想大家应该都懂并行的含义,毕竟这个词就已经说明了他的含义了。我们知道,原则上一个CPU只能分配给一个进程,以便运行这个进程。那么要想并行运行多个进程,就需要多个CPU一起工作。因此进程的并行运行是与CPU有关的。
那么可能会有疑问:我的电脑是一个CPU的,那我为什么能够边使用浏览器边使用QQ呢?
这就要使用并发技术。这里以“时间片轮转进程调度算法”为例:所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。这样就给人一种这些进程在并行运行的错觉。
那为什么每个进程占用CPU的时间可以这么短还不影响进程的运行呢?这就跟线程有关了。我们知道线程是CPU调度和分派的基本单位,并且进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。也因此会有CPU调度线程要比调度进程更快,开销更小,也就成就了并发技术的实现和应用。
那么既然讲完了进程和线程区别的主要部分,那就先总结一下他们两个的区别吧:
- 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
- 同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。
- 进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
- 线程是轻量级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
- 同一进程中的线程共享该进程的所有资源
- 线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志
到此,进程与线程的区别就介绍结束了,如果有什么要补充的,请留下你的见解,我会虚心接受。

浙公网安备 33010602011771号