操作系统实战45讲
彭东
网名 LMOS,Intel 傲腾项目关键开发者
新⼈⾸单¥59.9
1475 人已学习
课程目录
已更新 2 讲 / 共 45 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么要学写一个操作系统?
免费
尝尝鲜:从一个Hello到另一个Hello (1讲)
01 | 程序的运行过程:从代码到机器运行
操作系统实战45讲
15
15
1.0x
00:00/00:00
登录|注册

01 | 程序的运行过程:从代码到机器运行

LMOS 2021-05-10
你好,我是 LMOS。
欢迎来到操作系统第一课。在真正打造操作系统前,有一条必经之路:你知道程序是如何运行的吗?
一个熟练的编程老手只需肉眼看着代码,就能对其运行的过程了如指掌。但对于初学者来说,这常常是很困难的事,这需要好几年的程序开发经验,和在长期的程序开发过程中对编程基本功的积累。
我记得自己最初学习操作系统的时候,面对逻辑稍微复杂的一些程序,在编写、调试代码时,就会陷入代码的迷宫,找不到东南西北。
不知道你现在处在什么阶段,是否曾有同样的感受?我常常说,扎实的基本功就像手里的指南针,你可以一步步强大到不依赖它,但是不能没有。
因此今天,我将带领你从“Hello World”起,扎实基本功,探索程序如何运行的所有细节和原理。

一切要从牛人做的牛逼事说起

第一位牛人,是世界级计算机大佬的传奇——Unix 之父 Ken Thompson
在上世纪 60 年代的一个夏天,Ken Thompson 的妻子要回娘家一个月。呆在贝尔实验室的他,竟然利用这极为孤独的一个月,开发出了 UNiplexed Information and Computing System(UNICS)——即 UNIX 的雏形,一个全新的操作系统。
要知道,在当时 C 语言并没有诞生,从严格意义上说,他是用 B 语言和汇编语言在 PDP-7 的机器上完成的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《操作系统实战45讲》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(7)

  • pedro
    call和ret其实是一对相反指令,调用call时会将当前IP入栈,即push IP,然后执行跳转即jmp,而ret也是将栈中的IP推出写入IP寄存器,即pop IP。
    2021-05-10
    7
  • Fan
    书跟专栏在内容上有什么区别呢?

    作者回复: 你好,Fan,书比较单一,书中是lmosem基于arm920非常古老了。专栏是基于X86-64,每章节在讲解原理并实践后再去和linux对比,自己学会的同时,加深了对linux的理解 ,增加了虚拟化和云相关的内容

    2021-05-10
    2
  • 石维康
    call = jump+push eip
    ret = pop eip

    作者回复: 你好,call = 先将eip压 然后再跳转 哈哈

    2021-05-10
    2
  • qpzm7903
    执行gcc -o 报错了
    ➜ HelloWorld git:(master) ✗ gcc -o HelloWorld.c
    gcc: fatal error: no input files
    compilation terminated.
    2021-05-10
  • 小样
    我可以鸡蛋里挑骨头吗?第一版的hello world的main的返回值可能是void,不然后世也不会有k&r c这种风格的说法了。
    2021-05-10
  • 连国辛
    gcc那行命令需要在什么情况下才能运行呢?

    作者回复: 你好,你电脑上安装了Linux就行了

    2021-05-10
  • 邓斌
    想要打好最基础的这些东西,建议看<深入理解计算机系统>这本书(也叫CSAPP)

    作者回复: 你好,邓斌 你说的这是本好书,其实课程中也包含必要的基础知识点 ,不用担心

    2021-05-10
    1
收起评论
7
返回
顶部