1 知道计算机是怎样把操作系统跑起来的吗-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

知道计算机是怎样把操作系统跑起来的吗

jf_78858299 来源:子牙OS 作者:子牙 2023-05-09 16:12 次阅读

之前不是给大家发了个开发操作系统的环境搭建教程吗?这不,又给自己找了一堆事。大家环境搭起来了,有环境写内核了,问题就出来了。这篇文章就是整理的大家问的比较多的问题,还有我自己写操作系统的一些问题,及研究后的一些心得体会

操作系统是任何一个想成为技术大牛的小伙伴必学的知识点。每个coder接触的所有知识点,都是起源于操作系统。你可能想象不到,学会了操作系统,对于一个coder,是一件多么有意义的事情。我还是建议大家抽空学一学、写一写。当然如果你希望有人教,欢迎加入我的手写操作系统小班

一个coder不想成为大牛,结局就是被淘汰

考虑到有些小伙伴没写过操作系统,我从操作系统是如何被运行起来的角度来写这篇文章吧。相信如黑洞般的操作系统启动过程,小伙伴们都存在着很多困惑及渴望解开谜团的好奇心

01

操作系统运行总览

想探究这个过程,只有你自己写操作系统才有这样的机会。因为真实机器,你没法调试,看不到这个过程

当你写好了一个OS内核,用bochs运行起来,你会发现bochs停留在一个断点处。这个断点所在的内存地址是0xfffffff0,如图。

图片

注意:这时候还没有运行你写的OS内核,更进一步说,你写的OS内核都还没有装入内存

这里引出来第一个问题:当我们运行我们自己写的OS内核的时候,bochs为什么会在0xfffffff0处停下来

接下来第二个问题:0xfffffff0处的汇编指令是jmpf 0xf000:e05b,跳过去要执行的代码是做什么的?

当把0xfe05b处的代码执行完,会跳转到地址0x7c00,这里是我们写的OS内核开始的地方

图片

第三个问题就是:为什么我们自己写的OS内核要载入到0x7c00,为什么不是其他的内存地址

这里为什么显示的是0x7c02呢?因为我们下的断点占两个字节,bochs从断点的下一行开始显示,所以如此

接下来咱们一个问题一个问题的分析

02

第一个问题

问题是,我们用bochs运行我们写的OS内核,为什么会停留在0xffffff0处?

我们反着来推,如果我们写的OS内核需要运行起来,之前需要完成内核的加载,在加载内核之前需要知道我们写的OS内核是存储在硬盘中还是软盘中,根据不同的存储介质,使用不同的方式进行读取。还有,运行OS内核需要内存,在运行之前是不是要检查下有没有插内存条……

综上,在运行OS内核之前,其实要做很多事情,这些事情由谁来做呢?BIOS例程。BIOS例程是写死在主板ROM中的一段程序。如果你经历过电脑开机启动不了,你可能就听过维修人员说这样一句话:刷主板ROM试试

为什么要提到BIOS例程呢?因为0xffff0就是BIOS例程的入口地址。停留在这里,就是让你有机会去调试BIOS例程,看它是如何检测硬件、设置中断、载入内核、交出执行权

03

第二个问题

问题是,0xfffffff0处的汇编指令是jmpf 0xf000:e05b,跳过去要执行的代码是做什么的?

其实前面也提到了,做硬件检测,比如检测有没有插内存条,内存条容量;有没有接入存储介质,接入了几块…检测完硬件就需要填充中断向量表,然后将我们写的内核代码读入内存……最后把执行权限交给OS内核。怎么交呢?代码类似于jmpf 0x7c00

为什么内存条松了开不了机,知道原因了吧

当时研究这个问题的时候,我在想,为什么要跳转呢?讲0xfe05b作为BIOS例程的入口不就可以了吗?我也尝试找了各种资料:Inter手册、BIOS规范,没找着答案,所以这个问题木有答案,大家就当纯粹一听。

当你走到一定高度,你会非常苦恼,因为计算机不是发源于我们国家,而且我们不是生活在那个年代,导致资料特别少,而且有些设计由于历史原因流传下来,又没有资料说明,找不到答案

04

第三个问题

问题是,为什么我们自己写的OS内核要载入到0x7c00,为什么不是其他的内存地址?

这个也是由于历史原因。

0x7C00第一次出现在IBM PC 5150的BIOS处理int 19(19号中断)的时候,IBM PC 5150是x86(32位)IBM PC/AT系列的祖先,这款PC于1981年发布,使用了intel8088(16位)的处理器和16KB的RAM内存,BIOS和微软的基本指令均放在该内存中。当打开电源,BIOS开始自检,然后出发 19号中断,在处理19号中断时,BIOS检测电脑是否具有软盘、硬盘或是固定磁盘,如果有任何可以使用的磁盘,BIOS就把磁盘的第一个扇区(512B)加载到内存的0x7C00地址处。

那0x7C00是怎么算出来的呢?那时候计算机的最小内存是32K,为了把尽量多的连续内存留给操作系统,主引导记录就被放到了内存地址的尾部。由于一个扇区是512字节,主引导记录本身也会产生数据,需要另外留出512字节保存。所以,它的预留位置就变成了:

0x7FFF - 512 - 512 + 1 = 0x7C00

0x7C00就是这么算出来的

OK,到这来就把操作系统是如何被电脑运行起来的细节讲明白了。你学废了吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87849
  • 操作系统
    +关注

    关注

    37

    文章

    6801

    浏览量

    123283
  • coder
    +关注

    关注

    0

    文章

    6

    浏览量

    7851
收藏 人收藏

    评论

    相关推荐

    计算机操作系统PPT

    计算机操作系统PPT操作系统引论(1章)进程管理(2-3章)存储管理(4章)设备管理(5章)文件管理(6章)操作系统接口(7章)系统安全性(
    发表于 11-07 11:19

    计算机软件与操作系统

    计算机软件与操作系统  功能强大的计算机自从走进了人类的生活就发挥着越来越重要的作用,随着时代的发展,计算机已与人们的日常生活息息相关。不能不说计算
    发表于 09-13 10:09

    计算机操作系统

    计算机操作系统-进程(2)进程的状态与转换
    发表于 05-25 16:45

    什么是计算机操作系统

    什么是计算机操作系统操作系统是一种为应用程序提供服务的系统软件,是一个完整的计算机系统的有机组成部分。从层次上来看,
    发表于 12-14 06:50

    嵌入式系统与通用计算机操作系统的区别是什么

    嵌入式系统与通用计算机操作系统的区别以前仅学习并接触过嵌入式系统,通过对比,可以以前学过的知识对应到
    发表于 12-22 06:35

    计算机操作系统课件

    计算机操作系统课件内容如下第1章  计算机操作系统概述.ppt1.1  存储程序式计算机模型1.2 
    发表于 11-07 09:43 0次下载
    <b class='flag-5'>计算机</b><b class='flag-5'>操作系统</b>课件

    2004年计算机操作系统试题

    计算机专业计算机操作系统试题 2004年1月一、选择题(选择一个正确答案的代号填入括号中,共40分)1.操作系统是为了提高计算机的C1](
    发表于 01-07 19:24 2次下载

    计算机操作系统》课程教学探讨

    计算机操作系统课是一门涉及知识面广的专业基础课程,该课程的教学一直在计算机专业教学计划中居重要位置.本文在分析了目前国内计算机操作系统教学现
    发表于 04-18 21:12 48次下载

    计算机操作系统试题及答案

    计算机操作系统试题及答案。
    发表于 11-12 16:41 0次下载

    计算机操作系统原理与设计

    计算机操作系统原理与设计算机操作系统原理与设计 计算机操作系统原理与设计
    发表于 06-03 14:30 43次下载

    FreeRTOS_003 _让系统在板子上跑起来

    FreeRTOS_003_让系统在板子上跑起来
    的头像 发表于 03-14 11:25 2767次阅读
    FreeRTOS_003 _让<b class='flag-5'>系统</b>在板子上<b class='flag-5'>跑起来</b>

    操作系统是什么?计算机操作系统的详细资料介绍

    操作系统计算机学科的基础课程,是理解计算机运行原理的重要基石,学习操作系统不仅能够让编程人员了解计算机运行逻辑而且还有助于培养编程“软实力
    的头像 发表于 02-04 12:24 1.7w次阅读
    <b class='flag-5'>操作系统</b>是什么?<b class='flag-5'>计算机</b><b class='flag-5'>操作系统</b>的详细资料介绍

    计算机操作系统的几种分类方式

    操作系统是管理计算机硬件与软件的计算机程序,是计算机系统的核心,是计算机系统中最基础和最重要的系统
    的头像 发表于 03-21 14:58 2w次阅读

    计算机操作系统的最基本特征是什么_计算机操作系统是什么的接口

    计算机操作系统是用户与计算机的接口,在计算机中,操作系统是其最基本也是最重要的基础性系统软件;
    发表于 09-03 15:36 1.5w次阅读

    为什么计算机需要操作系统

    今天,我们从三个方面来简单聊聊为什么计算机系统需要操作系统这个话题。
    的头像 发表于 02-03 11:00 2336次阅读