![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统真象还原 自制操作系统
文章平均质量分 88
大一本科2020级霍格沃茨学院在读学生 自制操作系统的记录博客 魔法师学员
Love 6
腾讯WXG在职后台小鹅
展开
-
《操作系统真象还原》从零开始自制操作系统 全流程记录
文章目录博客链接博客链接《操作系统真象还原》第一章 ---- 安装Vmware Station 安装Ubuntu 装载配置Bochs 安装Vmware tools 开始乘帆历险!《操作系统真象还原》第二章 ---- 编写MBR主引导记录 初尝编写的快乐 雏形已显!《操作系统真象还原》第三章 ---- 完善MBR 尝汇编先苦涩后甘甜而再战MBR!《操作系统真象还原》第四章 ---- 剑指Loader 刃刺GDT 开启新纪元保护模式 解放32位《操作系统真象还原》第五章 ---- 轻取物理内存容原创 2021-08-15 01:37:25 · 18362 阅读 · 6 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (shell相关文件)
文章目录专栏博客链接shell相关文件编写完的buildin_cmd.c编写完的buildin_cmd.h编写完的shell.c编写完的shell.h专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接shell相关文件编写完的buildin_cmd.c#include "buildin_cmd.h"#include "../fs/file.h"#include "../fs/fs.h"#include "debug.h"#include "string.h"#原创 2021-08-15 15:14:22 · 388 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (device相关文件)
文章目录专栏博客链接device相关文件编写完的console.c编写完的console.h编写完的ide.c编写完的ide.h编写完的ioqueue.c编写完的ioqueue.h编写完的keyboard.c编写完的keyboard.h编写完的timer.c编写完的timer.h专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接device相关文件编写完的console.c#include "console.h"#include "print.h"#include原创 2021-08-15 15:11:39 · 553 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (fs相关文件)
文章目录专栏博客链接fs相关文件编写完的dir.c编写完的dir.h编写完的file.c编写完的file.h编写完的fs.c编写完的fs.h编写完的inode.c编写完的inode.h编写完的super_block.h专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接fs相关文件编写完的dir.c#include "dir.h"#include "ide.h"#include "fs.h"#include "inode.h"#include "memory.h"原创 2021-08-15 15:04:03 · 411 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (userprog相关文件)
文章目录专栏博客链接userprog相关文件编写完的exec.c编写完的exec.h编写完的fork.c编写完的fork.h编写完的process.c编写完的process.h编写完的syscall-init.c编写完的syscall-init.h编写完的tss.c编写完的tss.h专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接userprog相关文件编写完的exec.c#include "exec.h"#include "global.h"#include "原创 2021-08-15 14:53:46 · 643 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (lib相关文件)
文章目录专栏博客链接lib/kernel相关文件编写完的bitmap.c编写完的bitmap.h编写完的io.h编写完的list.c编写完的list.h编写完的print.h编写完的print.S编写完的stdio-kernel.c编写完的stdio-kernel.hlib/user相关文件编写完的syscall.c编写完的syscall.hlib直接相关子文件编写完的stdint.h编写完的stdio.c编写完的stdio.h编写完的string.h编写完的string.h专栏博客链接《操作系统真原创 2021-08-15 14:42:00 · 712 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (thread相关文件)
文章目录专栏博客链接thread相关文件编写完的switch.S编写完的sync.c编写完的sync.h编写完的thread.c编写完的thread.hshell相关文件编写完的buildin_cmd.c编写完的buildin_cmd.h编写完的shell.c编写完的shell.h专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接thread相关文件编写完的switch.S[bits 32]section .textglobal switch_toswitch_t原创 2021-08-15 02:41:30 · 479 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现(kernel相关文件)
文章目录专栏博客链接编写完的debug.c编写完的debug.h编写完的global.h编写完的init.c编写完的init.h编写完的interrupt.c编写完的interrupt.h编写完的kernel.h编写完的kernel.S编写完的main.c编写完的memory.c编写完的memory.h专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接编写完的debug.c#include "debug.h"#include "print.h"#include "int原创 2021-08-15 02:29:39 · 811 阅读 · 0 评论 -
《操作系统真象还原》从零开始自制操作系统 自写源码实现 (基础汇编文件 + 编译链接命令 + MakeFile)
文章目录专栏博客链接编写完的bochsrc.disk编写完的boot.inc编写完的Mbr.S编写完的Loader.S编写完的xxd.sh编写完的MakeFile常用编译链接命令专栏博客链接《操作系统真象还原》从零开始自制操作系统 全章节博客链接编写完的bochsrc.diskmegs : 32romimage: file=/home/cooiboi/bochs/share/bochs/BIOS-bochs-latestvgaromimage: file=/home/cooiboi/b原创 2021-08-15 02:20:47 · 986 阅读 · 0 评论 -
《操作系统真象还原》第十五章 ---- 实现系统交互 操作系统最终章 四十五天的不易与坚持终完结撒花 (下)(遗憾告终)
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知实现exec实现exec的思路与启发实现系统调用wait 和 exit实现管道相关查阅博客链接Linux下exec函数详解本书中错误勘误部分缩写熟知EHDR Elf HeaderElf头PHDR Programme Header 程序头表实现exec这里看到了elf头 说实话 其实挺害怕的 没想到在操作系统编写路上的最后一篇 又遇到了差点劝退我的elf头 我现在都能想到 梦回第五六章 由汇编转到0xc0001500的main.原创 2021-08-15 01:35:51 · 1408 阅读 · 3 评论 -
《操作系统真象还原》第十五章 ---- 实现系统交互 操作系统最终章 四十五天的不易与坚持终完结撒花(中)
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知实现shell(仅完成了输出+快捷键+解析字符)编写完的shell.c(仅完成了输出+快捷键+解析字符)编写完的shell.h(仅完成了输出+快捷键+解析字符)稍加修改的keyboard.c(intr_keyboard_handler)修改完的main.c修改完的MakeFilemake all 验证成果(仅完成了输出+快捷键+解析字符)实现shell(添加了系统调用 + 实现了内建函数)添加系统调用(syscall.c)添加系统调用(syscall.h)编原创 2021-08-13 22:46:41 · 787 阅读 · 4 评论 -
《操作系统真象还原》第十五章 ---- 实现系统交互 操作系统最终章 四十五天的不易与坚持终完结撒花(上)
文章目录相关查阅博客链接本书中错误勘误闲聊时刻实现fork实现fork的介绍实现fork的原理编写完的thread.c(fork_pid)编写完的thread.h(struct task_struct)编写完的memory.c(get_a_page_without_opvaddrbitmap)编写完的fork.c编写完的fork.h修改完的syscall.c修改完的syscall.h修改完的syscall-init.c修改完的syscall-init.h修改完的thread.c(thread_init)修改原创 2021-08-13 10:46:08 · 907 阅读 · 0 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(总结篇)
文章目录闲聊时刻第十四章代码总览编写完的fs.c(fs/fs.c)编写完的fs.h(fs/fs.h)编写完的dir.c(fs/dir.c)编写完的dir.h(fs/dir.h)编写完的file.c(fs/file.c)编写完的file.h(fs/file.h)编写完的inode.c(fs/inode.c)编写完的inode.h(fs/inode.h)编写完的MakeFile闲聊时刻哈哈 这一篇博客就先不写相关博客链接 和 那个 错误勘误了这一篇博客主要就是写点话和把第十四章写的所有代码给出来可能原创 2021-08-11 20:31:51 · 610 阅读 · 0 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(下二)
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知实现遍历目录编写完的fs.c(sys_opendir)编写完的dir.c(dir_read)编写完的fs.c编写完的main.cmake all 验证成果实现删除目录编写完的dir.c(dir_is_empty && dir_remove)编写完的fs.c(sys_redir)修改完的main.cmake all 验证成果实现任务的工作目录编写完的fs.c(get_parent_dir_inode_nr)编写完的fs.c(get_child_原创 2021-08-11 19:54:52 · 552 阅读 · 1 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(下一)
文章目录相关查阅博客链接本书中错误勘误实现文件删除编写完的inode.c(inode_delete函数)编写完的dir.c(delete_dir_entry函数)编写完的fs.c(sys_unlink函数)修改完的main.cmake all 验证成果实现创建目录编写完的fs.c(sys_mkdir)修改完的main.cmake all 验证成果相关查阅博客链接本书中错误勘误这个地方我思考了很久 我觉得应该而且是必须要这么做的 需要加两行代码这个问题就是dir.c中的函数delete_dir原创 2021-08-11 01:16:23 · 644 阅读 · 3 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(中二)
文章目录相关查阅博客链接本书中错误勘误相关查阅博客链接本书中错误勘误原创 2021-08-10 12:24:13 · 434 阅读 · 0 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(中一)
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知闲聊时刻实现文件的打开与关闭修改完的file.c(file_open)修改完的fs.c(sys_open)修改完的file.c(file_close)修改完的fs.c(fd_local2global)修改完的fs.c(sys_close)修改完的main.cmake all 验证成果实现文件写入编写后的file.c(file_write)编写后的fs.c(sys_write)编写后的syscall.c(write函数)编写后的stdio.c(prinf函数)原创 2021-08-10 00:04:48 · 663 阅读 · 1 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上二)
文章目录相关查阅博客链接本书中错误勘误闲聊时刻部分缩写熟知相关查阅博客链接本书中错误勘误闲聊时刻由于第十四章的内容超级多 而且都是重活累活 各种地方到处都是函数 所以可能我预计的是分上中下三篇来写我其实操作系统预计应该8.7日就应该写完的 但是现在已经是8.7日的晚上的11点了 我晚上7点才回到的成都 9点才到的家 而文件操作的函数才把最基本的inode操作写完 所以 哎 希望这两天加把力 早点完结这个系列至于为什么回成都 因为学校里面各种事情心情很烦 不可抗力我就回到了家里面好原创 2021-08-09 13:07:25 · 783 阅读 · 2 评论 -
《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上一)
文章目录相关查阅博客链接本书中错误勘误闲聊时刻部分缩写熟知实现文件系统的原理inode构建原理目录构建原理超级块构建思路创建文件系统编写完的super_block.h编写完的inode.h编写完的dir.h编写完的fs.h编写完的fs.c修改后的ide.h修改后的makefile修改后的init.cmake all 验证成果第一个make all阶段(第一次给分区装载文件系统)第二个make all阶段(第二次给分区装载文件系统+挂载)创建文件系统的debug心路历程相关查阅博客链接linux 中“原创 2021-08-07 22:59:52 · 1267 阅读 · 2 评论 -
《操作系统真象还原》第十三章 ---- 编写硬盘驱动软件 行百里者半九十终成时喜悦溢于言表
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知闲聊时刻提前需要准备编写的函数实现printk实现sprintf函数创建从盘创建从盘的步骤修改后的bochsrc.disk验证从盘安装成功创建磁盘分区表创建分区表步骤实现硬盘驱动读入的思路分区硬盘的读入和写入编写硬盘驱动程序修改后的thread.c修改后的thread.h修改后的timer.c修改后的timer.h修改后的interrupt.c编写完的ide.c编写完的ide.h修改后的makefilemake all 验收成果相关查阅博客链接汇编P原创 2021-08-05 10:23:55 · 1431 阅读 · 0 评论 -
《操作系统真象还原》第十二章 ---- 实现系统调用深入浅出 进一步完善堆内存分配与Printf函数 让用户进程有话可说(下)
文章目录相关查阅博客链接本书中错误勘误实现堆内存管理(实现malloc部分)修改完的memory.h修改完的memory.c修改完的thread.c(task_struct部分)修改完的process.c(process_execute函数)修改完的memory.c修改完的makefile修改后的main.cmake all 验证成果实现free函数修改后的memory.c修改后的memory.h修改后的main.c发现用户进程的问题make all 验收成果结束语相关查阅博客链接C语言static原创 2021-08-03 14:33:22 · 739 阅读 · 1 评论 -
《操作系统真象还原》第十二章 ---- 实现系统调用深入浅出 进一步完善堆内存分配与Printf函数 让用户进程有话可说(上)
文章目录相关查阅博客链接本书中错误勘误闲聊时刻实现系统调用实现系统调用的思路修改后的kernel.S修改后的interrupt.c编写完的syscall.c编写完的syscall.h编写完的syscall-init.c编写后的syscall-init.h修改后的thread.c修改后的init.c修改后的Main.c修改后的makefilemake all 验收成果为什么进程里面不允许console_put_str实现简易write修改后的syscall-init.c修改后的syscall-init.h修改原创 2021-08-03 14:25:47 · 994 阅读 · 4 评论 -
《操作系统真象还原》第十一章 ---- 实现用户进程 欺骗CPU通彻进程原理 眺望终点到达还需砥砺前行
文章目录相关查阅博客链接本书中错误勘误定义并初始化TSS修改global.h编写tss.c编写tss.h修改init.c修改后的MakeFilemake all 验证成果实现用户进程相关查阅博客链接本书中错误勘误定义并初始化TSS本书中 和 现代的操作系统Linux都没有采用硬件厂商提供的那种切换进程直接换TSS的操作 因为那样的话代价太大了 这里的话我们先把TSS基本的数据结构 和 用户进程DPL3的GDT符给弄好因为在之前我记得是弄过了GDT了 只不过那个时候只弄了内核的描述符 而原创 2021-08-01 11:56:25 · 1875 阅读 · 6 评论 -
《操作系统真象还原》第十章 ---- 线程打印尚未成功 仍需此章锁机制完善努力 在前往最终章的路上激流勇进
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知闲聊时刻稍加修改的main.c看锁理论介绍时 说点想聊的修改增添thread.c编写thread_block函数编写thread_unlock函数编写semaphore编写sync.c编写sync.h实现终端输出编写console.c编写console.h稍加修改的init.c稍加修改的main.c修改后的MakeFilemake all 验收成果相关查阅博客链接本书中错误勘误部分缩写熟知下面是荷兰语中的P V 介绍 原来查了半天P V的原创 2021-07-30 14:00:30 · 1791 阅读 · 9 评论 -
《操作系统真象还原》第九章 ---- 终进入线程动斧开刀 豁然开朗拨云见日 还需解决同步机制才能长舒气
文章目录相关查阅博客链接本书中错误勘误进程 线程的自我小理解线程 进程的状态内核级线程 & 用户级线程初步实现内核级线程浪费两三个小时调试的辛酸史编写thread.h编写thread.c修改MakeFile & main.c 验证结果相关查阅博客链接C语言结构体内存分布C语言之typedef函数指针用法c语言typedef怎么自定义函数,c语言中typedef的用法本书中错误勘误进程 线程的自我小理解毕竟距离上次看 《现代操作系统》 已经时隔很久很多很多原来记的很原创 2021-07-27 19:37:42 · 2167 阅读 · 10 评论 -
《操作系统真象还原》第八章 ---- 初入内存管理系统 涉足MakeFile 了解摸谈一二
文章目录原创 2021-07-25 19:57:54 · 1942 阅读 · 4 评论 -
《操作系统真象还原》第七章 ---- 终进入中断处理拳打脚踢 操作系统日渐成熟 目前所有代码总览
文章目录相关查阅博客链接本书中错误勘误相关查阅博客链接本书中错误勘误1、这个地方看到了实在是跟我弄得头脑昏花天旋地转 啊哈 刚哥处理器支持256个中断 即0~254 啊哈? 哈哈哈哈哈 这里应该是笔误 应该是0~2552、...原创 2021-07-23 16:53:12 · 2095 阅读 · 2 评论 -
《操作系统真象还原》第六章 ---- 开启c语言编写函数时代 首挑打印函数小试牛刀 费心讨力重回gcc降级 终尝多日调试之喜悦
文章目录相关查阅博客链接本书中错误勘误部分缩写熟知修改代码的小闲聊编写print.S(实现打印函数)print.S代码print.h代码和stdint.h代码修改main.c(检测put_char是否生效)编译kernel.bin 链接print.o main.o 测试put_char函数目前为止常用编译链接代码编译链接 测试函数修改print.S(实现打印字符串)修改main.c(测试打印字符串)修改print.S(打印数字)修改main.c(测试打印数字)print.S最终代码+print.h头文件定义原创 2021-06-17 17:37:05 · 2481 阅读 · 5 评论 -
《操作系统真象还原》第五章 ---- 轻取物理内存容量 启用分页畅游虚拟空间 力斧直斩内核先劈一角 闲庭信步摸谈特权级
文章目录相关查阅博客本书中错误勘误部分缩写熟知 + 小建议修改代码前的小闲聊修改loader.S(读取内存大小)检验是否成功读取内存大小开始分页新篇章的分页理解一级页表二级页表修改loader.S(开启分页)检验是否完成分页 进入虚拟内存时代修改Loader.S(加载内核)1、编写内核程序(main.c)2、从磁盘读入内核区代码3、修改Loader.S(转移内核代码 跳转至内核)1、新函数rd_disk_m_322、处理文件头elfLoader.S(全代码)+boot.inc(代码修改)结束语(第五章完结撒原创 2021-06-15 17:32:29 · 4520 阅读 · 17 评论 -
《操作系统真象还原》第四章 ---- 剑指Loader 刃刺GDT 开启新纪元保护模式 解放32位
文章目录相关查阅博客本书中错误勘误看到第四章的一些很有趣的话 想记录下来修改MBR.S更新配置文件boot.inc忽生疑惑(怎么是平坦模型?)编写Loader.S调用 info gdt查看是否建立成功温馨提醒(调试编译小技巧)从第一章开始到第四章结束的航海历程总结相关查阅博客平坦模型和分段模型系统虚拟化—内存管理与虚拟化(hypervisor)汇编语言之 有冒号的标号和没冒号标号的区别本书中错误勘误1、boot.inc DESC_LIMIT_VEDIO2 后面应该是16个0 少打了一个0原创 2021-06-12 22:25:59 · 3163 阅读 · 8 评论 -
《操作系统真象还原》第三章 ---- 完善MBR 尝汇编先苦涩后甘甜而再战MBR!(内有闲聊)
文章目录看到书上的一些地方 有所触动想聊的汇编相关补充改进MBR 直接操作显卡来输出字符改进MBR 完成从磁盘读入Loader加载器的使命先自己不看书写的代码(未修改)看完书对比后修改的代码(已修改)创建include 库目录 编译 将MBR写入磁盘编写简易Loader 并进行验证看到书上的一些地方 有所触动想聊的我现在看了书才知道 ASCII码原来是American Standard Code for Information Interchange的意思美国信息互换标准代码此时也才知道这个还原创 2021-06-11 23:18:50 · 3294 阅读 · 12 评论 -
《操作系统真象还原》第二章 ---- 编写MBR主引导记录 初尝编写的快乐 雏形已显!
文章目录前引相关术语理清操作系统启动程序运行流程(部分)编写MBR引导内容编译并检验mbr.binLinux dd 磁盘操作指令与参数模拟操作试一试结束语前引其实这一章内容还挺少的就是介绍了一下 怎么从Boot->MBR再让我们自己编写了一下MBR的内容就结束了那就让我们开始吧相关术语MBR Main Boot Record、 Master Boot Record 主引导扇区记录CHS Cylinder柱面 Header磁头 Sector扇区IVT Interrupt Ve原创 2021-06-10 18:01:29 · 3687 阅读 · 13 评论 -
《操作系统真象还原》第一章 ---- 安装Vmware Station 安装Ubuntu 装载配置Bochs 安装Vmware tools 开始乘帆历险!
文章目录前引安装 ①Vmware WorkStation②Vmware tools③Ubuntu关于安装Vmware tools补引下载Bochs 并安装配置报错① 缺少c compiler编译器前引前两天我才完成了哈工大的操作系统Lab但始终感觉到 对操作系统还是有点停留在表面所以购买了 《操作系统真象还原》说实话 现在也只看到了50多页 到了安装Ubuntu的时候了今天下午尝试了一下午CentOS 6发现联网用火狐下载Bochs根本登不上去网页并且Vmware tools也无法安装原创 2021-06-10 13:22:50 · 6088 阅读 · 11 评论