OS-线程

为什么要线程:

线程管理:thread

OS-线程_第1张图片

read()阻塞了整个进程

多进程实现:

OS-线程_第2张图片

OS-线程_第3张图片

OS-线程_第4张图片

 

 

线程:进程当中的一条执行流程

重新看待进程:

资源平台(管理资源)+线程=进程

资源平台:地址空间(代码段、数据段)、打开的文件等

OS-线程_第5张图片

有独立的部分,也有共享的部分

线程=进程-共享资源

OS-线程_第6张图片

安全可靠性没有保障

应用场景:

强调性能-线程

浏览器基本都采用进程的机制来实现(CHROME),某一个网页崩溃后,不会影响其他网页

OS-线程_第7张图片

OS-线程_第8张图片

独立的寄存器(程序计数器等)和堆栈

共享的代码段、数据及文件网络等等

 

进程是资源分配的单位、线程是cpu调度的单位

OS-线程_第9张图片

OS-线程_第10张图片

创建时间短:内存管理、文件管理

终止时间短:不需要考虑资源释放的问题

同一个进程的线程切换时,不需要切换页表,这就是高效的原因(cache信息、TLB信息)

 

线程的实现:

OS-线程_第11张图片

用户线程:由用户线程库来管理,内核线程看不见用户线程信息

内核线程由内核来管理

OS-线程_第12张图片

OS-线程_第13张图片

OS-线程_第14张图片

看不见,没特权

OS-线程_第15张图片

OS-线程_第16张图片

操作系统可以看得见

OS-线程_第17张图片

进程做资源管理

每次线程切换都需要进行由用户态->内核态的切换(?????)

https://www.jianshu.com/p/38ea929e1668(用户态与内核态)

轻量级进程:

内核支持的用户线程。一个进程可以有一个或多个轻量级进程,每个轻量级进程由一个单独的内核线程来支持(solaris/linux)

 

 

 

你可能感兴趣的:(OS-线程)