实现一个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

     
     

OS实现流程草稿的更多相关文章

  1. Endeavour OS 安装流程中的一些小问题的对应的解决方案

    安装窗口显示"系统未连接到互联网",但实际上已经连接了 Endeavour OS 检测系统是否连接上互联网的方式就是 ping 一个目标站点,这个站点默认写入在 /etc/cala ...

  2. android 流量统计

    1 android通过架构流量统计TrafficStats类可以直接获得     获得总流量受理TrafficStats.getTotalRxBytes(),     获得总传出流量TrafficSt ...

  3. 01 . Go语言的SSH远程终端及WebSocket

    Crypto/ssh简介 使用 下载 go get "github.com/mitchellh/go-homedir" go get "golang.org/x/cryp ...

  4. Ucore lab1实验报告

    练习一 Makefile 1.1 OS镜像文件ucore.img 是如何一步步生成的? + cc kern/init/init.c + cc kern/libs/readline.c + cc ker ...

  5. 从四个方向分析我们可以从linux学到什么

    我们真正关心的是自身可以从这个生态圈中获得些什么?说得更直白一点就是,我们可以从linux系统上面学到点什么,它对我们个人的成长和发展有哪些积极的因素.个人觉得,完全可以通过下面四个维度并结合自己的兴 ...

  6. 在Mac OS X使用Elasticsearch的基本流程

    这篇日志的目的非常easy,就是记录一些主要的流程.要在OS X上使用Elasticsearch,事实上非常easy,在这里:https://www.elastic.co/downloads/elas ...

  7. RT-Thread OS的启动流程

    1.RT进入main之前, SystemInit函数初始化时钟. 2.main函数位于startup.c文件中.进行两个工作 系统开始前,rt_hw_interrupt_disable关闭所有中断. ...

  8. mac os catalina mongodb最新安装流程

    1.brew安装 不推荐用brew,因为现在mongodb闭源了,brew里已经搜索不到mongodb,不过还是可以用brew安装的,这篇就不写了. 2.官网下载 直接去官网下载一个zip,解压完放到 ...

  9. Mac OS 10安装CocoaPods流程

    一.简介 什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPod ...

随机推荐

  1. 数据可视化之PowerQuery篇(十)如何将Excel的PowerQuery查询导入到Power BI中?

    https://zhuanlan.zhihu.com/p/78537828 最近碰到星友的一个问题,他是在Excel的PowerQuery中已经把数据处理好了,但是处理后的数据又想用PowerBI来分 ...

  2. python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

    https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...

  3. How to change the text color in the terminal

    You can open the file ~/.bashrc and then choose the force_color_prompt=yes otherwise, you can change ...

  4. Go的100天之旅-02基本语法

    基本语法 Go关键字 下面是Go的25个关键字: break default func interface select case defer go map struct chan else goto ...

  5. SqlServer同义词

    最近在项目中遇到跨库操作具有相同表结构的数据表的问题.(A库中的数据表a和B库中的数据表b,两者表结构相同) 跨库操作中我们一般是为了实现不同数据库中表字段信息,字段状态等实时同步,可能很多人会想到使 ...

  6. 获取字符串指定字符的第n次出现位置

    create function uf_findx (@text nvarchar(max),@find_x varchar(200),@find_n int)returns intasbegin -- ...

  7. elementUI 级联选择框 表单验证

    今天遇到了一个需求:进行级联选择框的表单验证,突然有点懵逼.感觉应该和正常的表单验证类似,但不是很清晰,后来还是在博客园找到了相关参考文章. 先上代码: <el-form :model=&quo ...

  8. python 中文乱码 list 乱码处理

    list 乱码 data_list = ["中文"] print str(data_list).decode("string_escape") mysql 获取 ...

  9. 第十章 函数式接口&Stream流

    10.1.函数式接口 10.1.1.概述 有且仅有一个抽象方法的接口,并且可以通过在类上标注@FunctionalInterface注解进行检测,建议自定义的函数式接口都加上这个注解 10.1.2.函 ...

  10. MacOS下JDK8的安装与配置

    微信搜索"艺术行者",关注并回复关键词"jdk8"获取安装包和API文档资料! 一.安装环节 1.打开网页 https://www.oracle.com/jav ...