2022
我们一起努力

操作系统之起源(一)

        从今天开始,我们来进行一个微型的操作系统(基于 x86 架构)的编写。当然了,也是跟着别人学习,只是为了做个总结。将之记录下来,和大家一起学习,也方便日后进行复习。

        那么什么是操作系统呢?我们常见的操作系统有:Windows、Unix、Linux、Mac OS、Android 以及 iOS 等。简单来说,操作系统是直接运行于硬件之上的计算机程序。它的一个作用是用于管理和控制计算机的硬件与软件资源;另一个重要的作用是为用户软件的开发提供必要的服务和接口。下来我们来看看现代计算机系统的架构,如下图所示

        我们看到在最上层是应用层,也就是我们平时所说的软件开发层。而软件开发又分为两种:用户软件开发和编译软件的开发。接下来便是操作系统了,操作系统提供了软件运行的环境和各种服务与接口。再往下便是 BIOS,对于这个词,我们装过电脑系统的人都知道,后面会进行详细的分析。最底下便是硬件层了,它为操作系统提供所必需的硬件环境。

        我们下来来看看 BIOS,它的全名为 "Basic Input & Output System"。BIOS 的本质也是一段程序,它是计算机上电后第一个运行的程序。它所做的工作主要分为以下几个:a> 首先检测硬件状态,检测通过后立即进行硬件初始化;b> 它会在内存中建立中断向量表,其作用是提供硬件访问的方法;c> 最后便是将控制权交由主引导程序执行,进入操作系统。注意:BIOS 不是软件(Software),而是固件(firmware)!那么什么是固件呢?固件是固化于硬件中的程序,在硬件出厂前已经烧写固定。

        下来我们来看看 x86 架构的系统启动流程,如下图所示

操作系统之起源(一)

        我们看到先是系统硬件上电,接着运行 BIOS,初始化硬件;紧接着建立中断向量表,加载运行主引导程序;软件初始化,加载运行操作系统内核,最后是系统初始化。那么 BIOS 是如何被运行起来的呢?下来我们来看看 BIOS 的运行机制。BIOS 存储于 ROM 中,地址映射为 0xF0000 – 0xFFFFF(物理地址),它的入口地址为 0xFFFF0。那么在硬件电路的特殊设计下,会使得系统在开机后,CPU 从 0xFFFF0 处开始执行。BIOS 会按照用户设置来扫描各个存储介质(光驱、软驱、U 盘等),在发现主引导区后,将主引导区中的主因到程序载入内存;主因到程序在内存中的入口地址为 0x7c00,最后将控制权交由主引导程序执行。怎么交给呢?其实也就是一句指令:jmp 0x7c00

        那么 BIOS 如何在存储介质中寻找主引导区呢?进而如何判断引导区中有没有主引导程序呢?下来我们先来介绍下主引导区,它的简写为:MBR,即 Master Boot Record。MBR 位于存储介质的最开始位置处,大小为 512 字节;它的特点是前 512 字节的最后 2 个有效字节为 0x55aa;它的数据是 0x55aa 之前的数据都被视为主引导程序。那么前 512 字节是否一定为 MBR 呢?不一定哦!如果判断是主引导区,进而将主引导程序加载到内存中,当运行完之后,有可能会发现它是不合法的,进而执行出错。所以说,主引导区存储的程序不见得就是一个合法可用的程序。那么怎么进行判断是否是合法可用的程序呢?我们将在下节博客中进行介绍。

        下来我们来看看更加详细的系统启动流程,如下图所示

        在运行 BIOS 后,先进行存储介质的扫描,如果在存储介质中存在 MBR,那么便开始加载主引导程序,地址为 0x7c00;接着将控制权交由主引导程序执行,进行软件的初始化,最后加载运行操作系统内核,进行系统的初始化。那么通过今天对操作系统的基础知识的学习,总结如下:1、BIOS 是计算机上电后第一个运行的程序;2、BIOS 进行必要的初始化,并加载运行主引导程序;3、主引导程序位于存储介质的最开始的 512 字节处;4、主引导程序负责后续的初始化,并加载运行操作系统内核。

赞(0)
文章名称:《操作系统之起源(一)》
文章链接:https://www.fzvps.com/46126.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!