结合虚拟化技术分析Linux系统的一般执行过程
namespace 技术
- namespace 是 Linux 内核的一组特性,支持对内核资源进行分区隔离,让一组进程只能看到一组资源,而另一组进程只能看到另一组不同的资源。换句话说,namespace 的关键特性是进程隔离。在运行许多不同服务的服务器上,将各个服务及其相关进程相互隔离能够减少系统环境变更带来的影响,以及避免系统安全性方面的问题。
- namespace 技术是实现容器的核心技术。容器提供了一个独立的环境,看起来就像一个完整的虚拟机,但它不是虚拟机,而是正在运行的一组进程。如果启动了两个容器,那么将有两组进程运行,但两者之间是相互隔离的,namespace 技术实现了进程隔离。在同一个 namespace 下的一组进程之间可以感知彼此的变化,而对外界的进程一无所知。这样就可以让容器中的进程产生错觉,认为自己置身于一个独立的系统中,从而达到进程隔离的目的。
cgroups 技术
- cgroups 的全称是 Linux Control Groups,主要作用是在 Linux 内核中限制、记录和隔离进程组(process groups)使用的物理资源,比如 CPU、Memory、I/O 等。
- cgroup 和 namespace 类似,也是将进程进行分组,但它的目的和 namespace 不一样,namespace 是为了隔离进程组之间的资源,而 cgroup 是为了对一组进程进行统一的资源监控和限制,比如内存使用上限以及文件系统的缓存限制、CPU 利用和磁盘 I/O 吞吐的优先级控制、为了计费的审计或统计功能,以及挂起/恢复执行进程等进程控制功能。
- 要想对进程资源进行管理和限制,需要考虑如何抽象进程和资源,同时要考虑如何组织它们。
结合课程学习情况谈谈您在Linux操作系统分析课程中的收获
- 从Unix到Linux的发展过程,学习了Linux操作系统的发展
- 学习了自由软件运动
- 学习了开源软件许可证的种类
- Linux常用命令
- 计算机系统的架构冯诺依曼和哈弗架构
- 复杂指令集和简单指令集
- x86和ARM64
- Linux内核调试过程
- 深入理解系统调用
- 进程的描述和描述的创建
- 可执行程序的执行原理
- Linux I/O 和设备管理
- 进程调度和切换
- 虚拟机技术
- Linux容器技术