当前位置:网站首页>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
在所有平台一致地启动操作系统。启动磁盘的任何系统。为了安全,检查引导记录是否可信。只读取满足签名的引导记录。
查资料
边栏推荐
- 香港理工大学|数据高效的强化学习和网络流量动态的自适应最优周界控制
- PHP production website active push (website)
- Simulink oscilloscope data is imported into Matlab and drawn
- 什么是质押池,如何进行质押呢?
- 在ntpdate同步时间的时候出现“the NTP socket is in use, exiting”
- Pointcut expression
- NLP四范式:范式一:非神经网络时代的完全监督学习(特征工程);范式二:基于神经网络的完全监督学习(架构工程);范式三:预训练,精调范式(目标工程);范式四:预训练,提示,预测范式(Prompt工程)
- 程序猿如何快速成长
- Cocos Creator 2.x 自动打包(构建 + 编译)
- The word backspace key cannot delete the selected text, so you can only press Delete
猜你喜欢
8 cool visual charts to quickly write the visual analysis report that the boss likes to see
Simulink oscilloscope data is imported into Matlab and drawn
CC2530 common registers for timer 1
What material is sa537cl2 equivalent to in China? Sa537cl2 corresponding material
Yu Wenwen, Hu Xia and other stars take you to play with the party. Pipi app ignites your summer
NSQ source code installation and operation process
拼夕夕二面:说说布隆过滤器与布谷鸟过滤器?应用场景?我懵了。。
Mysql 将逗号隔开的属性字段数据由列转行
关于学习Qt编程的好书精品推荐
Threejs Part 2: vertex concept, geometry structure
随机推荐
(补)双指针专题
What is the maximum number of concurrent TCP connections for a server? 65535?
NSQ source code installation and operation process
PHP converts a one-dimensional array into a two-dimensional array
QT串口ui设计和解决显示中文乱码
8 cool visual charts to quickly write the visual analysis report that the boss likes to see
8个酷炫可视化图表,快速写出老板爱看的可视化分析报告
(Supplement) double pointer topic
Everyone in remote office works together to realize cooperative editing of materials and development of documents | community essay solicitation
【LeetCode】94. Middle order traversal of binary tree
Pointcut expression
Unreal_DataTable 实现Id自增与设置RowName
Daily code 300 lines learning notes day 10
跟我学企业级flutter项目:简化框架demo参考
Visual SLAM algorithms: a survey from 2010 to 2016
mysql用户管理
Central South University | through exploration and understanding: find interpretable features with deep reinforcement learning
CC2530 common registers for ADC single channel conversion
Deep understanding of grouping sets statements in SQL
[combinatorics] non descending path problem (number of non descending paths with constraints)