程序整体流程

计算机上电复位,BIOS自检,然后加载MBR到内存0x7c00,跳转到MBR中执行,MBR引导程序查看各分区表项的情况,找到活动分区,将内核加载器装载到内存中,然后将控制权转交给内核加载器,内核加载器执行操作系统引导程序,进入内核。

bootloader中通过BIOS的中断0x15获取物理内存容量,注册内核的段描述符,初始化全局描述符表。
打开A20,加载全局描述符表,将cr0的pe位置1,准备进入保护模式。
jump清空流水线,进入保护模式。

进入保护模式后,创建页目录表和页表,第1023个页目录项和第1023个页表项指向自身页目录表的物理地址,用于内核定位,修改页目录表和页表。第768个页目录项映射到第0个页目录项,实现用户进程的时候会将内核的高端页目录项复制到用户的页目录项中,以实现用户能够实现操作系统的系统调用。

将硬盘上的内核读入内存中,将esp指针指向主线程的内核栈,执行主线程的函数内容。

主线程函数就是程序的入口,执行主函数前会先初始化相应的中断设置,初始化中断描述符表;内存管理,比如对内存池的分配;初始化一些键盘寄存器等;初始化系统调用等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,411评论 0 27
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,999评论 0 9
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 9,207评论 0 10
  • 进程 创建 创建进程用fork()函数。fork()为子进程创建新的地址空间并且拷贝页表。子进程的虚拟地址空间...
    梅花怒阅读 6,033评论 0 7
  • 前言 北大《操作系统原理》[https://www.coursera.org/learn/os-pku]课堂笔记,...
    尤汐Yogy阅读 7,495评论 0 11

友情链接更多精彩内容