二十Summer

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

什么是操作系统

  • 应用软件:Word,Matlab...
  • 操作系统:Windows,Linux...  
  • 计算机硬件:CPU,内存,显存...               
  • 操作系统是计算机硬件和应用之间的一层软件,方便我们使用硬件(显存等),是我们可以高效地使用硬件(如开多个终端等)。
  • 管理哪些硬件:  
    • CPU管理,内存管理,终端管理,磁盘管理,文件管理(以上五个是基本部分)
    • 网络管理,电源管理,多核管理

 


 

揭开钢琴的盖子

  • 图灵机-->通用图灵机-->计算机(冯·诺依曼存储程序思想)
  • 计算机是如何工作的?取指执行。
  • 打开电源,计算机执行的第一句指令是什么?
    • x86 PC刚开机时CPU处于实模式(和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP,和保护模式不一样))
    • 开机时,CS=0xFFFF,IP=0x0000
    • 寻址0xFFFF0(ROM BIOS映射区)
    • 检查RAM,键盘,显示器,软硬磁盘
    • 将磁盘0磁道0扇区(512字节,操作系统的引导扇区)读入0x7c00处
    • 设置cs=0x07c0,ip=0x0000

                 

  • 0x7c00处存放的代码:就是从磁盘引导扇区读入的那512个字节。
    • 引导扇区就是启动设备的第一个扇区,开机时按住del键可进入启动设备设置界面,可以设置为光盘启动;
    • 启动设备信息被设置在CMOS(互补金属氧化物半导体,用来存储实时钟和硬件配置信息)中..
    • 因此,磁盘的第一个扇区存放着开机后执行的第一段我们可以控制的程序。
  • 引导扇区代码:bootsect.s
    • 为什么这里是汇编语言呢?视频中给出的讲法是,如果是高级语言比如C语言,写一个int a,那么我们也不知道a的具体地址是什么,但在引导扇区中,我们需要对这个代码有一个完整的控制,而汇编语言可以做到这一点。

          

 

   movw是按字移动的,移动256个字就是移动512个字节,所以是把第一个扇区的所有内容再搬到0x90000处。

   go代表一个偏移量(就是个数字),而go和INITSEG组成的跳转地址就是在以0x90000开始的代码段中go的地址。

   把从第二个扇区开始的4个扇区(setup扇区)读到0x90200的位置。

          

 

      在屏幕上显示msg1的内容,如果想更改的话,就改掉msg1:..的内容,再修改mov cx,#24(字符串长度)。

      再读入system模块。最后跳转到setup地址,即ip=0,cs=0x9020,与第一张ppt也是一致的。

    


 

 操作系统启动

  

  扩展内存:1M以后的内存。

  mov [2], ax:[2]是间接寻址,段寄存器中是0x9000,所以表示内存地址0x90002。

   总结:开机就做了两件事,bootsect(读进来),setup(初始化)。

 

 

   把0x90000开始的代码移动到0x0的地方(所以之前从0x7c00向0x90000挪,就是为了给现在挪过来的代码留有一定的空间,不然可能冲掉)。

     

      

 

   setup做了什么:初始化,将system框架挪到0x0的地方,开启保护模式,跳到0x0的地方继续执行。

       

 

        

 

       

 

   mem_init中为什么上面是非空闲的?放了操作系统的汇编代码等等。

  参数从哪来的,0x90002里面,setup中初始化的内存空间大小。

 总结

   主要讲了boot(将操作系统从磁盘读进来),setup(获得一些参数,启动保护模式),head(初始化gdt表,初始化页表,跳到main),main(一堆初始化),mem_init(哪些是空闲内存,硬盘长什么样子)。

  一件事:读入内存;另一件事:初始化。

 

posted on 2023-03-11 21:53  naiveSummer  阅读(15)  评论(0编辑  收藏  举报