20、内存管理(上):为客户保密,规划进程内存空间布局平时我们说计算机的“计算”两个字,其实说的就是两方面,第一,进程和线程对于CPU的使用;第二,对于内存的管理。所以从这一节开始,我们来看看内存管理的机制。 我之前说把内存管理比喻为一个项目组的“封闭开发的会议室”。很显然,如果不隔离,就会不安全、就会...2025-10-31趣谈Linux操作系统
21、内存管理(下):为客户保密,项目组独享会议室封闭开发上一节,我们讲了虚拟空间的布局。接下来,我们需要知道,如何将其映射成为物理地址呢? 你可能已经想到了,咱们前面讲x86 CPU的时候,讲过分段机制,咱们规划虚拟空间的时候,也是将空间分成多个段进行保存。 那就直接用分段机制呗。我们来看看分段机制的原理...2025-10-31趣谈Linux操作系统
22、进程空间管理:项目组还可以自行布置会议室上两节,我们讲了内存管理的三个方面,虚拟内存空间的管理、物理内存的管理以及内存映射。你现在对进程内存空间的整体布局应该有了一个大致的了解。今天我们就来详细看看第一个方面,进程的虚拟内存空间是如何管理的。 32位系统和64位系统的内存布局有的地方相似,...2025-10-31趣谈Linux操作系统
23、物理内存管理(上):会议室管理员如何分配会议室?前一节,我们讲了如何从项目经理的角度看内存,看到的是虚拟地址空间,这些虚拟的地址,总是要映射到物理的页面。这一节,我们来看,物理的页面是如何管理的。 物理内存的组织方式前面咱们讲虚拟内存,涉及物理内存的映射的时候,我们总是把内存想象成它是由连续的一页...2025-10-31趣谈Linux操作系统
24、物理内存管理(下):会议室管理员如何分配会议室?前一节,前面我们解析了整页的分配机制。如果遇到小的对象,物理内存是如何分配的呢?这一节,我们一起来看一看。 小内存的分配前面我们讲过,如果遇到小的对象,会使用slub分配器进行分配。那我们就先来解析它的工作原理。 还记得咱们创建进程的时候,会调用du...2025-10-31趣谈Linux操作系统
25、用户态内存映射:如何找到正确的会议室?前面几节,我们既看了虚拟内存空间如何组织的,也看了物理页面如何管理的。现在我们需要一些数据结构,将二者关联起来。 mmap的原理在虚拟地址空间那一节,我们知道,每一个进程都有一个列表vm_area_struct,指向虚拟地址空间的不同的内存块,这个变...2025-10-31趣谈Linux操作系统
26、内核态内存映射:如何找到正确的会议室?前面讲用户态内存映射机制的时候,我们已经多次引申出了内核的映射机制,但是咱们都暂时放了放,这一节我们就来详细解析一下,让你彻底搞懂它。 首先,你要知道,内核态的内存映射机制,主要包含以下几个部分: 内核态内存映射函数vmalloc、kmap_ato...2025-10-31趣谈Linux操作系统
27、文件系统:项目成果要归档,我们就需要档案库咱们花了这么长的时间,规划了会议室管理系统,这样多个项目执行的时候,隔离性可以得到保证。但是,会议室里面保存的资料还是暂时的,一旦项目结束,会议室会被回收,会议室里面的资料就丢失了。有一些资料我们希望项目结束也能继续保存,这就需要一个和项目运行生命周...2025-10-31趣谈Linux操作系统
28、硬盘文件系统:如何最合理地组织档案库的文档?上一节,我们按照图书馆的模式,规划了档案库,也即文件系统应该有的样子。这一节,我们将这个模式搬到硬盘上来看一看。 我们常见的硬盘是上面这幅图左边的样子,中间圆的部分是磁盘的盘片,右边的图是抽象出来的图。每一层里分多个磁道,每个磁道分多个扇区,每个扇...2025-10-31趣谈Linux操作系统
29、虚拟文件系统:文件多了就需要档案管理系统上一节,咱们的图书馆书架,也就是硬盘上的文件系统格式都搭建好了,现在我们还需要一个图书管理与借阅系统,也就是文件管理模块,不然我们怎么知道书都借给谁了呢? 进程要想往文件系统里面读写数据,需要很多层的组件一起合作。具体是怎么合作的呢?我们一起来看一看...2025-10-31趣谈Linux操作系统