Linux Primitives

查看原文

这份 Presentation 文档在 High Level 纵览了 Linux 的诸多概念,很推荐阅读。

  • Linux 就是一个 GNU user space,而程序则是和 GNU libc 与其它用户态的 libraries 交互的东西。当然,还有很多种 libc 的实现,我们可以选择一种 libc 的实现放在容器里面。
  • 容器 本身不是内核的概念,它只是一组进程,有相同的 namespaces / cgroups 等等。
  • 进程 & 线程在内核中有相同的数据结构 task, 这货有千余个字段,大约 1k, 一般比较经常用到的是 user, pid, tgid 等字段。
  • 至于用户和组,内核才不关心谁的名字是什么,说到底就是几个数字:ruid, suid, euid, fsuid
  • 内核提供的虚拟文件系统可以将文件系统挂到一个目录去
  • CGroups 控制/审计/限制系统资源,诸如 cpu 内存 网络等用量,它基于 文件系统的 API
  • Namespaces 在内核中也依然是数据结构,可以通过 /proc/<pid>/ns 查看进程的 ns。