操作系统 在用户空间实现线程
在本文章中,您将学习在用户空间实现线程及其优缺点。
操作系统是一组与用户共享计算机系统的硬件和软件资源的程序集合。它区分用户定义的代码和操作系统代码,以确保不恰当的应用程序不会对其他程序或操作系统造成伤害。概念是只有在操作系统上运行的任务才能得到硬件支持,这被称为内核模式。相反,在用户程序上执行的任务称为用户模式。
- 内核模式是一种特权状态,进程对所有资源,包括硬件、内核数据和操作系统内核代码具有完全控制权。
- 主要区别在于内核模式下内核可以直接访问硬件,而用户模式下不可以。然而,当用户程序要求操作系统提供服务时,系统必须从用户模式切换到内核模式。
线程是进程的一种执行单元类型,它分配进程的资源,并由调度器进行调度。有两种方法可以实现线程:用户空间和内核空间。
用户空间中可以实现线程,而无需内核的帮助。当我们在用户空间实现线程时,会发生以下情况:
- 相应的代码和数据结构在用户空间中存储。
- 线程由运行时系统完全处理,不需要了解内核。
- 当调用API时,会进行用户空间本地系统调用,而不是系统调用。
用户级线程模型
用户空间中的用户级线程可以使用以下四种方法之一来实现:-
- 一对一
- 多对一
- 多对多
- 二级
在所有模型中,用户级线程都映射到内核级线程。内核级线程相当于非线程系统中的一个进程。内核线程是内核调度在CPU上运行的执行单元。而不是内核线程,常常使用术语虚拟处理器。
一对一
在这种一对一类型的模型中:
- 在用户空间中,每个用户级线程在不同的内核级线程上运行。
- 内核应该通过系统调用来创建一个新的内核线程。
- 每个用户级线程与不同的内核级线程对应。
多对一
在这种多对一类型的模型中:
- 用户级线程只能执行一个用户级线程,因为该进程只与一个内核级线程相关联。
- 所有用户级线程可以在同一个内核线程上运行。
- 每个用户线程都要进行系统调用以创建一个新的内核线程。
- 在内核级别,用户空间中的多个线程映射到一个单独的线程。
多对多
在这种多对多类型的模型中:
- 该过程被分配了m个核级线程来运行n个用户级线程。
两级
在这种类型的模型中:
- 这是一种一对一和多对多模型的混合版本。
- 一个单独的内核线程只能连接到有限数量的用户线程。
在用户空间实现线程的优点和缺点
在这里,您将了解线程在用户空间中的优点和缺点。线程在用户空间中的一些优点和缺点如下:
优点
- 它可以在不支持内核级线程的系统上执行。
- 整个进程快速高效,因为不需要系统调用。
- 组织简单,因为线程在不干扰内核的情况下生成、切换和控制。
缺点
- 性能可能不一致。
- 调度较差,如将进程分配给空闲线程或由于线程持有锁而阻塞进程。