
操作系统
文章平均质量分 84
通过对ucore的学习,掌握操作系统设计与实现。
尽力而为,乘风破浪
未来不期,当前不杂,过往不恋
展开
-
ucoreOS操作系统博客导航栏
跟着清华大学的学堂在线公开课,对操作系统的原理和实验有了更加深刻的理解。回顾自己2年来从不懂实验的基本的宏定义,到能用预编译指令展开宏,从代码深奥无比,支离破碎的理解,到能全局的理解一个或多个实验。其中最值得肯定的是走了一条正确的道路,即理论加实验学习,尤其提高实验的投入时间。其次,清华大学的操作系统学习是一门十分的系统课程,有利于提高系统思维。原创 2024-04-03 07:50:13 · 596 阅读 · 0 评论 -
实验三 虚拟内存管理-实验部分
本文从虚拟存储原理、页面置换算法、虚拟存储实践以及代码解析的角度介绍ucore操作系统的虚拟存储技术原创 2024-03-10 15:38:35 · 1194 阅读 · 0 评论 -
实验二 物理内存管理-实验部分
在X86系统中,正好支持分段和分页这两种机制。将逻辑地址转换成线程地址空间的过程,称为分段,而将线性地址转换成物理地址空间的过程称为分页。分段和分页的过程如下图所示。图3-1 分段和分页分段提供一种划分处理器地址内存空间成更小的保护地址空间,这种地址空间称为段。段可以用来维持一个程序的代码、数据、堆栈。或者用来维持一个系统的数据结构,如TSS、LDT。原创 2024-02-17 12:33:33 · 1219 阅读 · 2 评论 -
实验五 用户进程管理-实验部分
由于进程的执行空间扩展到了用户态空间,且出现了创建子进程执行应用程序等与lab4有较大不同的地方,所以具体实现的不同主要集中在进程管理和内存管理部分。在内存管理部分,与lab4最大的区别是增加了用户态虚拟内存的管理。为了管理用户态的虚拟内存,需要对页表的内容进行扩展,能够把部分的物理内存映射成用户虚拟内存。如果某进程执行的过程中,CPU在用户态下执行,则可以访问本进程页表描述的用户态虚拟内存(如下代码的cr3),由于权限不够,不能访问内核态虚拟内存。原创 2023-12-24 14:54:53 · 268 阅读 · 0 评论 -
QEMU环境调试方法
本文从调试的角度出发,分享QEMU调试过程中的常见调试方法。原创 2023-12-10 11:33:02 · 696 阅读 · 0 评论 -
Lab5用户进程管理内存布局解析
关于用户进行内存布局,最重要的是代码段、数据段、调试段的符号地址。这些地址在链接器的控制下,给定symbols table。其中ENTRY(kern_entry)规定加载器的加载地址,其中. = 0xC0100000;规定bin/kernel的内存布局起始地址,其中symbol table中的地址顺序是依靠实际链接目标文件顺序。在bin/kernel中有三类数据段,分别是.rodata、.data、.bss。最让人分不清的是.data和.bss的区别。原创 2023-10-29 10:42:22 · 257 阅读 · 0 评论 -
实验四 内核线程管理-实验部分
进程是指具有一定独立功能的程序在一个数据集合上的一次动态执行过程。每一个进程都有它独立的main函数,独立的功能。每一个进程都在自己的内存空间执行,这个内存空间就是数据集合。每一个进程都在CPU上的一次动态执行,这个动态执行依靠的是进程在CPU上的并发执行。lab2和lab3完成了对内存的虚拟化,但整个控制流还是一条线串行执行。lab4将在此基础上进行CPU的虚拟化,即让ucore实现分时共享CPU,实现多条控制流能够并发执行。原创 2023-10-03 21:42:02 · 354 阅读 · 0 评论 -
实验六 调度器-实验部分
本章介绍调度器涉及的核心知识点以及进程调度器设计的目标进程的生命周期的角度看,、切换、退出属于操作系统课程的第5个实验的重要内容。本章继续从进程的生命周期角度出发,对进程调度进行设计与分析。原创 2023-07-29 21:43:32 · 1220 阅读 · 0 评论 -
实验八 文件系统-实验部分
针对ucore的实验八--文件系统,本文从两个方面进行详细的介绍。一是文件系统所涉及的核心知识点。二是针对实验,详细解读实验的如何设计和思考的。原创 2023-07-02 20:06:39 · 1552 阅读 · 0 评论 -
ucore内核态进程上下文切换关键代码分析
本文从汇编代码的角度动态展示进程上下文如何进行切换原创 2022-05-03 16:00:50 · 830 阅读 · 0 评论 -
X86中断栈执行过程分析
本文从栈的角度详细解释函数调用栈和中断栈的实现机制,旨在理解操作系统中内核部分的中断机制原创 2022-04-10 15:07:52 · 3044 阅读 · 1 评论 -
物理内存管理-ucore操作系统的PADDR宏
PADDR宏在pmm.c文件中的pmm_init(void)函数中会有如下奇怪的宏定义用法,以前从未见,PADDR完成了去除内核的虚拟起始地址,这个宏是如何工作的?原创 2021-03-14 16:09:10 · 678 阅读 · 0 评论