不好意思,小弟不材,看了不少資料還是看不懂 bit byte 與作業系統的整合問題
以 32bit (俗稱32位元作業系統) 為例,( bit = 位元,錯誤請導正,謝謝 )
所謂 32 bit ,應該是 2^32(^表示次方)個位元,也就是 4,294,967,296 bit
而大家都說 8 bit = 1 byte ,及 8 位元 = 1 位元組(byte = 位元組,錯誤請導正,謝謝 )
這邊 8 bit = 2^8 = 256 bit,也就是 1 byte 的組合可能
那32位元作業系統,最大支援 4GB 這我就不懂了!!
如果如上述換算, 4,294,967,296 bit / 8 = 536,870,912 byte ( / 等於除以 )
那 1024 byte = 1KB,所以
536,870,912 byte / 1024 = 524,288 KB
以此類推, 1024 KB = 1 MB
524,288 KB / 1024 = 512 MB
因此我搞不懂為什麼會是 4GB 呢?
大部份的文章應該是直接把 32bit 算出來的 4,294,967,296 視為 byte,
沒註明也沒解釋,我自己猜測
直接 4,294,967,296 byte / 1024 = 4,194,304 KB
以此類推, 4,194,304 KB / 1024 = 4,096 MB
最終, 4,096 MB / 1024 = 4 GB
這一切讓我困惑很久,看了很多資料還是不懂,
一開始就告訴自己 8 bit = 1 byte ,只是基礎原理,
但實際運作上電腦無法讀取小於 1 byte 的東西,
所以大家所謂的 32bit 只是個說法,實際上計算出來就是以 byte 使用,
但是在計算 記憶體 時脈 的時候,(小惡魔電腦教室 認識記憶體中的例子)64位元作業系統,
若使用 800 MHz的記憶體,那每秒則是傳輸 64 bit / 8 * 800 = 6400 MB = 6.4GB,
那表示這作業系統中的 bit ,確實是為位元,若要計算,還是要 除以 8 ,來換算成 byte才對,
在這希望有前輩可以為我解惑一下,真的卡死很久,謝謝!!
SkyHoop wrote:
不好意思,小弟不材,...(恕刪)
來看看正確的觀念~
Google "教你解開32位元作業系統4GB記憶體容量限制淺談記憶體的前世、今生、與來世"
偏不點
引述出處:教你解開32位元系統
第一頁的內容
而這些鍵盤中常用的各種符號字元接近兩百五十六種,因此,很自然地我們便以八位元(2的八次方等於二百五十六)當成一個組合,稱之為位元組(Byte),
如我文中上段
當成目前電腦中,資料傳輸的基本單位;而在記憶體內部,最小定址單位即為一個位元組,換句話說,你無法單獨存取1 bit的數據或者任意小於一個位元組的資訊。
如我文章最後一段
我們方才提到,位元組(Byte)可以說是電腦當中最基本的傳輸單位,再往後則每乘以1024來增加一個單位量級,也就是說︰1KB(Kilo Byte)等於1024 個 Byte;1MB(Mage Byte)等於1024個KB;1GB(Giga Byte)等於1024 個 MB;1TB(Tera Byte)等於1024 個 GB;1PB(Peta Byte)等於1024 個 TB;1EB(Eksa Byte)等於1024 個 PB。
這也是基本換算內容
第二頁內容
一時之間,各大網站論壇開始有許多似是而非的流言散布開來,還煞有其事地引經據典道︰「232= 4,294,967,296 Bytes = 4,194,304 Kilo Bytes(KB) = 4,096 Mega Bytes(MB)= 4 Giga Bytes(GB),因此32位元作業系統的極限只能到4 GB!」但事實上,代誌不是憨人想得那麼簡單,若上述邏輯為真,早在二十多年前的16位元DOS系統,應該只能支援到216 = 65,536 Bytes = 64 KB,但稍有接處的朋友都知道,DOS下能夠管理1MB(220 = 1,048,576 Bytes = 1024 KB = 1MB)的資源空間才是正解!由此矛盾可證得「32位元作業系統無法支援到4GB」完全是以訛傳訛的錯誤觀念,那到底真相為何?就讓我們一起往下看,走出撲朔迷離的桃花源外。
這邊就是疑惑點,依舊是以 byte 論點推算
關鍵段落
20條定址線,每條可以傳送0或1的訊號,因此最大相容220 = 1MB的記憶體容量
他這段文章中的容量,依舊是直接轉換 byte
所以我還是不太了解啊,是不是我真的太笨⋯⋯還是有前輩可以簡單點告訴我呢!?謝謝!!
SkyHoop wrote:
所謂 32 bit ,應該是 2^32(^表示次方)個位元,也就是 4,294,967,296 bit
...(恕刪)
簡單回:上面這句是造成你卡很久的問題所在。
32個bit,可以代表的是2^32個被編號定址的「標的物」(從編號0x00000000h到編號0xFFFFFFFFh),這個標的物不必然是你認為的bit,在微處理器跟作業系統實務上,這個標的物是"byte",也就是byte-addressing。
SkyHoop wrote:
那32位元作業系統,最大支援 4GB
...(恕刪)
作業系統&記憶體關連
Whistle Blow wrote:
簡單說:上面這句是造...(恕刪)
wei6233 wrote:
因為是byte ad...(恕刪)
兩位大大一語點破啊,我目前找的資料都比較沒看到這麼明白直接的,
我想用我的理解方式解釋一下,兩位大大幫我看一下,有沒有錯誤的地方,謝謝!!
你們的意思,作業系統的位元,表示是能在同一時間內存取資料的 “個數”
也就是可以一次存取 4,294,967,296 筆資料,也就是 32bit = 2^32 筆資料,
而這資料的大小,如上面那篇文章所說,電腦最小的存取資料大小為 byte,
所以推算出,若要發揮最大的存取 “個數” 也就是 4,294,967,296 筆資料,
那勢必這每筆資料必為最小存取大小,也就是 1 byte ,
若是大於 1 byte,那就無法存取 4,294,967,296 那麼多筆資料,
因為他最終滿足的要件不是存取的資料 “ 個數”,而是所有資料加總的大小,
也就是不能超過 4GB
請問這樣的解釋是對的嗎? 謝謝!!
SkyHoop wrote:
.....
你們的意思,作業系統的位元,表示是能在同一時間內存取資料的 “個數”
....
...(恕刪)
不對,不建議你自行演繹解讀,至於byte-addressing這件事,在資訊相關科系的作業系統教科書的最前面一定會提到,如果要打好基礎,建議把書的前幾章基礎先讀過。
一個作業系統是幾位元的(ex. 32位元Windows/Linux, 64位元Windows/Linux....等等),要從程式設計師寫程式時能夠揮灑的空間、以及一些基本的程式撰寫限制的內功角度去看(暫存器寬度、定址模式、user space大小...etc),不是從練外功角度的處理器位址線有幾條、作業系統又啟動了其中幾條、或資料匯流排寬度的角度去看。
SkyHoop wrote:
了解,我完全是門外漢,只是自己邊摸索而已,有比較推薦的書籍嗎!?
希望是淺顯一點的,白話一點,我學經歷跟電腦沒什麼接觸,所以教科書比較困難
..(恕刪)
這沒有捷徑的,但不用把教科書想得太困難,至少先把實體記憶體的定址跟虛擬定址空間觀念弄清楚。
我假設您已經看過計算機概論了,但是各種計算機概論的教科書品質跟章節編排良莠不齊,特別是中文版,不少作者也根本搞不清楚32位元作業系統跟處理器的基礎與實務.......
基本上若看到「32位元作業系統,因為2^32=4G,因此就是只能管理4GB記憶體」、「手機的記憶體也快要到達4GB了,因此需要64位元手機作業系統」....等等說法,這些不食人間煙火的書跟文章就可以直接丟掉。
其實 32 位元作業系統只能取用到 4GB 的資料觀念是錯的, 以前 DOS 是 16 bits, 但可以用到 1MB(2^20) 的記憶體. 能取用多少記憶體, 要看硬體能提供給你的定址方式如何, 以及作業系統支不支援才能決定. 當然, 若取資料取用一次就搞定, 效率一定會比較高.
內文搜尋

X