标签: 操作系统

27 篇文章

thumbnail
ostep-15-Mechanism-Address-Translation
这章顾名思义,主要介绍了OS中地址转换的细节,之前提到过,用户进程看到的一定是虚拟地址空间,其中虚拟地址空间的转换就由地址转换来做。 这章的后半部分结合地址翻译器,总结了一下目前OS所有需要通过硬件支持做到的事情,包括中断、限制直接执行、地址翻译等等。 其实这章真正描述的地址转换相关内容很少,大概有以下要点: 地址转换主要通过硬件实现,在每个CPU…
ostep学习笔记-14 Interlude: Memory API
这章主要介绍了操作系统给进程提供用的内存的API,主要是C语言的视角。 内存类型 栈 栈内存由进程在编译时编译器就可以决定,栈内存主要是函数中的这类内存: void func() {int x; // declares an integer on the stack...} 简而言之就是函数内的局部变量,这些变量在编译时就可以确定大小以及数量,在函…
thumbnail
ostep学习笔记-13 Abstraction Address Spaces
这章主要描述了内存中对进程来说地址空间是什么东西 地址空间 在进程来看,地址空间分为3部分,代码(code),堆(heap),栈(stack) 在进程自己的地址空间中视图如下 其中随着内存的申请和栈的扩大,堆会在内存中向下扩展,而栈是向上,也就是会逐渐填满free那块。 还有段代码比较经典,打印进程中main函数的地址(代码),堆的地址(使用mal…
ostep学习笔记-11-12 Summary Cpi Virtualization
第11以及第12章主要是通过对话总结并且引申出了内存的虚拟化,并且都是对话内容,所以一起写一篇 CPU的虚拟化 cpu的虚拟化大概有以下要点要理解 进程切换 进程的切换主要由操作系统完成,通过对进程的定义(进程对象中使用一个结构体来保存寄存器的状态),在切换进程时由操作系统将当前CPU的寄存器状态从内存中还原回CPU或者从CPU保存到寄存器中 Li…
ostep学习笔记-10 Multiprocessor Scheduling Advanced
这样主要介绍了下更进一步的调度,结合现代操作系统场景下,如何解决调度程序面临的更多的挑战-并发? 主要挑战 并发与一致性 多CPU场景下,调度程序首先需要面临的挑战就是并发与一致性的挑战。文章里简单介绍了下CPU的缓存,然后带出CPU缓存在调度时会出现的问题。 现代CPU基本都有3级的高速缓存,高速缓存位于CPU和内存Memory之间,高速缓存的速…
thumbnail
ostep学习笔记-9 Scheduling Proportional Share
除了第八章之外,第九章还介绍了其他一种种类的调度算法,包括Linux采用的算法CFS,介绍的过程也循序渐进 这类算法的特点是按比例共享,也就是Proportional Share的意思。这类算法主要考虑的是权重以及分配时间片的比例,最后我会稍微总结一下自己思考的和与第8章中算法的一些核心区别和为什么需要考虑这些。 Lottery Schedulin…
ostep学习笔记-8 Scheduing
从第八章开始,写一下学习笔记,因为从这张开始深入到一些算法以及原理了,最好还是写笔记记录一下 这张主要通过一系列问题的讨论,介绍并优化了MLFQ,Multi-Level Feedback Queue(多级反馈队列)这一操作系统调度任务的算法。 这个算法主要逻辑(讨论后最终给出)如下: Rule 1:If Priority(A)>Priorit…