第4章 抽象:进程

本文介绍了操作系统如何通过抽象进程来实现多个程序并发执行。详细阐述了进程的定义、状态,以及操作系统如何创建和管理进程,包括加载代码到内存、初始化栈和I/O设置。此外,还讨论了进程的API,如创建、销毁、等待和控制接口,并提到了进程状态的转换,如运行、就绪和阻塞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象:进程

背景

进程的定义:运行中的程序

当有许多进程需要运行时,由于它们都要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)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值