操作系统如何加载

2021-07-16 10:36:45 浏览数 (1)

Hi~朋友,点点关注不迷路

摘要

  1. 什么是操作系统
  2. 操作系统的作用
  3. 应用程序与操作系统
  4. 操作系统加载运行

为了不打断文章的整体思路,有些专业术语没有进行解释,但是在后续我实践编写小的操作系统时会根据用到的东西为大家一一补全。

1. 操作系统的作用

计算机系统目前主要由处理器、主存、键盘鼠标、显示器、网络设备以及一系列的I/O设备组成。

在应用程序的开发过程中,我们所编写的应用程序不会和每一个具体的底层设备打交道,所以在这些硬件的基础上我们安装了一层软件,这层软件可以通过接收用户的指令达到控制硬件的效果,从而满足用户需求,这层软件就是操作系统

2. 操作系统的作用

2.1 用户与计算机硬件之间的接口

在操作系统中,我们一般会通过图形化界面或者Shell来和操作系统交互,然后操作系统来帮我们和底层硬件交互,最后返回结果给用户。

操作系统在此处的功能便是为用户(包含应用程序)提供访问计算机硬件的接口,该接口的学名为系统调用

2.2 计算机系统资源的管理者

计算机系统的资源目前主要分为:

  • 处理器
  • 存储器
  • I/O设备
  • 文件(数据和应用程序)

操作系统可以对这四类资源进行统一管理:

  • 分配处理器使用权
  • 负责内存的回收和分配
  • 负责I/O设备的控制权
  • 负责文件的存取、共享和保护

3. 应用程序和操作系统

操作系统是软件,应用程序也是软件,应用程序加上操作系统提供的功能(发生系统调用)才算一个完整的程序。

CPU在执行程序时并不清楚自己执行的是操作系统和是应用程序,只知道去CS:IP寄存器指向的内存取指并执行。

用户态和内核态是对CPU来说的,是指CPU运行在用户态(特权3级)还是内核态(特权0级)。

应用程序(用户进程)由于内部或外部中断的发生,当前进程暂时终止执行,其上下文被内核的中断程序保存起来,然后开始执行一段内核代码。此时CPU上运行的程序已经从应用程序转变成了内核程序,内核程序执行完成以后也需要从内核态再返回用户态。

4. 操作系统加载运行

操作系统也是软件,他是怎么被我们的计算机加载并运行的呢?

4.1 运行BIOS程序

计算机在接电以后首先运行的是BIOS程序,BIOS主板上的一个小程序,存储空间优先,代码量较少,BIOS主要进行一些设备的自检,比如会检查安装的RAM的数量,键盘和其他设备是否已安装并正常响应。

4.2 加载MBR

BIOS完成自己的工作以后会将处理器使用权交给MBR(主引导记录)。MBR位于整个磁盘最开始的扇区,该扇区也成为主引导扇区。主引导扇区的内容如下:

  • 446字节的引导程序及参数
  • 64字节的分区表
  • 2字节结束标志0x55和0xaa

一直到MBR,我们还没有发现操作系统被加载,那么到底操作系统存储在哪里呢?

MBR中维护了一个分区表,我们在分区时需要知道确认哪个分区安装操作系统,安装操作系统的分区将被设置为活动分区,本质上就是将分区表中该分区对应的分区表项中的活动标记为0x80。

因此MBR只需要跳转到被标记为0x80的分区上去找内核加载器(OBR)即可。

4.3 加载OBR

MBR找到活动分区以后,会将控制权交给该分区的内核加载器(OBR),为了MBR能够便利的找到内核加载器,内核加载器必须固定在分区最开始的扇区,该扇区称为操作系统引导扇区。该引导扇区的起始位置的**跳转指令 **会将处理器带入操作系统引导程序。

该跳转指令跳转的目标位置并不固定,该位置由所创建的文件系统决定。

OBR中存储的内容主要有:

  • 跳转指令,使MBR跳转到引导代码
  • 厂商信息,DOS版本信息
  • BIOS参数块BIOS Parameter Block
  • 操作系统引导程序
  • 结束标记0x55和0xaa

本期的如何加载OS就介绍到这,我是shysh95,我们下期再见!

0 人点赞