2.3.1 线程的引入
自计算机出现到其逐渐发展成为人们生活的必备工具,提高资源利用率及使用效率一直是计算机领域致力研究的目标。并行性,包括硬件并行和软件并行,是计算机资源利用率及使用效率的根本指标。多道处理及进程机制的出现,使操作系统具备了并发能力,大大提高了计算机资源利用率及使用效率。但是,随着多媒体技术和网络服务技术的发展,一个应用程序可能需要执行多个相似的任务,因而对并发有了更高的要求。例如,网页服务器接收用户关于网页、图像、声音等的请求,忙碌时可能有多个(最多可达数千个)客户并发访问服务器,如果服务器采用进程来处理,为每个用户建立一个进程,响应不同的用户时,要进行进程切换,需要保存进程现场,造成响应时间很长。再如,使用Web浏览器的用户可能一边下载某个图形或程序,一边处理多媒体文件中的声音,或者还想在屏幕中输入信息,为了提高效率,现在的做法是编写可以并行计算的程序,完成各个子任务,为这个程序建立一个进程,该进程再建立几个子进程,完成整个工作。并发是解决了,但每个进程在运行中都需要切换,保存现场涉及内存等工作,造成进程并发运行的开销很大,这些开销的总和,在一定程度上降低了并发进程所带来的利益。
进程的并发能力是毋庸置疑的,关键是切换开销过大,这是由于每个进程作为申请资源的独立单位,其在运行过程中占有所有各类资源,包括虚拟地址空间以容纳进程映像,I/O资源(I/O通道、I/O控制器和I/O设备)以及运行时占用的处理机。其实前面所说的多进程并发(Web浏览器)中,某些运行单位可以很小,运行时间可以很短,不需要过多资源。因此人们想到将进程所占资源分为两类,一类为处理机,重点是关于应用程序的执行;另一类为其他资源,重点是关于拥有资源的主权。以前的操作系统把这两类资源都集中在进程这个基本实体单位上,现在考虑把这两类资源分开,引入更小的单位来负责执行程序,这样就可以有较少开销了。这个更小的单位就是线程。