DMA vµ c¸c ch­¬ng tr×nh qu¶n lý bé nhí
Xem bai viet bang font Unicode

NguyÔn §øc Hoµng PC Magazine 12/94 Pcword VN

        Gièng nh­ IRQ, DMA (Direct Memory Access) lµ mét thµnh phÇn bÝ Èn mµ d­êng nh­ tÊt c¶ chóng ta ®Òu ®· gÆp nh­ng chØ cã mét sè rÊt Ýt ng­êi cã thÓ gi¶i thÝch mét c¸ch chÝnh x¸c.

        Trong c¸c m¸y PC hiÖn nay, ng¾t vµ IRQ (Interrupt ReQuest) ®­îc quan t©m ®Õn nhiÒu, nh­ng cã mét khÝa c¹nh kh¸c quan träng ®èi víi ho¹t ®éng cña m¸y l¹i kh«ng ®­îc chó ý ®Õn, ®ã lµ DMA hay Direct Memory Access (truy nhËp bé nhí trùc tiÕp). Gièng nh­ IRQ, DMA lµ mét thµnh phÇn bÝ Èn mµ d­êng nh­ tÊt c¶ chóng ta ®Òu ®· gÆp nh­ng chØ cã mét sè rÊt Ýt ng­êi cã thÓ gi¶i thÝch mét c¸ch chÝnh x¸c.

        Kh«ng hoµn toµn lý thuyÕt khi b¹n t×m kiÕm sù hiÓu biÕt vÒ DMA. §Ó l¾p thªm mét card ©m thanh hoÆc mét thiÕt bÞ tiÕp hîp (gäi t¾t lµ thiÕt bÞ) vµo m¸y tÝnh, b¹n cã thÓ ®­îc yªu cÇu chän m«t kªnh DMA. Lµm sao b¹n biÕt cÇn ph¶i chän kªnh nµo vµ hËu qu¶ sÏ ra sao khi b¹n chän sai kªnh? §Ó tr¶ lêi c©u hái ®ã, chóng ta sÏ t×m hiÓu DMA lµ g×, nã lµm viÖc ra sao vµ ngµy nay nã ®­îc sö dông nh­ thÕ nµo trªn c¸c m¸y PC. Chóng ta còng sÏ th¶o luËn vÒ t¸c ®éng qua l¹i gi÷a bé phËn ®iÒu khiÓn DMA vµ nh÷ng ch­¬ng tr×nh qu¶n lý bé nhí 386 vµ kh¸m ph¸ ý nghÜa thùc sù cña tham sè D = ®­îc cung cÊp bëi tr×nh qu¶n lý EMM386.EXE cña DOS.

    1. DMA lµ g× ?

        DMA lµ mét kü thuËt chuyÓn d÷ liÖu nhanh tõ mét card thiÕt bÞ tíi bé nhí, tõ bé nhí ra card thiÕt bÞ, hoÆc trong mét vµi tr­êng hîp tõ mét vÞ trÝ trong bé nhí tíi mét vÞ trÝ kh¸c. ViÖc chuyÓn theo DMA rÊt quan träng v× nã kh«ng yªu cÇu ®Õn sù thùc thi cña CPU. ChuyÓn theo DMA ®­îc thùc hiÖn b»ng c¸ch lËp tr×nh mét chip cã tªn lµ bé ®iÒu khiÓn DMA (gäi ng¾n gän lµ DMAC), chip ®ã n»m trªn bo m¹ch hÖ thèng cña mäi m¸y PC. ViÖc lËp tr×nh th­êng ®­îc hoµn thµnh bëi mét ch­¬ng tr×nh ch¹y trªn m¸y tÝnh cña b¹n (vÝ dô mét ch­¬ng tr×nh sao l­u ®Üa cøng) hoÆc bëi mét thñ tôc l­u trong ROM, hoÆc trªn mét card thiÕt bÞ tiÕp hîp (vÝ dô trong ROM cña card ®iÒu khiÓn ®Üa mÒm). Mçi lÇn bé ®iÒu khiÓn ®­îc khëi ®éng vµ qu¸ tr×nh chuyÓn d÷ liÖu b¾t ®Çu, CPU ®­îc tù do vµ lµm viÖc kh¸c trong khi DMAC tiÕp tôc thùc hiÖn chuyÓn d÷ liÖu, cã hai bé vi xö lý ®ång thêi lµm viÖc phôc vô b¹n: mét thùc hiÖn m· (code), cßn mét chuyÓn d÷ liÖu.

        ViÖc chuyÓn theo DMAC quan träng cßn v× mét lý do kh¸c, nã chuyÓn d÷ liÖu trùc tiÕp tõ nguån d÷ liÖu ®Õn n¬i nhËn mµ kh«ng cÇn th«ng qua bÊt kú bé phËn l­u tr÷ trung gian nµo. Qu¸ tr×nh ®­a mét byte d÷ liÖu tõ mét thiÕt bÞ tíi mét vÞ trÝ trong bé nhí th«ng qua CPU lµ mét qu¸ tr×nh hai b­íc. §Çu tiªn CPU ®äc byte ®ã tõ thiÕt bÞ vµ l­u trong mét trong sè c¸c thanh ghi cña nã. TiÕp theo ®ã nã ®äc byte tõ thanh ghi tíi ®Þa chØ cÇn chuyÓn ®Õn trong bé nhí. DMAC gi¶m qu¸ tr×nh trªn xuèng cßn mét b­íc, nã vËn dông c¸c tÝn hiÖu ®iÒu khiÓn trªn ®­êng truyÒn, v× thÕ byte ®ã ®­îc ®äc vµ ghi chØ trong mét hµnh ®éng.

        Mét c¸ch tèt ®Ó hiÓu sù kh¸c nhau trªn lµ minh häa c¸c qu¸ tr×nh trªn nh­ lµ mét cuéc ch¬i bãng nÐm. CPU lµ ng­êi ch¬i nÐm bãng víi hai ng­êi kh¸c ®­îc gäi lµ A vµ B. §Ó chuyÓn bãng tõ A tíi B, CPU ph¶i b¾t qu¶ bãng do A nÐm vµ tung nã cho B. DMA, theo mét c¸ch kh¸c, sÏ nãi A tung trùc tiÕp qu¶ bãng cho B. Trong lóc Êy, CPU cã thÓ lµm c¸c c«ng viÖc kh¸c nh­ khëi ®éng cÇu thñ tiÕp theo.

        ChuyÓn d÷ liÖu tõ bé nhí ®Õn bé nhí theo DMA hiÖn nay kh«ng ®­îc sö dông n÷a v× tèc ®é CPU v­ît trªn DMAC rÊt nhiÒu, nh­ng chuyÓn d÷ liÖu tõ bé nhí ®Õn thiÕt bÞ vµ tõ thiÕt bÞ ®Õn bé nhí lµ nh÷ng kú tÝch ®¸ng kÓ. §Ó ®­a d÷ liÖu tõ thiÕt bÞ vµo bé nhí, DMAC kÝch ho¹t ®­êng truyÒn g©y nªn lÖnh ®äc tõ thiÕt bÞ (mét ho¹t ®éng ®äc cæng I/O) vµ ®ång thêi t¹o ra lÖnh ghi vµo bé nhí. ViÖc kÝch ho¹t ®äc tõ cæng I/O sÏ lµm cho thiÕt bÞ ®Æt mét ®¬n vÞ - th«ng th­êng lµ mét byte hoÆc mét Word - lªn ®­êng truyÒn d÷ liÖu cña m¸y PC. Vµ v× tuyÕn ®äc bé nhí ®­îc ho¹t ®éng ®ång thêi cho nªn d÷ liÖu trªn ®­êng truyÒn ®­îc sao ngay vµo bé nhí. Víi mçi lÇn ghi, DMAC dïng ®­êng ®Þa chØ ®Ó chØ ®Þnh ®Þa chØ trong bé nhí n¬i d÷ liÖu sÏ tíi.

        T­¬ng tù ®èi víi qu¸ tr×nh chuyÓn theo DMA tõ bé nhí ®Õn thiÕt bÞ. Víi mçi ®¬n vÞ d÷ liÖu ®­îc chuyÓn, DMAC ra lÖnh ®äc ®èi víi bé nhí vµ ghi ®èi víi cæng I/O. §Þa chØ cña bé nhí ®­îc ®Æt trªn ®­êng ®Þa chØ. Gièng nh­ qu¸ tr×nh trªn, d÷ liÖu ®­îc chuyÓn trùc tiÕp tõ n¬i ph¸t ®Õn n¬i nhËn b»ng c¸ch sö dông ®­êng d÷ liÖu.

        DMAC ®­îc sö dông trong phÇn lín c¸c m¸y PC lµ chip cã ký hiÖu 8237A hoÆc t­¬ng ®­¬ng. C¸c dßng m¸y Micro Channel vµ EISA ®· söa ®æi kü thuËt DMA t¹o ra mét chip riªng cã c¸c chøc n¨ng h¬n h¼n 8237A, nh­ng cã rÊt Ýt ch­¬ng tr×nh ®iÒu khiÓn thiÕt bÞ tËn dông ®­îc nh÷ng ­u ®iÓm më réng ®ã. Dßng m¸y IBM-XT chØ sö dông mét chip 8237A lËp tr×nh ®­îc cung cÊp 4 kªnh DMA riªng rÏ, ®¸nh sè tõ 0 ®Õn 3. Dßng m¸y IBM-AT (chiÕm phÇn lín thÞ tr­êng m¸y PC hiÖn nay) sö dông 2 chip 8237A cung cÊp 8 kªnh DMA ®éc lËp ®¸nh sè tõ 0 ®Õn 7. ChØ cã 7 trong sè 8 kªnh DMA sö dông ®­îc v× mét kªnh (kªnh 4) ®­îc sö dông ®Ó liªn kÕt hai bé ®iÒu khiÓn víi nhau sao cho chóng cã thÓ lµm viÖc nh­ mét ®¬n vÞ thèng nhÊt. Kªnh 0 ®Õn 3 chuyÓn 8 bit d÷ liÖu cïng mét lóc vµ cã thÓ l­u 64KB chØ trong mét lÇn ho¹t ®éng, trong khi kªnh 5 ®Õn 7 chuyÓn 16 bit vµ cã thÓ chuyÓn ®­îc 128KB trong mét lÇn ho¹t ®éng.

        Gièng nh­ bé ®iÒu khiÓn ng¾t, n¬i nhËn yªu cÇu ng¾t tõ c¸c thiÕt bÞ th«ng qua ®­êng IRQ, mét DMAC nhËn yªu cÇu DMA th«ng qua ®­êng DMA request (DREQ). Chip 8237A cung cÊp mét vµi ph­¬ng thøc vµ ph­¬ng ph¸p hµnh ®éng kh¸c nhau, tuy nhiªn mét qu¸ tr×nh chuyÓn ®iÓn h×nh tõ thiÕt bÞ tíi bé nhí diÔn ra nh­ sau:

        DMAC ®­îc lËp tr×nh ®Çu tiªn víi ®Þa chØ cña bé nhí sÏ ghi d÷ liÖu vµ sè byte ®­îc chuyÓn. Khi thiÕt bÞ ®· s½n sµng b¾t ®Çu qu¸ tr×nh chuyÓn, nã kÝch ho¹t ®­êng DREQ ®Ó kÕt nèi víi DMA. Sau khi ®­îc CPU cho phÐp ®iÒu khiÓn ®­êng truyÒn, DMAC ®­a ra ®Þa chØ bé nhí vµ t¹o ra tÝn hiÖu ®Ó mét byte (hoÆc mét tõ) d÷ liÖu ®­îc ®äc tõ thiÕt bÞ vµ ghi vµo vïng ®­îc chØ ®Þnh trong bé nhí. Sau ®ã nã cËp nhËt ®Þa chØ bé nhí cho byte tiÕp theo vµ lÆp l¹i qu¸ tr×nh trªn cho tíi khi toµn bé d÷ liÖu ®­îc chuyÓn hoµn tÊt. Dùa trªn c¸ch bé ®iÒu khiÓn ®­îc lËp tr×nh, mçi byte ®­îc chuyÓn cã thÓ yªu cÇu mét tÝn hiÖu DREQ riªng rÏ (ph­¬ng thøc chuyÓn ®¬n) hoÆc chØ mét tÝn hiÖu cã thÓ khëi ®éng tÊt c¶ qu¸ tr×nh truyÒn (ph­¬ng thøc chuyÓn khèi hoÆc theo yªu cÇu).

        Cã mét thiÕt bÞ DMA cã trªn tÊt c¶ c¸c m¸y PC lµ bé ®iÒu khiÓn ®Üa mÒm. D÷ liÖu trªn ®Üa mÒm ®­îc ®äc theo tõng ®¬n vÞ 512 byte (1 sector) vµ ®­îc chuyÓn b»ng DMA sö dông kªnh DMA sè 2. §Ó ®äc mét sector d÷ liÖu, ng¾t BIOS 13H lËp tr×nh DMA theo ph­¬ng thøc chuyÓn ®¬n vµ cung cÊp mét lÖnh ®äc cho ®iÒu khiÓn ®Üa mÒm. Khi thùc hiÖn, ®iÒu khiÓn ®Üa ®äc byte d÷ liÖu tõ ®Üa vµ khëi ®éng qu¸ tr×nh truyÒn b»ng c¸ch kÝch ho¹t DREQ 2. Sau ®ã nã ®äc lÇn l­ît c¸c byte kh¸c theo c¸ch nh­ trªn ®Ó chuyÓn byte vµo ®Þa chØ vËt lý trong bé nhí. Tíi khi DMAC ®· chuyÓn xong 512 byte, ®iÒu khiÓn ®Üa t¹o ra mét ng¾t cøng ®Ó b¸o cho CPU biÕt ®· cã thÓ sö dông ®­îc sector ®ã.

    2. C¸c kªnh DMA

        Khi b¹n g¾n mét card thiÕt bÞ cã sö dông DMA trªn m¸y PC, b¹n th­êng ®­îc yªu cÇu chän kªnh DMA. §Æt mét DIP-switch hoÆc ®Þnh l¹i jumper víi kªnh DMA 5 sÏ thiÕt lËp mét giao tiÕp vËt lý gi÷a thiÕt bÞ vµ DMAC th«ng qua DREQ 5. Th«ng th­êng, phÇn mÒm sö dông thiÕt bÞ ph¶i ®­îc cung cÊp sè hiÖu kªnh DMA Ên ®Þnh ®Ó nã cã thÓ lËp tr×nh DMAC cho viÖc chuyÓn theo DMA. MÆc dï theo lý thuyÕt cã thÓ nhiÒu thiÕt bÞ chia sÎ mét ®­êng DREQ nÕu chóng kh«ng ®ång thêi sö dông, nh­ng - nh­ mét luËt - tèt nhÊt lµ giíi h¹n mçi thiÕt bÞ sö dông mét kªnh. Nh­ vËy b¹n sÏ ch¾c ch¾n kh«ng gÆp xung ®ét DMA.

        Nh­ ®· biÕt, chóng ta kh«ng sö dông ®­îc kªnh DMA 2 vµ 4 v× chóng ®­îc dµnh cho ®iÒu khiÓn ®Üa mÒm vµ lµm ®­êng nèi 2 chip DMA. Kªnh 0 còng kh«ng sö dông ®­îc v× trªn c¸c m¸y PC tr­íc ®©y nã ®­îc sö dông ®Ó phôc håi bé nhí. Vµo lóc khëi ®éng, BIOS cña m¸y PC nguyªn thñy lËp tr×nh cho ®ång hå ®Ó cø vµi mili gi©y l¹i ®­a yªu cÇu ®äc DMA gi¶ - nh»m t¹o ra viÖc ®äc bé nhí nh­ng kh«ng nhÊt thiÕt cã thiÕt bÞ nhËn d÷ liÖu ®ã - nh­ vËy tr¸nh mÊt th«ng tin trong DRAM. TÊt c¶ c¸c m¸y PC hiÖn nay phôc håi DRAM mµ kh«ng cÇn sù gióp ®ì cña hÖ thèng DMA. Tuy vËy b¹n vÉn kh«ng thÓ sö dông kªnh DMA sè 0 v× cã mét sè m¸y kh«ng thiÕt lËp kªnh ®ã. VËy b¹n sÏ xö trÝ ra sao khi ®­îc yªu cÇu chän mét kªnh DMA? C©u tr¶ lêi lµ chän c¸c kªnh DMA cßn l¹i.

        B¶ng d­íi liÖt kª danh s¸ch c¸c kªnh DMA ®· ®­îc ph©n bæ. Trªn hÇu hÕt c¸c m¸y PC, kªnh 1, 3, 5, 6 vµ 7 ®­îc ®Ó dµnh cho viÖc ghÐp nèi víi thiÕt bÞ. Dßng m¸y PS/2 sö dông kªnh 5 ®Ó chuyÓn d÷ liÖu cho ®Üa cøng, cßn dßng XT th× dïng kªnh 3. V× lý do nµy, khi sö dông 2 dßng m¸y trªn, b¹n cÇn tr¸nh sö dông c¸c kªnh ®ã. Khi b¹n cßn ch­a Ên ®Þnh mét kªnh DMA cho mét thiÕt bÞ nµo th× b¹n cã thÓ sö dông nã bÊt kú khi nµo b¹n muèn. Nh­ng b¹n nªn theo dâi b¶ng ph©n bæ kªnh DMA ®Ó kh«ng x¶y ra hiÖn t­îng hai thiÕt bÞ cïng chia sÎ mét kªnh DMA. T«i viÕt trªn quyÓn sæ ®Ó bµn cña m×nh danh s¸ch c¸c IRQ vµ DMA ®· ®­îc sö dông. Khi c¾m thªm mét card thiÕt bÞ míi vµ t×m kiÕm mét DMA ch­a sö dông, t«i kh«ng ph¶i th¸o c¸c card thiÕt bÞ ®· c¾m trong m¸y vµ xem c¸c jumper cña chóng.

        Cã mét vµi tr×nh tiÖn Ých ph¸t hiÖn ®­îc kªnh DMA nµo ®· ®­îc sö dông nh­ng chóng kh«ng thùc sù ®¸ng tin cËy. NÕu b¹n kh«ng cã th«ng tin vÒ c¸c kªnh DMA ®· ®­îc ph©n bæ vµ b¹n còng kh«ng muèn lôc t×m trong ®èng tµi liÖu cña m×nh th× ®· cã mét lo¹t c¸c ch­¬ng tr×nh chÈn ®o¸n ph©n tÝch m¸y th«ng b¸o cho b¹n biÕt danh s¸ch nh÷ng kªnh DMA ®· sö dông. C¸c ch­¬ng tr×nh trªn ch­a thùc sù hoµn h¶o nªn cã thÓ kÕt qu¶ ®­a ra sÏ kh«ng chÝnh x¸c.

    3. C¸c vÊn ®Ò qu¶n lý bé nhí

        C¸c tr×nh qu¶n lý bé nhí theo 86 ¶o nh­ EMM 386.EXE., QEMM-386 vµ 386MAX g©y ra mét vÊn ®Ò ®Æc biÖt ®èi víi DMAC. §Þa chØ bé nhí ®­îc lËp tr×nh vµo trong DMAC phôc vô cho viÖc chuyÓn theo DMA lµ c¸c ®Þa chØ vËt lý. Nh­ng c¸c tr×nh qu¶n lý trªn th­êng xuyªn ®Þnh l¹i b¶n ®å bé nhí lµm cho mét ®Þa chØ bé nhí cã tr­íc t­¬ng øng víi mét ®Þa chØ bé nhí vËt lý kh¸c (th«ng th­êng lµ mét n¬i kh«ng dïng ®Õn trong bé nhí më réng). Khi mét ch­¬ng tr×nh truy nhËp ®Õn phÇn ®Þa chØ ®· ®­îc ®Þnh l¹i, CPU chuyÓn yªu cÇu ®ã ®Õn ®Þa chØ vËt lý phï hîp. Tuy nhiªn, nÕu DMAC cè g¾ng truy nhËp ®Õn ®Þa chØ trªn, viÖc truy nhËp sÏ thÊt b¹i v× kh«ng cã c¸ch nµo ®Ó DMAC biÕt b¶n ®å bé nhí ®· ®­îc ®Þnh l¹i.

        §iÒu kÕt luËn lµ c¸c ch­¬ng tr×nh lµm viÖc theo DMA cã d÷ liÖu n¹p trong vïng bé nhí cao (UMB) sÏ kh«ng lµm viÖc ®­îc nÕu kh«ng chÞu sù kiÓm so¸t cña c¸c ch­¬ng tr×nh qu¶n lý bé nhí. Mét DMAC ®­îc lËp tr×nh ®­a d÷ liÖu ra cæng I/O vµ trong chÕ ®é 86 ¶o mét tr×nh qu¶n lý bé nhí cã thÓ chÆn t¸t c¶ d÷ liÖu ®­îc ®­a ra cæng I/O. Nh­ vËy nã cã thÓ dù ®o¸n ®­îc c¸c yªu cÇu DMA s¾p tíi vµ thËm chÝ biÕt ®­îc c¶ ®Þa chØ bé nhí tiÕp theo. NÕu c¸c ®Þa chØ ®ã ®· ®­îc söa ®æi, tr×nh qu¶n lý bé nhí sÏ lËp tr×nh l¹i DMAC theo ®Þa chØ bé nhí vËt lý phï hîp. Sau ®ã nã cho phÐp qu¸ tr×nh chuyÓn DMA thùc hiÖn nh­ th­êng lÖ.

        Mét t×nh huèng tai h¹i tiÒm tµng x¶y ra khi ®Þa chØ bé nhí vËt lý ®· ®­îc söa ®æi göi cho qu¸ tr×nh chuyÓn theo DMA l¹i n»m ngoµi vïng qu¶n lý cña DMAC. PhÇn lín c¸c DMAC bÞ giíi h¹n trong 16MB bé nhí, mét sè kh¸c kh«ng thÓ ®¸nh ®Þa chØ lín h¬n 8MB. Khi mét ®Þa chØ nguån hoÆc ®Ých n»m ngoµi vïng DMAC cã kh¶ n¨ng ®¸nh ®Þa chØ, tr×nh ®iÒu khiÓn bé nhí ®­a ra mÑo sau: Nã ®Þnh l¹i qu¸ tr×nh chuyÓn DMA ra mét vïng ®Öm cña nã - mét vïng n»m trong vïng cã thÓ truy nhËp bíi DMA - vµ cho phÐp qu¸ tr×nh chuyÓn thùc hiÖn. NÕu vïng ®Öm ®ñ lín ®Ó chøa d÷ liÖu th× sau khi qu¸ tr×nh chuyÓn kÕt thóc, tr×nh qu¶n lý bé nhí chuyÓn d÷ liÖu trong vïng ®ªm tíi ®Þa chØ bé nhí thÝch hîp. Sù viÖc trªn lµm gi¶m hiÖu qu¶ cña qu¸ tr×nh DMA nh­ng bï l¹i nã lµm cho hÖ thèng vÉn cã thÓ thùc hiÖn ®­îc.

        Mét vÊn ®Ò thùc sù x¶y ra khi d÷ liÖu cña qu¸ tr×nh chuyÓn DMA lín h¬n vïng ®Öm. B¹n sÏ nhËn ®­îc mét th«ng b¸o lçi nh¾c nhë t¨ng kÝch th­íc vïng ®Öm DMA cña tr×nh qu¶n lý bé nhí, tiÕp theo ®ã lµ viÖc m¸y bÞ treo cøng. §ã lµ s¶n phÈm cña tr×nh qu¶n lý bé nhí trong khi nã ®ang cè g¾ng ng¨n chÆn viÖc thÊt tho¸t d÷ liÖu. Theo ngÇm ®Þnh, EMM386.EXE sö dông vïng ®Öm DMA cã kÝch th­íc 32KB. KÝch th­íc vïng ®Öm cã thÓ ®­îc ®Æt trong kho¶ng tõ 16KB tíi 256KB b»ng c¸ch sö dông tham sè D=; kÝch th­íc ngÇm ®Þnh th­êng lµ phï hîp v× trong hµng lo¹t tr­êng hîp nã cã kh¶ n¨ng chøa hÕt ®­îc d÷ liÖu DMAC.

        ThËm chÝ mét tr­êng hîp phøc t¹p kh¸c n¶y sinh khi DMAC kh«ng n»m trªn bo m¹ch hÖ thèng mµ n»m trªn thiÕt bÞ, n¬i mµ tr×nh qu¶n lý bé nhí kh«ng thÓ ®iÒu khiÓn qu¸ tr×nh DMAC ®­a d÷ liÖu ra cæng I/O. §iÒu ®ã x¶y ra víi mét ®iÒu khiÓn ®Üa cøng chØ huy ®­îc ®­êng truyÒn (BMC). Bé ®iÒu khiÓn ®ã g©y ra rÊt nhiÒu ®iÒu phiÒn to¸i khi ng­êi sö dông khëi ®éng SmartDrive cña DOS 5.0 vµ n¹p nã lªn vïng bé nhí cao. Gi¶i ph¸p ®­îc Microsoft ®­a ra n¨m 1990 lµ mÉu chi tiÕt kü thuËt cña c¸c thiÕt bÞ phôc vô ¶o (VDS). VDS lµ mét tËp c¸c phôc vô cho phÐp tr×nh qu¶n lý bé nhí cung cÊp ®Þa chØ bé nhí cña hÖ thèng cho BMC tr­íc khi ®äc vµ ghi. TÊt nhiªn, bé ®iÒu khiÓn chøa DMAC ph¶i nhËn biÕt ®­îc VDS, nh­ng giê ®©y d­êng nh­ hÇu hÕt c¸c bé ®iÒu khiÓn ®Òu cã kh¶ n¨ng ®ã. §ã lµ tÊt c¶ nh÷ng ®iÒu phøc t¹p thó vÞ. §iÒu kÕt luËn lµ ngµy nay viÖc sö dông c¸c thiÕt bÞ DMA víi c¸c tr×nh qu¶n lý bé nhí trong mode 86 ¶o thùc sù an toµn.

    4. §äc thªm vÒ DMA

        NÕu b¹n muèn häc thªm vÒ DMA vµ ®Æc biÖt lµ t×m hiÓu c¸ch lËp tr×nh chip DMA, cho phÐp t«i giíi thiÖu víi b¹n 2 cuèn s¸ch sau :

        Cuèn thø nhÊt cña Hans-Peter Messmer víi nhan ®Ò The Indispensable PC Hardware Book (1994, Addition - Wesley). §©y thùc sù lµ mét kiÖt t¸c vµ v« h×nh chung nã ®· thay thÕ h¬n nöa t¸ s¸ch h­íng dÉn sö dông phÇn cøng t«i th­êng dïng. Nã kh«ng qu¸ ®i s©u vµo chi tiÕt khi m« t¶ c¸c thµnh phÇn trong m¸y PC lµm viÖc ra sao, bao gåm c¶ chip n»m trªn bo m¹ch hÖ thèng. Vµ mÆc dï cuèn s¸ch ®­îc dÞch tõ tiÕng §øc, néi dung cña nã vÉn gi÷ ®­îc nguyªn b¶n.

        Cuèn s¸ch thø hai cña Frank Van Gilluwe cã nhan ®Ò The Undocumented PC (1994, Addition - Wesley). MÆc dï kh«ng b»ng cuèn s¸ch cña Messmer, cuèn s¸ch nµy còng lµ mét kho tµng c¸c th«ng tin khã kiÕm vÒ m¸y PC.


PcLeHoan 1996 - 2002
Mirror : http://www.pclehoan.com
Mirror : http://www.lehoanpc.net

Mirror : http://www.ktlehoan.com