现代操作系统读书笔记

一. 进程线程篇

(1) 概念

  1. 进程
    • 运行中程序的实例
  2. 线程
    • 线程是进程中的实体

(2) 区别

  1. 进程是资源分配的基本单位,线程是CPU调度的基本单位
  2. 进程拥有独立的地址空间,线程位于地址空间内,共享地址空间内的全局变量和静态变量.
  3. 线程比起进程的创建,撤销和上下文切换速度更快(10-100倍)

(3) 其他

写时复制 (现代操作系统P128, 深入理解Linux内核P388):

Fork出一个进程后, 子进程拥有自己的进程表项,  但是子进程的进程表项内部页表刚开始只是复制了父进程的, 它们指向相同的物理页框,  但页表中标记该页框为只读, 父子进程的任何一方试图写时引发写保护措施, 陷入内核(TRAP), 然后内核会把对应进程想要写的页面映射并复制到新的页框中, 此时可以放心地写.

进程表 (深入理解计算机系统中文第3版P578, 深入理解Linux内核中文第3版P86):

为一个双向链表, 维护系统所有进程的基本信息. 进程表项为一个名为task_struct的结构体, task_struct大概包含以下信息:

  1. 进程的基本信息(PID, Stack Pointer, Program Counter)
  2. 页表地址, 进程地址空间各段的起始地址(记录此信息, 方便检测程序操作的地址是否合法)
  3. 描述符表(每个进程都有一张, 此为私有), 存储用户打开的文件描述符. 描述符表每一个表项指向全部进程共享的文件表, 文件表记录文件位置, 引用计数等. (深入理解计算机系统中文第3版P634)
  4. 相关文章:  Post Views: 1,320