18、进程的创建:如何发起一个新项目?前面我们学习了如何使用fork创建进程,也学习了进程管理和调度的相关数据结构。这一节,我们就来看一看,创建进程这个动作在内核里都做了什么事情。 fork是一个系统调用,根据咱们讲过的系统调用的流程,流程的最后会在sys_call_table中找到相应...2025-10-31趣谈Linux操作系统
19、线程的创建:如何执行一个新子项目?上一节,我们了解了进程创建的整个过程,今天我们来看线程创建的过程。 我们前面已经写过多线程编程的程序了,你应该都知道创建一个线程调用的是pthread_create,可你知道它背后的机制吗? 用户态创建线程你可能会问,咱们之前不是讲过了吗?无论是进程...2025-10-31趣谈Linux操作系统
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操作系统