The Layers in a Linux System

  • 操作系统控制硬件并为用户程序提供系统调用;
  • Linux还提供POSIX所需的许多实用程序。

Linux集成程序

Linux Kernel 内核

  • 内核直接位于硬件上,由以下部分组成:
    • I/O设备组件 I/O devices Component
    • 内存管理组件 Memory Management Component
    • 进程管理组件 Processes Management Component

与Linux进程相关的概念

  • 守护进程 Daemon:后台运行的一种特殊进程;
  • 父进程 Parent process:分叉进程;
  • 子进程 Child process:fork系统调用创建的新进程;
  • PID:过程标识符,非零;
  • 过程组 Process group:由其父代、后代、兄弟姐妹、子代和后代组成;
  • 信号 signal:一个进程发送给另一个进程的信息、参数等。
进程实现
由操作系统维护以实现流程模型的表。(每个进程一个条目(entry),称为进程控制块)

跟进程有关的系统调用

创建进程
  • fork系统调用创建原始进程的精确副本
  • 父进程和子进程中的文件描述符、寄存器和其他所有内容都是相同的
  • PID用于区分过程。

  • 调用过程会捕获内核并创建一个任务结构和一些其他伴随的数据结构;
  • 然后Linux查找可用的PID,并更新PID哈希表条目以指向新的任务结构;
  • 内存分配给子级的数据和堆栈段,并制作父级段的精确副本;
  • 子进程开始运行。
POSIX Shell

基于系统调用fork、waitpid和exec的shell实现

ls Commands

shell通过分叉自身的克隆来创建一个新进程。然后,新的shell调用exec,用可执行文件ls的内容覆盖其内存

POSIX Threads

Thread Scheduling
  • Linux线程是内核线程,因此调度基于线程,而不是进程。

  • 常见的进程/线程调度算法:

    • 先到先得

    • 最短工作优先

    • 循环调度

    • 优先级调度

Scheduling in Linux: O(1) Scheduler

  • 两种队列:活动队列、过期队列
  • O(1)时间复杂度:从活动队列中选择优先级最高的任务。如果任务的时间量过期,它将移动到过期列表。
  • 高优先级任务具有更大的时间量。

Memory Management in Linux

  • 虚拟内存(VM):
    • 允许多个进程共享物理内存;
    • 允许执行大流程。
  • 提高虚拟机效率的技术:
    • TLB,多级页表
Multiple Level Page Table
  • 每个虚拟地址分为五个字段。每个目录项的值都是指向下一级目录之一的指针。
  • Linux中的内存管理是基于分页的;进程可以共享文本段。

Memory-mapped Files

Linux中的进程可以通过内存映射文件访问文件数据,以便它们可以同时映射相同的文件。

Memory Allocation Mechanism
  • 分配物理内存的新页帧的主要机制是页分配器。
  • 页面分配器使用众所周知的buddy算法进行操作。

问题

Unix:1969

Linux:1991

A table include the process and all the information that process needs