闭卷重建进程是资源容器也是状态机的对象、状态、事件、不变量与一个失败反例。
操作系统与系统实验 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建创建、退出与父子关系的对象、状态、事件、不变量与一个失败反例。
闭卷重建上下文切换保存什么的对象、状态、事件、不变量与一个失败反例。
闭卷重建线程、共享与线程局部状态的对象、状态、事件、不变量与一个失败反例。
闭卷重建用户级与内核级线程的对象、状态、事件、不变量与一个失败反例。
闭卷重建实验:进程状态合法迁移的对象、状态、事件、不变量与一个失败反例。
闭卷重建实验:Amdahl线程加速边界的对象、状态、事件、不变量与一个失败反例。
核心机制:fork式复制、spawn式创建与exec式映像替换承担不同动作;退出状态需由父进程回收;实验入口:用Python subprocess创建子进程并采集退出码,再模拟父进程不wait时的僵尸记录;边界:孤儿与僵尸不是同义词;exec成功后进程身份可保持而地址空间内容被替换。
核心机制:进程由地址空间、打开资源、凭据和至少一条执行流组成,PCB保存调度与管理所需状态;实验入口:跟踪编辑器启动编译器子进程,从创建、就绪、运行、阻塞到退出逐事件记录PCB变化;边界:程序是静态代码,进程是一次受管理执行;同一程序可对应多个独立进程。
核心机制:同进程线程共享代码、堆和打开文件,却各有寄存器、栈、调度状态和线程局部存储;实验入口:让两个线程更新同一计数器并分别记录栈变量与共享变量,画出可能交错;边界:共享地址空间降低通信成本,也扩大竞态和故障影响;线程安全必须落到具体对象。
核心机制:切换要保存程序计数器、栈指针、通用寄存器和调度状态,必要时改变地址空间与缓存上下文;实验入口:比较线程切换和跨进程切换的保存集合,用时间线拆出调度决定、保存、恢复和缓存冷却;边界:切换开销不是固定常数;切换频繁也不能直接推出CPU利用率低,需看工作负载与等待。
核心机制:状态迁移必须由创建、调度、抢占、等待、唤醒或退出等合法事件触发;实验入口:实现状态机读取READY RUN BLOCK WAKE EXIT事件并输出最终状态或首个非法迁移位置;边界:不存在BLOCKED直接被调度为RUNNING的合法捷径;唤醒只回到READY。
核心机制:多对一、一对一和多对多模型在阻塞、并行、调度控制与运行时复杂度之间权衡;实验入口:给定四核与一个阻塞系统调用,推演三种线程映射下还能运行多少执行流;边界:绿色线程不是天然更快,异步运行时也没有消除内核调度和阻塞边界。
核心机制:并行加速受串行比例、核数、同步与调度开销共同限制;实验入口:输入串行比例和核数,计算理想Amdahl加速比并与实测时间比较;边界:核数趋于无穷时上限仍为1/s;公式不包含现实开销,不能把理想值当承诺。