0%
第 4 章 抽象:进程
- 进程的非正式定义:进程就是运行中的程序
- 操作系统通过虚拟化(virtualizing)CPU 来提供有许多 CPU 的假象
- 让一个进程只运行一个时间片,然后切换到其他进程
- 性能损失
- 时分共享(time sharing),空分共享(space sharing)
- 低级的机制(mechanism)+ 高级的策略(policy)
- 低级方法或协议,实现了所需的功能
- 调度策略(scheduling policy)
4.1 抽象:进程
- 进程的机器状态(machine state):程序在运行时可以读取或更新的内容
- 内存
- 寄存器
- 通用寄存器
- PC(Program Counter)程序计数器、栈指针(stack
pointer)、帧指针(frame pointer)等
- 打开文件列表
- 一种好的设计方式:分离策略和机制
4.2 进程 API
- 进程 API 所应包括的功能
- 创建(create)
- 销毁(destroy)
- 等待(wait)
- 其他控制(miscellaneous ccontrol)
- 状态(status)
4.3 进程创建:更多细节
程序如何转化为进程
- 将代码和所有静态数据(例如初始化变量)从磁盘加载(load)到内存中
- 必须为运行时栈(run-time stack)分配内存
- C:用栈存放局部变量、函数参数和返回地址
- 操作系统也可能会用参数初始化栈,main() 函数的参数列表(2)
- 可能为程序的堆(heap)分配一些内存
- 执行一些其他初始化任务
- I/O 相关
- Unix 默认情况下每个进程都有3 个打开的文件描述符(file
descriptor),用于标准输入、输出和错误
- 启动程序
4.4 进程状态
- 3 状态
- 运行(running)
- 就绪(ready)
- 阻塞(blocked)
- 可能还会有其他状态
- 初始(initial):表示进程在创建时处于的状态
- 最终(final):已退出但尚未清理的状态
4.5 数据结构
- 进程列表(process list)
- 保存机器状态
- 保存进程信息