
操作系统
文章平均质量分 92
Reset‘
这个作者很懒,什么都没留下…
展开
-
操作系统(八)上下文切换的开销?如何减少上下文切换开销?
本文深入分析了上下文切换的开销,包括任务状态保存、选择下一个待执行任务及其上下文恢复的过程。直接开销涉及寄存器数据量的保存与恢复,特别是对于具有大量数据的FPU、MMX、SSE、AVX等寄存器,以及内核更新统计数据和调度算法的选择。间接开销主要与缓存失效(如L1~L3 cache miss和TLB cache miss)相关,可能导致显著的性能损耗。文章还讨论了PCID对TLB管理的影响,以及在不同场景下可能带来的开销。此外,提到了启动新线程或进程时的非紧密相关开销,以及量化上下文切换开销的复杂性,包括硬件原创 2024-08-07 12:51:19 · 1380 阅读 · 0 评论 -
操作系统(七)深入理解Linux内核进程上下文切换
本文深入探讨了Linux内核中的进程上下文切换机制。作者韩传华首先解释了进程上下文的概念,包括虚拟地址空间和硬件上下文,并以Linux 5.0内核源码和ARM64架构为例进行讲解。文章详细介绍了进程上下文切换的两个主要过程:进程地址空间切换和处理器状态切换。在地址空间切换部分,讨论了mm_struct结构体的作用、页全局目录的设置以及使用ASID机制减少TLB清空的必要性。处理器状态切换部分则涉及硬件上下文的保存和恢复,包括寄存器的保存和恢复流程。文章还探讨了ASID机制如何提高系统性能,以及普通用户进程、原创 2024-08-07 12:50:21 · 1214 阅读 · 0 评论 -
操作系统(六)进程比线程大在哪里
本讲我们学习了进程和线程的基本概念。了解了操作系统如何调度进程(线程)和分时算法的基本概念,然后了解进程(线程)的 3 种基本状态。线程也被称作轻量级进程,由操作系统直接调度的,是内核级线程。我们还学习了线程切换保存、恢复状态的过程。我们发现进程和线程是操作系统为了分配资源设计的两个概念,进程承接存储资源,线程承接计算资源。而进程包含线程,这样就可以做到进程间内存隔离。这是一个非常巧妙的设计,概念清晰,思路明确,你以后做架构的时候可以多参考这样的设计。原创 2024-07-30 21:45:47 · 507 阅读 · 0 评论 -
操作系统(五)图解线程进程
但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。也就是说,一个车间开工的时候,其他车间都必须停工。车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。原创 2024-07-29 15:08:05 · 271 阅读 · 0 评论 -
操作系统(四)系统调用
计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源。为了更好的管理这些资源,进程是不允许直接操作这些资源的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。系统调用是属于操作系统内核的一部分的,必须以某种方式提供给进程让它们去调用。CPU可以在不同的特权级别下运行,而相应的操作系统也有不同的运行级别,用户态和内核态。原创 2024-07-26 19:30:07 · 430 阅读 · 0 评论 -
操作系统(三)中断----软中断
软中断没什么神奇的骚操作,就是一组一位一位的软中断标志位,对应着软中断向量表中一个一个的中断处理函数,然后有个内核守护进程不断去循环判断调用,而已。然后,由各个子系统调用 **open_softirq **负责把软中断向量表附上值。再由各个需要触发软中断的地方调用 **raise_softirq_irqoff **修改中断标志位的值。后面的工作就交给内核那个软中断守护进程,去触发这个软中断了,其实就是个遍历并查找对应函数的简单过程。记住上面这张图,就可以了。原创 2024-07-25 21:27:28 · 1152 阅读 · 0 评论 -
操作系统(二)中断----硬中断
所以总结起来就是,理解中断,只要回答了这几个问题就好。如何给 CPU 一个中断号?外部设备通过 INTR 引脚,或者 CPU 执行指令的过程中自己触发,或者由软件通过 INT n 指令强行触发。同样中断也是这样进行分类的。CPU 收到中断号后如何寻找到中断程序的入口地址?通过 IDTR 寄存器找到中断描述符表,通过中断描述符表和中断号定位到中断描述符,取出中断描述符表中存储的程序入口地址。中断描述符表是谁写的?操作系统代码写上去的。找到程序入口地址之后,CPU 做了什么?原创 2024-07-25 21:26:31 · 1077 阅读 · 0 评论 -
操作系统(一)用户态和内核态:用户态线程和内核态线程有什么区别?
Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有很高的权限。按照权限管理的原则,多数应用程序应该运行在最小权限下。内核空间(Kernal Space),这个空间只有内核程序可以访问;用户空间(User Space),这部分内存专门给应用程序使用。这节课我们学习了用户态和内核态,然后我们简单学习了进程和线程的基础知识。这部分知识会在“模块四:进程和线程”中以更细粒度进行详细讲解。等你完成模块四的学习后,可以再返回来看这一节的内容,相信会有更深入的理解。原创 2024-07-23 20:35:30 · 1467 阅读 · 0 评论