zoukankan      html  css  js  c++  java
  • OS实现流程草稿

    实现一个OS需要现在网上搜索

    1. 不要在Windows环境下写
    2. nasm等汇编编译器的语法
    3. bois中断函数使用
    4. 内存分布
    5. 描述符
    6. 实模式与保护模式
      1. 从实模式到保护模式比较难,可以从网上找一些代码能运行自己理解就行了
      2. 页表
    7. 硬盘与软盘的结构
      1. 制作软盘:高级语言编写工具或者直接只用Linux下的命令行工具
    8. 系统算法
    9. 与硬件有关的操作(端口,相应中断等)都用汇编写了,逻辑在C中写,必要时调用汇编中的函数,接着再调用C语言封装好的函数
      1. 汇编应该实现的操作(被C语言调用)
        1. 端口的读入读出

             

    流程

    1. 先写一个Hello world=》测试
    2. 将Hello world改写为bootloader和kernel=》测试
    3. 在kernel中实现实模式到保护模式-》测试
    4. 可以用C语言了(因为C语言需要堆栈,所以需要在kernel中配置堆栈的描述符和内存空间(定义512或者其他),关于GDT的修改都是在进入保护模式之前)
    5. 将显卡从字符模式切换到图形模式(调用BIOS函数)=》测试
    6. 界面
      1. 将显卡的图形模式再转为调色板模式=》测试绘制背景图形
      2. 绘制字体和字符串(Windows NT的内核就是通过将调试信息绘制在屏幕上实现Windows NT内核的调试的,又因为画字体不方便,于是写了GDI相关的API,Windows NT的GUI就是在内核态的,Linux没有这样子使用,它使用的还是文本模式)
      3. 绘制鼠标
      4. 图像分层(桌面图形绘制(消耗CPU))
    7. 中断描述符=》测试(键盘与鼠标)
      1. 鼠标的移动
    8. 时钟
    9. 内存
      1. 检测可用内存
      2. 进程
        1. 借助TSS

         

  • 相关阅读:
    Mysql关键字冲突的解决方案
    js日期时间函数
    Mysql字符串字段中是否包含某个字符串,用 find_in_set
    mysql中 where in 用法
    Best of Best系列(4)——AAAI
    Best of Best系列(5)——IJCAI
    Best of Best系列(3)——ICML
    Best of Best系列(6)——SIGIR
    Best of Best系列(2)——ICCV
    Best of Best系列(1)——CVPR
  • 原文地址:https://www.cnblogs.com/megachen/p/12636360.html
Copyright © 2011-2022 走看看