在引入进程之前,系统中各个程序只能串行执行;引入进程之后,系统中各个进程之间可以并发执行;
比如QQ程序,QQ可以用来视频、文字聊天、传送文件等;在操作系统中,进程是程序的一次执行,但这些功能显然不可能是由一个程序顺序处理就能实现的;如果是顺序处理,则视频与文字聊天是不可能同时发生的;
有的进程可能需要“同时”做很多事情,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”来增加并发度;
传统的进程是程序执行流的最小单位,也就是说CPU处理的是一个个进程;在进程中引入了线程后,CPU的调度服务对象不再是进程,而是进程中的线程,每一个进程中可能包含多个线程,CPU会轮流地为线程进行服务;
jvm的线程模型。一个进程可以细分为多个线程,通过线程的并发执行。QQ就能同时进行文字发送和视频聊天;
引入了线程机制后,线程成为了程序执行流的最小单位;
可以把线程理解为“轻量级的进程”,线程是一个基本的CPU执行单元,也是程序执行流的最小单位;
引入线程之后,不仅进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发性,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件等);
引入线程之后,进程不再是程序执行流的最小单元,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的);
资源分配、调度:
并发性:
线程池实战。系统开销:
类比: 去图书馆看书
线程的实现方式有两种:用户级线程和内核级线程;
用户级线程是由应用程序通过线程库实现;
所有的线程管理工作都由应用程序负责(包括线程切换);
用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预;
在用户看来,是有多个线程,但是在操作系统内核看来,并意识不到线程的存在。(用户级线程对用户不透明,对操作系统透明);
线程就是程序、可以这样理解,“用户级线程”就是“从用户视角看能看到的线程”
;
内核级线程,又称“内核支持的线程”;
内核级线程的管理工作由操作系统内核完成。线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成;
可以这样理解,“内核级线程”就是“从操作系统内核视角能看到的线程”;
有的操作系统支持用户级线程,有的操作系统支持内核级线程;在同时支持用户级线程的系统中,可采用二者结合的方式:将n个用户线程映射到m个内核线程上(n>=m);
重点重点重点:
操作系统只看得见内核级线程,因此只有内核级线程才是处理机分配的单位;
线程 java、在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题;
多线程模型分为三种:
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态