精华内容
下载资源
问答
  • 一、内存模型

    2021-03-17 13:57:38
    冯诺依曼计算机模型:计算机在运行时,先从内存中取出第一指令,再通过控制器编译,按指令的要求从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来再取第二指令,在...

    主要内容

    1、计算机的主要组成部分;

    2、CPU由那几部分组成;

    3、高速缓存存在的意义及数据流转流程;

    4、为什么JVM创建线程、销毁线程是重型操作;

    一、冯诺依曼计算机模型

    现代的计算机模型都是-冯诺依曼计算机模型

    冯诺依曼计算机模型:计算机在运行时,先从内存中取出第一条指令,再通过控制器编译,按指令的要求从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来再取第二条指令,在控制器的指挥下完成规定的操作,依次进行下去直到遇到停止指令。

    程序和数据一样存储,按程序编排的顺序,一步一步的取出指令,自动的完成指令规定的操作是计算机最基本的工作原理。这是冯.诺依曼于1945年提出的。

    计算机五大核心部分:

    1、控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解析,根据其要求进行控制。调度程序、数据、内存,协调计算机各部分工作及外设访问等。

    2、运算器:对数据进行各种算数运算和逻辑运算,即对数据进行加工处理。

    3、存储器:存储程序、数据和各种信息、命令等信息,并在需要时提供这些信息。

    4、输入设备:与输出设备统称为外部设备,简称外设。是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。

    5、输出设备:把计算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

    具体模型如下图

    而CPU内部主要有控制单元、运算单元和数据单元。

    存储单元包含CPU片内缓存Cache和寄存器组,是CPU中暂时存放数据的地方,里面存放着等待处理或已经处理过的数据。CPU访问寄存器的效率要比访问内存的效率高很多,寄存器是CPU内的元件,寄存器具有很高的读写速度,所以在寄存器之间的数据传递传送速度非常快,采用寄存器,可以减少CPU访问内存的次数,从而大大提高CPU的工作效率。寄存器组分别专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据,而通用寄存器的用途广泛并可以由程序员规定其用途。

    为提升CPU执行效率,减少CPU与内存的交互次数(交互影响CPU效率),一般会在CPU上集成多级缓存架构,常见的为三级缓存架构。

    L1 Cache:分为数据缓存和指令缓存,逻辑核独占;

    L2 Cache:物理核独占,逻辑核共享;

    L3 Cache:所有物理核共享。

    缓存是由最小存储区块-缓存行(cacheline)组成,缓存行的大小通常为64byte。

    比如你L1的缓存大小为256kb,每个缓存行大小为64byte,那么缓存行数量为256*1024/64个cacheline。

    CPU是怎么读取一个数据的呢?比如数据X

    如果从寄存器中,可以直接读取;

    如果是在L1缓存中,则需先锁住对应的cache行,取值,再解锁;

    如果在L2中,则先从L1中查,没有再到L2中查,锁住对应的缓存行,取值并复制到L1中,再执行读L1的过程,如果在L3中,逻辑与L2一致;

    如果在主内存中,则需通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应并将数据保存在L3中,如果没有L3则保存在L2中,再从L1到内存中,之后解除总线锁定。

    高速缓存存在的意义

    CPU的发展非常快,其执行效率也是非常高的,然后告诉的CPU需要的数据,为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存,已解决I/O速度与CPU运算速度不匹配的问题。

    带有高速缓存的CPU执行计算的流程如下:

    1、程序和数据加载到主内存中;

    2、执行和数据加载到高速缓存中;

    3、CPU执行指令,将运算结果写入高速缓存;

    4、缓存中的数据写回主内存。

    CPU的运行级别

    CPU有四个运行级别:ring0、ring1、ring2、ring3,但linux和windows都只用了ring0、ring3两个运行级别。

    操作系统内部程序指令通常运行在ring0,操作系统外的第三方程序运行是ring3级别,第三方程序如果要调用操作系统函数,由于运行级别不够,CPU需要切换运行状态,由ring3级别切换到ring0级别,然后执行函数,这也是为什么JVM创建线程、唤醒线程是重型操作了,因为需要切换CPU运行状态。

    JVM创建线程的主要流程如下:

    1、CPU从ring3状态切换到ring0,创建线程;

    2、创建完毕,从ring0切换回ring3;

    3、执行JVM程序;

    4、执行完毕,再切换回ring0销毁线程。

    展开全文
  • Java内存模型---JMM

    2020-09-15 23:21:35
    JMM主要是为了为了规定线程和内存之间的一些关系,根据JMM的设计,系统存在一个主内存,JAVA中所有实例变量都储存在主内存中,对于所有线程都是共享的,每线程都有自己的工作内存,工作内存由缓存和堆栈两部分组成...

    一、Java的内存模型JMM

    1.JMM概述:

    JMM主要是为了为了规定线程和内存之间的一些关系,根据JMM的设计,系统存在一个主内存,JAVA中所有实例变量都储存在主内存中,对于所有线程都是共享的,每条线程都有自己的工作内存,工作内存由缓存和堆栈两部分组成,缓存中保存的是主内存中变量的拷贝,缓存可能并不总和主内存同步,也就是缓存中变量的修改可能没有立刻写到主内存中,堆栈中保存的是线程的局部变量,线程之间无法相互直接访问堆栈中的变量

    2.JMM是什么

    JMM (Java Memory Model)是Java内存模型,JMM定义了程序中各个共享变量的访问规则,即在虚拟机中将变量存储到内存和从内存读取变量这样的底层细节。 为什么要设计JMM 屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。

    3.为什么要理解JMM

    主内存,工作内存和线程三者的交互关系
    JMM规定了共享变量都存储在主内存中.每条线程还有自己的工作内存,线程的工作内存保存了主内存的副本拷贝,对变量的操作在工作内存中进行,不能直接操作主内存中的变量.不同线程间无法直接访问对方的工作内存变量,需要通过主内存完成。

    4.JDK内存模型

    4.1JDK1.6内存模型
    在这里插入图片描述
    4.2JDK1.7内存模型

    在这里插入图片描述
    4.3JDK1.8内存模型
    在这里插入图片描述

    二、线程私有的内存区域

    1.程序计数器

    一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。

    2. Java虚拟机栈

    和线程相关,不同线程内,即使运行同一个方法,也是处于不同内存,和方法相关,即使是同一个线程,递归调用某个方法,每次调用都会生成该次调用的方法帧
    每个方法执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应一个栈帧在虚拟机栈中入栈和出栈的过程。
    之前我们一直讲的栈区域实际上就是此处的虚拟机栈,再详细一点,是虚拟机栈中的局部变量表部分。
    此区域一共会产生以下两种异常:
    2.1. 如果线程请求的栈深度大于虚拟机所允许的深度(-Xss设置栈容量),将会抛出StackOverFlowError异常。
    2.2虚拟机在动态扩展时无法申请到足够的内存,会抛出OOM内存溢出(OutOfMemoryError)异常

    3.本地方法栈

    本地方法栈与虚拟机栈的作用完全一样,他俩的区别无非是本地方法栈为虚拟机使用的Native方法服务,而虚拟机栈为JVM执行的Java方法服务。

    三、线程共享区域

    1.Java堆

    在JVM启动时创建,所有的对象实例以及数组都要在堆上分配 。如果在堆中没有足够的内存完成实例分配并且堆也无法再拓展时,将会抛出OOM。

    2.方法区/元数据区

    用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。此区域的内存回收主要是针对常量池的回收以及对类型的卸载。当方法区无法满足内存分配需求时,将抛出OOM异常。

    3.运行时常量池

    编译期及运行期间产生的常量被放在运行时常量池中。 这里所说的常量包括:基本类型、包装类(包装类不管理浮点型,整形只会管理-128到127)和String。类加载时,会查询字符串常量池,以保证运行时常量池所引用的字符串与字符串常量池中是一致的。

    4. 直接内存

    在JDK 1.4中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java堆和Native堆中来回复制数据。 直接内存的分配不会受到Java堆大小的限制,但是,既然是内存,肯定还是会受到本机总内存(包括RAM以及SWAP区或者分页文件)大小以及处理器寻址空间的限制。也可能导致OutOfMemoryError异常出现。

    四、 内存溢出与内存泄漏

    1.OOM:内存溢出

    1.1概述:
    指存在无法回收的内存过多,最终使得运行要用到的内存大于能提供的最大内存
    结果:此时程序就运行不了,系统会提示当前内存溢出,有时候会关闭软件,重启电脑或者软件后释放掉一部分内存又可以使用了(进程都会挂掉情况严重)
    1.2内存溢出原因:
    1.2.1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
    1.2.2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
    1.2.3.代码中存在死循环或循环产生过多重复的对象实体;
    1.2.4.使用的第三方软件中的BUG;
    1.2.5.启动参数内存值设定的过小
    1.3内存溢出的解决方案:
    第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)
    第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。
    第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

    2.内存泄漏

    2.1概述:指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度缓慢甚至系统崩溃等严重后果
    2.1.1内存泄漏是指程序中已动态分配的堆内存由于某种原因未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统奔溃等严重后果。
    2.1.2:一次内训泄漏似乎不会有大的影响,但内存泄漏后堆积的结果就是内存溢出。
    2.1.3:内存泄漏具有隐蔽性,积累性的特征,比其他内存非法访问错误更难检测。这是因为内存泄漏产生的原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏不会直接产生可观察的错误,而是逐渐积累,降低系统的整体性性能。
    2.1.4:如何有效的进行内存分配和释放,防止内存泄漏,是软件开发人员的关键问题,比如一个服务器应用软件要长时间服务多个客户端,若存在内存泄漏,则会逐渐堆积,导致一系列严重后果。
    2.2一般出现内存泄漏的场景:
    长生命周期存活的对象,内部持有不使用对象的引用,导致不使用的垃圾对象无法回收
    2.3一般经常程序经常出现内存泄漏的例子:在使用长期存活的数据结构、数组时,都要考虑对应引用导致内存泄漏的问题
    2.4内存泄漏的最终结果
    可用内存越来越小,如果再下次申请的时候,不够了就抛OOM异常
    2.5内存泄漏原因
    2.5.1:在内存中供用户使用的空间分为三部分:
    程序存储区
    静态存储区:静态存储区数据在程序开始就已经分配好了内存,执行过程中,它们所占的存储单元是固定的,在程序结束时就 释放,所以该区数据一般为全局变量。
    动态存储区:动态存储区数据是在程序的执行过程中根据需要动态分配和动态释放的存储单元。
    2.5.2:没有释放动态分配的存储空间而造成内存泄漏,是动态存储变量的主要问题。
    2.5.3:常用内存管理函数如下:malloc,free,calloc,recalloc等,来完成动态存储变量存储空间的分配和释放。
    2.5.4:常见的内存管理错误如下
    分配一个内存块并使用其中未经初始化的内容;
    释放一个内存块,但继续引用其中的内容;
    子函数分配的内存空间在主函数出现异常中断时,或主函数对子函数返回的信息使用结束时,没有对分配的内存进行释放;
    程序实现过程中分配的临时内存在程序结束时,没有释放临时内存;
    内存错误一般是不可在现的,开发人员不易在程序调式和测试阶段发现,即使花费了很多的时间和精力,也无法消除。

    3.二者之间的关系

    3.1:内存泄漏的堆积最终会导致内存溢出
    3.2:内存溢出就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误
    3.3:内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。:
    3.4:内存溢出:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了那么多,那我就报错。

    展开全文
  • 系统启动过程主要由一下几步组成(以硬盘启动为例):  1. 开机;   2. BIOS 加电或按reset键后都要进行系统复位,复位后指令地址为 0ffff:fff0,这个地方只有一JMP指令, 跳转到系统自检 ( Power

    本文转自:http://hi.baidu.com/sinbad_li/item/98bb8c0ffd17c723a1312d51

    系统启动过程简介

    系统启动过程主要由一下几步组成(以硬盘启动为例):

      1. 开机; 
      2. BIOS 加电或按reset键后都要进行系统复位,复位后指令地址为 0ffff:fff0,这个地方只有一条JMP指令, 跳转到系统自检 ( Power On Self Test -- POST )程序处; 
      3. 系统自检完成后,将硬盘的第一个扇区 (0头0道1扇区, 也就是Boot Sector)读入内存地址 0000:7c00 处; 
      4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则转去尝试其他启动介质, 如果没有其他启动介质 则显示 "No ROM BASIC" 然后死机; 
      5. 跳转到 0000:7c00 处执行 MBR 中的程序; 
      6. MBR程序 首先将自己复制到 0000:0600 处, 然后继续执行; 
      7. 在主分区表中搜索标志为活动的分区,如果没有发现活动分区或有不止一个活动分区, 则转停止; 
      8. 将活动分区的第一个扇区读入内存地址 0000:7c00 处; 
      9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则 显示 "Missing Operating System" 然后停止, 或尝 试软盘启动或; 
      10. 跳转到 0000:7c00 处继续执行特定系统的启动程序; 
      11. 启动系统...

      以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成. 6,7,8,9,10步由MBR中的引导程序完成.

    Boot Sector 结构简介

      1. Boot Sector 的组成

      Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (Master Boot Record),DPT (Disk Partition Table) 和 Boot Record ID(Magic Number) 三部分组成。

      MBR 又称作主引导记录,占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ),包含了硬盘的一系列参数和一段系统主引导程序。引导程序主要是用来在系统硬件自检完后负责从活动分区中装载并运行系统引导程序(引导操作系统)。它的最后一条执行语句是一条JMP指令,跳到操作系统的引导程序去。这里往往是引导型病毒的注入点,也是各种多系统引导程序的注入点。但是由于引导程序本身完成的功能比较简单,所以我们完全可以判断该引导程序的合法性(比如看JMP指令的合法性),因而也易于修复。象命令fdisk/mbr可以修复MBR和KV300这类软件可以查杀任意类型的引导型病毒,就是这个道理。 
      DPT 即主分区表,占用 64 个字节 (0x1BE to 0x1FD),记录了磁盘的基本分区信息。主分区表分为四个分区项, 每项 16 字节, 分别记录了每个主分区的信息(因此最多可以有四个主分区)。 
      Boot Record ID 即引导区标记,占用两个字节 (0x1FE and 0x1FF), 对于合法引导区, 它等于 0xAA55, 这是判别引导区是否合法的标志. 
      Boot Sector 的具体结构如下图所示:

    0000 |------------------------------------------------|
      | |
      | |
      | Master Boot Record |
      | |
      | |
      | 主引导记录(446字节) |
      | |
      | |
      | |
      01BD | |
      01BE |------------------------------------------------|
      | |
      01CD | 分区信息 1(16字节) |
      01CE |------------------------------------------------|
      | |
      01DD | 分区信息 2(16字节) |
      01DE |------------------------------------------------|
      | |
      01ED | 分区信息 3(16字节) |
      01EE |------------------------------------------------|
      | |
      01FD | 分区信息 4(16字节) |
      |------------------------------------------------|
      | 01FE | 01FF |
      | 55 | AA |
      |------------------------------------------------|

    硬盘MBR主引导代码分析

      一程序流程

      (引导扇区是指硬盘相应分区的第一个扇区,是和操作系统有关的,操作系统的引导是由它来完成的;而MBR主引导程序并不负责引导操作系统,MBR是和操作系统无关的,他的任务是把控制权转交给操作系统的引导程序.)

      1 将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处) 
      2 搜索可引导分区,即80H标志 
      成功:goto 3 
      失败:跳入ROM BASIC 
      无效分区表:goto 5 
      3 读引导扇区 
      失败:goto 5 
      成功:goto 4 
      4 验证引导扇区最后是否为55AAH 
      失败:goto 5 
      成功:goto 6 
      5 打印错误进入无穷循环 
      6 跳到0:7C00H进行下一步启动工

    展开全文
  • 本文讲什么? 本文承接《漫谈计算机组成原理(三...阅读完本文,你不但可以知道为啥内存条这么贵,还能对主存有一个基本的了解。 概述 我们先来看一下主存的基本组成。 如上图所示,主存MAR、译码器、驱动...

    本文讲什么?

    本文承接《漫谈计算机组成原理(三)存储器概论》。在上一篇文章中,主要介绍了存储器的层次结构。而本文主要讲述存储器层次结构中的主存部分。
    主存,给我们最直观的感受就是贵。一个DDR4 8G的内存条就达到700元以上。
    阅读完本文,你不但可以知道为啥内存条这么贵,还能对主存有一个基本的了解。

    概述

    我们先来看一下主存的基本组成。

    如上图所示,主存由MAR、译码器、驱动器、存储体、读写电路、MDR组成。
    工作流程:系统如果想要通过MAR读取存储体中某一地址的数据,地址信号需要先通过译码器和驱动器得到真正的存储体中的地址,才能将数据输出到MDR中。同样的,如果系统想要将某一数据写入到存储体重,需要将MDR中的数据通过”写电路“写入到系统中的相应位置。

    存储技术

    从某种意义上来讲,今天计算机行行业之所以能够发展的如此迅猛,是得益于存储技术的发展的。
    有一次聊天的时候,同学们讨论到这样一个问题:“世界上的信息是如此之多,而且每天都在成几何数量增长,那么会不会出现数据无处可存的境地呢?“
    这个问题非常有意思,在我看来,如果存储技术不再出现突破,比如生物存储技术的突破,那我们确实很有可能面对这件事情。
    可以看到,大数据、云计算,都是对大规模数据的计算与分析,而这些数据都是人们的生产生活中出现的,数量以亿万为单位。再比如当下最火的人工智能(虽然我不赞同这个名字,我更喜欢用深度学习这个词),不过也是对算法进行训练,那用的是什么进行训练的呢?当然还是海量的数据。
    所以,“高新技术的发展,全都得益于存储技术的发展”这句话并非空穴来风,而是实打实的。

    主存

    好了,了解了存储技术的重要性之后,我们就来探讨一下计算机的主存。
    主存可以分成两类,一类是随机存取存储器(RAM),另一类是只读存储器(ROM)。顾名思义,RAM可读可写,ROM只读不能写,这两种特性就有了不同的用处。

    随机存取存储器(RAM)

    按照存储信息的原理不同,RAM还可以分成动态RAM(SRAM)和静态RAM(DRAM)两种。

    1.静态RAM
    静态RAM是利用双稳态技术实现的。在静态RAM中,负责数据存储的晶体管电路能够无限期的保存在两个不同电压配置或状态之一,这就是双稳态技术。也就说,双稳态电路表达出的内容,要么是0,要么是1,不是0就是1。如果稳态发生变化,那么电路会由一个不稳定的状态迅速变为稳定的状态。

    2.动态RAM
    动态RAM不同,动态RAM用的不是晶体管电路,而是用的电容(没错,就是物理中的电容)。电容有电状态表示为1,无电表示为0,同样能够清楚地表达两个状态。
    但是电容有一个不好的特性,就是漏电。也就是说,稍不留神,数据就会从0变成1,这就让我们很不爽了,比如00101这串二进制数,转换成十进制是5,如果突然变成了00001,十进制就变成了1。
    所以,我们希望能够做到电容漏电的同时就把电补回去,这就是刷新技术,隔一段时间(n个时钟周期),就会对RAM中的电容重新充电。

    只读存储器(ROM)

    如果你喜欢刷机,那么你一定会惊喜的发现,ROM这个东西好像似曾相识。没错,就是你刷机的刷机包。
    但是,这里的ROM是偏向硬件的说明,而刷机的ROM包是偏向软件的。但是,他们表示的意思都是一样的,那就是“数据不可更改”。
    手机上的ROM包,其实是系统区文件,你想想,你可能删除或者修改系统中的重要模块吗,比如说(软件)通信模块。不能的,对吧。
    ROM也是如此,一旦ROM中的数据确定了,就再也不能更改。
    目前共有三种ROM,第一种是掩模ROM、第二种是PROM、第三种是EPROM。
    1.掩模ROM
    这里先介绍下一般情况主存中的数据是如何被读出的(写入的)。
    主存上的数据,实际上是处于一种网格式的分布状态。而经过译码器电路,实际上是翻译出了横向和纵向两个数字,这两个数字组成n行j列,由此选中数据。如下图所示。

    选中的数据将会被送到MDR中。而掩模ROM实际上是利用了莫斯管(MOS)。MOS管被放到交叉点处(有的交叉点有,有的交叉点没有),这样,选中时读到的数据就不同。有MOS管的读出高电平经放大器电路(不用管什么是放大器)输出0,没有MOS管的输出1。

    2.PROM
    PROM应该是最NB的ROM了。我们可以用自尽来形容他。结构上,PROM用的是熔丝,熔断代表0,连通代表1,如果想要从0变为1,需要将熔丝熔断,然后就再也无法还原了。所以我称这是一一种自尽的方式。

    3. EPROM
    ERPOM是一种可擦除可编程的只读存储器,这个ROM就灵活多了。没有上面两种ROM的缺点,真的需要对数据修改的时候,只需要将数据擦除,重新编程即可。
    EPROM有一个透明的石英窗口,允许光进入存储单元,紫外线照射时,存储单元就被成重置为0。然后再通过特殊设备将1写入。

    结语

    各种各样的存储技术被应用到各种各样的场景上,正是这些多样性,才能够促成计算机技术的飞速发展。
    主存作为计算机的核心部分,对计算机的性能起到了至关重要的作用。主存容量越大、性能越好,一般计算机的性能也就越好。但是由于主存结构的复杂性,想要在一个小小的内存条中集成尽可能多的存储单元,其难度可想而知,再有就是这些单元的造价问题,一般来说,越是精密的东西造价就会越高。所以,内存条的高价也就很正常了。
    虽然摩尔定律已经失效,但是其参考意义还是存在的。希望内存条的价格能够降下来,因为我的电脑已经不再适合编程了。。。。

    如果你喜欢我的文章,可以通过微信公众号:最高权限比特流关注我,也可以通过邮箱:roobtyan@outlook.com联系我。
    感谢阅读!

    扫描二维码关注我吧!

    展开全文
  • 本文讲什么? 本文承接《漫谈计算机...阅读完本文,你不但可以知道为啥内存条这么贵,还能对主存有一个基本的了解。 概述 我们先来看一下主存的基本组成。 如上图所示,主存MAR、译码器、驱动器、存储体、读写电...
  • 计算机组成之机器

    千次阅读 2015-12-02 15:16:02
    第一章 计算机系统概论指令指令格式操作码和地址码组成,操作码指明执行什么操作,地址码指明操作数在内存单元(存储单元)中的地址。指令和数据以二进制的形式以同等地位保存在存储器的存储单元中。运算器运算器...
  • 操作系统(内存管理)

    热门讨论 2009-09-20 12:55:25
    什么必须管理内存 内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至关...
  • 主机——是计算机硬件的主体部分,CPU+MM(主存或内存组成; CPU——中央处理器(机),是计算机硬件的核心部件,运算器+控制器组成;(早期的运、控不在同一芯片上) 主存——计算机中存放正在运行的程序和...
  • 2020-09-18

    千次阅读 2020-09-18 11:24:07
    自学python第一天 ...1.3、计算机由什么组成:CPU、内存条、硬盘、硬件系统和软件系统 1.4、什么是编程语言:编程语言就是人类和计算机进行交流的语言。例:print(“hello world”)电脑就是识别0和1 的机器 ...
  • JMM 与 servlet线程安全

    2009-03-28 11:40:14
    本文关键:   1.什么是JMM: Java的内存模型JMM(Java Memory Model)JMM主要是为了规定了...每线程都有自己的工作内存(Working Memory),工作内存由缓存和堆栈两部分组成,缓存中保存的是主存中变量的拷贝,缓存...
  • 1第一代语言机器语言它依赖于机器不同的计算机有不同的语言它一系列指令组成指令用 二进制或八进制编码 例0000001011001111 表示 加法指令 机器语言是唯一计算机可以直接执行的语言;2第二代语言 汇编语言符号...
  • 多线程基础

    2020-05-14 17:02:41
    一个应用程序的运行基本单位就是一个进程,而进程是线程组成的,一个进程最少有一个线程,进程中有一个主要的线程,叫做主线程,是java虚拟机创建,里面有main()方法。通过多线程,可以实现内存的充分使用,解决了...
  • 我们知道在机器语言中,其指令是二进制码组成。一指令包含操作码和操作数两部分,操作码指明了该指令进行什么操作,操作数指出该指令在执行规定操作时所需的信息来源。 汇编中一样,以8086为例,指令通常使用一...
  • 答:逻辑地址是在程序中对存储器地址的一种表示方法,段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出...
  • 1.3 汇编语言的组成 1.11 内存地址空间(概述) 1.4 存储器 1.12 主板 1.5 指令和数据 1.13 接口卡 1.6 存储单元 1.14 各类存储器芯片 1.7 CPU对存储器的读写 1.15 内存地址空间 1.8 地址总线 引言 汇编语言是直接...
  • 19、jQuery中ajax几部分组成? 28 20、js和jQuery获取value值得区别 29 四、jsp/servlet部分 29 1、Tomcat的优化经验 29 2、Tomcat根目录下有哪些文件 31 3、什么是TOMCAT,怎样启动停止,配置文件,日志文件的存储...
  • 工业企业中的固定信息主要由哪些部分组成?P15  6. 简述管理信息处理的内容?* 本P48  7. 什么是原始信息收集和二次信息收集?两种收集的关键问题是什么?P15  8. 试述现代企业对信息处理的要求* 本P61  9....
  • 软件测试经典面试题 (超实用)

    热门讨论 2012-02-16 13:48:08
    31、一套完整的测试应该哪些阶段组成? 10 32、单元测试的主要内容? 10 33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? 10 34、简述集成测试与系统测试关系? 10 35、软件测试的文档测试应当...
  • 2.1.5 堆栈溢出一般是由什么原因导致的? 2.1.6 什么函数不能声明为虚函数? 2.1.7 冒泡排序算法的时间复杂度是什么? 2.1.8 写出float x 与“零值”比较的if语句 2.1.9 Internet采用哪种网络协议?该协议的主要...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    本书主要内容包括:面试流程及准备、英语面试、电话面试、C/C++语言基础、流程控制、输入/输出、预处理、内存管理、指针、面向对象基础、类、多态、继承、函数、模板与STL、数据结构、软件工程、数据库、操作系统、...
  • 功能主要内存的分配和管理、内存的扩充技术、内存保护技术 2、分区分配存储管理 分为固定分区、可变分区、可重定位分区、多重分区。 内存“扩充”技术: •交换:操作系统做,用户不知道。 ...
  • 6.堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源。 7.什么函数不能声明为虚函数? constructor函数不能声明为虚函数。 8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n^2)。 9.写出float x 与“零...
  • 微机课程设计

    2004-10-15 18:43:28
    CPU算术逻辑部件和控制部件两大主要部分组成,实现运算功能和控制功能。 微型计算机以微处理器为核心,微处理器、存储器、输入输出设备和系统总线组成。 微型计算机系统以微型计算机为主体,配上系统软件和...
  • 11.开关阵列的主要特性是什么? 答 1)因为每入线和每出线的组合都对应着一个单独的开关,所以,在任何时间,任 何入线都可连至任何出线。 2)一个交叉点代表一个开关,因此通常用交叉点数目表示开关效日。开关阵列适合...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    表空间组成,表空间盘区组成,盘区数据块组成 C. 盘区数据块组成,数据块组成,段表空间组成 D. 数据块组成,段盘区组成,盘区表空间组成 6. 下列的哪个子句在SELECT语句中用于排序结果集...
  • windows 程序设计

    2012-03-07 15:25:21
    在分段内存模式下,内存地址两个部分组成-一个16位段(segment)指针和一个16位偏移量(offset)指标。从程序写作者的角度看,这非常凌乱并带来了long或far指针(包括段地址和偏移量地址)和short或near指标...
  • 在实现中,assertion就是在程序中的一语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...
  • 操作系统精髓与设计原理答案

    热门讨论 2011-11-19 15:15:08
    1.1、 列出并简要地定义计算机的四个主要组成部分。 答:主存储器,存储数据和程序;算术逻辑单元,能处理二进制数据;控制单元,解读存储器中的指令并且使他们得到执行;输入/输出设备,控制单元管理。 1.2、 ...

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

内存条主要由什么组成