linux 0.11 内核学习 -- bootsect.s, 万里长征第一步

呵呵,终于将linux 0.11 下面的boot文件夹下的三个文件读完,下面是相关注释,没有汇编基础的人也是可以读的。废话少说,下面就是linux的源码了。

参考资料 Linux内核完全注释.pdf

??????????? 网上相关资料

!时间? : 2010-1-14!工作 : 阅读linux 0.11 源码中的bootsect.s

!总体linux启动过程如下:!!当PC得电源打开之后,80x86结构的CPU将自动进入实时模式,并且从0xFFFF0开始自动执行程序代码,这个地址通常是!ROM-BIOS的地址。PC机的BIOS将执行系统的检测,并且在物理地址的0处开始初始化中断向量。此后,它将可启动设备的第一!扇区(512字节)读入内存的绝对地址0x7c00处,并且跳转到这个地方。启动设备通常是软盘或者是硬盘。这里的叙述是很简单!的,但是这已经足够理解内核的初始化的工作过程。!!linux的0x9000由BIOS读入到内存的绝对地址0x7c00(31k)处,当它被!执行时就会把自己移动到绝对地址0x90000处,并把启动设备中后2kb字节代码(boot/setup.s)读入到内存0x90200处,而内核的!其他部分则被读入到从地址0x10000的开始处。在系统的加载期间显示信息?Loading...",然后将控制权传递给boot/setup.s中!的代码.这是另一个实时模式汇编程序。!!系统启动部分识别主机的某些特性以及vga卡的类型。如果需要,它会要求用户为控制台选择显示模式。然后整个系统从地址!0x10000移至0x0000处,进入保护模式病跳转至系统的余下部分。此时所有的32位运行方式的设置启动被完成:idt,gdt,ldt被!加载,处理器和协处理器也确认,分页的工作也设置好了。最终将调用init/main.c中的main程序。上述的操作的源代码是在!boot/head.s中的。这可能是整个内核中最有诀窍的代码了。注意如果在上述任何一步中出现了一步错误。计算机就会死锁。在!操作系统还没有完全运转之前是处理不了错误的。!!!bootsec.s文件说明如下:!bootsec.s代码是磁盘的引导块程序,驻留在磁盘的第一扇区。在PC机加电rom bios自检之后,引导扇区由bios加载到内存0x7c00!处,然后将自己移动到内存0x90000处。该程序的主要作用是首先将setup模块从磁盘加载到内存中,紧接着bootsect的后面位置!(0x90200),然后利用bios中断0x13中断去磁盘参数表中当前引导盘的参数,然后在屏幕上显示"Loading system..."字符串。再者!将system模块从磁盘上加载到内存0x10000开始的地方。随后确定根文件系统的设备号,如果没有指定,则根据所保存的引导盘的每!类型和种类,并保存设备号与boot_dev,最后长跳转到 setup程序开始处0x90200执行setup程序。!!!注释如下:!! SYS_SIZE is the number of clicks (16 bytes) to be loaded.! 0x3000 is 0x30000 bytes = 196kB, more than enough for current! versions of linux!SYSSIZE = 0x3000!!以下是这一段代码的翻译。!?bootsect.s!bootsect.s被bios启动程序加载至0x7c00 31k处,并将自己移动到地址0x90000 576k处,并跳转到那里。!!它然后利用bios中断将setup直接加载到自己后面0x90200 576.5k,并将system加载到地址0x10000处。!!注意 : 目前的内核系统最大的长度限制为8*65536 512k字节,即使是在将来这也应该没有问题的。我想让他保持简单明了,!这样512k的最大内核长度应该足够了,尤其是这里没有向minix中一样包含缓冲区高速缓冲。!!加载程序已经做的足够简单了,所以持续的独处错误将导致死循环。只能手工重启。只要可能,通过一次取出所有的扇区,加载的!过程可以做的很快.!!!!?bootsect.s??(C) 1991 Linus Torvalds!! bootsect.s is loaded at 0x7c00 by the bios-startup routines, and moves! iself out of the way to address 0x90000, and jumps there.

bootsect Linux,linux_bootsect选读.doc相关推荐

  1. linux定制环境变量,定制Linux系统环境变量.doc

    定制Linux系统环境变量.doc (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 7.9 积分 Linux是一个多用户的操作系统.每个用户登录系统 ...

  2. linux是发展历史,linux发展历史.doc.doc

    linux发展历史.doc Linux发展历史 "Hello everybody out there using minix--I'm doing a (free) operating sy ...

  3. 滨江学院c语言期中考试试题,南信大滨江学院linux期末作业.doc

    南信大滨江学院linux期末作业.doc 滨江学院 课程设计报告题 目 Linux 课程设计 院 系 计 算 机 系 专 业 计科三班 学生姓名 学 号 2014年12月22日一. Shell编程题1 ...

  4. linux东软培训答案,东软Linux实验报告.doc

    东软Linux实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  5. dl388g7安装linux,HP DL388 G7做OLIRAIDBIOS设置linux安装概要.doc

    HP DL388 G7做OLIRAIDBIOS设置linux安装概要.doc Hp ilo配置开机怎么进的 第一个界面按any 然后还没出现阵列卡信息的时候赶紧按F8 我就是这样进去的 不知道有没有什 ...

  6. linux python wps doc 转 txt_耗时一周尝试踩坑,整理了一些Python实用知识点

    很零碎的知识点,有的是踩过的坑,不成系统,但是绝对很有用,知道的可以回顾下,不太了解的可以多学习下 1.Python连接MySQL加编码 记得加charset,没加的话部署Linux服务器运行可能有中 ...

  7. Linux下读取doc,docx文件

    如果是Linux Desktop发行版本,可以下载wps for linux docx文件 利用python-docx包 test.py # -*- coding:utf-8 -*- import s ...

  8. 浙江省计算机一级linux,浙江省大学计算机一级Linux浙江省大学计算机三级Linux网络管理应用.doc...

    --(完美WORD文档DOC格式,可在线免费浏览全文和下载)值得下载! 一级Linux基础考试大纲 基本要求 1.具有计算机的基础知识: 2.了解微型计算机系统的基本组成: 3.了解操作系统的基本功能 ...

  9. linux命令修改内容怎么回退,linux命令(修改).doc

    linux命令(修改) 第一组 用户管理类命令 1 添加用户useradd [选项] 用户名范例:useradd davidls /home vim /etc/passwd 2 修改密码passwd ...

最新文章

  1. ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
  2. C语言 从指定文件中依次读出字符直至文件结束
  3. Android Studio最全插件整理
  4. php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php
  5. python核心编程第六章练习6-12
  6. java base64 显示不完整_如何解决CAD图纸显示不完整、图纸无效?一分钟教你,不允许错过...
  7. 千寻和省cors精度对比_测量员新手上路攻略:解析省CORS和千寻CORS账号区别及其如何选择运用...
  8. centOS7.6安装MySQL8
  9. [导入]Nhibernate学习 资料
  10. MYSQLmy-innodb-heavy-4G.cnf配置文件注解
  11. AJAX技术文案沙雕,vue-router 中使用 keep-alive 控制 ajax 请求的缓存策略(二)
  12. html5中的h1,HTML5语义 - 产品列表中的h1用法
  13. 【Pytorch】保存神经网络模型
  14. 什么是句柄,句柄有什么作用
  15. 医院设备管理系统方案/案列/软件/APP/小程序/网站
  16. MySql Workbench 8.0汉化插件分享
  17. 区块链技术视频资料下载(不断更新中)
  18. Linux命令——timeout
  19. 欧洲最大笔融资,骗过软银!印度AI公司被曝造假,自动开发背后是真人码农
  20. 智能卡(Smart Card)服务修复工具(解决无法读取外接设备的问题)

热门文章

  1. mysql 主键互换_MySQL-什么方法可以快速的交换两条记录的ID?
  2. new thread后会阻塞主程序吗_阻塞模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?...
  3. 设计灵感|各种孟菲斯风格海报,让你眼花缭乱
  4. 炫彩渐变海报版式海报
  5. 灵感加油站|当设计师没有灵感时怎么办?
  6. UI素材资源|Material风格的插图,有品位的素材
  7. 一流设计师导航|16map,一款强大且智能的设计师导航网站
  8. mysql 流量带宽_流量与带宽
  9. python爬火车票是不是违法_python利用selenium+requests+beautifulsoup爬取12306火车票信息...
  10. windows 启动exe程序前注入dll(c++)