面试官:刚毕业是吧?
小白:是的。
面试官:问你一个简单的问题吧,进程和线程的区别?
小白:进程是正在运行的程序,线程是进程中的一个执行单元。
面试官:(⊙o⊙)… 回答对了一点点。
进程和线程知识是操作系统中的基本知识,考察你对操作系统的认识和程序运行原理的理解。
先说说计算机运行的基本知识。计算机是由一堆的硬件组成的,它的运行离不开计算机程序,很多的计算机程序组成了操作系统,比如大家熟知的桌面操作系统Windows,Mac OS、Unix和Linux,还有大家熟知的移动操作系统ios、Android、Windows Phone。这些操作系统驱动了计算机硬件的运行,应用程序开发者开发各个应用程序比如常用的QQ,微信什么的,这些应用程序都是运行在操作系统之上,不直接和硬件打交道,应用程序都是调用操作系统提供的开发接口来与硬件打交道。由于操作系统不同,提供的接口也不同,所以就出现了各种版本的应用程序,比如QQ有Windows版本,iso版本和Android版本,这些不同版本的QQ虽然大体功能相同,但是开发实现起来是不一样的,除了调用系统接口不一样外还有开发语言也是不一样的。但是不管什么操作系统,也不管你用哪种语言实现,最后的QQ程序都是作为一个应用程序运行在操作系统之上。
下面说说进程,进程是为了很好的描述运行在计算机上的程序而抽象出来的概念,可以看做是计算机进行资源分配的最小单元,一个进程的运行需要占用这计算机硬件的CPU,内存等资源,一般来说一个应用程序可以看做是一个进程,应用程序启动时会新建一个进程,向操作系统申请硬件资源,应用程序关闭,这个进程也就结束,释放掉对应的硬件资源。
线程是进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位。进程相当于一个车间,线程就相当于一个车间工人,很多个车间工人共同完成这个车间的工作。