linux-虚拟内存-虚拟cpu

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.mzph.cn/bicheng/42637.shtml

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

相关文章

Let‘s Encrypt 申请免费 SSL 证书(每隔60天自动更新证书)

文章目录 官网文档简介安装 Nginxacme.sh生成证书智能化生成证书 安装证书查看已安装证书更新证书 官网 https://letsencrypt.org/zh-cn/ 文档 https://letsencrypt.org/zh-cn/docs/ 简介 Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构,旨在促…

2024世界人工智能大会,神仙打架

B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈最近又发生了啥新鲜事? 该栏目以周更频率总结国内外前沿AI动态,感兴趣的可以点击订阅合集以及时收到最新推送 B站首秀世界人工智能大会,展示自研AI技术与AIGC…

人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析|文献速递·24-07-07

小罗碎碎念 本期文献主题:人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析 这一期文献的速递,是有史以来数量最大的一次,足足有十一篇,本来打算分两期写,但是为了知识的系统性,我决定咬咬牙&…

Partisia Blockchain 现已完成第一阶段空投,即将在DeFi领域发力

Partisia Blockchain 是以 MPC 方案为基础的 Layer1 生态,其具备可审计的隐私特性,同时还能保持链的可拓展、高迸发、可互操作以及安全等系列特性,Partisia Blockchain 被认为是目前最具潜力的企业级公链,并且估值高达 16 亿美元。…

远心镜头简介

一、远心镜头 大家都有这种印象,一个物体在人眼看来,会有近大远小的现象。这是因为物体近的时候,在视网膜上投影大,小的时候,投影小。镜头也是一样,因为近大远小的原因,会产生误差。特别是在做尺…

java项目总结8

1.方法引用 1.方法引用概述 注意注意: 1.引用出必须是函数式接口 2.被引用的方法必须已经存在 3.被引用方法的型参和返回值需要跟抽象方法保持一致 4.被引方法的功能要满足当前需求 Arrays.sort(arr,Main::subtraction); Main是该类的名称,&#xff1a…

C++20中的基于范围的for循环(range-based for loop)

C11中引入了对基于范围的for循环(range-based for loop)的支持&#xff1a;该循环对一系列值(例如容器中的所有元素)进行操作。代码段如下&#xff1a; const std::vector<int> vec{ 1,2,3,4,5 }; for (const auto& i : vec)std::cout << i << ", …

【server】nacos 安装

1、本地安装 1.1 nacos官网 Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 git 下载地址&#xff1a;https://github.com/alibaba/nacos/releases 1.2 解压并修改配置 1.2.1 通过properties 修改配置&#xff0c;添加数据库配置 1.2.2 创建数据库&…

数据库(表)

要求如下&#xff1a; 一&#xff1a;数据库 1&#xff0c;登录数据库 mysql -uroot -p123123 2&#xff0c;创建数据库zoo create database zoo; Query OK, 1 row affected (0.01 sec) 3&#xff0c;修改字符集 mysql> use zoo;---先进入数据库zoo Database changed …

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

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

RK3568 GPU介绍及使用

一、RK3568简介 RK3568四核64位Cortex-A55 处理器&#xff0c;采用全新ARM v8.2-A架构&#xff0c;主频最高可达2.0GHz&#xff0c;效能有大幅提升&#xff1b;采用22nm先进工艺&#xff0c;具有低功耗高性能的特点RK3568集成了双核心架构 GPU&#xff0c;高性能VPU以及高效能…

GraalVM上的多语言混合开发

上篇文件我们介绍了GraalVM强大的静态编译功能,能够让Java应用程序摆脱虚拟机的束缚,像其它本地编译的应用一样直接运行。那么GraalVM的神奇之处仅限于此吗?今天我们再来看看它的另一个重要特性—多语言混合开发 多语言平台 Java并不是唯一运行在JVM上的语言,这个我们都应…

����: �Ҳ������޷��������� javafx.fxml ԭ��: java.lang.ClassNotFoundException解决方法

如果你出现了这个问题&#xff0c;恭喜你&#xff0c;你应该会花很多时间去找解决方法。别问我怎么知道的... 解决方法&#xff1a; 出现乱码的原因&#xff1a;配置vm时 这些配置看似由有空格&#xff0c;换行&#xff0c;实则没有。所以解决办法就是&#xff0c;重新配置你…

防火墙概述

1、防火墙 防火墙顾名思义就是防止火灾发生时&#xff0c;火势烧到其它区域&#xff0c;使用由防火材料砌的墙。在网络安全中&#xff0c;防火墙的作用就是保护本地网络不受到外部网络或恶意程序的伤害。 防火墙的核心任务是控制和防护&#xff0c;即通过安全策略识别流量并做…

前端面试题17(js快速检索方法详解)

在前端JavaScript中&#xff0c;快速检索数据通常涉及到数组或对象的搜索。这里我会介绍几种常见的快速检索方法&#xff0c;并提供相应的代码示例。 1. 数组的find和findIndex方法 find: 返回数组中满足条件的第一个元素的值。findIndex: 返回数组中满足条件的第一个元素的索…

【mindspore进阶】02-ResNet50迁移学习

Mindspore 应用&#xff08;2&#xff09;ResNet50迁移学习 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化…

张量分解(2)——张量运算(内积、外积、直积、范数)

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

MATLAB贝叶斯线性回归模型案例

采用辛烷值数据集“spectra_data.mat”&#xff08;任意数据集均可&#xff09;&#xff0c;介绍贝叶斯线性回归模型的构建和使用流程。 运行结果如下&#xff1a; 训练集预测精度指标如下: 训练集数据的R2为: 1 训练集数据的MAE为: 0.00067884 训练集数据的RMSE为: 0.0008893…

STM32点灯闪烁

stm32c8t6引脚图 开发板引脚图 GPIO端口的每个位可以由软件分别配置成 多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 配置GPIO端口步骤&#xff1a;开启时钟->使用结构体设置输出模式…

水仙花数算法

一、水仙花的传说 希腊神话故事 传说希腊神话里&#xff0c;美少年纳西索斯&#xff08;Narcissus&#xff09;是希腊最俊美的男子&#xff0c;无数的少女对他一见倾心&#xff0c;可他却自负地拒绝了所有的人。这当中包括美丽的山中仙女伊可&#xff08;Echo&#xff09;。伊可…