ucore操作系统学习(一) ucore lab1系统启动流程分析

Java34

一、ucore操作系统介绍

操作系统作为一个基础系统软件,对下控制硬件(cpu、内存、磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异;对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度。站在应用程序开发人员的角度来看,日常开发中常见的各种关于并发、I/O、程序通信的问题等都和操作系统相关,因此一定程度上了解底层的操作系统工作原理是有必要的。

另一方面,由于操作系统功能的复杂性,总体设计一般具有良好的模块化架构;作为一项基础服务,操作系统对性能和效率要求很高。底层将使用大量关于数据结构和算法的知识。如果我们仔细研究一个操作系统的源代码,我们不仅可以学习到设计复杂软件的架构知识,还可以看到部分理论的数据结构和算法知识是如何应用到实际场景中的。更深入地了解不同数据结构和算法在特定场景下的性能差异。

[En]

On the other hand, due to the complexity of the function of the operating system, the overall design generally has a good modular architecture; as a basic service, the operating system requires high performance and efficiency. The underlying layer will use a lot of knowledge about data structures and algorithms. If we carefully study the source code of an operating system, we can not only learn the architecture knowledge of designing a complex software, but also see how the data structure and algorithm knowledge of partial theory is applied to the actual scene. a deeper understanding of the performance differences of different data structures and algorithms in specific scenarios.

然而对于初学者而言,学习操作系统并不是一件轻松的事情。操作系统理论的学习过于抽象,往往看了就忘。而主流商业操作系统动辄十万、百万级的内核源码也令想要一窥究竟的普通人望而却步。对于一个已经迭代发展相当一段时间的系统,个人认为好的学习方法不是从最新的,相对复杂的版本开始了解,而是从最初始的,较为简单的版本起步,研究其是如何一步步优化、迭代至如今的这个版本。经过无数人迭代、优化的最新版本linux内核固然无比复杂,但90年代早期发布的版本却简单太多,更容易理解和学习,在掌握了相对简单的早期版本后,能降低后续学习更复杂的版本的难度。

对于操作系统的学习而言,有不少大牛都出版了关于如何实现一个简易版操作系统的书籍,例如 《Orange'S:一个操作系统的实现》《30天自制操作系统》等等。不少大学也开始对操作系统的课程进行改革,不再是枯燥的灌输理论知识点,而是尝试着让学生亲自动手实现一个demo操作系统,加深对知识内容的理解。其中麻省理工大学的公开课 MIT 6.828是出品较早,久负盛名的。

本系列博客的主角,是由清华大学出品的操作系统网上公开课,其中的实验课程就需要学生通过一个个的迭代实验,逐步实现一个名为 ucore的操作系统。其实验指导书上对ucore os的评价是 "麻雀虽小,五脏俱全",非常适合操作系统初学者进行学习。

ucore项目github仓库链接:https://github.com/chyyuu/os_kernel_lab(master分支)

ucore实验指导书链接:https://chyyuu.gitbooks.io/ucore_os_docs/content/

ucore公开课视频链接(学堂在线):https://www.xuetangx.com/course/THU08091000267

二、学习ucore所需要的准备知识

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

Java类型转换详解

最近,一个学生问:我不记得自动类型转换,是大到小还是小到大[En]Recently, a student asked: I can't remember the automatic type conv...
Java

java面试——垃圾回收机制

垃圾回收机制:——GC 初学java时。最经典的一句话是"java不像C,需要担心处理不用的内存,他有自己的垃圾回收,会自己处理的",这是当时老师上课提过的一嘴,随后就没有了下文,后面发现这玩意面试时...
Java

异常(Java)

异常 基本介绍 什么是异常? 在实际工作中,遇到的情况不可能是非常完美。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对 软件程序在运行过程...
Java

数据校验

数据校验 element前端自定义校验规则 :rules="dataRule" 绑定数据校验规则方法 * ```vue firstLetter: [ { validator: (rule, value...
Java

绘制几何图形

《零基础学Java》 绘制几何图形Java可以 分别使用 Graphics 和 Graphics2D 绘制图形, Graphics类 使用不同的方法绘制不同的图形(drawLine()方法可f以绘制线...
Java

Spider

流程: 迭代进行:种子url->Element遍历获取超链接lin->作为新种子id ⚠️注意频率和遍历深度 1.设定url及请求参数 headers = {"user-agen...
Java

docker安装redis

拉取镜像 默认拉取最新 docker pull redis 设置配置文件 bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问 protected-mode no #默认yes...
Java

SpringWeb 拦截器

前言 spring拦截器能帮我们实现验证是否登陆、验签校验请求是否合法、预先设置数据等功能,那么该如何设置拦截器以及它的原理如何呢,下面将进行简单的介绍 1.设置 HandlerInterceptor...
Java

设计模式之解释器模式

解释器模式字面意思,也即解释某些内容的含义。这种设计模式是实际开发中最不容易用到的。比如SQL解析,符号处理引擎,会用到解释器模式,属于更底层的开发人员才会用到的设计模式。 本文通过解释器模式的概念、...