当前位置:网站首页>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
在所有平台一致地启动操作系统。启动磁盘的任何系统。为了安全,检查引导记录是否可信。只读取满足签名的引导记录。
查资料
边栏推荐
- NFT new opportunity, multimedia NFT aggregation platform okaleido will be launched soon
- Arduino esp32: overall framework of lvgl project (I)
- There are several APIs of airtest and poco that are easy to use wrong in "super". See if you have encountered them
- 【剑指 Offer】58 - II. 左旋转字符串
- Extraction of the same pointcut
- PHP production website active push (website)
- What is the pledge pool and how to pledge?
- Custom plug-in construction and use of QT plug-in
- Top k questions of interview
- PHP CI (CodeIgniter) log level setting
猜你喜欢

arduino-esp32:LVGL项目(一)整体框架

Explore Cassandra's decentralized distributed architecture

消息队列消息丢失和消息重复发送的处理策略

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

utfwry. Dat PHP, about ThinkPHP's method of IP location using utfwry address Library

Google Earth engine (GEE) - daymet v4: daily surface weather data set (1000m resolution) including data acquisition methods for each day
![[combinatorics] non descending path problem (number of non descending paths with constraints)](/img/89/bd1a2ddd9632ab5d4b4bee9336be51.jpg)
[combinatorics] non descending path problem (number of non descending paths with constraints)

一台服务器最大并发 tcp 连接数多少?65535?

关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM

Mysql 单表字段重复数据取最新一条sql语句
随机推荐
网络安全web渗透技术
Learn from me about the enterprise flutter project: simplified framework demo reference
CC2530 common registers for crystal oscillator settings
Record windows10 installation tensorflow-gpu2.4.0
Daily code 300 lines learning notes day 10
为抵制 7-Zip,列出 “三宗罪” ?网友:“第3个才是重点吧?”
Unreal_DataTable 实现Id自增与设置RowName
PHP production website active push (website)
[Jianzhi offer] 57 - ii Continuous positive sequence with sum s
Is it safe to open a stock account by mobile registration? Does it need money to open an account
Processing strategy of message queue message loss and repeated message sending
斑馬識別成狗,AI犯錯的原因被斯坦福找到了
NSQ source code installation and operation process
面试之 top k问题
拼夕夕二面:说说布隆过滤器与布谷鸟过滤器?应用场景?我懵了。。
8个酷炫可视化图表,快速写出老板爱看的可视化分析报告
Golang 装饰器模式以及在NSQ中的使用
【剑指 Offer 】64. 求1+2+…+n
nifi从入门到实战(保姆级教程)——flow
[statement] about searching sogk1997 and finding many web crawler results