抽象:进程
背景
进程的定义:运行中的程序
当有许多进程需要运行时,由于它们都要CPU,所以我们需要提供一种假象:每个进程都独占CPU。操作系统通过虚拟化(virtualizing)CPU来实现这种假象,于是就有了时分共享(time sharing)CPU技术
一个进程运行只运行在一个时间片,然后切换到其他进程
为了更好地实现CPU的虚拟化,操作系统需要一些低级机制以及一些高级智能。
低级机制->机制(mechanism)
一些实现了所需功能的 低级方法或协议
高级智能->策略(policy)
在操作系统内做出某种决定的算法
调度策略(scheduling policy)
分离 策略和机制
机制:how解决问题
策略:解决which问题
4.1 抽象:进程
进程(process):操作系统为正在运行的程序提供的抽象
进程的机器状态(machine state)
内存:进程可以访问的内存:地址空间(address space)
寄存器
4.2 进程API
操作系统提供给进程的接口API
创建(create)
操作系统必须包含一些创建新进程的方法
销毁(destroy)
由于存在创建进程的接口,因此系统还提供了一个强制销毁进程的接口
等待(wait)
有时等待进程停止运行是有用的,因此经常提供某种等待接口
其他控制(miscellaneous control)
除了杀死或等待进程外,有时还可能有其他控制
状态(statu)
通常也有一些接口可以获得有关进程的状态信息,例如运行了多长时间,或者处于什么状态
4.3 进程创建:更多细节
程序如何转换为进程?
操作系统如何启动并运行一个程序?
进程创建实际如何进行?
操作系统将代码和所有静态数据加载(load)到内存中,加载到进程的地址空间中
接着操作系统创建初始化栈&执行I/O设置相关的其他工作
最后启动程序
4.4 进程状态
运行(running):
在运行状态下,进程正在处理器上运行。这意味着它正在执行指令。
就绪(ready):
在就绪状态下,进程已准备好运行,但由于某种原因,操作系统选择不在此时运行。
阻塞(blocked):
在阻塞状态下,一个进程执行了某种操作,直到发生其他事件时才会准备运行。
调度(scheduled)vs 取消调度(descheduled)
更多的状态
4.5 数据结构
操作系统是一个程序,它用关键的数据结构;来追踪各种相关的消息。
进程列表(process list):
里面有所有运行的进程
进程控制块(process control block PCB)