linux-虚拟内存-虚拟cpu
1、进程:
计算机中的程序关于某数据集合上的一次运行活动。
- 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
- 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
操作系统的发展:

手动加载:
在这个阶段,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应用程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果。这种方式导致用户独占全机,CPU等待手工操作,资源利用率极低。
批处理系统(Batch Processing System):
为了解决手工操作的慢速度和计算机的高速度之间的矛盾,出现了批处理系统。批处理系统能够自动地、成批地处理一个或多个用户的作业。根据作业输入/输出的方式,又分为联机批处理系统和脱机批处理系统。联机批处理系统通过磁带作为中间存储,实现了作业的自动转接,减少了作业建立时间和手工操作时间。脱机批处理系统则进一步通过卫星机处理输入/输出,提高了CPU的利用率。
又称批处理操作系统,是一种操作系统类型,它允许用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种系统采用批量处理作业技术,以提高CPU的利用率和减少人工干预。
- 优点:
- 批量处理任务:可以一次性处理多个作业,提高计算机资源利用率。
- 自动化处理过程:减少了人工干预,大幅提高工作效率。
- 任务排队系统:可以高效地管理和调度可执行任务,提升任务执行效率。
- 任务管理更加简便:方便进行统计和管理,减轻了人员负担。
- 缺点:
- 长等待时间:任务响应时间较长,用户需要等待较长时间才能得到结果。
- 长反馈时间:处理及其结果需要长时间的反馈时间。
- 编写和维护成本高:编写和维护批处理程序需要专业的编程技能,成本较高。
- 无法高并发和低延迟:对于一些要求迅速交互的任务无法提供良好的服务,误码率高。
多道批处理系统:
随着多道程序设计技术的引入,出现了多道批处理系统,允许多个程序同时在内存中交替运行,大大提高了资源利用率。同时,分时系统也开始发展,它允许多个用户通过各自的终端同时交互地使用计算机。分时系统采用时间片轮转的方式,使每个用户都能及时得到响应。
多道程序设计是一种在计算机内存中同时存放几道相互独立的程序,并使它们在管理程序控制之下相互穿插地运行的技术。这种设计允许两个或两个以上的程序在计算机系统中同时处于开始到结束之间的状态。
缺点:
-
平均周转时间长:在多道批处理系统中,作业需要排队等待CPU和其他资源的分配。由于作业是按一定的顺序依次处理的,短作业的周转时间可能会显著增长,因为它们可能需要等待长作业先完成。这可能导致用户等待作业完成的时间过长。
-
无交互能力:多道批处理系统不支持用户与作业之间的交互。用户一旦将作业提交给系统,就必须等待作业完全执行完毕才能看到结果。这种非交互性使得用户在作业执行过程中无法对作业进行修改或调试,从而降低了调试和修改程序的便利性。
-
系统资源得不到充分利用:尽管多道批处理系统旨在提高资源利用率,但在某些情况下,系统资源可能仍然得不到充分利用。例如,当系统中的作业负载不均衡时,一些资源可能处于空闲状态,而另一些资源则可能过载。此外,由于作业之间的切换和调度也需要一定的开销,这可能会进一步影响系统资源的利用率。
-
作业调度和管理的复杂性:多道批处理系统需要复杂的作业调度和管理机制来确保多个作业能够高效、有序地执行。这包括处理机管理、内存管理、I/O设备管理、文件管理和作业管理等多个方面的问题。这些管理任务的复杂性增加了系统设计和实现的难度,并可能引入新的错误和故障点。
现代操作系统阶段(多任务系统):
随着计算机硬件的发展和应用需求的多样化,操作系统不断发展和完善。出现了网络操作系统、分布式操作系统、多处理操作系统和嵌入式操作系统等多种类型。这些系统各具特色,适应不同的应用场景和需求。例如,Unix和Linux操作系统在大型机、工作站和个人电脑上得到广泛应用;Windows操作系统成为个人电脑的主流操作系统;而嵌入式操作系统则广泛应用于智能手机、平板电脑等移动设备中。
虚拟内存:
允许操作系统和应用程序认为它们拥有比实际物理内存(RAM)更大的连续可用内存空间。实际上,虚拟内存通过一种映射机制,将部分数据存储在硬盘等外部存储器上,并在需要时与物理内存进行数据交换。
具体来说,虚拟内存使得每个运行中的程序都感觉自己拥有整个系统的内存空间,即一个连续完整的地址空间
作用:
-
缓解内存不足:物理内存(RAM)的容量是有限的,当运行大型程序或多任务时,很容易遇到内存不足的情况。虚拟内存通过将硬盘空间模拟成内存使用,从而有效增加系统的可用内存空间。当物理内存不足时,系统会将部分不常用的数据交换到硬盘上的虚拟内存空间中,释放出宝贵的物理内存供当前正在运行的程序使用。这样,用户可以同时运行更多的程序,提高系统的多任务处理能力。
-
提高系统性能:虚拟内存不仅可以缓解内存不足的问题,还可以在一定程度上提高系统性能。通过合理的内存管理策略,如预取策略(即提前将可能需要的数据从硬盘加载到内存中),可以充分利用磁盘和内存之间的带宽,提高系统的I/O性能。此外,虚拟内存还可以将常用的数据保存在RAM中,从而加快对这些数据的访问速度,提高程序的执行效率。
-
提供进程隔离和保护:每个进程在虚拟内存中都有自己独立的虚拟地址空间,彼此互不干扰。这种设计不仅提供了进程之间的隔离,防止因为一个进程崩溃而导致整个系统崩溃,还可以保护系统和其他进程不受恶意程序的攻击。当进程尝试访问非法内存地址时,系统会引发异常,从而保护系统的稳定性和安全性。
-
支持大内存程序:对于一些大型应用程序或游戏,它们需要的内存空间可能超过物理内存的大小。虚拟内存允许这些程序在超过物理内存限制的情况下运行,通过将部分数据交换到硬盘上来满足程序的内存需求。这使得用户能够运行更大、更复杂的程序,享受更丰富的计算机体验。
-
实现动态内存管理:操作系统可以根据需要动态地分配和回收内存资源。当内存空间不足时,操作系统可以将部分数据交换到硬盘上的虚拟内存空间中,从而释放出更多的内存空间供其他程序使用。这种动态内存管理机制使得系统能够更加灵活地应对各种内存需求变化,提高系统的响应速度和稳定性。
进程地址空间:
操作系统为每个进程分配的一段虚拟内存区域,用来描述该进程在计算机内存中所占用的地址空间。地址空间是指能被访问的内存地址范围,它由若干个连续的内存块组成。每个进程都有自己独立的地址空间,这意味着每个进程都有自己的内存地址范围,不会与其他进程冲突。
进程地址空间的主要特点包括:
-
独立性:每个进程都有一个独立的地址空间,这保证了进程之间的隔离性。一个进程无法直接访问另一个进程的地址空间,这有助于防止进程间的相互干扰和数据泄露。
-
虚拟性:进程地址空间是虚拟的,不是物理内存的直接映射。操作系统通过页表等机制将虚拟地址映射到物理地址,实现了虚拟内存到物理内存的转换。这种虚拟性使得操作系统能够灵活地管理内存资源,提高内存利用率。
-
结构划分:进程地址空间通常被划分为多个部分,如代码段、数据段、堆、栈等。这些部分具有不同的属性和用途,例如代码段存储程序代码,数据段存储全局变量和静态变量,堆用于动态内存分配,栈用于函数调用时的参数传递和局部变量存储。
-
生命周期:进程地址空间在进程的整个生命周期内一直存在,直到进程退出。在进程执行期间,操作系统会根据需要动态地分配和回收内存资源,但进程地址空间的整体结构保持不变。
进程地址空间的作用主要体现在以下几个方面:
-
提供独立的内存环境:为进程提供一个独立的内存空间,使得进程之间不会相互干扰,保证了系统的稳定性和安全性。
-
实现内存保护:通过地址空间的隔离性,操作系统可以防止进程访问非法内存地址,从而避免数据泄露和程序崩溃等问题。
-
提高内存利用率:通过虚拟内存技术,操作系统能够灵活地管理内存资源,实现物理内存的复用和共享,提高内存利用率。
-
支持动态内存分配:进程地址空间中的堆区域支持动态内存分配,允许程序在运行时根据需要申请和释放内存空间,从而支持更加灵活和高效的程序设计。
虚拟内存的实现:

分页:将内存分割成大小相同的的单位(目前4096byte);
分页是一种操作系统里存储器管理的技术,它将物理内存和辅助存储器(如硬盘)中的数据分成固定大小的块,称为“页”(Page)。每个页的大小通常是相等的,例如4KB或8KB。当程序运行时,操作系统会将程序和数据按需从辅助存储器加载到物理内存的页中。如果物理内存不足,操作系统会采用页面置换算法将部分不常用的页交换到辅助存储器上,以腾出空间给新的页。分页允许存储器存储于不连续的区块,以维持文件系统的整齐,提高内存的利用率。
分段:
分段是将用户程序的地址空间按照自身的逻辑关系划分成若干个大小不等的区域,称为“段”(Segment)。每个段有一个段名,通常从0开始编址,且每个段在内存中占据连续的空间,但各段之间可以不相邻。分段是信息的逻辑单位,它含有一组意义相对完整的信息,目的是为了能更好地满足用户的需要。与分页相比,分段更注重于程序的结构和数据的逻辑完整性。
页框:
页框是内存管理中的一个概念,与分页技术紧密相关。页框是指CPU中用于存储数据页的物理内存块。在分页系统中,CPU通过页表将虚拟内存地址转换为物理内存地址,而页框就是这些物理内存块的具体实现。为了简化地址转换的过程,操作系统将RAM划分为固定大小的块,这些块就称为页框。内核以页框为基本单位管理物理内存,每个页框中存储了一个数据页。当数据页被释放后,如果有其他数据请求访问该内存,页框中的页将会改变。
两个不同的进程可以在虚拟内存中可以有相同的虚拟地址,但在物理内存中的地址不同;
虚拟内存中地址叫虚拟地址,物理内存中叫物理地址;
虚拟内存的大小:
虚拟内存的大小设置通常根据计算机的物理内存(RAM)总量来决定,并且这个设置可以在一定程度上帮助确保在物理内存不足时,系统仍能利用虚拟内存正常运行。具体来说,虚拟内存的大小设置建议如下:
一般推荐:虚拟内存的大小通常推荐设置为物理内存总量的1到1.5倍,或者根据微软公司的建议,设为物理内存容量的1.5到3倍。这样的设置可以在保证系统稳定运行的同时,避免虚拟内存设置过大导致的读取速度变慢问题。
分时系统的缺陷:
-
系统开销大:由于分时系统需要频繁地在多个用户之间切换CPU时间,这种上下文切换会带来一定的系统开销。每次切换都需要保存当前用户的执行环境(如CPU寄存器状态、内存页表等),并在切换回时恢复这些环境。这些操作会消耗一定的CPU时间和内存资源,从而影响系统的整体性能。
-
响应时间长:尽管分时系统提供了较快的响应时间,但在高负载情况下,每个用户所能获得的CPU时间片可能会减少,从而导致用户的响应时间变长。特别是当系统中有大量用户同时请求服务时,每个用户的请求可能需要等待较长时间才能得到处理。
-
可靠性问题:分时系统需要确保多个用户之间的数据隔离和系统稳定性。然而,由于多个用户共享同一台计算机资源,任何一个用户的错误操作或恶意攻击都可能影响到整个系统的稳定性和安全性。因此,分时系统需要采取一系列的安全措施来保护系统和用户数据的安全。
-
数据通讯问题:在分布式或网络化的分时系统中,用户终端与主机之间的数据通讯可能成为瓶颈。网络延迟、带宽限制和通讯协议的开销都可能影响到用户与主机之间的交互效率。此外,不同用户终端之间的通讯也可能受到网络拓扑结构、路由策略和防火墙规则等因素的影响。
-
资源竞争:由于多个用户共享同一台计算机资源(如CPU、内存、磁盘等),这些资源可能会成为竞争的焦点。当多个用户同时请求使用同一资源时,系统需要采取一定的调度策略来分配资源。然而,这种调度策略可能会导致某些用户获得更多资源而另一些用户获得较少资源的情况出现,从而影响系统的公平性和效率。
-
成本问题:分时系统通常需要较高的硬件和软件成本来支持多个用户的同时交互。特别是对于大型企业和研究机构来说,部署和维护一个高效、稳定的分时系统可能需要投入大量的人力和物力资源。此外,随着用户数量的增加和系统规模的扩大,这些成本还可能进一步增加。
用户要主动放弃cpu:

让用户觉得是cpu的独占者;
(并行)在某一个时刻,多个进程同时运行;
一个cpu核心不能并行,
(并发)在一段时间,多个程序同时运行;
一个cpu核心可以并发,
虚拟CPU
- 定义:虚拟CPU,也被称为虚拟处理器(vCPU),是指分配给虚拟机(VM)的逻辑CPU资源。它是通过虚拟化技术将物理CPU的计算资源抽象和划分出来的逻辑单元。
- 来源:虚拟CPU的概念源于虚拟化技术,该技术通过软件层(称为虚拟机管理程序或Hypervisor)在物理CPU和虚拟机之间进行调度和管理,使多个虚拟机能够共享同一个物理CPU。
- 虚拟化层:Hypervisor是管理虚拟机的核心软件,它运行在物理硬件之上,负责将物理CPU的计算资源分配给多个虚拟机。每个虚拟机被分配一个或多个虚拟CPU,这些vCPU由Hypervisor映射到物理CPU上。
- 资源分配:当虚拟机需要执行指令时,Hypervisor将这些指令翻译并调度到物理CPU上执行。Hypervisor管理多个虚拟机对物理CPU的访问,确保每个虚拟机都有机会执行其指令,同时保持虚拟机之间的相互隔离。
相关文章:
linux-虚拟内存-虚拟cpu
1、进程: 计算机中的程序关于某数据集合上的一次运行活动。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个…...
某某市信息科技学业水平测试软件打开加载失败逆向分析(笔记)
引言:笔者在工作过程中,用户上报某某市信息科技学业水平测试软件在云电脑上打开初始化的情况下出现了加载和绑定机器失败的问题。一般情况下,在实体机上用户进行登录后,用户的账号信息跟主机的机器码进行绑定然后保存到配置文件&a…...
vue3+antd 实现点击按钮弹出对话框
格式1:确认对话框 按钮: 点击按钮之后: 完整代码: <template><div><a-button click"showConfirm">Confirm</a-button></div> </template> <script setup> import {Mod…...
Python一些可能用的到的函数系列130 UCS-Time Brick
说明 UCS对象是基于GFGoLite进行封装,且侧重于实现UCS规范。 内容 1 函数 我发现pydantic真是一个特别好用的东西,可以确保在数据传递时的可靠,以及对某个数据模型的描述。 以下,UCS给出了id、time相关的brick映射࿰…...
Java实现布隆过滤器的几种方式
布隆过滤器应用场景: 为预防大量黑客故意发起非法的时间查询请求,造成缓存击穿,建议采用布隆过滤器的方法解决。布隆过滤器通过一个很长的二进制向量和一系列随机映射函数(哈希函数)来记录与识别某个数据是否在一个集合中。如果数据不在集合中,能被识别出来,不需要到数…...
最新整理的机器人相关数据合集(1993-2022年不等 具体看数据类型)
机器人安装数据是指记录全球或特定区域内工业机器人新安装数量的信息,这一数据由国际机器人联合会(IFR)等权威机构定期发布。这些数据不仅揭示了机器人技术的市场需求趋势,还反映了各国和地区自动化水平及产业升级的步伐。例如,数据显示中国在…...
Python打开Excel文档并读取数据
Python 版本 目前 Python 3 版本为主流版本,这里测试的版本是:Python 3.10.5。 常用库说明 Python 操作 Excel 的常用库有:xlrd、xlwt、xlutils、openpyxl、pandas。这里主要说明下 Excel 文档 .xls 格式和 .xlsx 格式的文档打开和读取。 …...
算法day03 桶排序 数据结构分类 时间复杂度 异或运算
学数据结构之前 必看_哔哩哔哩_bilibili 1.认识复杂度和简单排序算法_哔哩哔哩_bilibili 桶排序(Bucket sort)------时间复杂度为O(n)的排序方法(一)_多桶排序时间复杂度-CSDN博客 桶排序 测试场景:数组中有10000个随…...
k8s学习之cobra命令库学习
1.前言 打开k8s代码的时候,我发现基本上那几个核心服务都是使用cobra库作为命令行处理的能力。因此,为了对代码之后的代码学习的有比较深入的理解,因此先基于这个库写个demo,加深对这个库的一些理解吧 2.cobra库的基本简介 Git…...
Spring框架的学习SpringMVC(1)
1.什么是MVC (1)MVC其实就是软件架构的一种设计模式,它将软件的系统分为,(视图,模型,控制器)三个部分 1.1View(视图) 视图也就是,在浏览器显示的那一个部分,是后端数据的呈现 1.…...
赋值运算符重载和const成员函数和 const函数
文章目录 1.运算符重载(1)(2)运算符重载的语法:(3)运算符重载的注意事项:(4)前置和后置重载区别 2.const成员函数3.取地址及const取地址操作符重载4.总结 1.运算符重载 (1) 我们知道内置类型(整形,字符型,浮点型…)可以进行一系…...
VSCode设置字体大小
方法1:Ctrl 和 Ctrl -,可以控制整个VSCode界面的整体缩放,但是不会调整字体大小 方法2:该方法只能设置编辑器界面的字号,无法改变窗口界面的字号。 (1)点开左下角如下图标,进入…...
Excel中按列的首行字母顺序,重新排列(VBA脚本)
排序前 要求对4列数据按照第一行abcd的顺序排列 VB脚本如下: 要使用这个脚本,请按照以下步骤操作: 打开Excel,然后按下 Alt F11 打开VBA编辑器。在VBA编辑器中,选择“插入” > “模块”,在打开的模块…...
多线程爬虫技术详解
🎀引言❤❤ 在当今信息爆炸的时代,网络爬虫(Web Crawler)作为一种自动获取网页内容的程序,已经成为数据挖掘和信息检索不可或缺的工具。多线程爬虫作为提高爬虫效率的重要手段,通过并行处理技术大幅度提升…...
项目一单机安装基于LNMP结构的WordPress网站 web与数据库服务分离
网站的类型: Jave:LNMT PHP:LNMP Python: LNMU 项目部署: 1.项目的类型(项目的开发语言) 2.项目运营平台的技术选择 3.尽快让项目运行起来 all in one部署 4. 架构的优化 配置ansible管理环境 配置nginx 配置数据库服务…...
vue事件处理v-on或@
事件处理v-on或 我们可以使用v-on指令(简写)来监听DOM事件,并在事件触发时执行对应的Javascript。用法:v-on:click"methodName"或click"hander" 事件处理器的值可以是: 内敛事件处理器࿱…...
使用OpenCV与PySide(PyQt)的视觉检测小项目练习
OpenCV 提供了丰富的图像处理和计算机视觉功能,可以实现各种复杂的图像处理任务,如目标检测、人脸识别、图像分割等。 PyQt(或PySide)是一个创建GUI应用程序的工具包,它是Python编程语言和Qt库的成功融合。Qt库是最强大的GUI库之一。Qt的快速…...
通信协议_C#实现自定义ModbusRTU主站
背景知识:modbus协议介绍 相关工具 mbslave:充当从站。虚拟串口工具:虚拟出一对串口。VS2022。 实现过程以及Demo 打开虚拟串口工具: 打开mbslave: 此处从站连接COM1口。 Demo实现 创建DLL库,创建ModbusRTU类,进行实现: using Syste…...
【C语言】 —— 编译和链接
【C语言】 —— 编译和链接 一、编译环境和运行环境二、翻译环境2.1、 预处理2.2、 编译(1)词法分析(2)语法分析(3)语义分析 2.3、 汇编2.4、链接 三、运行环境 一、编译环境和运行环境 平时我们说写 C语言…...
DNS正向解析与反向解析实验
正向解析 安装bind软件 [rootlocalhost ~]# dnf install bind bind-utils -y修改主配置文件/etc/named.conf [rootlocalhost ~]# vim /etc/named.conf重启DNS服务(named) [rootlocalhost ~]# systemctl restart named编辑数据配置文件。在/var/named…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
