且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

软考网工难点分析之一 内存编址

更新时间:2022-10-02 23:01:26

下个周末就要迎来本年度的网工考试了,班上的同学们在备考的过程中遇到不少难点,下面选其中的部分难点予以讲解,希望对大家能够有所帮助。

 

在本篇博文中主要谈一下内存编址的问题。

 

内存编址属于计算机硬件部分的基础知识,在介绍这个概念之前,我们先来谈谈为什么32位的操作系统只能最多使用4GB容量的内存。
我们都知道,CPU在运算时所用到的数据的都来自内存,运算结束后的结果也要保存到内存里,所以我们所编写的程序指令必须明确告诉CPU,应该从哪块内存空间读取数据,以及往哪块内存空间写入数据。为了便于对内存中的存储空间进行定位,就为每个存储空间分配了一个编号,每个编号所对应的内存存储空间的大小是1个字节。这也就是所谓的内存编址。
内存编址当然都是采用二进制数,一个2位的二进制数可以表示出4个编号:00、01、10、11,编号的个数是22,一个10位的二进制数就可以表示出210这么多个编号。那么对于一个32位的操作系统是用多少位的二进制数来对内存编址的呢?呵呵,当然是32位了,所以编号的个数就是232,在这样的操作系统里所能表示出来的最大内存空间也就是232字节,即4GB。


明白了内存编址的概念之后,我们来看几道网工的考题:

考题1 内存按字节编址,地址从A4000H到CBFFFH,共有 (1) 个字节。若用存储容量为32K×8bit的存储芯片构成该内存,至少需要 (2) 片。
(1)A.80K  B.96K  C.160K  D.192K
(2)A.2    B.5     C.8     D.10

A4000H和CBFFFH都是十六进制数,在这个范围内包含的编号个数是:CBFFF- A4000+1=27FFF+1=28000H
下面把十六进制数转换成十进制数:

28000=2*164+8*163=(2*16)* 163+8*163=(32+8)*163=40*(24)3=40*212=160KB  (210B也就是1KB)

第二个问题就简单了,每个存储芯片是32KB,那么160KB当然是需要5片了。


考题2 如果主存容量为16M字节,且按字节编址,表示该主存地址至少应需要 (3) 位。
(3)A.16        B.20     C.24      D.32

内存容量为16MB,每个字节需要一个二进制数的编号,那么所需的二进制编号的个数就是16M,即24*220=224 1MB=220B),所以至少应采用24位的二进制编号。


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1202336