62、搭建操作系统实验环境(下):授人以鱼不如授人以渔上一节我们做了一个实验,添加了一个系统调用,并且编译了内核。这一节,我们来尝试调试内核。这样,我们就可以一步一步来看,内核的代码逻辑执行到哪一步了,对应的变量值是什么。 了解gdb在Linux下面,调试程序使用一个叫作gdb的工具。通过这个工具,我们...2025-10-31趣谈Linux操作系统
61、搭建操作系统实验环境(上):授人以鱼不如授人以渔操作系统的理论部分我们就讲完了,但是计算机这门学科是实验性的。为了更加深入地了解操作系统的本质,我们必须能够做一些上手实验。操作系统的实验,相比其他计算机课程的实验要更加复杂一些。 我们做任何实验,都需要一个实验环境。这个实验环境要搭建在操作系统之上...2025-10-31趣谈Linux操作系统
60、数据中心操作系统:上市敲钟在这门课程里面,我们说了,内核态有很多的模块,可以帮助我们管理硬件设备,最重要的四种硬件资源是CPU、内存、存储和网络。 最初使用汇编语言的前辈,在程序中需要指定使用的硬件资源,例如,指定使用哪个寄存器、放在内存的哪个位置、写入或者读取哪个串口等等。...2025-10-31趣谈Linux操作系统
59、cgroup技术:内部创业公司应该独立核算成本我们前面说了,容器实现封闭的环境主要靠两种技术,一种是“看起来是隔离”的技术Namespace,另一种是用起来是隔离的技术cgroup。 上一节我们讲了“看起来隔离“的技术Namespace,这一节我们就来看一下“用起来隔离“的技术cgroup。 c...2025-10-31趣谈Linux操作系统
58、Namespace技术:内部创业公司应该独立运营上一节我们讲了Docker的基本原理,今天我们来看一下,“看起来隔离的”技术namespace在内核里面是如何工作的。 既然容器是一种类似公司内部创业的技术,我们可以设想一下,如果一个创新项目要独立运营,应该成立哪些看起来独立的组织和部门呢? 首先是...2025-10-31趣谈Linux操作系统
57、容器:大公司为保持创新,鼓励内部创业上一章,我们讲了虚拟化的原理。从一台物理机虚拟化出很多的虚拟机这种方式,一定程度上实现了资源创建的灵活性。但是你同时会发现,虚拟化的方式还是非常复杂的。这有点儿像,你去成立子公司,虽然说公司小,但毕竟是一些独立的公司,麻雀虽小,五脏俱全,因而就像上一...2025-10-31趣谈Linux操作系统
56、网络虚拟化:如何成立独立的合作部?上一节,我们讲了存储虚拟化,这一节我们来讲网络虚拟化。 网络虚拟化有和存储虚拟化类似的地方,例如,它们都是基于virtio的,因而我们在看网络虚拟化的过程中,会看到和存储虚拟化很像的数据结构和原理。但是,网络虚拟化也有自己的特殊性。例如,存储虚拟化是...2025-10-31趣谈Linux操作系统
55、存储虚拟化(下):如何建立自己保管的单独档案库?上一节,我们讲了qemu启动过程中的存储虚拟化。好了,现在qemu启动了,硬盘设备文件已经打开了。那如果我们要往虚拟机的一个进程写入一个文件,该怎么做呢?最终这个文件又是如何落到宿主机上的硬盘文件的呢?这一节,我们一起来看一看。 前端设备驱动virt...2025-10-31趣谈Linux操作系统
54、存储虚拟化(上):如何建立自己保管的单独档案库?前面几节,我们讲了CPU和内存的虚拟化。我们知道,完全虚拟化是很慢的,而通过内核的KVM技术和EPT技术,加速虚拟机对于物理CPU和内存的使用,我们称为硬件辅助虚拟化。 对于一台虚拟机而言,除了要虚拟化CPU和内存,存储和网络也需要虚拟化,存储和网络...2025-10-31趣谈Linux操作系统
53、计算虚拟化之内存:如何建立独立的办公室?上一节,我们解析了计算虚拟化之CPU。可以看到,CPU的虚拟化是用户态的qemu和内核态的KVM共同配合完成的。它们二者通过ioctl进行通信。对于内存管理来讲,也是需要这两者配合完成的。 咱们在内存管理的时候讲过,操作系统给每个进程分配的内存都是虚...2025-10-31趣谈Linux操作系统