30天操作系统映像文件的组成以及启动时的运行流程
第三天, 一共写了4份代码:ipl10.asm,引导区代码asmhead.asm 进入32位模式bootpack.c 操作系统naskfunc, bootpack.c需要调用的汇编函数
这四部分代码最后编译成了系统盘,也就是操作系统映像。
这个操作系统映像被我们放在了软盘里。
电脑开机后,BIOS程序读区软盘的512字节内容到内存的0x7c00处去执行。
这512四节就是映像文件的第一部分代码ipl10.ams的机器码,引导区的代码,
这个代码主要是把软盘上的系统映像除了启动区程序的其他部分复制到内存的0x8200处。 复制完成后,asmhead.asm的机器码所在内存地址为0xc200。
所以,ipl10.asm最后,跳转到了0xc200处,去执行了asmhead.asm,也就是系统映像的第二部分。
asmhead.asm的机器码所在的内存地址为0xc200处,所以asmhead.asm中有一句:org 0xc200
asmhead.asm 同样还是先复制。把映像的第三部分bootpack.c以及第四部分naskfunc复制到了内存的0x00280000处。然后跳转到了0x0028 0000+ 0x0000001b处,去执行bootpack.c.这就是说跳转到了c代码中去执行。到这里,我们就可以在这个c代码中,去实现操作系统的功能了。
也就是说,用c来完成操作系统的功能。
当然,asmhead.asm还完成了cpu工作模式切换为32位,开启地址线A20,内存使用全局段内存管理表 GDT来管理的方式,这些设置,都是为了能够使用C语言来编写代码所做的准备。
总结:
操作系统映像一共四部分组成:引导区代码,32位模式切换代码,操作系统代码,依赖的汇编函数库。
引导区程序首先被 BIOS程序复制到内存0x7c00处运行。
引导区程序又把32位模式切换代码asmhead,操作系统代码bootpack.c,依赖的汇编函数库 naskfunc复制到内存0x8200处,复制完成后,asmhead执行代码的地址为0xc200,所以,引导区程序的最后,为了去执行asmhead,就跳转到了0xc200处去执行asmhead.
asmhead执行完本来就顺序执行bookrack.c就可以了,但是因为我们要用C 来完成的操作系统的功能,所以需要做一些设置,比如将cpu切换到32位模式,使用全局段内存记录表的形式来管理内存管理。在全局段内存管理表GDT中设置了代码段的地址为0x00280000,所以,就需要将bootpack.c复制到0x00280000处了,这种内存管理的方式,要求把操作系统bootpack.c代码一定要放在GDT规定的内存地址0x00280000处才安全。
设置完,按规定地址复制完,就跳转到了 0x00280000+ 0x0000001b处去执行bootpack.c了。
其实代码中的2*8:0x0000 001b 值的就是0x00280000+ 0x0000001b。
诺基亚和老年机杠上了,又来一款作为曾经的手机霸主,诺基亚现在的处境也是让人不胜唏嘘。除了前几年发布过几款中端机型之外,这两年诺基亚是和老年机杠上了,连续推出了几款面向老年用户的机型。近日在某东又上架了一款型号为
Linux之tr命令将字符进行替换压缩和删除,tr命令可以对来自标准输入的字符进行替换压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。命令语法tr选项字符串1字符串
Linux之lastlog命令显示系统中所有用户最近一次登录信息,lastlog命令用于显示系统中所有用户最近一次登录信息。lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上
linux之fping命令fping检测主机是否存在,fping命令fping类似于ping,但比ping强大。与ping要等待某一主机连接超时或发回反馈信息不同,fping给一个主机发送完数据包后,马上给
Linux之lastb命令列出登入系统失败的用户相关信息。lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于varlog目录下,名称为btmp的文件
纪念袁隆平,不仅要十里长街的送别,还要珍惜手中的那碗米饭袁老走了!是看我们吃过午饭才走的,但是他好像从未离开!我突然想起了一句诗有的人死了,他还活着1964年,袁隆平开始研究杂交水稻,1974年,第一个杂交水稻品种南优2号正式培育完成,
世界经济衰退,中国为何崛起?过去的2020年,按中国的干支纪年,是庚子年。每个庚子年,注定都是极不平凡的一年,都会面临前所未有之大变局。1900年,庚子年,那一年,中国在八国联军的铁蹄之下,主权尽失,割地赔款
津门大侠霍元甲死因之谜因吐血而亡,79年后开馆验明真相1909年,一个英国人嘲讽国人是东亚病夫,并在上海摆开擂台,百姓十分气愤,这时霍元甲出来迎战,没想到到了公开比赛那天,英国人却早已逃之夭夭。赫赫有名的霍元甲,在创办了精武会后,他的
历史中和珅与纪晓岚是何关系?和珅被赐死后,纪晓岚结局如何?提起和珅就想起,像小丑一样围着乾隆转的胖子,还时不时被大学士纪晓岚讽刺挖苦。作为乾隆身边的这两位大臣,和珅和纪晓岚到底是何关系?真的是一对喜欢互怼的欢喜冤家吗?和珅如何从一个权臣变
唐伯虎闻名江南为何不走仕途?腰缠万贯风流成性?九个妻妾太离谱作为江南四大才子的老大唐伯虎,才华横溢却一生没有入朝为官,传闻他腰缠万贯,还曾娶了九房妻妾,他自称桃花庵主,过着看似逍遥的生活。那么真实的唐伯虎真的像传闻中那样风流成性吗?他是如何
与诸葛亮齐名,刘伯温助朱元璋打江山,聪明绝顶为何难逃悲惨命运有句话叫三分天下靠的是诸葛亮,统一江山靠的是刘伯温。诸葛亮是三国时间蜀汉政权建立的重要贡献者,在他的帮助下,刘备从卖草席的变成一个帝国CEO而刘伯温却帮助朱元璋,从乞丐的身份转变为