L11&12&13 【哈工大_操作系统】内核级线程&内核级线程实现&操作系统之“树”

L2.4 内核级线程

切换进程,实际上是切换内核级线程,没有用户级进程说法,进程只能在内核中。

  • 多核与多处理器的区别在于是否共用资源。多核=多线程

  • 并发:同时触发,交替执行,在一个核上

  • 并行:同时触发,同时执行,在多个核上

1、核心级线程和用户级线程的区别

核心级线程核心 :两套栈,与用户级线程不同。因为内核级线程执行代码仍然在用户态,需要用到用户栈 ;同时涉及到内核代码,需要内核栈。所以线程切换时是用户栈和内核栈这一套栈同时切换。

  • 内核栈 中存放了用户栈的栈指针、用户态的程序指针
  • 进入内核的唯一方法是中断 。用户态->内核态(INT ),内核态->用户态(IRET)

2、内核线程的切换过程

  • PCB(进程控制块,Process Control Block) :用于保存一个进程相关信息的数据结构。进程ID称为PID。
  • TCB(线程控制块,Thread Control Block) : 用于保存一个线程相关信息的数据结构。线程ID称为TID。

线程1 -> 线程2 的五段论

实现线程1->线程2,分为五段:

  1. 用户栈->内核栈
  2. 内核栈->TCB
  3. TCB完成切换(Schedule)
  4. TCB->内核栈
  5. 内核栈->用户栈

ThreadCreate:创建为内核进程可以切换的样子

  1. 创建TCB、内核栈
  2. 完成用户栈和内核栈的关联,TCB和内核栈的关联
  3. 在内核栈中写一段包含 IRET 的代码,以便内核栈切换回用户栈

linux0.11不支持内核级线程


L2.5 内核级线程实现

1、进入内核 --- 采用中断

linux0.11的切换是基于TSS(任务状态段),实验五则是基于内核栈的切换

  • TSS执行效率低

tss 是任务状态段 (Task State Segment),它是一个特殊的内存区域,存储任务切换时的一些状态信息,特别是内核栈指针 ESP0。

TSS: Linux0.11中真正完成进程切换是依靠任务状态段(Task State Segment,简称 TSS)的切换来完成的。具体的说,在设计"Intel 架构"(即 x86 系统结构)时,每个任务(进程或线程)都对应一个独立的 TSS,TSS 就是内存中的一个结构体,里面包含了几乎所有的 CPU 寄存器的映像。有一个任务寄存器(Task Register,简称 TR)指向当前进程对应的 TSS 结构体,所谓的 TSS 切换就将 CPU 中几乎所有的寄存器都复制到 TR 指向的那个 TSS 结构体中保存起来,同时找到一个目标 TSS,即要切换到的下一个进程对应的 TSS,将其中存放的寄存器映像"扣在" CPU上,就完成了执行现场的切换。

  • TR类似于CS,在GDT表中索引到当前TSS描述符,找到TSS段
  • 只需要一条 ljmp 指令就可以完成TSS切换,以下的7个步骤都是CPU解释执行的结果

重点:switch_to() 中的 ljmp 理解


L2.6 操作系统之"树"

相关推荐
李剑一4 天前
早在八十年代我们就有国产操作系统,但为什么最后还是Windows一统天下,答案藏在时间里
操作系统
Java成神之路-4 天前
虚拟内存核心精讲:页表、VMA、缺页异常与mmap(单级页表 + 多级页表对照)
操作系统
OpenAnolis小助手6 天前
RISC-V 基础软件的工程化与性能优化实践
性能优化·操作系统·龙蜥社区·risc-v
青梅味猪大肠7 天前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
PMAOS10 天前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
罗四强10 天前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
Liaiyang6611 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手12 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
阿里云基础软件12 天前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
OpenAnolis小助手13 天前
多租户公有云共享 CXL 内存池场景下的内存卸载研究
人工智能·操作系统·龙蜥社区·risc-v·agentic os