• Stars
    star
    230
  • Rank 174,053 (Top 4 %)
  • Language
    C
  • Created about 7 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

《操作系统真象还原》源码及学习笔记(os-elephant)还原真相

《操作系统真象还原》札记

os-elephant

仓库目录介绍

  1. code - 各章节代码

  2. code/dev - 二次开发devel

  3. visio - visio图示

  4. tools - 相关工具

Something I hope you know before go into the coding~
First, please watch or star this repo, I'll be more happy if you follow me.
Bug report, questions and discussion are welcome, you can post an issue or pull a request.

相关网址

我的任务

  1. 跑通每个实例,代码注释,img生成,脚本一键启动**

  2. 绘制visio图**

  3. 二次开发**

身为菜鸡,学习为主,希望不要因为各种锤子版权啊、装逼啥的问题找上麻烦。

1526720522620.png

Visio图示

visioimage1



visioimage2



visioimage3



visioimage4



作者简介

zhenggang

	图右为郑刚,毕业于北京大学,前百度运维高级工程师,对操作系统有深入的研究。
	好运动,喜钻研,热衷于尝试前沿技术,乐于分享学习成果。
	该书出版于2016-3,全书759页。定价108元。

  大学及研究生都有操作系统课程,这类人群具有很高的学术能力,但书中讲的过于抽象与晦涩,以至于很多学生对于此门课程恐惧到都提不出问题,只有会的人才能提出问题。操作系统理论书是无法让读者理解什么是操作系统的,学操作系统不能靠想像,他们需要看到具体的东西。绝大多数技术人都对操作系统怀着好奇的心,他们渴望一本告诉操作系统到底是什么的书,里面不要掺杂太多无关的管理性的东西,代码量不大且是现代操作系统雏形,他们渴望很快看到本质而不花费大量的时间成本。

一个中专生的奋斗,只为不负时光

  "郑刚:我来自农村,八零后,初中时盛行农转非,读中专能包分配工作,号称国家干部的待遇。我很幸运考上了一所国家级重点中专学校,不幸的是那个学校是四年制。四年后我快毕业的时候,时代发生了很大的变化,中专已经不吃香了,我当时自己也尝试着找了很多工作。面过演员,应聘过服务员,为了证明自己身体强壮,拿着肌肉照去工厂面试,干些体力活。做了一段时间,发现还是不喜欢这样的工作,想去一家软件公司,对方要求掌握一个软件,当时我什么都不懂,就去网吧包夜学习,那时候包夜是从晚上十点开始,我八点多没事就过去在门口等着,后来跟老板熟了,他就跟我说不用等了直接去。我就在网吧学一夜,第二天昏昏沉沉的再回学校。后来面试通过了,工作内容是做测试,画一些三维机械图。这家公司的员工学历都很高,有一次我碰到一个新入职的员工,看上去比我小,我本来是出于好意问她:“你是大专吗?”当对方告诉我是硕士毕业时,我几乎是羞愤自尽。后来单位裁员,连本科生和一些研究生都被裁掉了,我一直战战兢兢,努力地去做一些没人做的工作,领导也都看在眼里。即使这样,我跟本科生做同样的工作,工资却只是人家的一半,心理多少有些不平衡。我当时的领导后来鼓励我说,“人有多大胆,地有多大产。”(这句话到现在我也经常说)所以后来我就辞职想继续学习,参加成人高考。第一年赶上非典,正好考试延期,我可以参加,结果很幸运考上了一所大学。悲剧的是,我父母创业失败了,尽管我的工资全交家里了,但还不够还债的,因此没有条件供我读书。本来考上大学是一件特别光荣、值得到处炫耀的事,我家里却无奈地没有到处宣扬,那种感受还是很欲哭无泪的。于是我跟家里说不给家交钱了,一边工作,一边继续利用业余时间复习,有了准备之后这次胆子更大,报了北大。一年的工资也攒够了学费,也幸运地考上了北大,尽管我读的是脱产成人教育,但依然觉得幸福无比。"

半平米的梦想——该书背后的故事

  "当初的写作环境就是0.5平米左右大小的空间:在床和墙壁之间的夹道上放了一个黄色的小凳子当桌子,一个蓝色的更小的凳子当椅子,伸开腿就把空间占满了。当初也觉得自己挺苦逼的,因此情不自禁就拍了照片。"

半平米的梦想

这本书是如何完成的?

  "我是一名运维工程师,目前运维行业显得很没技术含量,我很想改变这一点。比如开发人员经常让咱们帮我装各种软件,我很不喜欢这样的工作。他怎么不喊总监或CTO帮他装呢,原因很简单,在他心里我们就是干这个的,就像想清洁地面时要喊保洁阿姨一样。说白了虽然都是干技术工作的,但他们认为运维的技术能力不如他们,我想证明他们是错的。我心目中的运维工程师至少是全栈工程师,我希望这本书能帮到运维的同事。
  这本书脱产写了19个月,之所以花了这么久,是因为传统上讲述操作系统的教材都比较枯燥,理论较多,而且很少有以实践为主题的专项书籍,大家看完此类教材后依然不会写操作系统。想学习操作系统的编写可又无从下手,但这种现象大量存在;而本书的使命是详细介绍理论,并且付诸于实践,一步步地向大家说明操作系统的编写过程和理论。因此,花费的时间必然很长。
  辞职写书压力很大,大部分会发愁生活该怎么办。不说别处了,在北京你听说过有人饿死吗?我觉得很多困难都没有人们想象的那么大,大多数困难都是借口,主要是看你想不想做这件事。我同样也有压力,我是怕万一失败了,耽误了我女朋友怎么办,因此主要压力皆来自于自己。尽管几乎所有的外人对我这翻举动都嗤之以鼻,说我多大了还不着调等等,但我真的没往心里去。有句话说只有自己所爱的人才能影响自己,我爱我女朋友,她很支持我,如今她已经成为我的老婆。生活主要是靠之前的积蓄,花销也不大,租的是一间小屋子,吃喝也花不了多少钱。"

写给这本书的读者

  "先说一下本书不适合哪些人吧。那些已经懂计算机开发的人是不适合的,在高手眼里,本书的内容都不算什么,因此除高手之外都适合^_^。
有人觉得学习操作系统很耗精力,且并不会有直接的经济产出,好像性价比不高。但是,真正想学习操作系统的人是不会这么问的,没什么值不值得,就是想不想做,没有理由,全凭念想。就像人担心鸟总在天上飞,万一要掉下来怎么办,飞是鸟的天性,人不会飞,因此不理解。
  学习操作系统,就像跳远一样,要想跳得远,肯定要往后退两步加助跑,我们就是在助跑。操作系统是个硬功,如果把硬功学会,上层应用在我们眼里就会坦露无疑。比如人看到电线着火,在外行人眼里顶多理解到一定是短路了,而内行人看到的是:电阻小,电流高速流动,相互碰撞产生摩擦, 摩擦生热导致电线着火,理解得更深入。再看,身边总有一些大牛的同事在公司建功立业,其实很多人在进公司之前就已经很牛逼了,坦白说他们是带着牛逼的本领来公司创收的,我相信他们之前为了“修行”也捱过寂寞。修行是残酷的,大师是寂寞的,修行之后,这一切都值得。
  有人说这本书这么厚,看不完啊。书厚未必看得时间长,为什么厚?为了降低难度,本来一句话能解释清楚的我用了三句话,能不厚吗?看书的目的是把意思搞懂,虽然一句话变成了三句话,但读书的速度更快了,这不是省时间吗?
  说点题外的,有些人说公司太忙了没时间学习,甚至觉得这样的公司过于剥削,对个人发展不利。但我想说,老板不是慈善家,他花钱雇你给他干活,你拿了人家钱了还要求人家给你更多的个人时间,于情于理都说不过去,因此,学习靠挤时间。我之前在百度那阵,有一段时间经常第二天凌晨4点下班,回去睡到11点再去公司上班,对于今天上班明天下班的我来说,还能挤挤时间学习呢。学习是自己的事,想学习的人,一定会创造条件来学习。"

技术道路真不好走,劝你不要再坚持了

  光看这题目,瞬间你的小宇宙就达到了第七感,一股想扁我的冲动。其实这是个误会,我想表达的是:“技术道路不好走,你需要的不是“坚持”,而是“不放弃”
  坚持,听上去多么痛苦的一个词,比如在加班时很多领导都在鼓励下属:大伙儿辛苦了,再坚持一下等等...难受不?因此,但凡用坚持来鼓励的事情,都是建立在痛苦之上,在主观上一定认为其“难受”。有“放弃”才谈得上“坚持”,人是有主观情绪的,用“坚持”来“鼓励”自己,已经输了一半,自己认为痛苦的事很难干下去。
  干不下去的原因是遇到困难时头脑里有“放弃”的念头,如果头脑中没有这个念头,从来没想过半路退出,那还有什么做不到的呢?成功无非是时间长短的问题。因此做任何事之前,心里不要给自己“放弃”的心里预期,必须要干成为止。举个例子,人口渴时肯定一定要找到水为止,肯定不曾想过放弃找水。学习技术也是一样,如果技术对您来说就像水一样必不可缺时,您必然不会放弃技术,必然会成为技术大牛。也许有人说了,别装B了好嘛,道理谁都懂,大师你这么能忽悠,你自己做到了吗?其实。。。我用了19个月写《操作系统真象还原》这本书,算是“不放弃”的证明吗?有人开始嘟囔了,你说19个月就19个月啊,谁看见了。。。好吧,只有出杀手锏了。
  很多人都说减肥困难,减个肥就算励志。长肉的原理就是吃了过量的碳水化合物或脂肪或蛋白质,只要减少以上食物的摄入量人就会瘦,因此减肥的难度不大。比减肥更难的是增肥(我又要挨骂了)。啥?增肥困难?多吃就行了啊,吃还困难?要求太奢侈了吧大哥?您听我说,有一小部分人先天就是脾虚型,我就是。脾主肌肉,而思伤脾,因此常期用脑思考的人必然脾虚,脾虚则消化功能差,营养吸收有限,营养不良,因此吃的大部分都拉出去了,吃的多拉的多。。。我师傅就是典型的这类人,特别能吃但是人很瘦,瘦到什么程度呢,话说他当年拍婚纱照的时候,为了把西裤撑起来都穿了毛裤,当时可是夏天啊,哈哈,师傅,多有得罪,我还是很爱你的。我也是不容易胖,吃多少都不长肉,但我从来没想过放弃,通过无氧训练和摄入适量碳水化合物和蛋白质,三个月就有了不小的变化,其实网络上那张苦逼的IT人照片就是我。。。

it苦逼大佬

  "也许有同学说,这肌肉还算大?网上有很多比你还瘦的人练得比你还大。和大伙儿解释一下,瘦型人是最不容易长肌肉的,您想,平时那么瘦,身体说变就变得那么极端,这在自然的情况下是不可能的。如果一个瘦型人能练到超大的肌肉块,肯定是注射了类固醇或者睾丸酮。专业的健美运动员为了打比赛,没有不注射这些的。"
  总之坚持是痛苦的,要想成功,脑子中就必须没有“放弃”这个概念。

More Repositories

1

learn-kvm

Qemu KVM(Kernel Virtual Machine)学习笔记
C
830
star
2

linux-0.12

赵炯老师《linux-0.12 内核完全剖析》读书笔记及linux-0.12注释源码
C
454
star
3

sparrow

郑钢《自制编程语言》随书源码及读书笔记
C
212
star
4

c

C语言学习
189
star
5

LinuxKernelTravel

Linux 内核之旅公众号文章
HTML
119
star
6

jz2440

ARM体系结构学习+ARM uboot+Linux内核+Linux驱动
110
star
7

vita

《深度探索Linux操作系统 : 系统构建和原理解析》 学习笔记
Shell
72
star
8

learn-tlpi

TLPI(The Linux Programming Interface)《linux/unix系统编程手册(上、下册)》学习笔记
C
61
star
9

Code-virtualization-and-automation-analysis

代码虚拟化与自动化分析
C++
60
star
10

LinuxDev

Linux阅码场(LinuxDev)公众号文章收集
HTML
56
star
11

X86-assembly-language-from-real-mode-to-protection-mode

x86汇编语言 从实模式到保护模式
Assembly
54
star
12

linux-3

《深入理解Linux网络(张彦飞)》; 《内核解密》;
C
39
star
13

bash

《Linux命令行与Shell脚本编程大全》 学习笔记
36
star
14

CodingInterview2

《剑指Offer》第二版源代码及相关学习笔记~
C++
31
star
15

linux-3.13.0

linux kernel 3.13.0 研究学习 & 电子科技大学 李林 《Linux操作系统内核技术》课程PPT
C
31
star
16

learn-network

计算机网络学习笔记~
30
star
17

Android-software-security-and-reverse-analysis

Android软件安全与逆向分析
Smali
27
star
18

learn-linux

linux基本用法,基本概念,基本原理笔记
26
star
19

linux-net

Linux 1.2.13 网络协议栈学习
C
25
star
20

python

Python 学习笔记
16
star
21

learn-make

GNU Make及Makefile语法语义分析学习笔记
15
star
22

Software-protection-and-analysis-techniques---principles-and-practices

软件保护及分析技术——原理与实践
C++
14
star
23

linux-2.4.0

linux kernel 2.4.0 研究学习
C
13
star
24

parser-elf

ELF解释器及相关学习笔记
Python
13
star
25

learn-cpp

C++学习笔记~汇编C++
C++
12
star
26

learn-vim

vim基本学习
JavaScript
12
star
27

learn-LDDD

《Linux 设备驱动开发详解》(宋宝华) 学习笔记
C
12
star
28

awesome-asm

12
star
29

linux-kernel-driver

Linux内核驱动demo仓(lkm、ldd)
C
11
star
30

learn-unp2

《UNIX网络编程·卷2:进程间通信(第2版)》学习笔记
C
11
star
31

crash

内核crash分析
C
11
star
32

linux-2

《深入理解LINUX内核第三版》、《深入理解LINUX网络内幕》、《深入理解LINUX虚拟内存管理》、《Linux那些事儿之我是USB》学习笔记
C
11
star
33

learn-unp1

《UNIX网络编程 卷1:套接字联网API(第3版)》学习笔记
C
10
star
34

FriendlyARM-Tiny6410

友善之臂(FriendlyARM)开发板Tiny6410学习笔记
9
star
35

learn-linux_exploit

Linux Exploit 学习笔记~
C
9
star
36

learn-awk

awk基本功;学习笔记;上古神器;文本处理三剑客;文本格式化工具;报告生成器
8
star
37

kflow

kenrel 内核函数调用关系分析工具
Python
8
star
38

learn-git

Git学习笔记
7
star
39

markdown-image-paste-delete

Atom markdown快速贴图/删图插件(atom markdown image paste delete plugin)
CoffeeScript
6
star
40

gdb

gdb学习笔记
C
6
star
41

go-raft

raft协议学习
Go
5
star
42

learn-systemd

linux systemd工具学习
5
star
43

eaidk-610

eaidk-610
C++
5
star
44

linux-syscall

linux syscall handbook
5
star
45

learn-ebpf

ebpf学习笔记~
5
star
46

learn-autotools

Autotools : a practitioner's guide to GNU Autoconf, Automake, and Libtool
5
star
47

koji

基于Rocky Linux 8.6/Fedora基础设施koji项目/koji-1.30.1
Python
5
star
48

linux-0.11-lab

C
4
star
49

rocky-linux

Rocky Linux 学习笔记
4
star
50

learn-IMX6U

I.MX6U 开发板学习笔记
4
star
51

those-things-of-linux

《Linux那些事儿》系列读书笔记~TTL(Those Things of Linux)
4
star
52

firefly-rk3399

firefly rk3399玩耍记录
4
star
53

learn-skynet

skynet学习笔记
4
star
54

OpenWrt-gdock

竞斗云2.0 OpenWRT-p2w_r619ac-128m-firmware
Shell
4
star
55

linux-6

Debian kernel 6.1.20
C
4
star
56

learn-imx6ull

跟着原子哥学嵌入式~
4
star
57

SEAL

微软开源同态加密函数库
C++
4
star
58

Ubuntu18.04-MacOS-themes

Ubuntu18.04 MacOS themes
4
star
59

learn-qianfengedu

千锋教育 学习笔记
4
star
60

32to64

x86汇编语言从实模式到保护模式
Assembly
4
star
61

learn-apue

APUE(Advanced Programming in the UNIX)《UNIX环境高级编程(第3版)》学习笔记
C
4
star
62

Android-system-source-code-scene-analysis

android系统源代码情景分析,基于android2.3.1
Java
4
star
63

markdown-preview-auto-open-close

Atom插件:开启/关闭 Markdown 文件时自动开启/关闭预览功能 (Automatically turn on/off preview when opening/closing Markdown files)
JavaScript
4
star
64

learn-mips

MIPS 体系架构学习
4
star
65

pungi

基于Fedora36/Fedora基础设施pungi项目/pungi-4.3.6
Python
3
star
66

learn-kernel

Learn Linux Kernel~
3
star
67

write-a-C-interpreter

C
3
star
68

LinuxHacker

Linux内核学习笔记
C++
3
star
69

runninglinuxkernel_4.0

C
3
star
70

git

git 相关操作,免密码登录等。自己弄一波脚本,自己搞的自己清楚,免得去记忆一波锤子配置文件,懒有懒得技巧~
Shell
3
star
71

pciutils-3.7.0

pciutils-3.7.0
C
3
star
72

createrepo_c

基于Rocky Linux 8.6/rpm-software-management基础设施之createrepo_c解析
C
3
star
73

learn-bcc

bcc学习笔记
3
star
74

ndb

ndb内核调试
3
star
75

rk3399-evb

rk3399-evb(Rockchip RK3399pro evb v11 board)
3
star
76

analysis-cve

CVE Analysis and Exploit
3
star
77

learn-debian

《The Debian Administrator's Handbook》- Debian 管理员手册
3
star
78

learn-kerberos

kerberos协议及工具学习
3
star
79

go-keep

Golang 不停服、不停机、热重启、热升级、热更新
3
star
80

learn-tmux

tmux基本功学习
3
star
81

kdev

Linux内核开发环境构建工具 (2.*/3.*/4.*/5.*/6.*)
Python
3
star
82

learn-m4

GNU m4 是一个通用的宏处理器,由 Brian Kernighan 和 Dennis Ritchie 设计
3
star
83

numactl

numactl解析
Shell
2
star
84

vscode

vscode
2
star
85

skill-idea

IDE 编辑器技巧总结
2
star
86

microsegment

微隔离(Micro-segmentation)
2
star
87

usbutils-010

usbutils-010
2
star
88

repo

repo工具使用
Python
2
star
89

redis-5.0.3

redis-5.0.3
C
2
star
90

tmux

tmux 配置文件
Shell
2
star
91

learn-etcd

etcd raft 高可用、分布式 Key/Value 存储系统
2
star
92

learn-markdown

markdown学习笔记
2
star
93

kubernetes-1.14.0

kubernetes-1.14.0
Go
2
star
94

learn-re

正则表达式学习笔记
2
star
95

learn-zabbix

zabbix学习笔记
2
star
96

patch-2.7.6

patch-2.7.6
C
2
star
97

arch-mips

mips体系架构学习
2
star
98

dnf

dnf-4.7.0
Python
2
star
99

OpenCloudOS

OpenCloudOS 开源操作系统社区
2
star
100

OpenEuler

OpenEuler 开源操作系统社区
2
star