1.目的
1)线程概念的历史
2)引入线程作用
2.历史
20世纪60年代提出进程的概念,在操作系统中一直都是以进程作为独立运行的单位
20世纪80年代中期,在操作系统领域,提出了比进程更小的能独立运行的基本单位---线程
3.引入线程作用
引入进程的目的
1)为了使多个程序并发执行
2)改善资源利用率
3)提高系统吞吐量
从内存管理的角度看
一个系统多个进程,他们都会使用内存,为了确保内存互不影响,内存大小位置都是固定的;
进程间互相不影响,一个进程崩溃了,不影响其他进程
举个栗子:
你可以在window系统上边一边听音乐,一边玩QQ,
听音乐开个一个进程,玩QQ开个一个进程
引入线程的目的
1)提高系统的并发性
举个栗子
如果我们把运行在操作系统的程序,比如QQ看作一个进程,那么程序执行不可能一个分支,
你可能用来传输文字A,发送图片B
具体的执行就是
1) QQ获取CPU上下文
2)开始执行QQ中的传输文件A
3)执行QQ中的发送图片B
4)CPU保存QQ的上下文
执行A B时共享了QQ的资源,CPU没有进行上下文切换 A B就是线程
4.详解
我们首先从进程谈起,进程有两个基本属性
1)进程是一个可以拥有资源的独立单位
2)进程同时也是一个可以独立调度和分配的基本单位
所谓的资源就是计算机里的中央处理器,内存,文件,网络等等。
所以进程可以并发执行
为了使线程可以并发执行,系统还必须进行如下操作
1)创建进程
系统在创建进程时,必须分配必须的,除处理机以外的所有资源;
内存空间;IO设备,进程控制块PCB
2)撤销进程
系统在撤销进程时,必须对这些资源进行回收,并撤销PCB块
3)进程切换
在对线程进行切换时,需要保存当前进程的CPU环境和需要切换的进程的CPU上下文
5.思考
思考?
是否可以把进程的两个属性分开,
作为系统独立调度和分配和单元,而不独立分配资源,产生了线程
在引入线程的系统中,线程是进程的一个实体,是被系统独立调度和分配的基本单位,
线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)
但它可以和同属同一个进程的其他线程共享进程的全部资源
一个线程可以创建和撤销另一个线程
同一进程的多个线程可以并发执行
由于线程之间相互制约,线程运行时会出现间断
线程一般拥有就绪 阻塞 执行三种基本状态
有些系统可能线程还有终止状态