Tinix总结

      Tinix是《自己动手写操作系统》一书的源码。这个操作系统采用的加载设备是软盘,格式为FAT12。包括启动扇区boot.bin、加载代码loader.bin和内核代码kernel.bin三部分。

      boot.bin大小为512字节,固化写入在软盘的启动扇区中,它首先清屏,显示提示信息,复位软驱,然后到软驱的根目录区搜寻文件名为loader.bin的文件,如果找到则结合Fat表将loader.bin加载到内存中去,然后跳转到loader.bin的首地址开始执行。loader.bin首先检测内存信息并保存,然后复位软驱,从软驱中搜寻并加载kernel.bin文件。然后卸载软驱,加载默认的gdt,关中断,开启20号地址线,进入保护模式。默认的gdt有三个段——4GB的平坦代码段、4GB的平坦数据段和视频段。代码段和数据段是ring0的,视频段是ring3的。进入保护模式后,首先显示内存信息,然后根据内存信息分配并初始化PDE和PTE,然后开启分页机制。接着初始化kernel.bin文件,由于这个文件是Elf格式,需要将相关节加载到有效位置。最后跳转到kernel.bin的首地址开始执行。

      kernel.bin首先重新初始化gdt,先sgdt,然后将原始gdt赋值到新的gdt中,然后初始化gdt中tss,其他任务的ldt描述符。然后初始化8259a,装载所有的idt,最后加载gdt和idt。接着加载tss,初始化所有任务的寄存器信息、优先级,初始化时钟,开始任务调度。Tinix将所有任务分为内核(ring0)、任务(ring1)、用户作业(ring3)三个级别,设置了基于分段模式的存储保护。键盘中断实现时,首先将收到的字符全部保存到系统缓冲区中,然后通过一个分发任务实现字符的分发。分发任务根据当前的激活屏幕,将字符分发到当前的激活屏幕中,区分控制字符,允许用户通过控制字符进行相关操作。系统调用实现时通过软中断进行内核,并通过寄存器设定系统调用类别。

      Tinix的加载使用FAT12格式的软盘,镜像的扩充很方便,但是由于没有设计驱动框架,对设备的扩展支持欠佳。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值