从零实现一个操作系统-day2

我的博客: startcraft.cn

keywords: 操作系统

今天主要是对操作系统的启动进行学习,因为都是理论的部分,这篇博客就当学习的笔记了

计算机的启动过程

BIOS

首先在按下电源键后计算机首先读取写在ROM中的BIOS(Basic Input/Output System 基本输入输出系统)

它保存着计算机最重要的基本输入输出的程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。——百度百科

然后BIOS程序会进行硬件自检,若硬件出问题发出相应的蜂鸣,自检通过后BIOS移交控制权给存储器,按照设置的存储器的启动顺序,若存储器第一个扇区的最后两个字节为 0 x 55 0x55 0x55 0 x A A 0xAA 0xAA则代表该存储器可以用于启动,若不是则将控制权给下一个存储器

存储器

找到可以用于启动的存储器后,机器读取第一个扇区的前446个字节(调用操作系统的机器码)然后运行启动管理器让用户选择要启动的操作系统

操作系统

控制权移交给操作系统后,操作系统的内核会被先载入内存,然后以Linux为例子会启动init进程,这是操作系统的第一个进程,pid为1,其他所有的进程都是它的后代,init进程会逐步调用系统模块直到操作系统启动完成

关于内存地址

针对32位系统cpu的寻址空间是2^32即4GB,其中包含了一些固定的地址访问固定的硬件如访问BIOS
加电后cpu的第一条指令地址是0xFFFFFFF0也就是BIOS的地址,然后BIOS就好开始执行上面描述的流程
在读取主引导记录是会将扇区的512字节读到内存的0x7C00地址,由于512字节太小,所以这512字节就用来些载入内核的代码

bootloader

上面说的载入内核的代码就是bootloader,不过本次我们不自己写bootloader,主要是因为学习的梯度吧,就直接使用县城的GRUB,然后我们的主要任务就是弄出一个能被GRUB识别的操作系统内核,所以要符合GRUB的规范——multiboot规范

今天学校的课挺多,就先到这吧,看文档去了,明天周末大干一番

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值