• 01 进阶操作系统


    参考

    https://www.cnblogs.com/wanmeishenghuo/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/

    https://blog.51cto.com/13475106/category6.html

    及狄泰软件相关课程

    一.操作系统

    A.由此我们可以的得出一个疑问,什么是操作系统?
    1.在我们日常生活中Windows,UNIX,Linux,Mas OS,Android,ios等是常见的操作系统
    2.操作系统是直接运行于硬件之上的计算机程序
    3.操作系统用于管理和控制计算机的硬件和软件资源
    4.操作系统为用户软件的开发提供必要的服务和接口
    B.现代计算机系统架构
    操作系统--进阶操作系统
    BIOS-Base Inout&Output System(需要注意的是 BIOS不是软件,而是固件,固件是固化于硬件中的程序,在硬件出厂前已经烧写固定)
    1.BIOS是计算机上电后第一个运行的程序
    2.BIOS首先检查硬件状态,检测通过后立即进行硬件初始化
    3.BIOS会在内存中建立中断向量表(提供硬件访问的方法)
    4.BIOS最后将控制权交由主引导程序执行

           BIOS全称为Base Input & Output System,也即基本的输入输出系统,BIOS是计算机上电后第一个运行的程序,BIOS固化在一个专用的芯片ROM中,因此,BIOS程序称为固件程序,我们暂且认为它是不可改变的,出厂后就已经固化了,而要让一个计算机运行起来,必须要给硬件配置配置一些基本的参数,这些参数存储在CMOS芯片中,这个芯片由外部电池供电,其中的参数也是可以修改的。

           存储BIOS程序的ROM的映射地址区间为:0xF0000 - 0xFFFFF,而BIOS程序的入口地址为0xFFFF0,由于硬件的特殊设计,加电后,程序就从0xFFFF0处开始执行,也即开机就运行BIOS程序。

           

    下面开始进入BIOS的运行过程:

      计算机加电后,BIOS程序开始执行,它先检测各种硬件的状态,如内存条是否插好,硬盘是否插好等,只有那些维持计算机运行的硬件具备了,BIOS才会继续向下运行,例如,内存条没有插好,这时的计算机可谓缺胳膊少腿,这时BIOS是不会向下运行的,因为没有内存就根本不会维持计算机的运行,因此BIOS也没有向下运行的必要了。由于我们研究的主要内容是操作系统,所以我们暂且不关心硬件,认为它是完备的。BIOS完成硬件的检测后,就将CMOS芯片中存储的参数配置到各种硬件中,这时整个系统才算基本正常,下面BIOS继续运行,它在内中的特定地址上建立中断向量表,这些中断向量可以认为是一系列的函数,这些函数提供了访问硬件的手段,我们自己写的软件“调用”这些函数即可,这里的“我们自己写的软件”可以认为是裸机程序,也是非常底层的程序,而这里的“调用”方法也比较特殊。接下来,BIOS要完成一项更重要的使命--加载主引导程序,它按照用户的设置,去扫描整个系统中的各个存储介质(光驱、软驱、USB、硬盘等),当发现主引导程序后,便将其加载到内存的0x7c00的位置处,然后将控制权交给主引导程序,至于为什么是加载到0x7c00处,可以认为这是x86系统的约定。到此为止,BIOS的使命也就完成了。

      以上讲了BIOS加载主引导程序的故事,但是BIOS是怎么找到主引导程序的呢?主引导程序位于存储介质的主引导区(MBR:Master Boot Record),它位于存储介质的开头处,总的大小为512字节,而最后两个有效字节为0x55aa,BIOS就是通过判断这最后两个字节是不是0x55aa来确定主引导区的,位于0x55aa之前的那些程序就是主引导程序了。

      主引导程序也有自己的使命,它先进行一些软件的初始化,例如将CPU内的一些寄存器写入合适的值,然后主引导程序开始加载操作系统内核,并最终将控制权交给内核,而内核将完成更细致的系统初始化,然后就可以开始运行真正的用户程序了,到此为止,整个系统就运行起来了。


    系统启动流程(X86)
    操作系统--进阶操作系统
    BIOS的运行机制
    1.BIOS存储于ROM中,地址映射为0xF0000-0xFFFFF(实地址)
    2.BIOS的入口地址为:0xFFFF0
    3.硬件电路的特殊设计使得开机后,CPU从0xFFFF0出开始执行
    BIOS的最后使命
    1.按照用户设置扫描各个存储介质(光驱,软驱,U盘等)
    2.发现主引导区后,将主引导区中的主引导程序载入内存
    3.主引导程序在内存中的入口地址为0x7c00
    4.将控制权交由主程序执行(jmp 0x7c00)
    Q:BIOS如何在存储介质中寻找主引导区?如何判断引导区中有没有主引导程序?
    主引导区(MBR:Master Boot Record)
    位置:位于存储介质的最开始位置处,大小为512字节
    特点:前512字节的最后2个有效字节为0x55aa
    数据:0x55aa之前的数据被视为主引导程序
    改进之后的系统启动流程
    操作系统--进阶操作系统
    小结
    1.BIOS是计算机上电后第一个运行的程序
    2.BIOS进行必要的初始化,并加载运行主引导程序
    3.主引导程序位于存储介质的最开始512字节处
    4.主引导程序负责后续初始化,并加载运行操作系统内核

  • 相关阅读:
    二进制插入 牛客网 程序员面试金典 C++ Python java
    二进制小数 牛客网 程序员面试金典 C++ Python
    二叉树中和为某一值的路径 牛客网 程序员面试金典 C++ Python
    Python matplotlib pylab 画张图
    Python matplotlib pylot和pylab的区别
    Ubuntu 16.04 curl 安装 使用
    Ubuntu 16.04 菜单栏 换位置 挪到左边 挪到下边
    Python 模块feedparser安装使用
    Ubuntu 16.04 下 旋转显示器屏幕 竖屏显示
    从 callback 到 promise
  • 原文地址:https://www.cnblogs.com/lh03061238/p/13838688.html
Copyright © 2020-2023  润新知