考研笔记-计算机之操作系统:处理器管理(线程基础)
- 2026-09-24 14:21:47
——如阅读体验不佳,可转为横屏阅读;如微信无法横屏,可尝试文末方法。
表-线程 | |||
线程的引入原因 | 进程作为独立运行的基本单位所需具有的两个基本属性:①进程是可拥有资源的基本单位;②进程是可独立调度和分派的基本单位。 由于进程是资源的拥有者,因而在创建、撤销和切换中占用较大的时空开销,为更好地并发执行同时又减少并发执行时的时空开销,可将进程的两个属性分开,由操作系统分开处理,即对于作为调度和分派的基本单位,不同时作为拥有资源的单位,以做到“轻装上阵”;对于拥有资源的基本单位,不对之进行频繁的切换。基于以上思想引入线程作为独立调度和分派的基本单位,即独立运行的基本单位;进程仍作为拥有资源的基本单位。 | ||
线程的基本运行状态 | 基本状态 | 线程的基本运行状态包括:执行态、就绪态和阻塞态,各状态的定义同进程的相应状态。 | |
线程创建 | 多线程OS中,应用程序启动时,仅有一个线程,称为初始化线程,该初始化线程可利用系统调用创建新线程。 | ||
线程终止 | 终止方式 | 终止线程有两种方式:①线程主动退出;②被其他线程强行终止。 | |
终止处理 | 线程被终止后并不立即释放它所占有的资源,仅当进程中的其他线程执行了分离函数后,被终止的线程才与资源分离,此时的资源才能被其他线程利用。已被终止但尚未释放资源的线程,仍可被需要它的线程所调用,以使被终止线程重新恢复运行。为此调用者线程需调用一条称为“等待线程终止”的连接命令,来与该线程进行连接。在一个调用者线程调用“等待线程终止”的连接命令试图与指定线程相连接时,若指定线程尚未被终止,则调用者线程将阻塞,直至指定线程被终止后,调用者线程才能实现与它的连接并继续执行;若指定线程已被终止,则调用者线程不会被阻塞而是继续执行。 | ||
线程的同步机制 | 互斥锁 | 使用场合 | 用于实现线程间对资源的互斥访问。由于互斥锁的时间和空间开销均较低,因而适合于高频度使用的关键共享数据和程序段。 |
状态 | 开锁状态和关锁状态 | ||
操作 | 关锁lock | 线程对临界资源进行访问前需先对为该临界资源设置的互斥锁执行关锁命令,若互斥锁已处于关锁状态,则该线程将被阻塞;若互斥锁已处于开锁状态,则该线程可对临界资源进行访问。 | |
开锁unlock | 对临界资源完成访问的线程需对为该临界资源设置的互斥锁执行开锁命令,同时将阻塞在该互斥锁上的一个线程唤醒。 | ||
尝试关锁trylock | 为减少线程被阻塞的机会,线程在对临界资源进行访问前可执行尝试关锁命令,若临界资源的互斥锁处于开锁状态,则尝试关锁命令返回一个指示成功的状态码;临界资源的互斥锁处于关锁状态,尝试关锁命令不会阻塞该线程,而是仅返回一个指示操作失败的状态码。 | ||
条件变量 | 使用场合 | 解决只用互斥锁可能引起的死锁。每个条件变量通常与一个互斥锁一起使用,即在创建互斥锁时便联系着一个条件变量。单纯的互斥锁用于短期锁定,用来保证对临界区的互斥进入;条件变量用于线程的长期等待,直至所等待的资源成为可用资源。 | |
操作 | 资源申请 | 线程首先对互斥锁执行关锁操作,如果成功进入临界区,则检查临界资源的状态,若临界资源正处于忙碌状态,则该线程转为阻塞状态,然后对互斥锁执行开锁操作;若临界资源正处于空闲状态,则该线程可以使用该资源,同时将该资源置为忙碌状态,然后对互斥锁执行开锁操作。 | |
资源释放 | 线程首先对互斥锁执行关锁操作,如果成功进入临界区,则将临界资源置为空闲状态,然后对互斥锁执行开锁操作,最后将该条件变量上等待的一个线程唤醒。 | ||
信号量 | 私用信号量 | 使用场合 | 用于同一进程中各线程间的同步。 |
存储空间 | 其数据结构存放于应用程序的地址空间中。 | ||
拥有者 | 私用信号量属于特定的进程所有,OS不知道私用信号量的存在。 | ||
公用信号量 | 使用场合 | 用于不同进程间或同一进程中不同线程间的同步。 | |
存储空间 | 其数据结构存放在受保护的系统存储区。 | ||
拥有者 | 由OS为它分配空间并进行管理,供所有进程使用。 |
表-进程和线程的比较 | ||
进程 | 线程 | |
定义 | 传统进程称为重型进程。 | 称为轻型进程,又称进程元。 |
调度 | 传统OS系统中,进程为调度和分派的基本单位。引入线程的OS中,进程不再是调度和分派的基本单位,也即不再作为一个可执行的实体,此时对进程所施加的与进程状态有关的操作,将对其所有的线程同时有效。 | 线程为独立调度和分派的基本单位,即独立运行的基本单位。属于同一进程的线程之间的切换不会引起进程的切换,属于不同进程的线程之间的切换将会引起进程的切换。 |
并发性 | 引入线程的OS中,进程之间可以并发执行。 | 属于同一进程或不同进程的线程之间可以并发执行。 |
拥有资源 | 在传统OS和引入线程的OS中,进程均是拥有资源的基本单位。 | 线程自己不拥有资源(也有一点必不可少的、能保证其独立运行的资源),但可以访问其隶属进程的资源,即一个进程的代码段、数据段及所拥有的系统资源可以供该进程中的所有线程所共享。同一进程中的所有线程具有相同的地址空间,即进程的地址空间。 |
系统开销 | 在传统OS和引入线程的OS中,进程的创建、撤销、切换、同步和通信的系统开销均较大。 | 线程的创建和撤销的系统开销较小。由于属于同一进程的各线程共享该进程拥有的资源(包括地址空间),故属于同一进程的线程之间的切换、同步和通信的系统开销较小。 |
联系 | 在引入线程的OS中,每个进程拥有至少一个线程。 | |
说明: 1) 进程控制是对一个进程的管理; 进程切换是将处理机从一个进程转给另一个进程; 进程调度是对多个进程在一个CPU上的管理; 进程分派是对多个进程在多个CPU上的管理。 2) 进程为拥有资源的基本单位;线程为独立调度和分派的基本单位,即独立运行的基本单位。 |
文章合集:
点击下方公众号主页,关注以阅读更多文章
——可选择“【右上角···】→【在浏览器中打开】”进行横屏阅读。