你将获得什么?
- 一通百通,8 大模块揭秘计算机系统
- 学以致用,10+ 实验项目边学边练
- 前沿视野,实现一个迷你 RISCV 处理器
- 高手带路,内核开发者的学习心法
课程介绍
虽然 IT 领域中各种新框架、新技术层出不穷,但它们的根基还是那些计算机基础知识。没有扎实的计算机基础知识,应用层的技术学习就像空中楼阁,只能看到表象却无法理解本质,学习的时候自然是一头雾水。
正所谓“磨刀不误砍柴工”,优秀工程师的共同特质就是扎实深厚的计算机基础知识,相信工作过一段时间的人都能意识到它的重要性。
尽管知道扎实的基本功对开发效率、技术成长都很重要,但是我们学习时遇到的问题也很多,通常困惑于以下三类问题:
- 基础是什么:对基础知识到底包括哪些,需要学到什么程度心里没底。
- 基础怎么学:底层技术那么多,内容繁多不知从何下手,缺乏清晰系统的学习路径。
- 理论如何和应用相结合:脑子说会了,手说“你没有”,学习技术的时候看了很多资料仍然无法融会贯通,更别说应用到工作之中。
为此,我们邀请到彭东老师,他既做过前端、后端的工作,也做过内核的开发。在这门课里,老师将结合自己十多年的理论和实战经验,帮你从源头开始一步步夯实基本功:从硬件到软件、从指令语言到内存,从原理到应用,带你系统了解计算机的基础知识。
学完这门课程,你就掌握了 IT 领域 80% 相对稳定不变的那部分知识,对于学习任何一门应用技术也是很好的前置准备。
课程设计
串联计算机从底层到应用的关键知识点,总计四个核心、八大关卡。
核心一:历史
学计算机基础,需要先学习它的历史,学习计算机是怎么一步步发展到今天这个样子的,以今天的状况推导未来的发展方向。我们会重点讨论编程架构是怎么创造出来的、CPU 从何而来、CISC 和 RISC 又各有什么优缺点。
核心二:硬件基础知识
了解硬件的工作机制对工程师实现优秀的应用软件非常重要。这里不但会详细讲解芯片的工作机制与原理,还会带你手把手实现一个五级流水线的迷你 RISCV 处理器。
核心三:软件基础知识
想要开发高性能的应用程序,语言与指令、应用与内存、IO 与文件方面的知识都是必修内容。这里我们会通过第三关到第六关四个章节带你掌握这些计算机软件基础中最核心、最重要的知识。
高级语言和低级语言之间如何互相转化?应用堆和栈内存有什么不同?多个进程之间如何通信?Linux 如何管理外设,又如何存放文件……这些重难点问题,一个都不会漏掉。
核心四:应用层基础知识
带你从底层角度审视前端技术跟后端架构,并探讨云计算、大数据与智能制造。这些热门领域都是对基础技术的综合应用,有助于你开阔视野,提升自己的知识迁移能力,让你真正学有所用。
课程目录
开篇词|练好基本功,优秀工程师成长第一步
以史为鉴
01 CISC&RISC:从何而来,何至于此
02 RISC-V:RISC-V凭什么成为“半导体行业的linux”?
硬件一芯片(手写Mini CPU)
03 硬件语言基础(一):从硬件语言开启手写CPU之旅
04 硬件语言基础(二):代码是怎么指挥具体电路的?
05 指令架构:RISC-V在CPU设计上到底有哪些优势?
06 手写CPU(-):指令读取
07 手写CPU(二):指令译码
08 手写CPU(三):指令执行
09 手写CPU(四):访问储存器
10 手写CPU(五):写回目标寄存器
11 知识串讲:迷你RISC-V处理器完整版
环境准备
12 QEMU:支持RISCV的QEMU如何搭建?
13 GCC:用好GCC工具,助力学习RISC-V
语言与指令
14 详解C语言:高级语言对执行逻辑的抽象
15 C与汇编:高级语言向低级语言转换
16 RISC-V指令精讲(一):算术指令实现与调试
17 RISC-V指令精讲(二):算术指令实现与调试
18 RISC-V指令精讲(三):跳转指令实现与调试
19 RISC-V指令精讲(四):跳转指令实现与调试
20 RISC-V指令精讲(五):原子指令实现与调试
21 RISC-V指令精讲(六):访存指令实现与调试
应用与内存
22 内存地址空间:为什么说内存寸土寸金?
23 虚实结合:虚拟内存和物理内存
24 栈&堆:栈与堆的区别和应用
25 延迟分配:内存的最优化使用
26 应用内存管理:linux的应用与内存管理
27 进程调度:应用为什么能并行执行?
28 应用间通信:详解linux进程IPC
10 与文件
29 外设通信:I0cache与I0调度
30 10管理:linux如何管理多个外设?
31 lotop 与lostat命令:聊聊命令背后的故事与工作原理
32 文件仓库:初识文件与文件系统
33 linux文件系统:linux如何存放文件?
综合应用
34 浏览器工作原理:浏览器为什么要用多进程模型?
35 网页渲染:网页图像是怎样生成的?
36 V8:浏览器V8引擎与内核有什么关系?
37 内功心法(一):内核和后端通用的设计思想有哪些?
38 内功心法(二):内核和后端通用的设计思想有哪些?
39 性能调优:性能调优工具EBPF和调优方法
结束语|终身学习,持续成长
技术雷达
加餐01云计算基础:动手搭建一款自己的IAAS虚拟化平台
加餐02学习攻略:大数据&云计算,究竟怎么学?
加餐03智能计算(一):自动驾驶背后的支撑
加餐04智能计算(二):工业的智能化
加餐05智能计算(三):AIOT的挑战
讲师介绍
彭东,网名 LMOS,Intel 傲腾项目关键开发者,《深度探索嵌入式操作系统:从零开始设计、架构和开发》作者。研究操作系统数十年,精通 Linux、BSD、SunOS 等开源操作系统内核,对 Windows 的 NT 内核也有一定研究。
曾独立开发过两套全新的操作系统内核:LMOS 和 LMOSEM。其中 LMOS 先后发布了 8 个测试版本,至今已是一个多进程、多 CPU、支持虚拟内存的全 64 位操作系统内核(x86_64 体系下),代码量达 10 万余行。LMOSEM(基于 ARM 体系)则是嵌入式操作系统的新尝试,实验了不同于 LMOS 的新架构、新代码。