当前位置:网站首页>ucore概述
ucore概述
2022-07-03 16:42:00 【专注web0年】
简介
本文根据慕课资料进行粗略学习操作系统的知识
ucore课程文档
课程地址
lab答案地址
有的答案有问题,但是可以供参考
第一条指令
CPU加电后会进行初始化,然后在内存读第一条指令。内存有一部分是ROM、一部分是RAM。断电后RAM信息会消失,但是ROM内容一直都在。
读的第一个指令是CS:IP指向的地址(值应该是默认的),刚加电的CPU处于16位实模式下,寻址空间大小为2的20次方(1MB),CS、IP都是16位的。CS*16+IP(0xFFFF0)是第一条指令的地址,同时CS:IP要在2的20次方的寻址空间内。第一条指令在最底下的1MB空间内。这第一条指令及其跟着的指令就是BIOS,它要提供一些服务,然后CPU才能访问磁盘设备。
BIOS
BIOS从磁盘读引导扇区(512字节)里的加载程序,将其写到内存0x7c00,然后CS:IP跳到那里去执行加载程序(bootloader)。
详细一点说,BIOS只能在实模式下运行,它先是检查硬件,进行设备初始化。修电脑时,显示器不工作,可以猜测内存有问题。因为BIOS先检查到内存有问题,后面它就不用检查了,也不启动系统了。然后检查插入的U盘、磁盘什么的。检查产生的信息成为BIOS数据。虽然ROM数据不会消失,但是因为每次插入的硬件不一样,所以BIOS会改这些数据。最后读我们磁盘的第一个扇区。BIOS先读磁盘的主引导扇区(512字节)。因为这个东西提供的信息可以帮我们选择启动磁盘里的哪个操作系统。根据主引导扇区的信息来选择并读取活动分区(分区引导扇区)。先执行分区引导扇区的跳转指令,跳转到启动代码启动到加载程序。
加载程序
加载程序把磁盘的ucore操作系统数据和代码加载到内存,再跳到ucore起始地址。把控制权交给操作系统。
详细地说,加载程序会先从文件系统中读取启动配置信息,依据这些信息决定怎么加载内核,这个地方如果我们可以弄一个选项在显示屏(启动菜单),可以改参数就很好。最后跳到内核。

不够详细
知道这些还是很粗糙,如果写实际程序,还要根据CPU手册、BIOS规范(从哪里读第一条,上文是0xFFFF0)。所以自己写操作系统还是要查很多资料的。
系统启动规范
BIOS
这里的主引导扇区的硬盘分区表只有四个分区信息,每个分区信息16字节(BIOS-MBR)。BIOS-GPT则支持超过四个分区。PXE是网络启动,从服务器下载资料到磁盘来启动,此时BIOS要有网络下载功能,BIOS变复杂了。前面说的是在本地磁盘启动。
UEFI
在所有平台一致地启动操作系统。启动磁盘的任何系统。为了安全,检查引导记录是否可信。只读取满足签名的引导记录。
查资料
边栏推荐
- Golang 匿名函数使用
- 8 tips for effective performance evaluation
- What material is 13crmo4-5 equivalent to in China? 13crmo4-5 chemical composition 13crmo4-5 mechanical properties
- [combinatorics] non descending path problem (number of non descending paths with constraints)
- 如何在本机搭建SVN服务器
- 【LeetCode】94. Middle order traversal of binary tree
- "The NTP socket is in use, exiting" appears when ntpdate synchronizes the time
- What material is sa537cl2? Analysis of mechanical properties of American standard container plate
- 程序猿如何快速成长
- 2022爱分析· 国央企数字化厂商全景报告
猜你喜欢

Mysql 将逗号隔开的属性字段数据由列转行

QT串口ui设计和解决显示中文乱码

【声明】关于检索SogK1997而找到诸多网页爬虫结果这件事

Interviewer: how does the JVM allocate and recycle off heap memory

Record windows10 installation tensorflow-gpu2.4.0

于文文、胡夏等明星带你玩转派对 皮皮APP点燃你的夏日

CC2530 common registers for timer 1

QT serial port UI design and solution to display Chinese garbled code

Visual SLAM algorithms: a survey from 2010 to 2016

Aike AI frontier promotion (7.3)
随机推荐
Google Earth engine (GEE) - daymet v4: daily surface weather data set (1000m resolution) including data acquisition methods for each day
MySQL single table field duplicate data takes the latest SQL statement
Kindeditor editor upload image ultra wide automatic compression -php code
深入理解 SQL 中的 Grouping Sets 语句
线程池执行定时任务
Preventing/catching “IllegalArgumentException: parameter must be a descendant of this view” error
浅谈拉格朗日插值及其应用
MongoDB 的安装和基本操作
CC2530 common registers
"The NTP socket is in use, exiting" appears when ntpdate synchronizes the time
PHP CI (CodeIgniter) log level setting
网络安全web渗透技术
8个酷炫可视化图表,快速写出老板爱看的可视化分析报告
(Supplement) double pointer topic
【剑指 Offer 】57 - II. 和为s的连续正数序列
Data driving of appium framework for mobile terminal automated testing
CC2530 common registers for timer 1
什么是质押池,如何进行质押呢?
【剑指 Offer 】64. 求1+2+…+n
Shentong express expects an annual loss of nearly 1billion