ch1-系统启动.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
- * - Operating System 哈工大计算机科学与技术学院 软件基础教研室 操作系统 授课教师:李治军 Operating System lizhijun_os@hit.edu.cn 综合楼404室 第1章 系统启动 Chapter 1: Power On 操作系统课,我们希望学会什么? 所有目标都要从“明白操作系统”开始 控制器 纸带 0 1 1 1 0 1 0 明白操作系统从“明白系统启动”开始 打开电源开关后发生了什么? 打开电源?计算机开始工作 计算机怎么工作? 又是谁决定了计算机是那样工作的? 计算模型 1936年,英国数学家A.C.图灵提出了一种模型 人 笔 纸 伟大的创举往往都是从朴素的想法开始的! 从图灵机到通用图灵机 控制器 纸带 0 1 1 1 0 1 0 图灵机 通用图灵机 一个会做一道菜的厨师 舀2大碗面放入盆中 打6个鸡蛋放入盆中 盆中加入500克水 将盆中的物质搅拌均匀 做成等厚度的饼状物 大火蒸15分钟 一个能看懂菜谱的厨师 将这个过程描述: 菜谱 厨师 菜谱1 菜肴1 菜肴2 菜谱2 这样的厨师才具有竞争力 控制器 纸带 数据对象 设置控制器动作 修改控制器 控制器状态 处理 从通用图灵机到计算机 伟大想法的工程实现… 又一个伟大的发明: 冯·诺依曼存储程序思想 mov ax, [100] …… 100: 0 IP mov ax, [100] IR ax 0 存储器 运算器、控制器 就是那个读写指针 1946年提出 存储程序的主要思想:将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理 计算机由五大部件组成:输入设备、输出设备、存储器、运算器、控制器 打开电源,计算机发生了什么? 可以打开电源了… 计算模型?我们要关注指针IP及其指向的内容 计算机刚打开电源时,IP=? 由硬件设计者决定! 看看x86 PC x86 PC刚开机时CPU处于实模式 开机时,CS=0xFFFF; IP=0x0000 寻址0xFFFF0(ROM BIOS映射区) 检查RAM,键盘,显示器,软硬磁盘 将磁盘0磁道0扇区读入0x7c00处 设置cs=0x07c0,ip=0x0000 和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP),和保护模式不一样! ROM BIOS 00xFFFFFFFF 0xF0000 0x100000 ROM BIOS映射区 0x7c00处存放的代码 就是从磁盘引导扇区读入的那512个字节 引导扇区就是启动设备的第一个扇区 启动设备信息被设置在CMOS中… 开机时按住del键可进入启动设备设置界面,可以设置为光盘启动! CMOS: 互补金属氧化物半导体(64B-128B)。用来存储实时钟和硬件配置信息。 因此,硬盘的第一个扇区上存放着开机后执行的第一段我们可以控制的程序。 操作系统的故事从这里开始… 引导扇区代码: bootsect.s .globl begtext,begdata,begbss,endtext,enddata,endbss .text //文本段 begtext: .data //数据段 begdata: .bss //未初始化数据段 begbss: .text entry start //关键字entry告诉链接器“程序入口” start: mov ax, #BOOTSEG mov ds, ax mov ax, #INITSEG mov es, ax mov cx, #256 sub si, si sub di,di rep movw jmpi go, INITSEG .text等是伪操作符,告诉编译器产生文本段,.text用于标识文本段的开始位置。 此处的.text、.data、.bss表明这3个段重叠,不分段! 此条语句就是0x7c00处存放的语句! BOOTSEG = 0x07c0 INITSEG = 0x9000 SETUPSEG = 0x9020 将0x07c0:0x0000处的256个字移动到0x9000:0x0000处 jmpi go, INITSEG go: mov ax,cs //cs=0x9000 mov ds,ax mov es,ax mov ss,ax mov sp,#0xff00 load_setup: //载入setup模块 mov dx,#0x0000 mov cx,#0x0002 mov bx,#0x0200 mov ax,#0x0200+SETUPLEN int 0x13 //BIOS中断 jnc ok_loa

文档评论(0)

精品报告 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档