本章着重从定义和应用的角度分析了线程。 线程是有时也被称为轻量级进程(LWP),是一个基本的CPU 执行单元,它包含了一个线程ID、一个程序计数器、一个寄存器组和一个堆栈。它与属于同一个进程的其它的线程共享代码段、数据段,以及其它的操作系统资源(比如:打开的文件和信号)。一个传统的(或者说重量级)进程有一个单独的控制执行序列。一个多线程程序在同样的地址空间内包含了多个不同的控制流。多线程技术的优点包括:提高了对用户的响应速度、进程内的资源共享、经济实惠和能够充分发挥多处理机体系结构的优势。线程的实现包括三种:多对一、一对一、多对多。随后文章继续介绍了与线程相关的问题:fork 和exec 系统调用、线程的取消、信号处理、线程池、POSIX 标准的Pthread。fork分为两种,复制整个进程的每一个线程和复制特定线程。线程的取消也分为异步取消(立即取消)和延迟取消。线程池的引入极大的提高了kernel线程和user线程的处理效率,当然线程池的策略也在很大程度上影响结果。最后文章对不同系统的线程应用和支持状况进行了对比描述,saloris2、windows2000、linux、Java对线程的使用和支持上存在很大不同。saloris2在内核和用户级、SMP 和实时调度中支持线程。windows2000采用一对一的映射方式,而且还提供thread-local storage。Linux 内核在2.2 版中引入了线程,除了克隆的进程之外,Linux 不支持多线程、独立数据结构(separate data structure)或内核程序(kernel routine)。Java 是少数在语言级提供了线程的创建和管理的语言之一。然而,因为Java 虚拟机(JVM)管理线程,不是由用户级库或内核管理,所以就难以把Java 线程归类为用户级或内核级。
操作系统概念(第六版) 读书笔记5
最新推荐文章于 2018-12-23 23:43:53 发布