《Linux内核分析与应用》第二章 : 内存寻址

从零打造自己的操作系统可能么?

学东西要追根溯源,因为树叶的东西太过繁多,而且不小心会被树叶带走。计算机的鼻祖到底是谁?图灵还是冯诺依曼,他们都是大神,但是,且慢,仔细考查一下,思维的源头在哪里?原来,图灵只是做了一个思维实验,整出一个图灵机来,图灵机真的是一台机器么,别被字面的意思所欺骗,其实,图灵机只是一种通用自动机器模型。它的理念是,“有一个二端无限沿伸的纸带作为存储装置,输入,输出和状态转移函数是一个机器的三要素,这三要素组合并变形可成为一切机器的原型,可解决一切图灵机能解决的问题”。

图灵机听起来是纸上谈兵,但它却是当代冯.诺依曼计算机体系的理论鼻祖。它带来的“数据连续存储和选择读取思想”是目前我们使用的几乎所有机器运行背后的灵魂。计算机体系结构中的核心问题之一就是如何有效地进行内存寻址,因为所有运算的前提都是先要从内存中取得数据,所以内存寻址技术从某种程度上代表了计算机技术。按照面向对象的思想,如果说图灵机是一个类的话,那么冯.诺依曼的计算机体系则是一个对象, 这就把我们从思维的捆绑中解放出来,也就是,你可以造出自己的计算机,请看《我的世界》里从零打造一台计算机有多难?复旦本科生大神花费了一年心血

第二章

那么,为什么第二章要讲内存寻址?你能不能从零打造一个自己的操作系统?这一章讲的段机制和分页机制到底与写一个操作系统有什么关系?

本来分段和分页是内存管理相关的内容,但是,当你想写一个操作系统时,必须考虑操作系统的启动,如果是在x86的体系架构下来开发,那么段机制,页机制,你绕不过去,怎么办?

欲穷千里目,更上一层楼


  • 第一讲 内存寻址概述,让你追根溯源到4位机,然后一步一步演变到32位,乃至64位,回顾历史不仅仅是为了展望未来,更看出技术的演变是被需求所推动,这其中,要有所悟,而不仅仅看到的是数字的变化和阶段的演变。从实模式到保护模式,这中间的跨度这么大,设计人员是颇费心思的,也需要自己去领悟。
  • 第二讲 段机制,同样要追根溯源,为什么要引入段机制?这就要从程序的编译、链接和装载说起(详细内容请参考程序员的自我修养),如果没有时间看,可以看浅墨写的编译链接那点事<上>和编译链接哪些事<下>

如果想对保护模式有较为详细的了解,请看浅墨写的四篇系列文章:
  • 保护模式汇编系列之一 - 初探保护模式

  • 保护模式汇编系列之二 - 中断和异常处理

  • 保护模式汇编系列之三 - 段页式内存管理(一)

  • 保护模式汇编系列之四 - 段页式内存管理(二)

有了这些基础后,是否就可以着手操作系统的打造了?

是 的 !

更详细的文档,参见:
  • x86架构操作系统内核的实现

老师寄语

实现一个操作系统可不是一朝一夕的,如果你觉得自己的实力还不够,那就先不着急,把这些文档保存起来,慢慢消化。如果你想马上动手,那么,先行动起来,毕竟,心动不如行动。   --陈老师

更多学习资源

Linux内核之旅网站

Linux内核之旅微信公众号

陈老师Linux内核内存寻址导学相关推荐

  1. 陈老师Linux内核概述导学

    <Linux内核分析与应用>第一章 : 概述 Are you ready? Linux内核像一座金山,又像一片茂密的森林,出发的入口在哪里?仅仅只有C基础和数据结构知识,也想感受Linux ...

  2. 万字整理,肝翻Linux内存管理所有知识点【Linux内核开发人员必学】都是精髓

    Linux的内存管理可谓是学好Linux的必经之路,也是Linux的关键知识点,有人说打通了内存管理的知识,也就打通了Linux的任督二脉,这一点不夸张.有人问网上有很多Linux内存管理的内容,为什 ...

  3. Linux内核内存管理:地址转换和MMU

    地址转换和MMU 虚拟内存是一个概念,是给进程的一种错觉,因此它认为自己拥有巨大的.几乎无限的内存,有时甚至比系统实际拥有的内存还要多.每次访问内存位置时,由CPU将虚拟地址转换为物理地址.这种机制称 ...

  4. pae扩展内存 linux,浅析linux内核内存管理之PAE

    浅析linux内核内存管理之PAE 早期Intel处理器从80386到Pentium使用32位物理地址,理论上,这样可以访问4GB的RAM.然而,大型服务器需要大于4GB的RAM来同时运行数以千计的进 ...

  5. linux 内核内存管理

    物理内存 相关数据结构 page(页) Linux 内核内存管理的实现以 page 数据结构为核心,其他的内存管理设施都基于 page 数据结构,如 VMA 管理.缺页中断.RMAP.页面分配与回收等 ...

  6. 【Linux 内核 内存管理】虚拟地址空间布局架构 ③ ( 内存描述符 mm_struct 结构体成员分析 | mmap | mm_rb | task_size | pgd | mm_users )

    文章目录 一.mm_struct 结构体成员分析 1.mmap 成员 2.mm_rb 成员 3.get_unmapped_area 函数指针 4.task_size 成员 5.pgd 成员 6.mm_ ...

  7. 【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )

    文章目录 一.内存分配系统调用过程 ( 用户层 | 系统调用 | 内核层 ) 二.内存管理流程 一.内存分配系统调用过程 ( 用户层 | 系统调用 | 内核层 ) " 堆内存 " ...

  8. 【Linux 内核 内存管理】内存管理架构 ② ( 用户空间内存管理 | malloc | ptmalloc | 内核空间内存管理 | sys_brk | sys_mmap | sys_munmap)

    文章目录 一.用户空间内存管理 ( malloc / free / ptmalloc / jemalloc / tcmalloc ) 二.内核空间内存管理 1.内核内存管理系统调用 ( sys_brk ...

  9. 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    文章目录 一.禁止 / 开启内核抢占 与 方法保护临界区 二.编译器优化屏障 三.preempt_disable 禁止内核抢占 源码 四.preempt_enable 开启内核抢占 源码 一.禁止 / ...

最新文章

  1. MySQL提权简单方法
  2. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法
  3. VMware将世界领先的云访问安全代理合作伙伴纳入移动安全联盟
  4. 仍在警告:配置“编译”已过时,并已由“实现”代替
  5. Python+Anaconda+PyCharm的安装和基本使用
  6. 重磅推荐:2020年人工智能最精彩的25篇论文(附下载)
  7. Java EE 7 / JAX-RS 2.0:具有自定义HTTP标头的简单REST API身份验证和授权
  8. 计算机主机后面辐射大,电脑的背面辐射大吗
  9. 1011. World Cup Betting (20)
  10. 北大提出Gate Decorator,利用LSTM思想来做CNN剪枝
  11. 一个核心系统 3 万多行代码的重构之旅
  12. VB制作OCX控件的步骤
  13. C语言入栈算法,栈的入栈、出栈、获取栈顶的c语言算法
  14. NC17857起床困难综合症
  15. 【笔记】Opencv 绘制朱利亚(Julia)集合图形
  16. 【题解】选数字 [51nod1354]
  17. 德银天下招股书再度“失效”,陕汽控股集团提前“套现”约5亿元
  18. 饿了么-T技术沙龙活动感悟。
  19. Windows10版本即将终止服务请立即重启
  20. 怎么打印加密的PDF文件?

热门文章

  1. maven 更改项目名称
  2. 【逆向】UE4 渲染流程分析
  3. cmder tips
  4. CMake编译Makefile
  5. 浅析机器视觉在安防行业的应用
  6. SQL函数--- SQL FIRST()
  7. 关系竞争 :今目标可能成为个一个的企业社交网络
  8. SQLSERVER拆分字符串的函数(表值函数)
  9. 微信红包的架构设计简介
  10. validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/