linux0.11 源码阅读 head.s setup.s bootsect.s加载位置

从github上下载linux0.11源码
linux0.11源码

将0x10000处的代码往下复制到0开始的地址处。

移动后的内存布局如下

setup中存在gdt和idt的相关数据。此时需要用gdtr和idtr寄存器指向对应的数据。


实模式下,访问内存方式。最多访问1M内存。

分页模式下,计算物理地址。

开启分页后,将页目录项,页表项都设置好后,开始执行main函数,此时的内存布局如下:

上面这张图,我们要牢记在心,操作系统说白了就是在内存中放置各种的数据结构,来实现"管理"的功能。

相关推荐
不吃土豆的马铃薯5 分钟前
C++ 正则表达式入门详解
linux·服务器·网络·数据库·c++·正则表达式
xcLeigh11 分钟前
鸿蒙平台 NixNote2 富文本笔记应用适配实战:从 Linux 到 鸿蒙PC 的 Electron 迁移
linux·笔记·harmonyos·富文本·nixnote2·evernote
kdxiaojie13 分钟前
Linux 驱动研究 —— SPI (2)
linux·运维·笔记·学习
艾莉丝努力练剑24 分钟前
【Qt】界面优化:绘图API
linux·运维·开发语言·网络·qt·tcp/ip·udp
方便面不加香菜24 分钟前
Linux--基础IO(二)
linux·运维·服务器
艾莉丝努力练剑30 分钟前
【Linux网络】NAT、内网穿透、内网打洞
linux·运维·服务器·网络·计算机网络·udp·php
无忧.芙桃35 分钟前
Linux信号机制(中)
linux·运维·服务器
网络中的夜鹰1 小时前
只允许特定网段访问服务器任何端口
linux·服务器·网络
困意少年1 小时前
Linux 进程概念深度解析:从 `task_struct` 到进程状态、优先级、调度与上下文切换
linux·运维
凡人叶枫1 小时前
Effective C++ 条款26:尽可能延后变量定义式的出现时间
linux·开发语言·c++·effective c++