手把手带你写一门编程语言
宫文学
北京原点代码 CEO
7235 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
起步篇:让一门超简单的语言跑起来 (21讲)
结束语 (1讲)
手把手带你写一门编程语言
15
15
1.0x
00:00/00:00
登录|注册

13|物理机上程序运行的软件环境是怎么样的?

你好,我是宫文学。
上一节课,我们主要讨论了程序运行的硬件环境。在某些编程场景下(比如嵌入式编程),我们的语言需要直接跑在裸设备上。所以,你要能够理解在裸设备上运行某个语言的程序所需要的技术。
不过,现代语言大部分情况下都运行在某个操作系统里,操作系统为语言提供了基础的运行环境,比如定义了可执行文件的格式、程序在内存中的布局、内存管理机制,还有并发机制等等。计算机语言需要跟操作系统紧密配合,才能更好地运行。
今天这节课,我们就来讨论一下操作系统中与计算机语言有关的那些知识点,包括内存管理、任务管理和 ABI,为进一步实现我们的计算机语言打下良好的基础。
首先我们来看看操作系统的内存管理功能和程序的关系。

内存管理

操作系统的一个重要功能就是管理内存,它会把内存虚拟化,并进行内存访问的权限管理。
那什么是虚拟化呢?
虚拟化就是让每个进程都有一个自己可以用的寻址空间,不过这些地址是假的地址。但就这些假地址,我们通过指令发给 CPU,CPU 也是认的。因为 CPU 中有一个内存管理单元,缩写是 MMU,它能够根据这个逻辑地址,计算出在内存里真实的物理地址。MMU 还可以跟操作系统配合,设置每个内存页面的权限,包括是否可读、可写和可执行。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 大豆
    如果没有操作系统,那么。 1、虚拟化内存及虚拟化cpu将不存在,开发难度大大增加,出错概率也大大增加。 2、io效率大大降低。 3、直接操作硬件会带来更多的安全风险。 4、由于无法使用高级编程语言,开发效率会降低(这个不是很确认,哈哈哈)。

    作者回复: 感谢分享,很好!

    1
  • 罗 乾 林
    没有操作系统环境下: 1、程序编译时需要指定程序链接时的地址布局 2、运行时需要将程序加载到对应的物理地址再从指定地址运行

    作者回复: 很好!

    1
  • ifelse
    学习打卡
    归属地:浙江
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部