MacOS环境-手写操作系统-00-开篇 简单成品介绍

简介: MacOS环境-手写操作系统-00-开篇 简单成品介绍

1.起源背景

文章写于两年前的 MacBookAir(2015)

目前笔者为 MacBookPro M1 (抽查了部分 都运行正常)

Github项目地址: https://github.com/wdkang123/MyOperatingSystem

MacOS X86架构(x新版的arm架构的我没有 所以大家自行测试)

VirtualBox

C/C++环境 (Xcode必装)


在MacOS下(当前是BigSur) 通过java打包 C/C++和汇编 写的一个简单的操作系统 (附带学习笔记和代码)


大学时学了《操作系统》结果无意间听到 在清华大学 这门课竟然要手写一个操作系统 其实手写一个操作系统 是每一个编程爱好者的梦想吧!


当时一搜书籍 大家都推荐 《30自制操作系统》 事实上 我个人觉得 这本书不错 但是还差点意思 里边有很多作者打包好的工具 帮助你来完成


当时我只有mac 没有win 这点就很难受 (mac的工具包我也下载了 奈何macos版本太高了 已经运行不了了)


看到了win版本的 我励志要在mac上实现(其实也没什么区别 大同小异吧)


结果真的是处处碰壁 前几节还好 磕磕绊绊用 dd 这些命令搞出来了 到了c和汇编配合的时候 我就蒙了 为此卡住了好久


后来看到了课程(老师的环境也是macos) 又看到了一些希望 可惜老师是要借助Ubuntu系统 来回切换 在乌班图上编译完成 再导入到macos 通过java打包 最后运行


这点让我很不舒服(··· 只是想纯纯的在macos上编译)


再一番折腾后 终于发现了用交叉变异的环境 解决了这个麻烦


2.需要前置

c/c++ 基础知识

汇编基础

Makfile最好听过

一台mac (我当前是X86架构的BigSur)

当然·· 操作系统的基础知识 这个是必备的

原来老师的课程地址是:https://study.163.com/course/introduction.htm?courseId=1003169025 搭配食用更加

3.硬件软件需求

MacOS X86架构


VirtualBox


C/C++环境 (Xcode必装)


4.代码目录

01-java汇编最小操作系统
 
   02-读写软盘
 
   03-突破512字节的限制
 
   04-保护模式
 
   代码图片上传
 
   05-保护模式超强寻址
 
   06-C语言结合汇编
 
   07-C语言绘制系统界面
 
   08-C语言调色板(绘制系统界面)
 
   09-绘制字体
 
   10-绘制鼠标
 
   11-建立中断
 
   12-处理键盘中断
 
   13-内核实现鼠标中断
 
   14-挪动鼠标
 
   15-内核管理检测可用内存
 
   16-内核管理解析内存状态
 
   17-内存管理算法实现
 
   18-图层分层技术
 
   19-编译自动化(久违了)
 
   20-图层叠加优化
 
   21-MessageBox
 
   22-突破连续读取72个扇区
 
   23-消除闪烁计数器闪烁
 
   24-消除闪烁鼠标闪烁
 
   25-定时器功能
 
   26-光标闪烁
 
   27-修改分辨率
 
   28-输入文本和移动窗体
 
   29-进程切换
 
   30-进程互相切换
 
   31-进程自动切换
 
   32-挂起和恢复
 
   33-多任务多窗口
 
   34-进程优先级
 
   35-控制台
 
   36-Tab键切换窗口
 
   37-切换窗口键盘输入
 
   38-shift键响应
 
   39-caps键响应
 
   40-进程消息通讯和回车键处理
 
   41-mem第一个控制台程序
 
   42-cls
 
   43-dir命令和写入文件
 
   44-运行简单程序(无文档)
 
   45-C语言开发APP
 
   46-系统与应用内存隔离
 
   47-系统与应用内存交叉
 
   48-让内核从错误中恢复
 
   49-进程优先级转换
 
   50-防范缓冲区溢出和死循环
 
   51-创建窗口api
 
   52-窗口图形绘制
 
   53-关闭窗口api
 
   54-鼠标操作窗体
 
   55-内核时钟和更多颜色
 
   56-多窗口多进程
 
   57-无限控制台进程
 
   58-不锁死控制台启动进程
 
   59-LDT局部描述表
 
   60-文件api
 
   61-毕业了 三个小程序


5.部分截图


image.png




6.后记感想

原来老师的文章链接有一些挂掉了 后边看情况在补吧


同时项目当中所有代码我都在MacOS BigSur (X86)下编译通过、且运行通过了


并且在虚拟机测试运行没有问题(有一些章节有小bug 比如打字会出现一些莫名符号 都不要紧 在后边会修复)


不得不佩服清华大学的学生(泛指所有好大学)


一个学期的操作系统课 竟然能写一个有模有样的操作系统


内心真的是佩服不已


同时也真的感到自己能力的不足 与清北的学生不是一点点的差距


努力吧


长风破浪会有时 直挂云帆济沧海


相关文章
|
15小时前
|
Ubuntu Java C语言
MacOS环境-手写操作系统-07-C语言绘制系统界面
MacOS环境-手写操作系统-07-C语言绘制系统界面
6 1
|
14小时前
|
存储 前端开发 Java
MacOS环境-手写操作系统-18-图片分层技术
MacOS环境-手写操作系统-18-图片分层技术
7 0
|
14小时前
|
Ubuntu Java iOS开发
MacOS环境-手写操作系统-19-编译自动化
MacOS环境-手写操作系统-19-编译自动化
6 0
|
13小时前
|
编译器 API C语言
MacOS环境-手写操作系统-45-C语言开发应用程序
MacOS环境-手写操作系统-45-C语言开发应用程序
9 0
|
12小时前
|
存储 API C语言
MacOS环境-手写操作系统-46,47-C语言开发应用程序
MacOS环境-手写操作系统-46,47-C语言开发应用程序
8 0
|
13小时前
|
存储 iOS开发 MacOS
MacOS环境-手写操作系统-33-多任务多窗口
MacOS环境-手写操作系统-33-多任务多窗口
7 0
|
13小时前
|
小程序 iOS开发 MacOS
MacOS环境-手写操作系统-44-运行简单的程序
MacOS环境-手写操作系统-44-运行简单的程序
7 0
|
14小时前
|
Java C语言 iOS开发
MacOS环境-手写操作系统-11-建立中断机制
本文详细介绍了如何为内核建立中断机制,涉及8259A中断控制器的初始化、中断信号的传递过程以及中断描述符表的设置。通过汇编和C语言代码展示了如何处理中断,特别是键盘和鼠标中断,最后给出了编译和运行的步骤。 摘要由CSDN通过智能技术生成
7 0
|
13小时前
|
编解码 C语言 iOS开发
MacOS环境-手写操作系统-27-修改分辨率
MacOS环境-手写操作系统-27-修改分辨率
6 0
|
14小时前
|
存储 算法 C语言
MacOS环境-手写操作系统-15-内核管理 检测可用内存
MacOS环境-手写操作系统-15-内核管理 检测可用内存
8 0