Page Replacement Mechanism

  • 页面守护进程在开始时初始化;
  • 页面守护进程定期检查页面使用情况(100ms);如果免费页面数量不足,它将释放更多页面
  • 四种类型的页面:
    • unreclaimable 不可恢复:例如,锁定的页面、内核模式堆栈;
    • swappable 可交换:回收前必须回写
    • syncable:脏的必须写回
    • discardable 可丢弃:可立即回收。

Page Replacement Algorithm

  • 使用增强的LRU算法,每页维护两个标志:活动/非活动和引用或未引用。
  • 在第一次扫描中,页面的参考位被清除。
  • 如果在第二次扫描期间,页面被引用,则页面将被移动到不太可能回收的状态。否则,页面将移动到更有可能回收的状态。

Linux I/O

  • Linux将设备(I/O)集成到文件系统中,称为特殊文件 special files
  • 阻止特殊文件 block special files -- 磁盘等。
  • 字符特殊文件 character special files -- 键盘、打印机、鼠标等。

Input/Output System Calls in Linux
  • Linux系统中的每个I/O设备通常都有一个与之关联的特殊文件。
  • 大多数I/O都可以通过使用适当的文件来完成。
  • 某些特殊文件需要特殊的POSIX调用。

Implementation of Input/Output in Linux
  • 每个特殊文件都与处理相应设备的设备驱动程序相关联。
    • 主要设备编号——用于识别设备类型
    • 次要设备编号——用于识别相同类型的设备
  • 系统将索引到字符设备的哈希表中以选择适当的结构,然后调用相应的函数来执行工作。

The Linux File System

  • 文件可以在目录中分组;目录存储为文件;目录可以包含子目录。
  • 根目录名为/(斜杠),并且/字符也用于分隔目录名。

Stat System Call

对于每个文件,Linux都会记录其文件类型、大小、上次修改时间等,可以使用stat系统调用查看这些文件

Some System Calls for Directories

mkdir,rmkdir:创建和销毁目录(目录只有在为空时才能删除) link:创建链接;取消链接:删除链接 chdir:更改工作目录 opendir、closedir、readdir、rewinddir:用于读取目录

The Linux Ext2 File System
  • block 0:包含启动计算机的代码
  • superblock:包含有关文件系统布局的信息(i节点数、磁盘块数等)
  • group descriptor:包含有关位图位置、组中空闲块和i节点的数量等信息。
  • two bitmaps:分别跟踪空闲块和空闲i节点
  • i-nodes:包含记帐信息以及足够的信息来定位保存文件数据的所有磁盘块
  • data blocks:存储所有文件和目录的区域

  • 目录文件允许最多255个字符的文件名。
  • 每个目录都由整数个磁盘块组成,因此可以将目录以原子方式写入磁盘。
  • 文件和目录的条目在目录中按未排序的顺序排列。
  • 条目不能跨越磁盘块。

The Structure of I-Node

i-node放在i-node表中,i-node表是一种内核数据结构,用于保存当前打开的文件和目录的所有i-node。

如果一个块大小为1KB,地址长度为4字节,那么一个文件最多可以包含以下i节点索引多大

Ans: 16843020KB ≈ 16448.3MB ≈ 16.1GB

Security in Linux

  • Linux系统的用户社区由一定数量的注册用户组成,每个用户都有一个唯一的UID(用户ID),它是一个介于0和65535之间的整数。
  • 用户可以被组织成多个组,这些组也用称为GID(组ID)的16位整数进行编号。
  • Linux中的基本安全机制很简单。每个进程都携带其所有者的UID和GID。

Security System Calls in Linux

  • chmod:最常用的一种,用于更改保护模式
  • access:查看是否允许使用真实UID和GID进行特定访问
  • getuid、geteuid、getgid、getegid:返回真实有效的uid和gid
  • chown、setuid、setgid:仅允许超级用户更改文件的所有者,以及更改进程的UID和GID

问题

守护进程优先级很低

  • block 0
  • no