linux-虚拟内存-虚拟cpu

news2024/11/24 22:45:24

1、进程:

计算机中的程序关于某数据集合上的一次运行活动。

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

    操作系统的发展:

 

 手动加载:

在这个阶段,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应用程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果。这种方式导致用户独占全机,CPU等待手工操作,资源利用率极低。

  批处理系统(Batch Processing System):

为了解决手工操作的慢速度和计算机的高速度之间的矛盾,出现了批处理系统。批处理系统能够自动地、成批地处理一个或多个用户的作业。根据作业输入/输出的方式,又分为联机批处理系统和脱机批处理系统。联机批处理系统通过磁带作为中间存储,实现了作业的自动转接,减少了作业建立时间和手工操作时间。脱机批处理系统则进一步通过卫星机处理输入/输出,提高了CPU的利用率。

又称批处理操作系统,是一种操作系统类型,它允许用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种系统采用批量处理作业技术,以提高CPU的利用率和减少人工干预。

  • 优点
    • 批量处理任务:可以一次性处理多个作业,提高计算机资源利用率。
    • 自动化处理过程:减少了人工干预,大幅提高工作效率。
    • 任务排队系统:可以高效地管理和调度可执行任务,提升任务执行效率。
    • 任务管理更加简便:方便进行统计和管理,减轻了人员负担。
  • 缺点
    • 长等待时间:任务响应时间较长,用户需要等待较长时间才能得到结果。
    • 长反馈时间:处理及其结果需要长时间的反馈时间。
    • 编写和维护成本高:编写和维护批处理程序需要专业的编程技能,成本较高。
    • 无法高并发和低延迟:对于一些要求迅速交互的任务无法提供良好的服务,误码率高。

多道批处理系统:

随着多道程序设计技术的引入,出现了多道批处理系统,允许多个程序同时在内存中交替运行,大大提高了资源利用率。同时,分时系统也开始发展,它允许多个用户通过各自的终端同时交互地使用计算机。分时系统采用时间片轮转的方式,使每个用户都能及时得到响应。

多道程序设计是一种在计算机内存中同时存放几道相互独立的程序,并使它们在管理程序控制之下相互穿插地运行的技术。这种设计允许两个或两个以上的程序在计算机系统中同时处于开始到结束之间的状态。

缺点:

  1. 平均周转时间长:在多道批处理系统中,作业需要排队等待CPU和其他资源的分配。由于作业是按一定的顺序依次处理的,短作业的周转时间可能会显著增长,因为它们可能需要等待长作业先完成。这可能导致用户等待作业完成的时间过长。

  2. 无交互能力:多道批处理系统不支持用户与作业之间的交互。用户一旦将作业提交给系统,就必须等待作业完全执行完毕才能看到结果。这种非交互性使得用户在作业执行过程中无法对作业进行修改或调试,从而降低了调试和修改程序的便利性。

  3. 系统资源得不到充分利用:尽管多道批处理系统旨在提高资源利用率,但在某些情况下,系统资源可能仍然得不到充分利用。例如,当系统中的作业负载不均衡时,一些资源可能处于空闲状态,而另一些资源则可能过载。此外,由于作业之间的切换和调度也需要一定的开销,这可能会进一步影响系统资源的利用率。

  4. 作业调度和管理的复杂性:多道批处理系统需要复杂的作业调度和管理机制来确保多个作业能够高效、有序地执行。这包括处理机管理、内存管理、I/O设备管理、文件管理和作业管理等多个方面的问题。这些管理任务的复杂性增加了系统设计和实现的难度,并可能引入新的错误和故障点。

 现代操作系统阶段(多任务系统):

随着计算机硬件的发展和应用需求的多样化,操作系统不断发展和完善。出现了网络操作系统、分布式操作系统、多处理操作系统和嵌入式操作系统等多种类型。这些系统各具特色,适应不同的应用场景和需求。例如,Unix和Linux操作系统在大型机、工作站和个人电脑上得到广泛应用;Windows操作系统成为个人电脑的主流操作系统;而嵌入式操作系统则广泛应用于智能手机、平板电脑等移动设备中。


虚拟内存:

允许操作系统和应用程序认为它们拥有比实际物理内存(RAM)更大的连续可用内存空间。实际上,虚拟内存通过一种映射机制,将部分数据存储在硬盘等外部存储器上,并在需要时与物理内存进行数据交换。

具体来说,虚拟内存使得每个运行中的程序都感觉自己拥有整个系统的内存空间,即一个连续完整的地址空间

作用:

  1. 缓解内存不足:物理内存(RAM)的容量是有限的,当运行大型程序或多任务时,很容易遇到内存不足的情况。虚拟内存通过将硬盘空间模拟成内存使用,从而有效增加系统的可用内存空间。当物理内存不足时,系统会将部分不常用的数据交换到硬盘上的虚拟内存空间中,释放出宝贵的物理内存供当前正在运行的程序使用。这样,用户可以同时运行更多的程序,提高系统的多任务处理能力。

  2. 提高系统性能:虚拟内存不仅可以缓解内存不足的问题,还可以在一定程度上提高系统性能。通过合理的内存管理策略,如预取策略(即提前将可能需要的数据从硬盘加载到内存中),可以充分利用磁盘和内存之间的带宽,提高系统的I/O性能。此外,虚拟内存还可以将常用的数据保存在RAM中,从而加快对这些数据的访问速度,提高程序的执行效率。

  3. 提供进程隔离和保护:每个进程在虚拟内存中都有自己独立的虚拟地址空间,彼此互不干扰。这种设计不仅提供了进程之间的隔离,防止因为一个进程崩溃而导致整个系统崩溃,还可以保护系统和其他进程不受恶意程序的攻击。当进程尝试访问非法内存地址时,系统会引发异常,从而保护系统的稳定性和安全性。

  4. 支持大内存程序:对于一些大型应用程序或游戏,它们需要的内存空间可能超过物理内存的大小。虚拟内存允许这些程序在超过物理内存限制的情况下运行,通过将部分数据交换到硬盘上来满足程序的内存需求。这使得用户能够运行更大、更复杂的程序,享受更丰富的计算机体验。

  5. 实现动态内存管理:操作系统可以根据需要动态地分配和回收内存资源。当内存空间不足时,操作系统可以将部分数据交换到硬盘上的虚拟内存空间中,从而释放出更多的内存空间供其他程序使用。这种动态内存管理机制使得系统能够更加灵活地应对各种内存需求变化,提高系统的响应速度和稳定性。

进程地址空间:

操作系统为每个进程分配的一段虚拟内存区域,用来描述该进程在计算机内存中所占用的地址空间。地址空间是指能被访问的内存地址范围,它由若干个连续的内存块组成。每个进程都有自己独立的地址空间,这意味着每个进程都有自己的内存地址范围,不会与其他进程冲突。

进程地址空间的主要特点包括:

  1. 独立性:每个进程都有一个独立的地址空间,这保证了进程之间的隔离性。一个进程无法直接访问另一个进程的地址空间,这有助于防止进程间的相互干扰和数据泄露。

  2. 虚拟性:进程地址空间是虚拟的,不是物理内存的直接映射。操作系统通过页表等机制将虚拟地址映射到物理地址,实现了虚拟内存到物理内存的转换。这种虚拟性使得操作系统能够灵活地管理内存资源,提高内存利用率。

  3. 结构划分:进程地址空间通常被划分为多个部分,如代码段、数据段、堆、栈等。这些部分具有不同的属性和用途,例如代码段存储程序代码,数据段存储全局变量和静态变量,堆用于动态内存分配,栈用于函数调用时的参数传递和局部变量存储。

  4. 生命周期:进程地址空间在进程的整个生命周期内一直存在,直到进程退出。在进程执行期间,操作系统会根据需要动态地分配和回收内存资源,但进程地址空间的整体结构保持不变。

进程地址空间的作用主要体现在以下几个方面:

  1. 提供独立的内存环境:为进程提供一个独立的内存空间,使得进程之间不会相互干扰,保证了系统的稳定性和安全性。

  2. 实现内存保护:通过地址空间的隔离性,操作系统可以防止进程访问非法内存地址,从而避免数据泄露和程序崩溃等问题。

  3. 提高内存利用率:通过虚拟内存技术,操作系统能够灵活地管理内存资源,实现物理内存的复用和共享,提高内存利用率。

  4. 支持动态内存分配:进程地址空间中的堆区域支持动态内存分配,允许程序在运行时根据需要申请和释放内存空间,从而支持更加灵活和高效的程序设计。

虚拟内存的实现:

 分页:将内存分割成大小相同的的单位(目前4096byte);

分页是一种操作系统里存储器管理的技术,它将物理内存和辅助存储器(如硬盘)中的数据分成固定大小的块,称为“页”(Page)。每个页的大小通常是相等的,例如4KB或8KB。当程序运行时,操作系统会将程序和数据按需从辅助存储器加载到物理内存的页中。如果物理内存不足,操作系统会采用页面置换算法将部分不常用的页交换到辅助存储器上,以腾出空间给新的页。分页允许存储器存储于不连续的区块,以维持文件系统的整齐,提高内存的利用率。

分段:

分段是将用户程序的地址空间按照自身的逻辑关系划分成若干个大小不等的区域,称为“段”(Segment)。每个段有一个段名,通常从0开始编址,且每个段在内存中占据连续的空间,但各段之间可以不相邻。分段是信息的逻辑单位,它含有一组意义相对完整的信息,目的是为了能更好地满足用户的需要。与分页相比,分段更注重于程序的结构和数据的逻辑完整性。

页框:

页框是内存管理中的一个概念,与分页技术紧密相关。页框是指CPU中用于存储数据页的物理内存块。在分页系统中,CPU通过页表将虚拟内存地址转换为物理内存地址,而页框就是这些物理内存块的具体实现。为了简化地址转换的过程,操作系统将RAM划分为固定大小的块,这些块就称为页框。内核以页框为基本单位管理物理内存,每个页框中存储了一个数据页。当数据页被释放后,如果有其他数据请求访问该内存,页框中的页将会改变。

两个不同的进程可以在虚拟内存中可以有相同的虚拟地址,但在物理内存中的地址不同;

虚拟内存中地址叫虚拟地址,物理内存中叫物理地址;

虚拟内存的大小:

虚拟内存的大小设置通常根据计算机的物理内存(RAM)总量来决定,并且这个设置可以在一定程度上帮助确保在物理内存不足时,系统仍能利用虚拟内存正常运行。具体来说,虚拟内存的大小设置建议如下:

一般推荐:虚拟内存的大小通常推荐设置为物理内存总量的1到1.5倍,或者根据微软公司的建议,设为物理内存容量的1.5到3倍。这样的设置可以在保证系统稳定运行的同时,避免虚拟内存设置过大导致的读取速度变慢问题。


分时系统的缺陷:

  1. 系统开销大:由于分时系统需要频繁地在多个用户之间切换CPU时间,这种上下文切换会带来一定的系统开销。每次切换都需要保存当前用户的执行环境(如CPU寄存器状态、内存页表等),并在切换回时恢复这些环境。这些操作会消耗一定的CPU时间和内存资源,从而影响系统的整体性能。

  2. 响应时间长:尽管分时系统提供了较快的响应时间,但在高负载情况下,每个用户所能获得的CPU时间片可能会减少,从而导致用户的响应时间变长。特别是当系统中有大量用户同时请求服务时,每个用户的请求可能需要等待较长时间才能得到处理。

  3. 可靠性问题:分时系统需要确保多个用户之间的数据隔离和系统稳定性。然而,由于多个用户共享同一台计算机资源,任何一个用户的错误操作或恶意攻击都可能影响到整个系统的稳定性和安全性。因此,分时系统需要采取一系列的安全措施来保护系统和用户数据的安全。

  4. 数据通讯问题:在分布式或网络化的分时系统中,用户终端与主机之间的数据通讯可能成为瓶颈。网络延迟、带宽限制和通讯协议的开销都可能影响到用户与主机之间的交互效率。此外,不同用户终端之间的通讯也可能受到网络拓扑结构、路由策略和防火墙规则等因素的影响。

  5. 资源竞争:由于多个用户共享同一台计算机资源(如CPU、内存、磁盘等),这些资源可能会成为竞争的焦点。当多个用户同时请求使用同一资源时,系统需要采取一定的调度策略来分配资源。然而,这种调度策略可能会导致某些用户获得更多资源而另一些用户获得较少资源的情况出现,从而影响系统的公平性和效率。

  6. 成本问题:分时系统通常需要较高的硬件和软件成本来支持多个用户的同时交互。特别是对于大型企业和研究机构来说,部署和维护一个高效、稳定的分时系统可能需要投入大量的人力和物力资源。此外,随着用户数量的增加和系统规模的扩大,这些成本还可能进一步增加。

用户要主动放弃cpu:

让用户觉得是cpu的独占者;

(并行)在某一个时刻,多个进程同时运行;

一个cpu核心不能并行,

(并发)在一段时间,多个程序同时运行;

一个cpu核心可以并发,

虚拟CPU
  • 定义:虚拟CPU,也被称为虚拟处理器(vCPU),是指分配给虚拟机(VM)的逻辑CPU资源。它是通过虚拟化技术将物理CPU的计算资源抽象和划分出来的逻辑单元。
  • 来源:虚拟CPU的概念源于虚拟化技术,该技术通过软件层(称为虚拟机管理程序或Hypervisor)在物理CPU和虚拟机之间进行调度和管理,使多个虚拟机能够共享同一个物理CPU。
  • 虚拟化层:Hypervisor是管理虚拟机的核心软件,它运行在物理硬件之上,负责将物理CPU的计算资源分配给多个虚拟机。每个虚拟机被分配一个或多个虚拟CPU,这些vCPU由Hypervisor映射到物理CPU上。
  • 资源分配:当虚拟机需要执行指令时,Hypervisor将这些指令翻译并调度到物理CPU上执行。Hypervisor管理多个虚拟机对物理CPU的访问,确保每个虚拟机都有机会执行其指令,同时保持虚拟机之间的相互隔离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1904299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【三维向量旋转】基于Matlab的三维坐标旋转

一、问题描述 若空间中存在三个点A,B,C,其中A点是不动点,B点是当前方向向量上的一个点,C是目标方向上的一个点。如果要让AB向量沿着BC方向进行旋转,使得AB最终旋转到AC。这个过程就是三维向量的旋转过程。我们关注的是这个过程&am…

JAVA 课设 满汉楼餐厅点餐系统

一、代码详解 1.总体结构展示 2.总体代码 2.1 libs文件 链接:https://pan.baidu.com/s/1nH-I7gIlsqyMpXDDCFRuOA 提取码:3404 2.2 配置的德鲁连接池 #keyvalue driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/mhl?rewriteBa…

爱了!8款超好用的PC端办公软件!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 你电脑中用的最久的软件是哪些?以下是否有你曾经使用过的软件呢?工欲善其事,必先利其器,今天继续…

打造属于自己的脚手架工具并发布到npm仓库

一、创建项目 使用 npm init -y 创建项目创建项目入口文件 index.js在 package.json 中添加 bin 字段使用 npm link 命令将文件映射至全局,使可以在本地测试 zp 命令 // "zp" 为用于全局执行脚手架的命令,vue-cli中使用的是vue命令 "bi…

STM32-I2C

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. I2C通信1.1 I2C通信简介1.2 硬件电路1.3 I2C时序基本单元1.3.1 起始条件和终止条件1.3.2 发送一个字节1.3.3 接收一个字节1.3.4 发送应答和接收应答 1.4 I2C时序1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读…

利用docker搭建漏洞环境,使用SSRF+Redis写入centos以及ubuntu的公钥,实现免密登录

一、实验环境 kali:在kali中搭建docker容器环境,这里我主要是使用第一个; redis作为一种数据库,它可以将数据写入内存中去,我们通过利用ssrf请求,实现服务器对自己的公钥写入,从而实验免密登录;…

el-table 树形数据与懒加载 二级数据不展示

返回的数据中 children和hasChildren只能有一个,不能同时存在,否则加载数据会失败

优化后Day53 动态规划part11

LC1143最长公共子序列 1.dp数组的含义:dp[i][j]表示以下标i结尾的text1子序列和以下标j结尾的text2子序列的最长公共子序列 2. 初始化:跟LC718一样,i结尾的需要初始化,i-1结尾不需要初始化 3. 递推公式 如果charAt(i)charAt(j)&…

集成测试技术栈

前端 浏览器操作:playwright、selenium 后端 testcontainercucumbervitestcypressmsw

Threejs将场景生成全景图导出

实现思路: 创建全景相机CubeCamera(六个方位的透视相机)并渲染场景 读取六个面的纹理数据 填充进canvas中 即可按照常规的canvas导出图片了 demo https://gitee.com/honbingitee/three-template-next.js/tree/HDR 核心代码 const cubeRender…

《python程序语言设计》2018版第5章第53题利用turtle绘制sin和cos函数 sin蓝色,cos红色和52题类似

直接上题和代码 5.53 (Turtle:绘制sin和cos函数)编写程序绘制蓝色的sin函数和红色的cos函数。 代码和结果 turtle.speed(10) turtle.penup() # sin 用蓝色 turtle.color("blue") #这道题和上道题一样,先把turtle放到起始…

数列结构(3.9)——队列应用

树的层次遍历 树的层次遍历,也称为树的广度优先遍历,是一种按照树的层次顺序,从上到下、从左到右遍历树中所有节点的算法。在二叉树中,这种遍历方式通常使用队列来实现。下面是层次遍历的基本步骤: 创建一个空队列&a…

排序(2)

我们在排序&#xff08;1&#xff09;中说到选择排序的代码&#xff1a; void SelectSort(int* a,int n) {int begin0,endn-1;int minibegin,maxbegin;for(int ibegin1;i<end;i){if(a[i]>a[max]){maxii;}if(a[i]<a[mini]){minii;}begin;--end;}Swap(&a[beign],&a…

UE5 05-利用 timeline 插值运动

理解成 unity Dotween DoMove 插值运动即可 AddTimeLine 节点 物体插值运动 物体插值缩放 一个timeline 可以K多个动画帧

C语言 printf 函数多种输出格式以及占位输出

一、输出格式 在C语言中&#xff0c;printf 函数提供了多种输出格式&#xff0c;用于控制不同类型数据的输出方式。 1.整数输出格式 %d&#xff1a;以十进制形式输出整数。 %o&#xff1a;以八进制形式输出整数&#xff08;无前导0&#xff09;。 %x 或 %X&#xff1a;以十六进…

包/final/权限修饰符/代码块

包package 1、包的作用 包用来管理不同的类。 2、包名 包名要全部小写&#xff0c;一般是域名反写&#xff0c;如com.liu。在Java中&#xff0c;java解释器会将package中的.解释为目录分隔符/&#xff0c;也就是说该文件的目录结构为&#xff1a;...com/liu/... 3、全类名…

Nginx 报错问题汇总

目录 一、nginx: [emerg] invalid number of arguments in "include" directive in C:\Program Files\nginx-1.15.4/conf/nginx.conf:61 总结&#xff1a; 二、nginx: [error] OpenEvent("Global\ngx_reload_2152") failed (5: Access is denied) 解决…

《昇思25天学习打卡营第14天|onereal》

第14天学习内容如下&#xff1a; Diffusion扩散模型 本文基于Hugging Face&#xff1a;The Annotated Diffusion Model一文翻译迁移而来&#xff0c;同时参考了由浅入深了解Diffusion Model一文。 本教程在Jupyter Notebook上成功运行。如您下载本文档为Python文件&#xff0c…

LabVIEW的JKI State Machine

JKI State Machine是一种广泛使用的LabVIEW架构&#xff0c;由JKI公司开发。这种状态机架构在LabVIEW中提供了灵活、可扩展和高效的编程模式&#xff0c;适用于各种复杂的应用场景。JKI State Machine通过状态的定义和切换&#xff0c;实现了程序逻辑的清晰组织和管理&#xff…

IDEA常用技巧荟萃:精通开发利器的艺术

1 概述 在现代软件开发的快节奏环境中,掌握一款高效且功能全面的集成开发环境(IDE)是提升个人和团队生产力的关键。IntelliJ IDEA,作为Java开发者的首选工具之一,不仅提供了丰富的编码辅助功能,还拥有高度可定制的界面和强大的插件生态系统。然而,要充分发挥其潜力,深…