操作系统实战45讲,从0到1,实现自己的操作系统

你会学到什么?

  • 洞悉 OS 运行机制与架构实现
  • 强化理解 Linux 核心技术
  • 系统级别的编程技巧
  • “保姆级”代码注释及详解图

课程介绍

作为计算机王国中的实际“掌舵人”,操作系统是一切法则的制定者,它掌管着硬件软件等一切资源,并负责处理多种基本事务(内存管理、资源配置、I/O 设备、网络通信等),既能维护公平正义又能杀伐决断。

只要我们使用计算机,就会和操作系统打交道,接受它的审核与反馈。很多“热门”的技术话题,背后都离不开操作系统。比如:

  • Nginx 的高并发性为什么能实现?
  • MySQL 的 I/O 性能到底怎样提升?
  • Redis 中经典的 Reactor 设计模式由什么技术支撑?
  • Node.js 的 I/O 模型长什么样?

甚至,在一个数十万行代码的大项目中,仍然会遇到一些基础性的问题,比如内存为什么会泄漏,服务进程为什么会 dang 掉,文件为什么打不开等等。

要真正解决这些问题,深入理解操作系统就是关键。在这门课中,彭东老师将把自己多年的操作系统开发经验倾囊相授,并带你从系统级的高度去分析和解决相关问题,实现人与机器的“深度对话”。

课程设计

实现路径:手把手教学,从理论到实操,实现“齿轮”般进阶式学习。

操作系统实战45讲,从0到1,实现自己的操作系统
  • 从最小内核 Hello OS 练手,初步了解操作系统如何运行;
  • 对比经典操作系统,推陈出新,设计自己的操作系统——Cosmos 内核结构;
  • 解决操作系统的硬件、同步以及初始化问题,建立 Cosmos 操作系统的测试环境以及虚拟硬件;
  • 利用操作系统实现对计算机的管控,把 Cosmos 操作系统做大做强;
  • 拓展视野,储备知识,分享技术前瞻内容。
操作系统实战45讲,从0到1,实现自己的操作系统

终极目标:

  • 搞懂“深藏功与名”的操作系统到底长什么样,以及如何运作(理论);
  • 实现一个属于自己的基于 x86 平台的支持多进程的操作系统内核(实操)。

课程目录

开篇词|为什么要学写一个操作系统?
尝尝鲜:从一个Hello到另一个Hello
01程序的运行过程:从代码到机器运行
02几行汇编几行C:实现一个最简单的内核
心有蓝图:设计
03黑盒之中有什么:内核结构与设计
04震撼的Linux全景图:业界成熟的内核架构长什么样?
程序的基石:硬件
05CPU工作模式:执行程序的三种模式
06虚幻与真实:程序中的地址如何转换?
07 Cache与内存:程序放在哪儿?
基本法:同步原语
08锁:并发操作中,解决数据同步的四种方法
09瞧一瞧Linux:Linux的自旋锁和信号量如何实现?
夺权:启动初始化
10设置工作模式与环境(上):建立计算机
11设置工作模式与环境(中):建造二级引导器
12设置工作模式与环境(下):探查和收集信息
13第一个C函数:如何实现板级初始化?
14 Linux初始化(上):GRUB与vmlinuz的结构
15Linux初始化(下):从_start到第一个进程
土地革命:内存
16划分土地(上):如何划分与组织内存?
17划分土地(中):如何实现内存页面初始化?
18划分土地(下):如何实现内存页的分配与释放?
19土地不能浪费:如何管理内存对象?
20土地需求扩大与保障:如何表示虚拟内存?
21土地需求扩大与保障:如何分配和释放虚拟内存?
22瞧一瞧Linux:伙伴系统如何分配内存?
23瞧一瞧Linux:SLAB如何分配内存?
活动实体:进程
24活动的描述:到底什么是进程?
25多个活动要安排(上):多进程如何调度?
26多个活动要安排(下):如何实现进程的等待与唤醒机制?
27瞧一瞧Linux:Linux如何实现进程与进程调度?
下属部门:设备10
28部门分类:如何表示设备类型与设备驱动?
29部门建立:如何在内核中注册设备?
30部门响应:设备如何处理内核I0包?
31瞧一瞧Linux:如何获取所有设备信息?
银行仓库:文件系统
32仓库结构:如何组织文件?
33仓库划分:如何实现文件系统的格式化?
34仓库管理:如何实现文件的四大基本操作?
35瞧一瞧Linux:虚拟文件系统如何管理文件?
通信部:网络
36从URL到网卡:如何从全局观察网络数据流动?
37从内核到应用:网络数据在内核中如何流转?
38从单排到团战:详解操作系统的宏观网络架构
39瞧一瞧Linux:详解socket实现与网络编程接口
服务交接:接口
40服务接口:如何搭建沟通桥梁?
41瞧一瞧Linux:如何实现系统APl?
番外篇:虚化的世界
42虚拟机内核:KVM是什么?
43容器:如何理解容器的实现机制?
44ARM新宠:苹果的新CPUM1因何而快?
45AArch64体系:ARM最编程架构模型剖析
结束语|提升认知,迭代我们自己的“操作系统”

讲师介绍

彭东,网名 LMOS,Intel 傲腾项目关键开发者,《深度探索嵌入式操作系统:从零开始设计、架构和开发》作者。研究操作系统数十年,精通 Linux、BSD、SunOS 等开源操作系统内核,也对 Windows 的 NT 内核有一定研究。

曾独立开发过两套全新的操作系统内核:LMOS 和 LMOSEM。其中 LMOS 先后发布了 8 个测试版本,至今已是一个多进程、多 CPU、支持虚拟内存的全 64 位操作系统内核(x86_64 体系下),代码量达 10 万余行。LMOSEM(基于 ARM 体系)则是嵌入式操作系统的新尝试,实验了不同于 LMOS 的新架构、新代码。

除此之外,彭东也做过 Linux 内存管理以及虚拟化,开发过 NT 文件系统过滤驱动。对计算机底层技术亦有深入了解,尤其是操作系统、编译器、数据库等基础架构方面。

(0)
上一篇 2021年6月30日 下午10:50
下一篇 2021年6月30日 下午11:04

相关推荐

发表回复

登录后才能评论