共计 1385 个字符,预计需要花费 4 分钟才能阅读完成。
前言
过程与线程的区别是每年考试的外围,也是面试官最爱问的问题。弄清楚二者的区别,首先要弄清楚过程与线程是什么。
过程
关上咱们的工作管理器,咱们能够看到以后在电脑运行的所有过程
比如说我关上了三个 qq,那么就启动了三个 qq 过程,然而 qq 程序在磁盘里就一份可执行文件。这就引出了程序与过程的区别:
程序是动态的,就是寄存在磁盘里的可执行文件,就是一系列的指令汇合。
过程是动静的,是程序的一次执行过程。同一个程序屡次执行会对应多个过程。
为了辨别这三个过程,每个过程都会被操作系统调配一个惟一的不反复的过程号————PID。
一个过程里的程序可能执行,操作系统就须要给他分配资源。不是说我把可执行文件拿过去就能够运行,运行必定还须要分配内存来缓存各种信息,如聊天记录等,同时,有的程序还须要应用 I / O 设施,如 wps 须要应用打印机时,须要给他调配打印机。于是,操作系统须要记录给过程调配了哪些资源。
同时,操作系统也须要记录过程的运行状况,如 CPU 应用工夫、磁盘应用状况、网络流量应用状况等。
这些信息被保留在一个专门的数据结构 PCB(Process Control Block)中,即过程管制块。
PCB 是过程存在的惟一标记,当过程被创立时,操作系统为其创立 PCB,当过程完结时,会回收其 PCB。
当程序被调用时,除了创立 PCB 保留过程的各种信息外,程序文件也会被放入内存里,同时,程序运行中产生的各种数据也会放入内存。所以说,一个过程实体(过程映像)由 PCB、程序段、数据段组成。
说了这么多过程的常识,为什么要有过程呢?
当产生多道操作系统后,容许了多个程序并发执行。然而多个程序并发执行又会有一些问题,多个程序都去申请一个资源,就会导致资源不晓得听谁的,同时也会导致资源不够用的问题。多个程序并发执行也使得程序之间失去了封闭性,导致 A 程序更改 B 程序操作的问题。针对这些问题,提出了过程的概念。当创立过程时,也对应的给他调配所须要的资源,使得应用资源之间不再有抵触。同时在过程之间不得相互影响,解决了封闭性问题。
所以说,过程是零碎进行资源分配和调度的一个独立单位。一个过程能够独立运行。
线程
引入过程后,更好的使得多道程序并发执行,进步了资源利用率。然而因为过程间的资源互相独立,所以过程间切换是资源的切换,开销相当大。同时也使得一个程序能够并发执行各种性能,如 qq 领有视频聊天和文字聊天两个性能,如果仅仅应用过程,过程成了 CPU 调度的根本单位,CPU 只会为过程调配一个外围,无奈并发执行两个性能。为了解决这些问题,引入了线程的概念。
线程最间接的了解就是“轻量级过程”。线程代替过程成为了 CPU 调度的一个最小单位。而过程仍然是资源分配的最小单位。一个过程领有多个线程,线程不领有系统资源,而是拜访其附属过程的系统资源,同一过程的线程之间资源共享。
不仅过程之间能够并发执行,多个线程之间也能够并发执行,从而使零碎具备了更好的并发性。
4 核 8 线程
4 核代表 4 个外围,也就是能够同时执行 4 个线程。
那么 8 线程是什么呢,原来 CPU 应用了一种超线程技术,使得每一个外围在执行一个线程残余的资源,拿去执行另外一个线程,也就是说,其实 CPU 领有 4 个外围,然而能够并发执行 8 个线程。
超线程技术在桌面端很有用,然而到了服务器端,并不被应用,也就是说,他也是有弊病的。
总结
过程是资源分配的根本单位,线程是 CPU 调度的根本单位。