Nh¾ Rµng, Nh¾ Cao, Nh¾ Sao Cho V×a !!!


Bình Anson, Perth, Western Australiå
Trß¾c ðây h½n mß¶i nåm khi IBM trình làng máy ði®n toán cá nhân ð¥u tiên v¾i mµt bµ nh¾ có khä nång 1 megabyte, gi¾i tin h÷c b¤y gi¶ xôn xao h¾n h· chào ðón c¤u trúc bµ nh¾ to l¾n n¥y. Thª mà chï vài ba nåm sau, v¾i nhu c¥u tin h÷c gia tång và sñ phát tri¬n gia t¯c cüa các ph¥n m«m và ph¥n cÑng, bµ nh¾ 1 Mb tr· nên nhö bé, ch§t chµi, không ðü chÑa các device drivers m¾i, các ph¥n m«m TSR và trình Ñng døng càng ngày càng phÑc tÕp và nhi«u ðòi höi.

Vì v§y mà n¦y sinh ra nhi«u giäi pháp ð¬ tång cß¶ng bµ nh¾, tÕo ra nhi«u ð¸nh chu¦n quän lý bµ nh¾, và mµt loÕt các thu§t ngæ tin h÷c m¾i làm cho chúng ta cäm th¤y bÞ ngÞ, r¯i ren, lúng túng. Nào là bµ nh¾ rµng, nào là vùng nh¾ cao, nào là nh¾ mé trên, mé dß¾i,... không biªt nh¾ nào là ðáng nh¾, không biªt quän lý bµ nh¾ sao cho v×a các nhu c¥u tin h÷c cüa mình !

Bµ Nh¾ Quy ¿¾c

Khi thiªt kª bµ xØ lý 8088/8086, Intel ðßa ra mµt bus 20 dây ð¬ b¡t c¥u n¯i bµ xØ lý v¾i bµ nh¾. Trong h® nh¸ phân, v¾i 2 trÕng thái 1 và 0, sñ t±ng hþp cüa 20 dây n¥y cho ta 2**20 s¯ ð¸a chï vùng nh¾, hay 1,048,576 (1 Mb). Theo qui ß¾c, 1 Kb (kilobyte) = 2**10, 1 Mb (megabyte) = 2**20, 1 Gb (gigabyte) = 2**30.

Bµ nh¾ 1 Mb n¥y g°m 16 ðoÕn (segments), m²i ðoÕn là 64 Kb, ðßþc IBM và Microsoft khi thiªt kª h® ði«u hành DOS chia làm 2 ph¥n: ph¥n chính 10 ðoÕn (640 Kb), và ph¥n phø 6 ðoÕn (384 Kb). Ph¥n chính dùng ð¬ chÑa bäng véc t½ ng¡t (interrupt vector table), vùng truy«n thông ROM, vùng truy«n thông DOS), các t§p tin c¥n thiªt cho DOS và ph¥n còn lÕi (500 - 600 Kb) dành cho chúng ta toàn quy«n sØ døng ð¬ chÕy các chß½ng trình Ñng døng và tÕm lßu các dæ ki®n c¥n dùng.

Khi Microsoft ðßa DOS vào th¸ trß¶ng, ph¥n chính cüa bµ nh¾ n¥y không có mµt tên g÷i chính thÑc. Vì v§y ph¥n n¥y có nhi«u tên : bµ nh¾ c½ s· DOS (DOS base memory), vùng nh¾ cüa ngß¶i dùng (user's memory area), vùng nh¾ mé th¤p (lower memory area), bµ nh¾ quy ß¾c (conventional memory) ... Bµ Nh¾ Quy ¿¾c là tên g÷i thông døng nh¤t và ðßþc Microsoft dùng trong Windows 3.x và t× DOS 5 tr· ði.

Vùng Nh¾ Mé Trên

Ph¥n phø 384 Kb (6 ðoÕn) cüa bµ nh¾ dành ð¬ chÑa các dæ ki®n cån bän cho sñ ði«u hành ph¥n cÑng cüa máy. Trong ph¥n phø, 2 ðoÕn ð¥u tiên dùng cho ph¥n ð®m video (video buffer), ðoÕn kª dành cho các ROM h® ki¬m soát ðîa cÑng (harðdisk controller) và h® ði«u hành EGA/VGA (EGA/VGA ROM BIOS), ðoÕn cu¯i dành cho ROM cüa h® th¯ng máy (System ROM BIOS). Các ðoÕn dß còn lÕi thì ð¬ dành cho sñ phát tri¬n máy v« sau n¥y.

Ph¥n nh¾ phø n¥y cûng không ðßþc ð¸nh danh lúc ban ð¥u. Có ngß¶i g÷i là vùng nh¾ dñ b¸ (reserved memory), vùng nh¾ h® th¯ng (system memory).

V« sau, Microsoft g÷i là Vùng Nh¾ Mé Trên (Upper Memory Area). Vùng nh¾ n¥y có 2 ð£c tính: thÑ nh¤t, vi®c ð£t ð¬ phân chia các ðoÕn nh¾ không c¯ ð¸nh và không có mµt tiêu chu¦n th¯ng nh¤t. ThÑ hai, vi®c sØ døng vùng nh¾ n¥y tùy thuµc m²i dÕng máy, và s¯ ph¥n cÑng ð£t thêm vào máy.

Bµ Nh¾ Bành Trß¾ng

Bµ Nh¾ Bành Trß¾ng (Expanded Memory) trên cån bän là bµ nh¾ tráo ð±i t×ng kh¯i (bank-switching memory). Bµ nh¾ ðßþc phân chia làm nhi«u khúc nhö g÷i là trang nh¾ (page). Sau khi ph¥n m«m quän lý bµ nh¾ (EMM, Expanded Memory Manager) ðßþc cài ð£t vào máy, EMM s¨ tìm mµt khoäng tr¯ng 64 Kb trong bµ nh¾ c½ s· ð¬ ð£t mµt khung trang (page frame) ð¬ chÑa 4 trang, m²i trang rµng 16 Kb,.

Nµi dung cüa 4 trang n¥y ðßþc trao ð±i v¾i 4 trang cüa bµ nh¾ bành trß¾ng n¢m ngoài bµ nh¾ quy ß¾c. Nhß v§y qua sñ móc n¯i n¥y, m²i t§p hþp 4 trang cüa bµ nh¾ bành trß¾ng ðßþc xØ lý nhß là mµt ph¥n cüa bµ nh¾ quy ß¾c. B¢ng cách hoán chuy¬n t×ng t§p hþp 4 trang cüa bµ nh¾ bành trß¾ng qua khung trang 64 Kb trong vùng nh¾ quy ß¾c, mµt trình Ñng døng trong DOS có th¬ truy c§p ðßþc kh¡p bµ nh¾ bành trß¾ng v¾i khä nång t¯i ða là 32 Mb.

Bµ Nh¾ M· Rµng

Khi IBM ðßa vào th¸ trß¶ng mµt máy ði®n toán cá nhân m¾i, g÷i là PC-AT (Advanced Tech-nology, KÛ Thu§t Tân Tiªn) dña vào bµ xØ lý Intel-80286 (16 bits), bus ð¸a chï bµ nh¾ ðßþc tång lên 24 dây. Nhß v§y t±ng s¯ ð¸a chï trong bµ nh¾ mà bµ xØ lý có th¬ truy c§p ðßþc là 16 Mb (2**24).

M¤y nåm g¥n ðây, Intel lÕi ðßa ra mµt nhóm bµ xØ lý m¾i, hoàn toàn dña trên c¤u trúc 32-bit (80386, 80486, Pentium) v¾i ðß¶ng bus 32 dây. T±ng s¯ khä nång bµ nh¾ nhäy v÷t lên ðªn mµt con s¯ kh±ng l° là 4 tÖ bytes (2**32).

Các bµ xØ lý n¥y ðßþc ði«u hành trong 2 chª ðµ: chª ðµ thñc và chª ðµ bäo v®. Trong chª ðµ thñc (real mode), bµ xØ lý 80286/386 ði«u hành gi¯ng nhß các bµ 8088/86, nghîa là chï truy c§p ðßþc 1 Mb cüa bµ nh¾ mà thôi, và dùng ðßþc v¾i t¤t cä các ph¥n m«m chÕy trong DOS. G÷i là chª ðµ thñc (real mode) vì l¯i ði«u hành n¥y phù hþp v¾i các ði«u ki®n thñc tª (realistic) lúc b¤y gi¶.

Trong chª ðµ bäo v® (protection mode), bµ xØ lý truy c§p ðßþc toàn th¬ bµ nh¾ và có th¬ dùng ð¬ chÕy nhi«u chß½ng trình cùng mµt lúc (multitasking, ða nhi®m). Bµ xØ lý cho phép h® ði«u hành (chÆng hÕn nhß DOS) thiªt l§p các rào cän ð¬ che ch·, bäo v® t×ng chß½ng trình mµt, ð¬ chúng không phá r¯i lçn nhau.

Vùng nh¾ n¢m trên biên 1 Mb ðßþc g÷i là Bµ Nh¾ M· Rµng hay là Bµ Nh¾ N¯i Dài (Extended Memory, XM). G÷i là n¯i dài (extended) b·i vì bµ nh¾ n¥y là mµt ph¥n cüa bµ nh¾ chung, n¢m hoàn toàn trong c¤u trúc ði«u hành cüa bµ xØ lý. Sñ phân bi®t "n¯i dài" và "quy ß¾c" chï là mµt sñ phân bi®t giä ð¸nh cüa h® ði«u hành DOS.

Vùng Nh¾ Cao

Vùng Nh¾ Cao (High Memory Area, HIMEM) có dung tích 64 Kb, là mµt ph¥n cüa bµ nh¾ m· rµng, n¢m ngay trên biên 1 Mb, và chï dùng ðßþc trong các bµ xØ lý 286 và cao h½n (386, 486, Pentium). Vùng nh¾ n¥y ðã ðßþc Quarterdeck khám phá ra dña vào sñ ði«u hành cüa bµ 80286 trong chª ðµ thñc, mô phöng theo sñ quän lý bµ nh¾ 8088/86, v¾i dây bus A20 ðßþc m· ra ð¬ truy c§p b·i DOS.

Kªt Lu§n

Ъn ðây thì ch¡c các bÕn cûng nhÑc ð¥u v« các loÕi bµ nh¾ cüa DOS. Th§t ra, ðó là kªt quä sñ tiªn hóa gia t¯c cüa khoa tin h÷c sØ døng máy ði®n toán cá nhân, vßþt qua dñ tính lúc ban ð¥u cüa các nhà thiªt kª ph¥n cÑng (8088/86 v¾i bus 20 dây) và ph¥n m«m (DOS v¾i rào cän 640 Kb).

Ь ð½n giän hóa vi®c dùng máy, có l¨ chúng ta phäi chuy¬n sang mµt h® th¯ng ði«u hành khác, chÆng hÕn nhß là OS/2 ho£c UNIX, và t¾i ðây là Windows NT, v¾i các bµ xØ lý 32-bit. Thª nhßng, v¾i chi phí l¾n lao ðã ð¥u tß vào h½n 50 tri®u máy PCÐOS trên toàn c¥u và vào sñ giáo døc nhæng ngß¶i dùng máy trong h½n 10 nåm qua, ch¡c là DOS và các dÕng bµ nh¾ s¨ còn · v¾i chúng ta mµt th¶i gian næa.

oOo


Bình Anson, Perth, 17 April 1994
[Tr· v« Møc Løc]