08 | 操作系统内核与编程接口
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了操作系统内核与编程接口在软件开发中的重要性和基本原理。首先介绍了冯·诺依曼计算机体系、操作系统和编程语言的关系,以及它们如何提供编程接口。其次,讨论了编程语言的发展和系统调用的重要性,系统调用是软件进程使用操作系统能力的基础,包括进程间通讯的机制。文章还解释了CPU的代码执行权限等级和操作系统内核的执行权限等级。另外,介绍了动态库的原理和操作系统与编程语言的关系。最后,总结了中央处理器、编程语言和操作系统对应用软件开放的编程接口,强调了系统调用机制实现了操作系统和应用软件的隔离性和安全性,同时保证了执行性能。整体而言,本文对于想要深入了解软件开发基础架构的读者来说,是一篇值得阅读的文章。
《许式伟的架构课》,新⼈⾸单¥68
全部留言(64)
- 最新
- 精选
- Fz交叉编译不是很理解
作者回复: 其实理解清楚一个实质:编译器就是把高级语言翻译成为机器码,更抽象说,它其实就是格式转换器。目标格式是不是编译器正在运行的环境并不重要,只不过如果目标格式刚好是当前机器的CPU+操作系统,那么目标格式就可以直接执行,否则就编译出一个当前环境下无法执行的目标格式,这种情况就叫交叉编译。
2019-05-10555 - SuperFrankycpu不需要检查是否发生了中断,它的原理类似于开关和灯泡的关系,当开关合上,灯泡就会亮,灯泡不需要定期检查开关是否合上了
作者回复: 👍
2019-05-11233 - 晓凉优秀的架构设计能带来的好处可能超出架构师最初的预想,例如Linux系统的容器特性,现在成了云计算领域的重要基础技术,成就了一个领域。基于前辈大师的优秀架构,现在的信息世界才能如此生生不息。优秀的架构不仅能解决当前的实际问题,更具有理论上的优雅,像一种真理,可照亮未来。
作者回复: 我们日常所见明明有无数设计精良的例子,所以我们其实不需要一上来去设计新的例子,从这些最宏大的例子学起
2019-05-1227 - 云学看完有种苹果砸到脑袋上的感觉,好多问题之前总想不透,现在贯通了,许老师可以创立个品牌专门教小孩编程,以老师的功底肯定能教会
作者回复: 正在教自家小孩😊
2019-05-12217 - M请问一下cpu是如何检查是否有中断的。是怎么及时知道发生了中断?每执行完一条指令都去检查一次吗?
作者回复: 挺好的问题。硬件中断和软中断不一样。硬件中断你可以理解为总是会定期检查。软中断本身是一条指令,所以不存在检查这样的概念。
2019-05-10315 - 码农Kevin亮我重复一下我理解的交叉编译,老师帮忙看看理解对不对: 编译的目标是生成机器码指令,即对cpu有意义的01序列。当出现新的cpu指令时,本质上只是生成一个新的01序列。整个自举的过程有点像自然语言的自举,比如用原有的词汇去解释新的词汇。 是这样理解么?
作者回复: 是这样
2019-10-0311 - 杨寅冬老师可以谈谈最近华为要推出的“鸿蒙系统”吗,和Linux有什么关系,如果想开发一个操作系统,从哪些方面考虑。
作者回复: 做操作系统的难度不在技术,而是在:1、用户为何用你,你有何不可替代性;2、开发者为何要支持你,你用户多不多。
2019-06-17211 - new life老师 但是实际上常见的系统级语言(比如 C 语言)都是可以编写出不依赖任何内核的程序的。这句话是说我们编写的程序 没有操作系统也可以跑起来是吗
作者回复: 要让引导程序给你执行权才行,如果你写一个不依赖操作系统的程序,但是要让操作系统执行它是行不通的,因为操作系统接管了所有的资源,你不依赖它什么也干不了(没有权限)。所以这种写法基本上只适合写另一个操作系统。
2019-05-11210 - 小袋子插个题外话,以老师的经验,小孩几岁开始学编程比较合适😂
作者回复: 8-9岁
2019-06-239 - 行者关于动态库,是不是可以理解为:提供动态库不是操作系统的责任(因为其他语言完全可以通过系统调用来自己实现动态库的功能),只是操作系统为了方便其他语言(减少不必要的冗余)而做的多余的事?
作者回复: 是的
2019-05-1328