万本电子书0元读

万本电子书0元读

顶部广告

从零自制操作系统电子书

适合有基础编程经验者,30 章手把手教你从零构建操作系统 MikanOS,在实践中掌握计算机底层原理。 以 “做中学” 为核心,从 Hello World 到多任务处理,覆盖操作系统关键技术,让黑箱知识变清晰。 无需精通 C ,边发边学习,配套具体案例与工具说明,助你脚踏实地自制属于自己的操作系统。 从引导加载器到应用间通信,全面解析操作系统构建全流程,为编程爱好者系统发之门。

售       价:¥

纸质售价:¥112.80购买纸书

11人正在读 | 0人评论 6.7

作       者:(日)内田公太

出  版  社:电子工业出版社

出版时间:2025-08-01

字       数:37.7万

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(条)
  • 读书简介
  • 目录
  • 累计评论(条)
在本书中,你将尝试从零自制操作系统。你会体验到制作操作系统的整个过程,从计算机、调用操作系统本身到能够运行各种应用。你会了解到计算机的内部结构,以及操作系统的工作原理 ;在此 之前,它们对于你来说可能一直都是黑箱。 本书内容包括 :个人可以制作操作系统吗、计算机工作原理和 Hello World 、EDK II 和内存映射、 屏幕显示实践和引导加载器、像素绘图和 make 门、文本显示和控制台类、鼠标输和 PCI 、中断和 FIFO、内存管理、叠加过程、窗口、定时器和 ACPI、键盘输、多任务处理、终端、命令、文件系  统、应用、分页、系统调用、窗口应用、图形和事件、多终端、使用应用加载文件、从应用写文件、 应用的内存管理、日文显示和重定向、应用间通信、额外应用、前方的路,以及配置发环境、获取 MikanOS 、EDK II 文件说明、C 中的模板、iPXE 、ASCII 码表。 本书的目标读者是写过简单程序的人。如果你编写过几百行代码,有相关编程经验,那么应该可以 毫无顾虑地通读本书。但如果你从未编写过程序,那么阅读本书将会很吃力。<br/>【推荐语】<br/>适合有基础编程经验者,30 章手把手教你从零构建操作系统 MikanOS,在实践中掌握计算机底层原理。 以 “做中学” 为核心,从 Hello World 到多任务处理,覆盖操作系统关键技术,让黑箱知识变清晰。 无需精通 C ,边发边学习,配套具体案例与工具说明,助你脚踏实地自制属于自己的操作系统。 从引导加载器到应用间通信,全面解析操作系统构建全流程,为编程爱好者系统发之门。<br/>【作者】<br/>内田公太,日本东京资深软件工程师。他毕业于东京工业大学,取得工程学士和硕士学位。就职于cybozu公司期间,专注于将Walb部署到生产环境。在学术领域,他多次出席软件工程基础会议,分享过大量研究成果,并在 2015 年出版了关于英特尔X86 架构的书籍及相关模拟器。此外,他还积极举办面向业余操作系统发者的研讨会,投身于推动技术交流。 马起园(Clerk Ma)是知乎认证的计算机科学领域优秀答主,同时也是一位字体设计师。他专注于TeX 技术、字体设计等领域,曾参与 LuaTeX 、 XeTeX 等源项目,主导发了 TeXLive for Android 系统,并推动其在 TUG 会议上的展示;对Linux系统及源软件有深厚研究,曾尝试多种编程语言(如Pascal、C 、Python等),最终选择C语言作为主要发工具;主导设计了Fandol系列字体 ,并推动其在TeX系统中的应用。罗浩源,程序员,久居日本,从事iOS和Android发,曾精研电子书制作。苏杰,助理研究员,认知神经科学专业,毕业于北京师范大学心理学部,长期从事人脑智能研究与类脑人工智能研究。<br/>
目录展开

内容简介

译者序

引言

目标读者

第0章 个人可以制作操作系统吗

0.1 如何制作操作系统

0.2 到底什么是操作系统

0.3 自制操作系统的步骤

0.4 享受自制操作系统的乐趣

0.5 自制操作系统的全貌

第1章 计算机工作原理和Hello World

1.1 Hello World

1.2 如何查找U盘的设备名称

1.3 如何使用WSL

1.4 使用模拟器

1.5 最终做了些什么

1.6 还是让我们动手吧

1.7 使用UEFI BIOS启动

1.8 制作操作系统的工具

1.9 C语言版的Hello World程序

第2章 EDK II和内存映射

2.1 EDK II简介

2.2 EDK II的Hello World程序(osbook_day02a)

2.3 主存储器

2.4 内存映射

2.5 获取内存映射(osbook_day02b)

2.6 将内存映射保存到文件中

2.7 检查内存映射

2.8 指针简介(1):地址和指针

2.9 指针和箭头运算符

第3章 屏幕显示实践和引导加载器

3.1 QEMU监视器

3.2 寄存器

3.3 第一个内核(osbook_day03a)

3.4 从引导加载器绘制像素(osbook_day03b)

3.5 从内核绘制像素(osbook_day03c)

3.6 错误处理(osbook_day03d)

3.7 指针简介(2):指针与汇编语言

第4章 像素绘图和make入门

4.1 make简介(osbook_day04a)

4.2 自由绘制像素(osbook_day04b)

4.3 利用C++语言特性重写程序(osbook_day04c)

4.4 vtable

4.5 改进加载器(osbook_day04d)

第5章 文本显示和控制台类

5.1 尝试写入字符(osbook_day05a)

5.2 拆分编译(osbook_day05b)

5.3 增加字体(osbook_day05c)

5.4 字符串绘制和sprintf()(osbook_day05d)

5.5 控制台类(osbook_day05e)

5.6 printk()(osbook_day05f)

第6章 鼠标输入和PCI

6.1 鼠标光标(osbook_day06a)

6.2 USB Host驱动程序

6.3 搜索PCI设备(osbook_day06b)

6.4 带轮询的鼠标输入(osbook_day06c)

第7章 中断和FIFO

7.1 中断(osbook_day07a)

7.2 中断处理程序

7.3 中断向量

7.4 设置中断描述符

7.5 MSI机制

7.6 中断总结

7.7 加速中断处理程序(osbook_day07b)

7.8 FIFO和FILO

7.9 实现队列

7.10 使用队列加速中断

第8章 内存管理

8.1 内存管理概述

8.2 UEFI内存映射(osbook_day08a)

8.3 移动数据结构(osbook_day08b)

8.4 移动栈区域

8.5 设置分段

8.6 设置分页

8.7 内存管理挑战(osbook_day08c)

第9章 叠加过程

9.1 叠加过程概述(osbook_day09a)

9.2 new运算符

9.3 叠加过程的原理

9.4 叠加过程的时间测量(osbook_day09b)

9.5 加速叠加过程(osbook_day09c)

9.6 测量滚动过程时间(osbook_day09d)

9.7 更快的滚动过程(osbook_day09e)

第10章 窗口

10.1 再论鼠标(osbook_day10a)

10.2 第一个窗口(osbook_day10b)

10.3 快速计数器(osbook_day10c)

10.4 消除闪烁(osbook_day10d)

10.5 后置缓冲区(osbook_day10e)

10.6 拖动窗口(osbook_day10f)

10.7 仅拖动窗口(osbook_day10g)

第11章 定时器和ACPI

11.1 整理源码(osbook_day11a)

11.2 定时器中断(osbook_day11b)

11.3 精确定时(osbook_day11c)

11.4 多个定时器和超时通知(osbook_day11d)

11.5 ACPI PM定时器和RSDP(osbook_day11e)

第12章 键盘输入

12.1 查找FADT(osbook_day12a)

12.2 使用ACPI PM定时器(osbook_day12b)

12.3 USB键盘驱动程序(osbook_day12c)

12.4 修改键(osbook_day12d)

12.5 文本框(osbook_day12e)

12.6 光标(osbook_day12f)

第13章 多任务处理(1)

13.1 多任务和上下文

13.2 处理上下文切换(osbook_day13a)

13.3 自动上下文切换(osbook_day13b)

13.4 验证多任务处理(osbook_day13c)

13.5 更多任务(osbook_day13d)

第14章 多任务处理(2)

14.1 休眠(osbook_day14a)

14.2 事件发生时唤醒(osbook_day14b)

14.3 性能测量

14.4 确定任务的优先级(osbook_day14c)

14.5 休眠任务(osbook_day14d)

第15章 终端

15.1 在主线程中绘制窗口(osbook_day15a)

15.2 活动窗口(osbook_day15b)

15.3 终端窗口(osbook_day15c)

15.4 加速绘图(osbook_day15d)

第16章 命令

16.1 终端中的按键操作(osbook_day16a)

16.2 echo命令(osbook_day16b)

16.3 clear命令(osbook_day16c)

16.4 lspci命令(osbook_day16d)

16.5 命令历史记录(osbook_day16e)

16.6 省电(osbook_day16f)

第17章 文件系统

17.1 文件和文件系统

17.2 BIOS参数块

17.3 目录条目

17.4 读出卷(osbook_day17a)

17.5 ls命令(osbook_day17b)

第18章 应用

18.1 文件分配表(osbook_day18a)

18.2 第一个应用(osbook_day18b)

18.3 C++中的计算器(osbook_day18c)

18.4 标准库(osbook_day18d)

第19章 分页

19.1 可执行文件和内存地址

19.2 地址转换

19.3 加载并运行应用(osbook_day19a)

19.4 虚拟地址和四级分页

19.5 在后半部分运行应用

19.6 加载应用

19.7 设置分层分页结构

19.8 整理分层分页结构

第20章 系统调用

20.1 应用如何使用操作系统函数(osbook_day20a)

20.2 保护操作系统(1)(osbook_day20b)

20.3 设置TSS(osbook_day20c)

20.4 帮助查找错误(osbook_day20d)

20.5 系统调用(osbook_day20e)

20.6 注册系统调用的过程

20.7 系统调用本体

第21章 窗口应用

21.1 设置IST(osbook_day21a)

21.2 字符串显示系统调用(osbook_day21b)

21.3 创建系统调用

21.4 创建write()

21.5 退出系统调用(osbook_day21c)

21.6 返回栈指针

21.7 代码整理(osbook_day21d)

21.8 打开一个窗口(osbook_day21e)

21.9 在窗口中写入文本(osbook_day21f)

第22章 图形和事件(1)

22.1 使用exit()(osbook_day22a)

22.2 绘制两个点(osbook_day22b)

22.3 获取计时器值(osbook_day22c)

22.4 窗口绘制的优化(osbook_day22d)

22.5 绘制直线(osbook_day22e)

22.6 关闭窗口(osbook_day22f)

22.7 等待按键输入(osbook_day22g)

第23章 图形和事件(2)

23.1 鼠标输入(osbook_day23a)

23.2 绘图软件(osbook_day23b)

23.3 计时器命令(osbook_day23c)

23.4 动画(osbook_day23d)

23.5 打方块游戏(osbook_day23e)

第24章 多终端

24.1 增加终端数量(osbook_day24a)

24.2 光标自动闪烁(osbook_day24b)

24.3 同时启动多个应用(osbook_day24c)

24.4 修复窗口重叠的错误(osbook_day24d)

24.5 不需要终端即可启动应用(osbook_day24e)

24.6 冻结操作系统的应用(osbook_day24f)

24.7 保护操作系统(2)(osbook_day24g)

第25章 使用应用读取文件

25.1 目录支持(osbook_day25a)

25.2 读取文件(osbook_day25b)

25.3 正则表达式搜索(osbook_day25c)

第26章 使用应用写入文件

26.1 标准输入(osbook_day26a)

26.2 文件描述符的抽象化

26.3 接收键盘输入

26.4 EOF和EOT(osbook_day26b)

26.5 写入文件(1)(osbook_day26c)

26.6 写入文件(2)(osbook_day26d)

第27章 应用的内存管理

27.1 按需分页(osbook_day27a)

27.2 内存映射文件(osbook_day27b)

27.3 测量内存使用情况(osbook_day27c)

27.4 写入时复制(osbook_day27d)

第28章 日文显示和重定向

28.1 日文和字符编码(osbook_day28a)

28.2 日文字体(osbook_day28b)

28.3 重定向(osbook_day28c)

第29章 应用间通信

29.1 退出码(osbook_day29a)

29.2 管道(osbook_day29b)

29.3 解析命令行并启动任务

29.4 管道处理的主体PipeDescriptor

29.5 启动和关闭终端

29.6 终止任务

29.7 排序命令(osbook_day29c)

29.8 终端错误修复(osbook_day29d)

29.9 共享内存

第30章 额外应用

30.1 应用路径程序(osbook_day30a)

30.2 more命令(osbook_day30b)

30.3 使cat与输入相对应(osbook_day30c)

30.4 关闭按钮(osbook_day30d)

30.5 文本查看器(osbook_day30e)

30.6 图像查看器(osbook_day30f)

第31章 前方的路

附录A 配置开发环境

A.1 安装WSL

A.2 将QEMU与WSL结合使用的准备工作

附录B 获取MikanOS

B.1 检查MikanOS版本之间的差异

B.2 搜索源码

附录C EDKII文件说明

附录D C++中的模板

附录E iPXE

E.1 构建和安装iPXE

E.2 启动HTTP服务器

E.3 网络启动实践

附录F ASCII码表

致谢

累计评论(条) 个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部