其實内存它的作用就是用來存放數據。我們的程序本來是放在外存、放在磁盤當中的,但是磁盤的讀寫速度很慢,而CPU的處理速度又很快,所以如果CPU要執行這個程序,程序相關的數據都是從外存讀入的,那麽很顯然CPU的這個速度會被外存的速度給拖累。所以爲了緩和這個CPU和硬盤、外存之間的速度矛盾,所以我們必須先把我們要執行的、CPU要處理的這些程序數據把它放入内存裏。既然我們的内存是存放數據的,那麽我們的内存當中可能會存放很多很多數據,那操作系統是怎麽區分各個程序的數據是放在什麽地方的呢?那爲了區分這些數據存放的位置,就需要給内存進行一個地址的編號。就有點類似於說我們去住酒店的時候,怎么區分我們每個人住在哪個房間?其實很簡單,酒店的做法就是給每個房間編號,那我們的内存其實和這個酒店是一樣的,只不過酒店的這些房間裏你可以存的是人,而内存當中,它的這些“小房間”裏,它存的是一個一個的數據。那内存會被劃分成這樣一個一個的“小房間”,每個小房間就是一個存儲單元。那接下來在劃分的這些存儲單元之後,就需要給這些存儲單元進行一個編號。那内存的這個地址編號一般來説是從零開始的,然後依次遞增。并且每個地址會對應一個數據的存儲單元,也就是會對應一個“小房間”。那麽,這樣的一個存儲單元可以存放多少數據呢?這個具體得看計算機的編址方式。我們在操作系統這門課當中大部分遇到的情況是會告訴你說計算機按字節編址,按字節編址的意思就是一個地址它對應的是一個字節的數據,也就是說這樣的一個存儲單元,它可以存放一個字節,而一個字節它又由8個二進制位組成,也就是8個0101這樣組成。那在有的題目當中也有可能會告訴我們這個計算機是按字編址的,如果它告訴我們是按字編址的話,那麽就意味著一個地址它所對應的存儲單元可以存放一個字,而一個字的長度是多少個比特位?這個具體得看題目當中給出的條件。有的計算機當中字長是16位,那麽它一個字的大小就是16個比特。也有的計算機可能字長是32位,字長是64位等等。總之,我們需要根據題目給的條件來判斷一個字它占有多少個比特位。好的,那麽在這個部分我們為大家介紹了内存的一些最基本的知識。什麽叫做存儲單元,就是用於存放數據的最小單元。另外,每一個地址可以對應這樣的一個存儲單元。而一個存儲單元可以存儲多少數據,那具體要看這個計算機它是怎麽設計的。對於我們考研來説,我們就要看它題目給的條件到底是什麽。
那在内存管理這個章節當中,可能會有很多題目會涉及到這個數據的一些基本單位。而對於不考計組的同學來説可能對這些單位的描述是比較陌生的,所以我們在這個地方還需要再介紹一下一些常見的單位。比如說我們平時所説的一個手機,或者說一台電腦它有4GB内存,那除了GB之外,我們還經常看到什麽MB,KB這樣的單位。那所謂的1KB,其實就是2的10次方這麽多。而1MB,其實是2的20次方這麽多。而這裏的1GB,其實是2的30次方那麽多。所以這個地方4G其實它是一個數量,而B是一個數據的單位,這個大BByte指的是字節,小b小寫的b它指的是bit,是一個比特位,一個二進制位。一個Byte也就是一個大B等於8個小b,所以如果一個手機有4GB内存的話那麽就意味著這個手機的内存當中它可以存放4*2^30這麽多個字節的數據。所以如果這個手機或者這個電腦它是按字節編址的,那麽這個内存的地址空間就應該是4*2^30這麽多個存儲單元。每一個存儲單元可以存放一個字節。那我們知道,在計算機的世界當中,所有的這些數字其實都是用二進制0101這樣來表示的。包括我們的内存地址,其實也需要用二進制來表示。所以有的題目當中可能會告訴我們,内存的大小是多少。比如說内存大小是4GB,并且告訴我們這個内存是按字節編址的,題目可能會問我們到底需要多少個二進制位才能表示這麽多個存儲單元也就是2^32次方個存儲單元。那對於跨考的同學來說,一定要去了解一下二進制編碼還有二進制數和這個十進制數的一個轉換關係。對二進制比較熟悉的就可以很快速地反應出來這麽多個存儲單元肯定就需要32個二進制位來表示。所以如果手機的内存是4GB,并且它是按字節編址的,那麽對於這個手機來説它的地址至少需要用32個二進制位來表示。好的那麽再次提醒,對於跨考的同學來說,如果二進制和十進制的這個轉換不是很熟練的話,一定要下去練習。
原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/11229540.html