抽象:进程
进程的非正式定义:
运行中的程序
时分共享(time sharing)CPU技术:
通过让一个进程只运行一个时间片,然后切换到其他进程,提供存在多个虚拟CPU的假象,允许用户运行多个并发进程。潜在开销是性能损失。
机制(mechanism)和策略(policy):
机制是一些低级方法或协议,实现所需的功能,解决“how”问题。
策略是在操作系统内做出某种决定的算法,解决“which”问题。
分离:将两者分开可以轻松改变策略,而不必重新考虑机制,因此这是一种模块化(modularity)的形式,一种通用的软件设计原则。
1. 抽象:进程概念
进程(process):
操作系统为正在运行的程序提供的抽象。
进程的机器状态(machine state):
程序在运行是可以读取或更新的内容,包括内存、寄存器和存储设备。
2. 进程API
操作系统的所有接口必须包含:
- 创建(create)
- 销毁(destroy)
- 等待(wait)
- 其他控制(miscellaneous control)
- 状态(status)
3. 进程创建:更多细节
步骤:
- 将代码和所有静态数据加载到内存中,加载到进程的地址空间中。
- 为程序运行时栈(run-time stack)和程序的堆(heap)分配内存。
- 执行初始化任务,特别是与输入/输出(I/O)相关的任务。
- 启动程序,在入口处运行,即 mian()。
跳转到 mian() 例程后,OS将CPU的控制权转移到新创建的进程中,从而程序开始执行。
4. 进程状态
进程可以处于以下三种状态之一:
- 运行(runing):
程序在处理器上运行,执行指令。 - 就绪(ready):
进程准备好运行但不在此时运行,可能CPU被占用。 - 阻塞(blocked):
进程执行某种操作,如从磁盘读取数据或等待网络数据包,直到发生其他事件才准备运行。此时其他进程可以使用处理器。
5. 数据结构
data structure
操作系统有一些关键的数据结构来跟踪各种相关的信息。
如:进程列表(process list)