物理内存

汇编,寄存器,内存,mov指令

╄→гoц情女王★ 提交于 2020-01-30 20:56:12
一.代码 和 汇编 和 二进制之间的关系 二.复习一下计算机组成原理的知识 1.寄存器 计算机中有三个存储 32位cpu提供的寄存器有三种类型8位 16位 32位 64位的只是32位的扩展 并且程序大多是32位 以下是32位的8个通用寄存器(有宽度) 2.MOV指令 mov eax ,1(向eax寄存器存1) mov edx , eax(把edx里面的值存到eax ) 例子: EAX:32位通用寄存器 假如FFFFFFFF 一个F(16进制)化为2进制 1111,也就是4位 所以为什么叫32(四个字节) ? 4*8=32 三.内存 1.内存 内存空间和物理内存都不是内存条!物理内存和内存条之间还有一层映射关系。   下面的话其实并不是真正的给每一个进程分了4g的内存条,等进程 真正要去写/读内存的时候就把4g内存映射到物理内存上去。    2.内存地址 内存太多起不了名字 只能用编号。 每一行的内存编号代表一个字节 3.mov指令向内存写数据 与往寄存器里面写是不一样的 内存 eax32位 ax16位 他是自带数据宽度的, 而内存不一样,内存是连起来的一大片 所以 ! 不同点:向内存写的时候必须明确告诉其宽度。 byte = 1字节 word = 2字节 dword = 4字节 <1> 那么就有一个问题,就是一行的内存地址编号是一个字节。 现在村的数据是四个字节,那么可行吗? 可行

LoadRunner--内存指标介绍

蓝咒 提交于 2020-01-29 13:54:03
Threads ——线程数 当前全部线程数 ============================================ Available MBytes ——物理内存的可用数 指计算机上可用于运行处理的有效物理内存的字节 数量。这个计数器只显示上一次观察到的值;它 不是一个平均值。 至少要有10%的物理内存值,如果available Mbytes值一直很小(4M或更小),说明计算机 总的内存可能不足,或某程序没有释放内存 ============================================= Page Faults/sec ——处理器每秒钟处理的错误页数 当进程引用特定的虚拟内存页,该页不在其在主内存的工作集当中时, 将出现页面错误 u 如果该页位于待机列表(说明已经位于主内存中),或被共享该页的 其它进程所使用,该错误被称为软错误(用Transition Fault/sec计 数器衡量),则错误处理不会导致从磁盘读取该页;如果该页必须从 硬盘上重新读取时,被称为硬错误。许多处理器可以在有大量软错误 的情况下继续操作。但是,硬错误可以导致明显的拖延。 u 如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内 存可能是瓶颈。 ============================================ Pages/sec

linux free 命令详解

☆樱花仙子☆ 提交于 2020-01-28 08:34:57
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。 如果加上 -h 选项,输出的结果会友好很多: 有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数: $ free -h -s 3 上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。 由于 free 命令本身比较简单,所以本文的重点会放在如何通过 free 命令了解系统当前的内存使用状况。 输出简介 下面先解释一下输出的内容: Mem 行(第二行)是内存的使用情况。 Swap 行(第三行)是交换空间的使用情况。 total 列显示系统总的可用物理内存和交换空间大小。 used 列显示已经被使用的物理内存和交换空间。 free 列显示还有多少物理内存和交换空间可用使用。 shared 列显示被共享使用的物理内存大小。 buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。 available 列显示还可以被应用程序使用的物理内存大小。 我想只有在理解了一些基本概念之后,上面的输出才能帮助我们了解系统的内存状况。 buff/cache 先来提一个问题: buffer 和 cache 应该是两种类型的内存,但是 free 命令为什么会把它们放在一起呢?要回答这个问题需要我们做些准备工作。让我们先来搞清楚 buffer 与

free命令查看内存

冷暖自知 提交于 2020-01-25 15:03:59
Mem:物理内存使用情况 swap:交换分区情况 +buffers/cache:(可用)的内存数,即free+buffers+cached -buffers/cache:(已用)的内存数,即used-buffers-cached total:物理内存总大小 当前980M used:已经使用的物理内存大小 当前852M free:空闲的物理内存大小 当前127M shared:多个进程共享的物理内存大小 buffers Buffer:缓冲内存数 当前73M cached Page:缓存内存数 当前218M 可用内存的计算公式为: 可用内存=free+buffers+cached 即127MB+73MB+218MB=420MB 来源: 51CTO 作者: 阁楼上的灯 链接: https://blog.51cto.com/13054614/2468381

操作系统核心原理-5.内存管理(上):基本内存管理

夙愿已清 提交于 2020-01-24 23:02:55
   操作系统的两个角色分别是魔术师和管理者,在管理者这个角色中,除了CPU之外,内存是操作系统要管理的另外一个重要资源。内存管理需要达到两个目标:一是地址保护,即一个程序不能访问另一个程序的地址空间。二是地址独立,即程序发出的地址应该与物理主存地址无关。这两个目标就是衡量一个内存管理系统是否完善的标准,它是所有内存管理系统必须提供的基本抽象。 一、内存管理二三事 1.1 内存管理的目标   (1) 地址保护 :一个程序不能访问另一个程序地址空间。   (2) 地址独立 :程序发出的地址应该与物理主存地址无关。   这两个目标是衡量一个内存管理系统是否完善的标准,它是所有内存管理系统必须提供的基本抽象。  1.2 虚拟内存的概念   虚拟内存的中心思想是将物理主存扩大到便宜、大容量的磁盘上,即将磁盘空间看做主存空间的一部分。可以理解为是 将书桌上的比较老的文件先暂时收到抽屉里,用空出来的地方来摊开新的文件 。在计算机中,体现在在内存容量不足时将不经常访问的内存空间中的数据写入硬盘,以增加“账面上”可用内存容量的手段(想想我们的内存和硬盘容量对比就知道了)。   但是,如果在书桌和抽屉之间频繁进行文件的交换,工作效率肯定会下降。如果每次要看一份文件都要先收拾书桌再到抽屉里面拿的话,那工作根本就无法进行了。   虚拟内存的优点在于除了让程序员感觉到内存容量大大增加之外

内存管理

柔情痞子 提交于 2020-01-24 20:02:59
  在Intel 80x86体系结构中,Linux内核的内存管理程序采用了分页管理机制.利用页目录和页表结构处理内核中其他部分代码对内存的申请和释放操作.内存的管理是以内存页面为单位进行的,一个内存页面是指在地址连续的4KB内存.通过也目录项和页表项,可以寻址和管理指定页面的使用情况.   在Intel 80x86 CPU中,程序在寻址过程中使用的是由段和偏移值构成的地址.该地址并不能直接用来寻址物理内存地址,因为被称为 虚拟地址 .为了能寻址物理内存,就需要一种地址转换机制将虚拟地址映射或转换到物理内存中,这种地址转换机制就是内存管理的主要功能之一.内存管理的另外一个重要功能就是内存的值保护机制.虚拟地址通过段管理机制首先变换成一种中间地址形式–CPU32位的线性地址,然后使用内存管理机制将此线性地址映射到物理地址.   在Intel 80x86的系统中,内存管理是通过 页目录表 和 内存页表 所组成的二级表进行.    其中页目录表和页表的结构是一样的,表项结构也相同的.页目录表中的每个表项4B用来寻址一个页表,而每个页表项4B用来指定一页物理内存页面.因此,当指定了一个页目录项和一个页表项,我们就可以唯一确定所对应的物理内存页.页目录表占用一页内存,因此最多可以寻址1024个页表.而每个页表也同样占用一页内存,因此以页表可以寻址最多1024个物理内存页面.这样在80386中

实模式,保护模式

柔情痞子 提交于 2020-01-24 08:18:02
一下引自 http://www.cnblogs.com/jnet/archive/2008/05/12/1193675.html 一直以来,都搞不清楚这几个概念。在网上搜了一下,把它晒上,不会再忘记! 有其它的内容,请看到的朋友请补充。 从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持; 支持多任务,能够快速地进行任务切换和保护任务环境; 4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离; 支持虚拟8086方式,便于执行8086程序。 虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。 保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待

Linux SWAP 交换分区配置说明

ε祈祈猫儿з 提交于 2020-01-24 04:50:23
一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 这个是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。 一般来说可以按照如下规则设置swap大小: 4G以内的物理内存,SWAP 设置为内存的2倍。 4-8G的物理内存,SWAP 等于内存大小。 8-64G 的物理内存,SWAP 设置为8G。 64-256G物理内存,SWAP 设置为16G。 实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。 1.2 系统在什么情况下才会使用SWAP? 实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。 [root@rhce ~]# cat /proc/sys/vm/swappiness 60 该值默认值是60. swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

yarn资源管理

◇◆丶佛笑我妖孽 提交于 2020-01-23 03:40:30
在TARN中,资源管理由RescoueceManager和NodeManager共同完成,其中,Resourcemanager中的调度器负责资源分配,而NodeManager则负责资源的供给和隔离。 ResourceManager将某个Nodemanager上资源分配给任务(这就是所谓的资源调度)后,NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础保证,这就是所谓的资源隔离。 图解:容器是内存和vcore的抽象概念。容器运行在nm节点 基于以上考虑,YARN允许用户配置每、个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的,配置参数如下: (1)yarn.nodemanager.resource.memory-mb 表示该节点上YARN可使用的物理内存总量,默认是8192MB,注意,如果你的节点内存资源不够8G,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。 上边这两个参数是有关联的,如果 yarn.nodemanager.resource.detect-hardware-capabilities 为true并且yarn.nodemanager.resource.memory

JUC高并发与线程安全(1)

我是研究僧i 提交于 2020-01-22 20:24:30
JUC高并发 1、谈谈你对volatile的理解 1.1volatile是Java虚拟机提供的轻量级的同步机制 1.1.1保证可见性 在内存模型中,线程将自身需要的对象数据从主机物理内存拷贝到线程工作内存(实际仍在物理内存,虚拟的划分约定),当线程对数据的修改经历三个步骤: 从物理内存拷贝数据到工作内存 在执行线程中修改数据 将数据写回物理内存 数据写完后,需要及时的通知其他需要此对象的线程,“该数据已更改,请重新加载”,这就是数据可见性 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8gEIEbLQ-1577715678426)(C:\Users\Kin\AppData\Roaming\Typora\typora-user-images\1577408098733.png)] 验证可见性 class Mydata { int num = 0 ; //添加volatile关键字再次测试 //volatile int num=0; public void initTo10 ( ) { this . num = 10 ; } public void numPlusPlus ( ) { this . num ++ ; } } public class VolatileDemo { public static void main ( String [ ]