Linux-Systemd
一、再次回顾启动流程
1.1 stage 1
在学 OS 的时候我就已经写过一篇介绍启动流程的文章了,在我忙了一上午以后重新学了一遍,发现其实之前就已经学的十分详细了,属于是自己造自己的轮子了。不过再次回顾,尤其是结合了自己开发操作系统的经验,还是发现很多重点的,所以再来回顾一遍。
首先是关于启动最初,bios,MBR 和 grub 的区别
在学 OS 的时候我就已经写过一篇介绍启动流程的文章了,在我忙了一上午以后重新学了一遍,发现其实之前就已经学的十分详细了,属于是自己造自己的轮子了。不过再次回顾,尤其是结合了自己开发操作系统的经验,还是发现很多重点的,所以再来回顾一遍。
首先是关于启动最初,bios,MBR 和 grub 的区别
当我们提起 git 的时候,我们总说它是版本控制工具。但是版本控制工具到底是什么?我觉得是一种特化的数据库,我们根据版本号去查询对应的项目内容,这种特殊数据库用于进行代码管理。而对于 git,我愿意定义它为 “分布式、并发、无锁数据库”。
Git 是 Linus 写出来的版本控制工具,其诞生的直接原因是原来为 Linux 进行版本控制的工具 BitKeeper 不再免费了。也就是说,git 的直接需求是 Linux 的版本控制,而 Linux 是世界上最复杂的开源项目之一,所以 git 的设计是较为彪悍的,它支持最为复杂的分布式并发开发,并且可以促进这种集市一般的开发文化。
正因为如此,我个人觉得 git 并不用户友好,它迫使每一个希望更好地利用 git 的用户,都需要去了解 git 的底层实现理解和 git 面临的现实需求。光是 “指针分离” 这一个常见的现象,如果希望合理的解释,那么就必须深入 git 的底层实现,在了解了指针引用,版本快照,追踪分支和版本快照等一系列实现知识后,还需要了解频繁切换分支,生成分支,并行开发,分布式开发等多个版本管理需求,才可以明白它为啥不把这种直接暴露底层实现的功能更好的封装一下。
总的来说,git 不够友好,不够简洁,并不是开发者的开发水平不行,而是其需求过于强了,所以不得不将工具设计得这么复杂。而如 vscode 或者 IDEA 将 git 封装成更为易用的状态,但是这种方式往往限制了 git 的功能,其本质其实是限制了需求的强度。而一旦面对更高强度的需求,不得不承认 git 做得已经很 “友好简洁” 了。
如何熟悉工具呢?我觉得最为重要的是理解工具被设计和使用时的理念或者概念或者抽象,只要理解了工具中蕴含的理念是什么,对于具体的操作,就可以抄文档了。
linux 下的常见命令行工具有什么特点呢?这些常见的,简单的命令行工具,本质是 GNU/Linux 生态的一部分,他们的很多概念,本质是 Linux Kernel 的概念的延续和拓展。
GNU/Linux 的伟大真的是难以形容啊。
进程调度的本质是对于计算资源的分配,被调度到的进程拥有计算资源,就可以更快地完成自己的计算任务。不同的调度策略会使得计算系统呈现不同的效果,非独占式的轮流调度会使得每个进程的等待延迟减少,同时提高系统的并行度,进而提高吞吐量,但是会提高任务完成的延迟;独占式的串行调度,会让进程在运行时独占所有资源,可以降低任务完成的延迟,但是会增加任务的等待延迟,同时降低系统的吞吐量。
portability 可移植性
symposium 会议
modularity 模块化
monolithic 单片机,宏(内核)
bypass 绕过
non-trival 非平凡的,可观的
invocation 调用
compatible 兼容,backward compatible 向后兼容
capability 能力,权限
resurgent 复兴的,复苏的
heterogenous 异构
relay 继电器,转发,中转
semantics 语义学
underly 基本的,本质的
manipulate 操作
plane 飞机,层次,平面
respectively 独立地,各自地
dicated 精心设计的
tenant 租户
lease 租借,租用
commodity 商品,货物
adversary 对手
comprise 包括,构成
LOC,line of code 代码行数
cyber 计算机相关的
traverse 遍历
obstacle 障碍
order-of-magnitude 多个数量级
roundtrips 往返
retain 保留
leverage 使用,杠杆
indirection 间接
stale 陈旧的
fallback 倒退的
senarios 场景
enclave 飞地
scale 规模,可拓展性
encryption 加密
negligible 微不足道的
revisit 重温
feasibility 可行性
vesatile 灵活的,多样化的
best-effort 尽力而为的
preemption 抢占式
monopolize 垄断
utilization 利用率
idempotent 幂等的
devise 设计发明
paradigm 范例
stipulate 规定
effacy 功效
coarse-grained 粗粒度的
intuitive 直观的
proatively 积极主动的
indispensable 不可或缺的
polling 轮询
impose 强加于
indepth 深入的
reclaim 回收
remedy 弥补
retrofit 改造
incur 导致,招致
intercept 拦截
fusion 融合
substitution 替代品
heuristic 启发式
saturate 饱合
perception 观念,感知
amplify 扩大,增大
premise 前提
incoporation 合并,加入
tune 调整
contention 竞争
orthogonal 正交
Virtualization, Security, Distributed, Parallelism
你为什么加入 IPADS?
当我还是大二的学生的时候,我就听学长说起过 IPADS,他将 IPADS 描绘得很好,所以我基本上当时就很好奇,之后也是关注了 IPADS 的知乎账号,所以对于 IPADS 的进展有很深的了解。从客观上来讲,我个人的科研兴趣是系统软件,这很符合 IPADS 的研究方向。从主观来讲,我希望我从事的工作不只是一份工作,更是一个艺术品,我希望我的作品精益求精,我觉得这种想法和 IPADS 的实验室文化是相通的。
When I was a sophomore in college, I heard my senior talk about IPADS, and he described IPADS very well, so I was basically very curious at that time, and after that, I also followed the IPADS Zhihu account, so I have a very deep understanding of the progress of IPADS. Objectively, my personal research interest is in system software, which fits well with the research direction of IPADS. Subjectively, I hope that my work is not just a job, but also a work of art, and I hope that my work will be perfect, which I think is in line with the lab culture of IPADS.
应当意识到,我没有办法依靠平时的积累写出一篇华美的文章。写作或者说表达是必须依靠模板。而 “模板” 的范围不应该只限于语法层面的 “开头,中间段,结尾”。它应当还包括 “语义” 层面,比如说 “意义应当从哪几个角度去答?需要引入事例还是单纯进行说理?” 这样的模板。
还是要感慨一下,英语六级其实和英语能力不太沾边。哪怕是沾边,我也没有办法将其他的英语能力换成成绩。反而言之,即使我的六级成绩不好,但是真的遇到需要英语的场合,也应当坦然积极的准备,而不是自怨自艾,自我否定。
你说这些,跟我有什么关系?