如何在内核空间实现线程?
内核是操作系统的一部分。它借助内置于内核的设备直接与计算机硬件交互。
内核的功能
内核的功能如下:
内存管理
控制对计算机的访问。
维护文件系统。
处理中断
处理错误
执行输入和输出服务。
内核为用户分配计算机资源。
内核是Unix操作系统架构中最重要的部分。
通常,程序以两种模式执行,如下所示:
用户模式:无法访问任何硬件资源,只能执行用户操作。
内核模式:可以访问硬件资源,例如RAM、打印机。
计算机中的处理器根据在处理器上运行的代码类型在两种模式之间切换。
在用户模式下运行的进程无法访问为操作系统保留的虚拟地址。当操作系统运行用户应用程序(例如处理文本编辑器)时,系统处于用户模式。
当应用程序请求操作系统的帮助或发生中断或系统调用时,就会发生从用户模式到内核模式的转换。在用户模式下,模式位通常设置为1。
当程序需要任何硬件资源时,它需要调用内核。通过系统调用,程序将切换到内核。这将在内核模式下与硬件资源一起发生。硬件资源的工作编译完成后,它将再次返回用户模式。只有在需要硬件时,它才会进入内核模式。
以下是内核的结构:

在内核空间实现线程
现在,让我们看看如何在内核空间实现线程。
步骤1:内核通过维护系统中的线程表来管理线程,以跟踪所有线程。
步骤2:每当线程想要创建一个新线程或销毁一个现有线程时,它都会进行内核调用。它不会通过更新内核线程表来进行创建或销毁操作。
步骤3:此表保存每个线程的寄存器、状态和其他信息,并维护传统的进程表以跟踪进程。
下面是显示在内核空间中实现线程的图像:

优点
在内核空间中实现线程的优点如下:
内核完全了解所有线程,调度程序决定将更多时间分配给具有大量线程的进程,而不是具有少量线程的进程。
内核级线程非常适合经常阻塞的应用程序。
缺点
在内核空间中实现线程的缺点如下:
这些类型的线程速度慢且效率低。因为线程操作的速度比用户级线程慢数百倍。
由于内核将管理和调度线程以及进程,因此它需要为每个线程提供一个完整的线程控制块来维护有关线程的信息。这会导致明显的开销并增加内核的复杂性。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP