实现一个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. 数据可视化之powerBI基础(十四)Power BI中创建联动切片器

    https://zhuanlan.zhihu.com/p/67564062 进行数据分析时,每个分析维度并不总是独立的,比如省份是一个维度,城市也是一个维度,而这两个维度之间是有逻辑关系的,那么在进行 ...

  2. Video 自动播放

    先说ios ios之前的政策是视频只能在用户主动操作后才能播放,且播放时必须全屏. 随着 iOS 10 的正式发布,Safari 也迎来了大量更新,首先划出重点:1)iOS 10 Safari 支持特 ...

  3. 学习Java8系列-Lambda

    Lambda演进 小王在公司正在开发一个学生管理系统,产品经理向他提出一个需求,要筛选出年龄大于15的学生,于是小王写出了以下代码:     public static List<Student ...

  4. 小书MybatisPlus第4篇-表格分页与下拉分页查询

    本文为mybatis系列文档的第4篇,前三篇请访问下面的网址. 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小 ...

  5. Webpack前世今生

    在正式介绍Webpack之前,先给大家说明一下前端为什么需要模块化 1.为什么需要模块化 1.1JS原始功能 在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码 ...

  6. Python API 操作Hadoop hdfs详解

    1:安装 由于是windows环境(linux其实也一样),只要有pip或者setup_install安装起来都是很方便的 >pip install hdfs 2:Client——创建集群连接 ...

  7. 工程能力UP | LightGBM的调参干货教程与并行优化

    这是个人在竞赛中对LGB模型进行调参的详细过程记录,主要包含下面六个步骤: 大学习率,确定估计器参数n_estimators/num_iterations/num_round/num_boost_ro ...

  8. gitlab的还原

    源服务器: ip: 192.168.0.199 系统:CentOS7.2 内核: 3.10.0-327 gitlab版本: gitlab-ce-8.0.5 新服务器: ip: 192.168.0.19 ...

  9. Antd DatePicker 语言项-显示中文月份

    官网:https://ant.design/components/date-picker-cn/ 如果要显示中文,官网是这么指导的: 但是,设置后并没有生效!原因是默认的中文local文件并没有月份的 ...

  10. 数据结构C语言实现----顺序查找

     建立上图的一个txt文件: 1004 TOM 1001002 lily 951001 ann 931003 lucy 98 用一个c程序读入这个表一个结构体数组中: 结构体如下: //学生数据结构体 ...