《操作系统导论》笔记(一)CPU的虚拟化

本文概述了CPU虚拟化的概念,包括如何通过分时复用实现多个程序看似同时运行,重点介绍了设计目标——高性能与控制权,以及关键环节如受限制的直接执行、进程间切换和调度。了解单个进程执行的限制,以及OS如何通过时钟中断确保控制权,对于理解现代操作系统至关重要。

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

1、什么叫CPU的虚拟化

假设机器只有一个CPU,但是却可以“同时”运行多个程序,比如同时听歌和打游戏。具体来说,在操作系统和硬件的协同下,将单个CPU(或其中一小部分)转换为看似无线数量的CPU,从而让许多程序看似同时运行,这就是所谓的虚拟化CPU

2、CPU虚拟化的原理

如果只有一个CPU的话,要想“同时”运行两个程序A和B。主要原理是分时复用,CPU在每个时刻中只能运行一个程序,要达到同时运行A和B的效果,原理类似于数码管的动态显示。一个时刻内CPU运行程序A,然后下一个时刻运行程序B,一直这样不停切换,由于CPU的运行速度相对于人来说非常快,就达到了看似同时运行程序的效果。

3、CPU虚拟化的设计目标:性能与控制权

性能是指,在分时复用的同时,程序(进程)的运行足够高效,实现方法为程序的受限制的直接执行以及进程调度策略;控制权是指在某个程序(进程)运行过程中以及两个进程切换的过程中,也就是CPU的整个运行过程中,OS保留对CPU的控制权,以避免进程执行一些非法操作,实现方法为时钟中断

3.1 单个进程的执行:受限制的直接执行

为了使得程序尽可能快的运行,OS开发人员想出了一种名为“受限制的直接执行的技术”。所谓“直接执行”,就是程序直接在CPU中运行。当OS希望运行一个程序时,它会在进程列表中为其创建一个进程条目,为其分配一些内存,将程序代码从磁盘加载到内存,找到程序入口点(main函数或者其他),跳转到入口并开始执行。表1展示了这种基本的直接执行协议(没有任何限制)。

表1 无限制的直接执行
操作系统程序
在进程列表中创建条目
为程序分配内存
将程序加载到内存
根据 argc/argv 设置程序栈
清除寄存器,执行call main()方法
执行main(),从main中执行return
释放进程的内存,并将进程从进程列表中清除
问题:当运行中的程序试图做非法操作(比如访问不该访问的内存区域)时,上面不受限制的直接执行不能够有效的阻止非法操作。比如,不能让程序无限制的执行IO或者内存读写之类的操作。
解决: 硬件通过提供不同的执行模式来协助操作系统。比如ARM处理器的7种运行模式:用户模式、系统模式等。一般我们所编写的程序运行在用户模式,在用户模式下想执行一些特权指令的话需要向OS发出申请(系统调用)。而OS或者OS内核就运行在系统模式下,可以执行所有类型的指令。

3.2 多个进程的执行:进程间的切换

问题 :如果一个进程正在CPU上运行,这就意味着OS没有运行,如果OS没有运行,它也就不能进行进程切换(停止当前进程,开始下一个进程)。
解决:硬件定时产生时钟中断,转入预先写好的中断处理程序,在中断处理程序中将运行权还给OS。

具体进行进程切换时,就是先保护原来进程,然后跳转新的进行执行,不用多说。

3.3 多个进程的执行:进程间的调度

待写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值