本章内容非常重要,王道考研书上总共分了四个部分,我也是分了四篇文章来进行总结和归纳。我参加过很多个岗位的面试,被问及最多的大概就行进程与线程了,前车之鉴了属于是。
1 内容概览
同样,这部分内容还是以王道考研的内容作为蓝本的(感谢王道考研^ - ^),先来看一下思维导图。
原文件(第二章所有)在这里。不仅有思维导图的原文件,还有PDF格式的思维导图。
源文件链接:第二章 进程管理
提取码:9o10
2 进程和线程的区别与联系
网上最常见的说法就是:
进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
也就是说,一个进程至少有一个线程。比方说,我们开发的一个软件在运行时候就会占用一个进程,但是有可能会同时包含多个线程。一个线程负责界面显示,一个线程负责网络通信。所以上,线程的引入,增加了程序运行的“并发度”。
资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
3 多线程模型
多线程模型分为三种,分别是多对一模型,一对一模型,多对多模型。
3.1多对一模型
优点:线程是在用户空间进行的,不需要切换到核心态,效率较高。
缺点:从上图可以看出,这种模型是多个用户级线程对应一个内核级线程,因此这几个线程不能并行地运行在处理机上。一个线程阻塞,整个任务都无法进行。
3.2一对一模型
优点:一个用户级线程对应一个内核级线程,可以看作是彼此独立处理任务的,因此并发能力比较强。
缺点:因为用到的内核级线程和用户级线程数量相等,因此创建线程的开销比较大。
3.3多对多模型
多线程模型博采众长,是前两者模型的综合,这样既没有较高风险的进程阻塞,又避免了较多的内核级线程开销。达到了较好的效果。
注:内核级线程才是处理机分配的单位。也就是说,即使有空闲的内核,也不能随便分配线程。
----------------------------------------------------------------------------------END----------------------------------------------------------------------------------