zoukankan      html  css  js  c++  java
  • 进阶操作系统

    什么是操作系统?

    你可能这样认为,windows、unix、linux、macos、Android、ios....都是操作系统。这样的理解并没有错,只不过太肤浅了。

    操作系统是直接运行于硬件之上的计算机程序

    操作系统用于管理和控制计算机的硬件与软件资源

    操作系统为用户软件的开发提供必要的服务和接口

    现代计算机系统的架构:

     BIOS——Base Input & Output System

    BIOS是计算机上电后第一个运行的程序

    BIOS首先检测硬件状态,检测通过后立即进行硬件初始化

    BIOS会在内存中建立中断向量表(提供硬件访问的方法)

    BIOS最后将控制权交由主引导程序执行

    注意:BIOS不是软件(software),而是固件(firmware)

    固件是固化于硬件中的程序,在硬件出厂前已经烧写固定

    系统启动流程(X86架构)

     BIOS加载主引导程序,主引导程序加载操作系统内核,那么BIOS是由谁加载它运行的呢?

    BIOS的运行机制:

    ——BIOS存储于ROM中,地址映射为0xF0000——0xFFFFF(实地址)

    ——BIOS的入口地址为:0xFFFF0

    ——硬件电路的特殊设计使得:

    开机后,cpu从0xFFFF0处开始执行。

    从上面可以看出,没有任何其他程序来加载BIOS,它是由硬件电路的特殊设计使得,开机后,cpu从0xFFFF0处开始执行。

    BIOS的最后使命

    按照用户设置扫描各个存储介质(光驱、软驱、U盘等)

    发现主引导区后,将主引导区中的主引导程序载入内存

    主引导程序在内存中的入口地址为0x7c00

    将控制权交由主引导程序执行(jmp 0x7c00)。控制权怎么交出去?就是通过一条汇编指令jmp实现的。

    BIOS如何在存储介质中寻找主引导程序?

    如何判断主引导区有没有主引导程序

    主引导区(MBR:Master Boot Record)
    ——位置:位于存储介质的最开始位置处,大小为512字节
    ——特点:前512字节的最后2个有效字节为0x55aa(判断主引导程序是否合法的标志)
    ——数据:0x55aa之前的数据被视为主引导程序

    问题1:是不是每个存储介质的前512个字节,就是主引导程序
    不是。
    问题2:如果已经判断出前512个字节就是主引导区了,那么是不是主引导区里面存储的数据就是合法的主引导程序呢?
    不一定

    更详细的系统启动流程(X86架构)

    小结:
    BIOS是计算机上电后第一个运行的程序
    BIOS进行必要的初始化,并加载运行主引导程序
    主引导程序位于存储介质的最开始512字节处
    主引导程序负责后续初始化,并加载运行操作系统内核

  • 相关阅读:
    P1265 公路修建 最小生成树
    P1991 无线通讯网 最小生成树
    Stock Chase 拓扑
    Rank of Tetris 拓扑排序+并查集
    P1169 [ZJOI2007]棋盘制作 DP悬线法
    P4147 玉蟾宫 二维DP 悬线法
    P1341 无序字母对 欧拉回路
    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索dfs
    BSTestRunner插件的用法.py
    Selenium
  • 原文地址:https://www.cnblogs.com/-glb/p/11600596.html
Copyright © 2011-2022 走看看