CPU虚拟化重点知识(1)-操作系统导论第四章

# CPU虚拟化重点知识

## 一、抽象:进程

进程的非正式定义:进程就是运行中的程序。程序本身是没有生命周期的,它知识存在在磁盘上面的一些指令。是操作系统让这些字节运行起来,让程序发挥作用。

> 关键问题:如何提供有许多CPU的假象?

> 虽然只有少量的物理CPU可用,但是操作系统如何提供几乎有无数个CPU可用的假象?

操作系统通过虚拟化CPU(virtualizing)提供这种假象。通过让一个进程只运行一个时间片,然后切换到其他进程,操作系统提供了存在多个虚拟CPU的假象。这就是时分共享CPU技术,允许用户如愿运行多个并发进程。

要实现CPU虚拟化,操作系统需要一些机制和策略。

## 二、抽象:进程概念

进程的机器状态:程序在运行时可以读取或更新内容。

- 进程的机器状态有一个明显组成部分,内存。进程可以访问的内存是该进程的一部分。

- 进程的机器状态另一部分是寄存器。许多指令明确的读取或更新寄存器。

- 进程经常访问持久存储设备。此类I/O信息可能包含当前打开的文件列表。

## 三、进程API

- 创建(create):操作系统必须包含一些创建新进程的方法。
- 销毁(destroy):操作系统提供一个强制销毁进程的接口。
- 等待(wait):等待其他进程运行结束
- 其他控制(miscellaneous control)
- 状态(statu):查看进程当前状态。

## 四、进程创建:更多细节

操作系统运行程序的步骤:

1. 将代码和所有静态数据(初始化变量)加载(load)到内存中。

> 在早期操作系统中,加载过程尽早完成,即在运行程序之前全部完成。现代操作系统采用懒加载执行,即仅在程序执行期间需要加载的代码或数据片段才会加载。

2. 为程序的运行时栈(run-timestack)分配一些内存。C程序使用栈存放局部变量、函数参数或返回地址。
3. 操作系统为程序的堆分配一些内存。C程序使用堆来显示请求动态分配数据。
4. 其他初始化任务如I/O任务。

## 五、进程状态

- 运行(running):在运行状态下,进程正在处理器上运行。
- 就绪(ready):在就绪状态下,进程以准备好运行,但由于某种原因,操作系统选择不在此时运行。
- 阻塞(blocked):在阻塞状态下,一个进程执行了某种操作,指导发生其他事件时才会准备运行。

![p1](.\进程状态.PNG)

## 六、数据结构

- 操作系统为就绪的进程保留某种进程列表(process list),跟踪当前重在运行的进程的一些附加信息。
- 跟踪当前正在运行的进程的一些附加信息。
- 跟踪被阻塞的进程。
- 确保唤醒正确的进程。

操作系统的状态
`UNUSED,EMBRYO,SLEEPING,RUNNABLE,RUNNING,ZOMBIE`

> ZOMBIE:僵尸状态,允许其他进程检查该进程的返回代码,查看该进程是否成功执行。
posted @   leeeeeem  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示