L2-开始揭开钢琴的盖子

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

哈工大计算机科学与技术学院软件基础教研室操作系统授课教师:李治军OperatingSystemslizhijun_os@hit.edu.cn综合楼404室L2.揭开钢琴的盖子OpentheOS!-2-OperatingSystem从打开电源开始…不要总等着别人告诉你答案,尽量自己去寻找…这神秘的黑色背后发生着什么?…打开电源计算机要开始工作了从知识和常识出发进行思索…计算机怎么工作?这是我们最最基本,也最最重要的常识…-3-OperatingSystem从白纸到图灵机控制器纸带0111010计算机怎么工作?说到底就是一个计算模型1936年,英国数学家A.C.图灵提出了一种模型人笔纸在纸带上读入3;在纸带上读入2;在纸带上读入+;控制器查表知道是5;在纸带上写下5控制器纸带2+3控制器纸带2+3控制器纸带52+33+2=5-4-OperatingSystem从图灵机到通用图灵机控制器纸带0111010图灵机通用图灵机一个会做一道菜的厨师舀2大碗面放入盆中打6个鸡蛋放入盆中盆中加入500克水将盆中的物质搅拌均匀做成等厚度的饼状物大火蒸15分钟一个能看懂菜谱的厨师将这个过程描述:菜谱厨师菜谱1菜肴1菜肴2菜谱2这样的厨师才具有竞争力控制器纸带数据对象设置控制器动作修改控制器控制器状态处理-5-OperatingSystem从通用图灵机到计算机伟大想法的工程实现…又一个伟大的发明:冯·诺依曼存储程序思想movax,[100]……100:0IPmovax,[100]IRax0存储器运算器、控制器就是那个读写指针1946年提出存储程序的主要思想:将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理计算机由五大部件组成:输入设备、输出设备、存储器、运算器、控制器-6-OperatingSystem打开电源,计算机执行的第一句指令什么?-7-OperatingSystem可以打开电源了…计算模型⇒我们要关注指针IP及其指向的内容计算机刚打开电源时,IP=?由硬件设计者决定!看看x86PC(1)x86PC刚开机时CPU处于实模式(2)开机时,CS=0xFFFF;IP=0x0000(3)寻址0xFFFF0(ROMBIOS映射区)(4)检查RAM,键盘,显示器,软硬磁盘(5)将磁盘0磁道0扇区读入0x7c00处(6)设置cs=0x07c0,ip=0x0000和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP),和保护模式不一样!ROMBIOS0x000000000xFFFFFFFF0xF00000x100000ROMBIOS映射区-8-OperatingSystem0x7c00处存放的代码就是从磁盘引导扇区读入的那512个字节引导扇区就是启动设备的第一个扇区启动设备信息被设置在CMOS中…开机时按住del键可进入启动设备设置界面,可以设置为光盘启动!CMOS:互补金属氧化物半导体(64B-128B)。用来存储实时钟和硬件配置信息。因此,硬盘的第一个扇区上存放着开机后执行的第一段我们可以控制的程序。操作系统的故事从这里开始…-9-OperatingSystem引导扇区代码:bootsect.s.globlbegtext,begdata,begbss,endtext,enddata,endbss.text//文本段begtext:.data//数据段begdata:.bss//未初始化数据段begbss:entrystart//关键字entry告诉链接器“程序入口”start:movax,#BOOTSEGmovds,axmovax,#INITSEGmoves,axmovcx,#256subsi,sisubdi,direpmovwjmpigo,INITSEG.text等是伪操作符,告诉编译器产生文本段,.text用于标识文本段的开始位置。此处的.text、.data、.bss表明这3个段重叠,不分段!此条语句就是0x7c00处存放的语句!BOOTSEG=0x07c0INITSEG=0x9000SETUPSEG=0x9020将0x07c0:0x0000处的256个字移动到0x9000:0x0000处-10-OperatingSystemjmpigo,INITSEGgo:movax,cs//cs=0x9000movds,axmoves,axmovss,axmovsp,#0xff00load_setup://载入setup模块movdx,#0x0000movcx,#0x0002movbx,#0x0200movax,#0x0200+SETUPLENint0x13//BIOS中断jncok_load_setupmovdx,#0x0000movax,#0x0000//复位int0x13jload_setup//重读jmpi(jumpintersegment段间跳转):cs=INITSEG,ip=go为call做准备!启动盘boot扇区setup的4个扇区system模块(OS代码)0x13是BIOS读磁盘扇区的中断:ah=0x02-读磁盘,al=扇区数量(SETUPLEN=4),ch=柱面号,cl=开始扇区,dh=磁头号,dl=驱动器号,es:bx=内存地址-11-OperatingSystem读入setup模块后:ok_load_setupOk_load_setup://载入setup模块movdl,#0x00movax,#0x0800//ah=8获得磁盘参数int0x13movch,#0x00movsectors,cxmovah,#0x03xorbh,bhint0x10//读光标movcx,#24movbx,#0x0007movbp,#msg1movax,#1301int0x10//显示字符movax,#SYSSEG//SYSSEG=0x1000moves,axcallread_it//读入system模块jmpi0,SETUPSEG7是显示属性!bootsect.s中的数据//在文件末尾sectors:.word0//磁道扇区数msg1:.byte13,10.ascii“Loadingsystem...”.byte13,10,13,10显示这24个字符将是大家的第一个“创举”!转入0x9020:0x0000执行setup.sboot工作:读setup,读system…-12-OperatingSystemread_it//读入system模块read_it:movax,escmpax,#ENDSEGjbok1_readretok1_read:movax,sectorssubax,sread//sread是当前磁道已读扇区数,ax未读扇区数callread_track//读磁道...system模块可能很大,要跨越磁道!为什么读入system模块还需要定义一个函数?ENDSEG=SYSSEG+SYSSIZESYSSIZE=0x8000//该变量可根据Image大小设定(编译操作系统时)引导扇区的末尾//BIOS用以识别引导扇区.org510.word0xAA55//扇区的最后两个字节否则会打出非引导设备可以转入setup执行了,jmpi0,SETUPSEG

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功