OS中关于进程与线程的了解
今天学习node时,有看到说node是单线程的,然后疑惑就来了,虽然大致知道什么叫单线程,多线程,可对于线程和进程这之间区别理解还是模模糊糊的,故翻出以前的课本重新复习一番,顺便记录下。
进程定义
进程:为了程序能并发执行,并且可以对并发执行的程序加以控制和描述,OS引入“进程”概念,进程由此而来,进程其实是进程实体,进程实体由进程控制块(PCB),程序段,相关的数据段构成。
进程的五种基本状态:创建、就绪、执行、阻塞、终止。
1 | 创建->就绪: 许可 |
线程定义
线程: 如果说,在OS中进入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么,在OS中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
在20世纪60-80年代,在多道程序OS中一直是以进程作为能拥有资源和独立调度(运行)的基本单位的,直到80年代后,人们提出了比进程更小的基本单位-线程。
OS中线程与进程的比较
由于线程具有许多传统进程的特征,所以又称之为轻型进程,以下中调度性,并发性,系统开销和拥有资源方面对线程和进程进行比较。
- 调度性、系统开销:传统OS进程是作为独立调度和分派的基本单位,每次调度时,需要切换上下问,开销较大,而引入线程的OS中,线程作为基本单位,切换时基本只需要保存和设置少量寄存器的内容,代价低于进程,系统开销低。
- 并发性:引入线程的OS中,不仅进程之间可以并发,而且在一个进程中的多个线程之间亦可并发,甚至还允许一个进程内的所有线程都能并发,这使得OS具有更好的并发性。
- 拥有资源:线程本身并不拥有系统资源,而进程可以拥有资源并作为系统中拥有资源的一个基本单位。
- 独立性:在同一进程中单不同线程之间的独立性要比不同进程之间的独立性低很多。这是为了防止进程之间彼此干扰和破坏。
我的理解:如果引入了线程的OS中,一个进程中或许有多个线程,而且都能并发。
两者在不同OS下都是作为OS独立调度和分派的基本单位。