简介

学习操作系统原理最好的方法是自己写一个简单的操作系统。

GrapeOS是一个非常简单的x86多任务桌面操作系统,源代码只有四千行,非常适合用来学习操作系统原理。

源码地址:https://gitee.com/jackchengyujia/grapeos

视频教程地址:https://www.bilibili.com/video/BV1nv4y1b7Nj/

课程讲义地址:https://www.cnblogs.com/chengyujia/category/2279524.html

GrapeOS操作系统QQ1群:643474045(已满)QQ2群:123758575

截图

GrapeOS桌面:



GrapeOS资源管理器:



GrapeOS记事本:



主要知识点

实模式

保护模式

大分辨率画面模式

磁盘及文件系统

内存分页

内存管理

中断管理

定时控制

键盘控制

鼠标控制

消息机制

图形绘制

图层和窗口管理

多任务管理

内核任务

用户任务

进程与线程

系统调用

四千行代码写的桌面操作系统GrapeOS完整代码开源了的更多相关文章

  1. 自己动手从零写桌面操作系统GrapeOS系列教程——13.向MBR中写入程序

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 前面铺垫了这么久,今天终于开始写程序了.本讲将介绍3个逐步深入但非常简单的程序,一方面是让大家熟悉开发流程,另一方面是顺便解决前面遇到的CPU占 ...

  2. 自己动手从零写桌面操作系统GrapeOS系列教程——16.封装打印字符串函数

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们向屏幕打印字符串"GrapeOS"用了十几行汇编代码,如果要输出的字符比较多,这种方法太繁琐了.本讲我们将打印 ...

  3. 自己动手从零写桌面操作系统GrapeOS系列教程——18.外设和IO

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.外设和I/O接口 前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设.常见的外设有鼠标.键盘.显示器.硬 ...

  4. 自己动手从零写桌面操作系统GrapeOS系列教程——23.从硬盘读取文件

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 本讲代码文件为boot.asm,要读取的文件为data.txt. 一.在FAT16系统中读取文件的流程 在GrapeOS中用到的文件少且小,所有 ...

  5. 自己动手从零写桌面操作系统GrapeOS系列教程——21.汇编语言写硬盘实战

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们学习了用汇编语言读硬盘,本讲我们来学习用汇编语言写硬盘.同样也是设计一个简单的实验,实验内容为: 在内存中准备一段有特征的512字 ...

  6. 自己动手从零写桌面操作系统GrapeOS系列教程——5.GrapeOS开发环境测试

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们已经安装配置了开发环境,在本讲中我们来测试一下开发环境是否正常. 我们的测试流程如下: 1.在Visual Studio Code ...

  7. 自己动手从零写桌面操作系统GrapeOS系列教程——6.电脑启动过程介绍

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 按一下电脑上的电源按钮,电脑就启动了,不一会儿电脑屏幕上就出现了登录界面或直接进入了桌面. 这是一个很日常的场景,但有时候会有个疑问:电脑内部是 ...

  8. 自己动手从零写桌面操作系统GrapeOS系列教程——11.MBR介绍

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 前面我们介绍过电脑的启动过程: 上电->BIOS->MBR(boot)->loader->kernel->交互界面 ...

  9. 自己动手从零写桌面操作系统GrapeOS系列教程——12.QEMU+GDB调试

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 写程序不免需要调试,写不同的程序调试方式也不同.如果做应用软件开发,相应的程序调试方式是建立在有操作系统支持的基础上的.而我们现在是要开发操作系 ...

  10. 自己动手从零写桌面操作系统GrapeOS系列教程——14.屏幕显示原理与文本模式

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.屏幕显示原理 电脑显示器屏幕是由很多很小的像素组成的.每个像素就像是一个小灯泡,在屏幕上一排一排的整齐排列着.只要能控制每个像素的颜色就能显 ...

随机推荐

  1. 驱动开发:内核解析PE结构节表

    在笔者上一篇文章<驱动开发:内核解析PE结构导出表>介绍了如何解析内存导出表结构,本章将继续延申实现解析PE结构的PE头,PE节表等数据,总体而言内核中解析PE结构与应用层没什么不同,在上 ...

  2. html+css简单易懂的轮播图实现

    实现轮播图感觉好复杂啊,这个比较简单的实现了 但是还是没有怎么理解代码,只能先发出来慢慢学习学习了 话不多说,直接上代码 <!DOCTYPE html> <html lang=&qu ...

  3. Vue3 之 响应式 API reactive、 effect源码,详细注释

    Vue3之响应式 API reactive. effect源码,详细注释 目录 一.实现响应式 API:reactive.shallowReactive.readonly.shallowReadonl ...

  4. 分享6个SQL小技巧

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介 经常有小哥发出疑问,SQL还能这么写?我经常笑着回应,SQL确实可以这么写.其实SQL学起来简单,用起来也 ...

  5. 【对比】ChatGPT Plus与ChatGPT实操对比体验

    前言 缘由 20美刀大洋充值ChatGPT Plus,必须分享让它物尽其用 应单位追求科技前沿需求,以及花钱就是香的原则.遂找了远在他乡的高中老同学,斥资20美刀为公司身先士卒怒充会员.秉承分享至上原 ...

  6. CF1829H Don't Blame Me题解

    题意: 给定一个长度为 \(n\) 的数组,选择它的一个子序列(不一定要连续的),问有多少种选法使得它们 AND 的值的二进制表示法中有 \(k\) 个 \(1\). 思路: 这个题就是一个简单的 D ...

  7. AcWing 4486. 数字操作题解

    题目描述 给定一个整数 \(n\),你可以对该数进行任意次(可以是 \(0\) 次)变换操作. 每次操作为以下两种之一: 将整数 \(n\) 乘以任意一个正整数 \(x\). 将整数 \(n\) 替换 ...

  8. 用git bash 生成 hexo 博客文件,报错node: command not found

    有git bash,也安装了node.js, 为什么在bash里面会说node: command not found? 电脑有段时间不能上网,下载了360系统急救箱,删了很多文件,包括一些exe文件, ...

  9. MIT 6.5840 Raft Implementation(2A, Leader Election)

    Raft实现思路+细节 2A 任务分解 总体来说,2A中主要的任务就是选出领导人,在选出领导人的时候,我们要遵循下图. 在2A中,由于并没有出现日志复制,所以我们只需要考察两者的任期是否相等,以及接收 ...

  10. .NET for Apache Spark 调试

    .NET for Apache Spark 调试 官方文档:在 Windows 上部署 .NET for Apache Spark 应用程序 | Microsoft Learn 打开"新命令 ...