一、线程的定义
传统的进程有两个基本属性:
- 可拥有资源的独立单位;
- 可独立调度和分配的基本单位。
引入线程的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中设置的进程数目不宜过多,进程切换的频率不宜太高,这就限制了并发程度的提高。
引入线程后,将传统进程的两个基本属性分开:
- 线程作为调度和分配的基本单位,
- 进程作为独立分配资源的单位。
用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
例如,在文件服务进程中可设置多个服务线程,当一个线程受阻时,第二个线程可以继续运行,当第二个线程受阻时,第三个线程可以继续运行......从而显著地提高了文件系统的服务质量及系统的吞吐量。
这样,对于拥有资源的基本单位,不用频繁地切换,进一步提高了系统中各程序的并发程度。
需要说明的是,线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),线程可与同属一个进程的其他线程共享进程所拥有的全部资源。
线程和线程之间是不可见的。
二、真题
真题1
真题2:
真题3:
三、程序局部性原理
程序在执行时将呈现出局部性规律,即在一段时间内,程序的执行仅局限于某个部分。相应地,它所访问的存储空间也局限于某个区域内。
程序的局限性表现在:时间局限性、空间局限性两个方面。
3-1、时间局限性
- 时间局限性,是指如果程序中的某条指令一旦执行,则不久的将来该指令可能再次被执行;
- 如果某个存储单元被访问,则不久以后该存储单元可能再次被访问。
产生时间局限性的典型原因是:在程序中存在着大量的循环操作。
3-2、空间局限性
空间局限性是指一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问。
即:程序在一段时间内所访问的地址可能集中在一定的范围内。
其典型原因为:程序是顺序执行的。
3-3、淘汰页号的规则
1、状态位,淘汰在内存中的页号!!!
2、状态为相同,淘汰访问位未被访问过的页号;(局部性原理,可能未来也不会被访问)
3、状态位相同,访问位相同,淘汰未被修改过的页号。
【备注】:
未修改过的内存中的内容,和辅存中的内容一致;
修改过的内存中的内容,和辅存中的内容不一致,要学回给辅存。
示例:
3-3-1、真题
真题1:
真题2: