引导是计算机开始输入时常采用的一种手段。计算机启动后,由设备来实现少量指令和数据的输入,然后由它们再输入其他程序,这种过程称为引导。微型计算机中的引导程序可将用户通过键盘打入的程序及数据引导输入到随机存储器中。

简介引导程序(英语:boot loader)位于电脑或其他计算机应用上,是指引导操作系统的程序。引导程序启动方式及程序视应用机型种类而不同。例如在普通的个人电脑上,引导程序通常分为两部分:第一阶段引导程序位于主引导记录(MBR),用以引导位于某个分区上的第二阶段引导程序,如NTLDR、BOOTMGR和GNU GRUB等。

BIOS引导完成后,boot loader就接手初始化硬件设备、创建存储器空间的映射,以便为操作系统内核准备好正确的软硬件环境。

简单的boot loader的虚拟汇编码,如其后的八个指令:

第一:将P寄存器的值设为8

第二:检查纸带(paper tape)读取器,是否已经可以进行读取

第三:如果还不能进行读取,跳至1

第四:从纸带读取器,读取一byte至累加器

第五:如为带子结尾,跳至8

第六:将寄存器的值,存储至P寄存器中的数值所指定的地址

第七:增加P寄存器的值

第八:跳至1

但是随着计算机操作系统越来越复杂,位于主引导记录的空间已经放不下引导操作系统的代码,于是就有了第二阶段的引导程序,而MBR中代码的功能也从直接引导操作系统变为了引导第二阶段的引导程序。对于UEFI系统,已由EFI应用程序(即EFI分区中的.efi文件)取代MBR和PBR,UEFI会加载引导程序的.efi文件,再由引导程序加载操作系统。MBR和PBR程序通常是用汇编语言编写的,会调用BIOS中断调用;而.efi文件则是PE格式的文件,可用C语言编写。

在计算机中, 引导或者引导程序是计算控制系统的一个初始化过程。引导过程可以使“硬引导”,如:开机通电后硬件诊断;也可以使“软引导”,此时会跳过开机自启。一些系统中软启动过程中,RAM可以不清零。软启动和硬启动都可以通过硬件发起,如按下电源开关;也可以通过软件命令来进行。当正常、有效的运行环境达到后,启动完成。引导装载程序是计算机开机自检完成后装载操作系统或者其他系统软件的计算机程序。自检完成后运行引导装载程序,然后再加载并运行软件。引导装载程序可以从永存体(硬盘)装载到主内存中。一些老计算机中,引导装载程序可以从打孔卡、穿孔纸带、或者磁带中加载到主内存中。启动装载程序加载且执行完成启动的程序。和POST程序相似,启动装置代码可以存储在永久存储体位置中,也可以为硬连线的形式。 当代通用计算机中,启动过程通常包含开机自检、定位以及初始化外围设备、然后找到、加载、并开始一个操作系统。睡眠和休眠过程不包含启动。一些嵌入式系统不要求可察的启动序列,可以直接运行存储在ROM中的可运行程序。所有计算机系统都是状态机,只有重启才可能返回到初始状态。 引导在英文中为"boot",是bootstrap的缩写,源自于短语"pull oneself up by one's bootstraps",即"靠自己振作起来"。如果大部分软件需要通过其他已运行的程序加载到计算机中,则必须存在一个将初始软件加载到计算机中的机制。 各种类型的只读内存可以解决此类的矛盾体——允许计算机带有可被擦除的启动程序。随着ROM容量的变大,更加精细的启动程序得以实现。1

第一台商业计算机早期可编程商业计算机,如UNIVAC I和IBM 701,会包含执行完整的输入输出操作的指令。相同的硬件逻辑可以被用来加载穿孔卡片的内容,或者其他输入媒体,如磁鼓或者磁带,这些引导程序可以通过按键启动。IBM701 计算机拥有一个 "Load" 按钮,此按钮可以将打孔卡片的前 36个bit字读入到主存中。左18-bit 半字被视为指令而执行,通常用来将额外的字读入到内存中。随后被加载的引导程序被执行,反过来无需更多地人为操作从媒介中加载更大的程序到内存中。随后计算机跳转到内存位置001,读取存储的第一个指令。第一条指令一般是相同的:将前80个内存位置的信息移到一个汇集区域(打孔卡片2,3,4...)。一旦信息被移动到这些区域后,机器跳转到080位置(读取一个卡片),然后下一个卡片将被读取,并处理相关信息。 同期的其他IBM计算机有着相似的特性。IBM1401系统使用读卡器从打孔卡片中加载一个程序。打孔卡片中存储的80个字符被读入到内存地址001~080。2

个人电脑启动设备启动设备(英语:boot device)是指操作系统可被从其上加载的设备。现代计算机的UEFI和BIOS都支持从多种设备中启动,如:硬盘(装有MBR或者GPT引导)、光驱、USB大容量存储设备(U盘、SD卡等),或者从网卡启动(使用PXE)。

通常,固件(UEFI 和 BIOS)都会允许用户设置启动顺序(英语:boot order)。如果将启动顺序设为“第一:DVD 驱动器;第二:硬盘驱动器”,固件会先尝试从 DVD 驱动器启动,如果失败(比如驱动器中没有 DVD)则会再尝试从本地的硬盘驱动器启动。

假设有一台 PC,硬盘上装有Windows 10,用户可以设置启动顺序为上述顺序,然后插入LinuxLive CD,这样就可以直接试用Linux。这样的过程就是一种双重引导,即计算机加电自检(POST)后允许用户选择所用的操作系统。这个例子中用户是通过 CD 的插入、移除来选择操作系统的,更常见的情况是直接使用键盘从BIOS或UEFI的引导菜单(英语:boot menu)中选择,引导菜单通常可以通过在 POST 时按Delete或F11进入。2

智能手机现代的智能手机具备操作系统,系统在启动之前需要通过boot loader启动,手机启动的时候基带执行初始化,然后引导系统内核,直到系统启动。智能手机生产厂商通常在出厂时锁定了手机的boot loader,以防止用户误操作损坏了系统文件造成手机功能异常,部分厂商会给开发者或普通用户发放boot loader解锁码,这通常需要步骤众多的申请,锁定boot loader能部分有效阻止恶意程序对手机造成的破坏,部分用户或开发者会通过解锁boot oader以获得更多的功能和权限,这通常会带来使用风险。2

本词条内容贡献者为:

何星 - 副教授 - 上海交通大学

计算机引导程序从rom开始,引导程序相关推荐

  1. 计算机术语列是,计算机术语-RAM ROM

    计算机术语 abp: address bit permuting,地址位序列改变 atc(access time from clock,时钟存取时间) bsram(burst pipelined sy ...

  2. ram计算机中术语,计算机术语-RAM ROM类

    abp: address bit permuting,地址位序列改变 atc(access time from clock,时钟存取时间) bsram(burst pipelined synchron ...

  3. 计算机ram和rom的工作原理,ram和rom的区别

    不管你是在买手机还是买电脑,都会听到两个比较关键的词,那就是ram和rom,商家在介绍半天后,有时我们也会听得云里雾里不知道什么意思,究竟ram和rom是什么呢?它们有什么不一样呢?下面就来聊一聊ra ...

  4. 计算机ram和rom的特点的是,什么是ROM和RAM?它们各有什么特点?

    rom是指只读存储器,是以非破坏性读出方式工作:特点:只能读出而不能写入信息.ram是指随机存取存储器,是与CPU直接交换数据的内部存储器:特点:随机存取.易失性.对静电敏感.访问速度快.需要刷新. ...

  5. 计算机内存大小rom,rom容量(ram容量和rom容量谁大)

    在手机上,ram是指运行内存,现在手机运行内存最大就是到4g,rom是指手机操作系统和机身存储内存,有的手机可以放入sd,也就相当于是增大了手机的rom.也可以说. ROM(Read Only Mem ...

  6. 【计算机系统结构】~ ROM/PROM/EPROM/E2PROM/FLASH、SOC 片上系统、总线、CPU 处理器、Cache、DDR、ARM 体系结构、虚拟内存、内核 kernel

    1. ROM/PROM/EPROM/E2PROM/FLASH ROM 指的是"只读存储器",即 Read-Only Memory.这是一种线路最简单半导体电路,通过掩模工艺, 一次 ...

  7. 计算机RAM和ROM

    RAM是随机存取存储器(random access memory),是计算机内部存储器中的一种,也是其中最重要的,计算机和手机中一般把其叫做(运行)内存,它的速度要比硬盘快得多,所以用运行程序在RAM ...

  8. 计算机ROM术语,计算机RAM amp; ROM常见词汇

    小编为大家整理了计算机RAM & ROM常见词汇,希望对你有帮助哦! 计算机RAM & ROM常见词汇: ABP: (Address Bit Permuting,地址位序列改变) AT ...

  9. 计算机中dram rom,SRAM、DRAM、硬盘、ROM、RAM、EPROM、FLASH区别和联系

    在文章的开始,曾经说过一般行的数目比列的数据少,原因就是:行越少用户刷新的时间就会越少. ROM.RAM的区别: ROM(只读存储器或者固化存储器) RAM(随机存取存储器) ROM和RAM指的都是半 ...

最新文章

  1. Android Fragment详解(二):Fragment创建及其生命周期
  2. ZYI PHP授权系统开源
  3. 自然语言处理中的预训练模型 —— 邱锡鹏老师的演讲记录
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的社团管理系统
  5. php怎么限制文章标题的字数,文章标题在WordPress中显示的长度即字数如何限制呢?...
  6. 联想ThinkPad E420安装7450M的显卡驱动后进入不了系统,试了4个系统都不..
  7. 直方图规定化(匹配)
  8. Leecode:数组中的最长山脉
  9. 2021-2027全球与中国外卖盒市场现状及未来发展趋势
  10. JS 案例 树形菜单
  11. Python爬虫之Scrapy框架系列(12)——实战ZH小说的爬取来深入学习CrawlSpider
  12. 从mysql中查询关键字_mysql中查询常用的关键字
  13. 三大优势让百度云智能推荐产品与众不同
  14. CentOS7 安装Tomcat
  15. 最新出炉 csdn最牛最全JMeter+Ant+Jenkins接口自动化测试框架(Windows)
  16. web前端大作业--黑色电影资讯博客网页设计(电影主题-HTML+CSS+JavaScript)
  17. 矩阵A^TA(A'A)和AA^T(AA')的性质
  18. Pynq_Z2-hdmi输出图像、文字流程(VDMA)
  19. 自适应音频电压放大器
  20. 汽车租赁系统(Java)

热门文章

  1. java基础 第6章类再生
  2. 【WiFi模组】乐鑫ESP32 基于ESP-IDF的原生SDK二次开发
  3. OJ每日一练——闰年
  4. c语言基础学习笔记(三):条件判断语句if-else嵌套和switch-case语句
  5. 人脸识别智能门禁打造智慧社区广告新玩法
  6. 新闻编辑html,移动互联网环境下HTML5新闻编辑特点分析.doc
  7. 5G的应用场景你知道几个?
  8. ZCMU-1550-AA
  9. 数据中心如何提高运维效率?数据中心综合能效管理解决方案——安科瑞 严新亚
  10. php 没有访问权限,PHP出现操作文件没有权限怎么办?