26.11.2014 Views

Январь - Xakep Online

Январь - Xakep Online

Январь - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ÊÎÄÈÍÃ<br />

ASSEMBLER<br />

TEXT ÊÐÈÑ ÊÀÑÏÅÐÑÊÈ<br />

& ÆÈÐÍÛÉ ÕÎÌßÊ<br />

ÆÈÇÍÜ<br />

ÏÎÑËÅ BSOD<br />

Ñ ÏÎÌÎÙÜÞ ÎÒËÀÄ×ÈÊÀ<br />

È ÀÑÑÅÌÁËÅÐÀ ÇÀÑÒÀÂÈÌ<br />

ÑÈÑÒÅÌÓ ÏÅÐÅÆÈÒÜ ÃÎËÓÁÎÉ<br />

ÝÊÐÀÍ ÑÌÅÐÒÈ<br />

“<br />

ÂÑÅ ÏÐÅÊÐÀÑÍÎ ÇÍÀÞÒ, ×ÒÎ<br />

ÎÇÍÀ×ÀÅÒ BSOD (BLUE SCREEN OF<br />

DEATH). ÝÒÎ ÏÎÑËÅÄÍÈÉ ÂÇÄÎÕ<br />

ÎÏÅÐÀÖÈÎÍÍÎÉ ÑÈÑÒÅÌÛ, ÏÎÑ-<br />

ËÅ ÊÎÒÎÐÎÃÎ ÎÍÀ ÑÁÐÀÑÛÂÀÅÒ<br />

ÄÀÌÏ È ÓÕÎÄÈÒ ÍÀ ÏÅÐÅÇÀÃÐÓÇÊÓ,<br />

ÒÅÐßß ÂÑÅ ÍÅÑÎÕÐÀÍÅÍÍÛÅ ÄÀÍ-<br />

ÍÛÅ. ÎÄÍÀÊÎ ÍÀ ÑÀÌÎÌ ÄÅËÅ<br />

BSOD — ÅÙÅ ÍÅ ÊÎÍÅÖ, È ÅÑËÈ ÏÅ-<br />

ÐÅÇÀÃÐÓÇÊÓ ÇÀÌÅÍÈÒÜ ÐÅÀÍÈÌÀ-<br />

ÖÈÅÉ, ÒÎ Â 9 ÈÇ 10 ÑËÓ×ÀÅ ÌÎÆ-<br />

ÍÎ ÂÎÇÂÐÀÒÈÒÜÑß Â ÍÎÐÌÀËÜ-<br />

ÍÛÉ ÐÅÆÈÌ È ÓÑÏÅÒÜ ÇÀØÀÒÄÀÓ-<br />

ÍÈÒÜ ÑÈÑÒÅÌÓ ÏÅÐÅÄ ÒÅÌ, ÊÀÊ<br />

ÎÍÀ ÓÌÐÅÒ ÎÊÎÍ×ÀÒÅËÜÍÎ<br />

”<br />

Ñèíèé ýêðàí ïîÿâëÿåòñÿ âñÿêèé ðàç, êîãäà ÿäðî<br />

âîçáóæäàåò íåîáðàáàòûâàåìîå èñêëþ÷åíèå<br />

(ñêàæåì, îáðàùåíèå ïî íóëåâîìó óêàçàòåëþ)<br />

èëè îòëàâëèâàåò çàâåäîìî ëåâóþ îïåðàöèþ<br />

(îñâîáîæäåíèå óæå îñâîáîæäåííîé ïàìÿòè,<br />

íàïðèìåð). Âî âñåõ ýòèõ ñëó÷àÿõ óïðàâëåíèå<br />

ïåðåäàåòñÿ ôóíêöèè KeBugCheckEx, îïèñàíèå<br />

êîòîðîé ìîæíî íàéòè â NT DDK. Îíà çàâåðøàåò<br />

ðàáîòó ñèñòåìû â àâàðèéíîì ðåæèìå,<br />

ïðè íåîáõîäèìîñòè ñáðàñûâàÿ äàìï ïàìÿòè,<br />

ïîêîâûðÿâøèñü â êîòîðîì, ìîæíî îïðåäåëèòü<br />

ïðè÷èíó ñáîÿ.<br />

Ôóíêöèÿ KeBugCheckEx ïðèíèìàåò ÷åòûðå àðãóìåíòà,<br />

âàæíåéøèì èç êîòîðûõ ÿâëÿåòñÿ<br />

BugCheckCode, îïðåäåëÿþùèé ïðè÷èíó ñáîÿ.<br />

Âñåãî ñóùåñòâóåò ñâûøå ñîòíè êîäîâ îøèáîê,<br />

äîêóìåíòèðîâàííûõ â DDK (èùè èõ â ðóêîâîäñòâå<br />

ïî îòëàä÷èêó Using Microsoft Debugger),<br />

îäíàêî â äåéñòâèòåëüíîñòè èõ íàìíîãî áîëüøå.<br />

Äèçàññåìáëèðîâàíèå ÿäðà W2K SP2 ïîêàçûâàåò,<br />

÷òî KeBugCheckEx âûçûâàåòñÿ èç 387<br />

ìåñò (ñ ðàçëè÷íûìè ïàðàìåòðàìè).<br />

Ðàçóìååòñÿ, íå âñå îøèáêè îäèíàêîâû ïî<br />

ñâîåé ôàòàëüíîñòè. Â ìíîãîÿäåðíûõ îñÿõ<br />

ýòî âîîáùå íå ïðîáëåìà. Ïàäåíèå îäíîãî ÿäðà<br />

íå çàòðàãèâàåò äðóãèõ. Âñå ÿäðà ðàáîòàþò<br />

â ðàçäåëüíûõ àäðåñíûõ ïðîñòðàíñòâàõ è ÷àñòè÷íî<br />

èëè ïîëíîñòüþ èçîëèðîâàíû äðóã îò<br />

äðóãà. Ðàçðóøèòü òàêóþ ñèñòåìó î÷åíü òðóäíî,<br />

ìíîãîÿäåðíàÿ àðõèòåêòóðà ÷ðåçâû÷àéíî<br />

óñòîé÷èâà ê ñáîÿì, íî… êàê æå ïðè ýòîì îíà<br />

òîðìîçèò! Ìåæúÿäåðíûé îáìåí ñúåäàåò óéìó<br />

ïðîöåññîðíîãî âðåìåíè. Åñëè çàïèõàòü âñå<br />

êîìïîíåíòû â îäíî ÿäðî, òî ìû ïîëó÷èì ìîíîëèòíîå<br />

ÿäðî ïî òèïó Linux (÷òî, êñòàòè ãîâîðÿ,<br />

ÿâèëîñü ïðè÷èíîé ÿðîñòíîé êðèòèêè ïîñëåäíåãî<br />

ñî ñòîðîíû ìíîãèõ òåîðåòèêîâ).<br />

 Linux, êàê è â BSD, âñå êîìïîíåíòû ÿäðà<br />

(òàì îíè íàçûâàþòñÿ ìîäóëÿìè) èñïîëíÿþòñÿ<br />

â åäèíîì àäðåñíîì ïðîñòðàíñòâå, è íåêîððåêòíî<br />

íàïèñàííûé ìîäóëü ìîæåò íåïðåäíàìåðåííî<br />

èëè óìûøëåííî íàäðóãàòüñÿ íàä ÷óæîé<br />

ñîáñòâåííîñòüþ (ïðåâðàòèòü äàííûå â<br />

âèíåãðåò, íàïðèìåð). Ýòî ôàêò! Îäíàêî ïðè<br />

âîçíèêíîâåíèè íåîáðàáàòûâàåìîãî èñêëþ-<br />

÷åíèÿ â ÿäðå, Linux ãðîõàåò òîëüêî òîò ìîäóëü,<br />

êîòîðûé ýòî èñêëþ÷åíèå è ïîðîäèë, íå<br />

òðîãàÿ âñå îñòàëüíûå. Àâàðèéíûé îñòàíîâ<br />

ñèñòåìû ïðîèñõîäèò òîëüêî ïî ñåðüåçíîìó<br />

ïîâîäó, êîãäà ðóøèòñÿ ÷òî-òî î÷åíü ôóíäàìåíòàëüíîå,<br />

äåëàþùåå äàëüíåéøóþ ðàáîòó<br />

ÿäðà äåéñòâèòåëüíî íåâîçìîæíîé. Êîíå÷íî,<br />

åñëè ïîëåòåë äðàéâåð æåñòêîãî äèñêà, — ýòî<br />

êðàíòû, íî âîò, íàïðèìåð, áåç äðàéâåðà çâóêîâîé<br />

êàðòû ìîæíî êàêîå-òî âðåìÿ è îáîéòèñü,<br />

ñîõðàíèâ âñå íåñîõðàíåííûå äàííûå, è<br />

òîëüêî ïîòîì ïåðåçàãðóçèòüñÿ.<br />

Îïåðàöèîííûå ñèñòåìû ñåìåéñòâà NT èñïîëüçóþò<br />

ãèáðèäíóþ àðõèòåêòóðó, ñî÷åòàþùóþ<br />

ñèëüíûå ñòîðîíû ìîíîëèòíûõ è ìèêðîÿäåð,<br />

÷òî òåîðåòè÷åñêè äîëæíî îáåñïå÷èòü<br />

ïðåâîñõîäñòâî íàä ìîíîëèòíûì Linux'îì<br />

(êñòàòè ãîâîðÿ, ýêñïåðèìåíòàëüíîå ÿäðî<br />

GNU/HURD ïîñòðîåíî êàê ðàç ïî ìèêðîÿäåðíîé<br />

àðõèòåêòóðå). Ëåãåíäàðíî óñòîé÷èâóþ<br />

NT/XP, êîòîðóþ, êàê ãîâîðÿò, ìîæíî óðîíèòü<br />

òîëüêî âìåñòå ñ ñåðâåðîì, íà ñàìîì äåëå<br />

î÷åíü ëåãêî âîãíàòü â ãîëóáîé ýêðàí. Äîñòàòî÷íî<br />

ëþáîìó äðàéâåðó ñäåëàòü ÷òî-òî íåäîçâîëåííîå,<br />

êàê ñèñòåìà àâòîìàòè÷åñêè êàòàïóëüòèðóåò<br />

ïîëüçîâàòåëÿ. Õîðîøî, ÷òî<br />

Microsoft íå ñòðîèò àâèàëàéíåðû!<br />

Åñëè áû ìîæíî áûëî ïåðåñåñòü íà HURD! Íî,<br />

óâû, ñîâìåñòèìîñòü íå äàåò. Âöåïèëàñü çóáàìè<br />

è íå ïóñêàåò! Äàëåêî íå êàæäûé ìîæåò áåçáîëåçíåííî<br />

îòêàçàòüñÿ îò ñâîåé ëþáèìîé NT.<br />

Òàê ÷òî íå áóäåì ñåòîâàòü íà íåèçáåæíîñòü<br />

ñóäüáû, à ëó÷øå âîçüìåì â ðóêè àññåìáëåð è<br />

ïîïûòàåìñÿ ÷òî-íèáóäü òàêîå íàïèñàòü. ×òîíèáóäü<br />

òàêîå, ÷òî ðåøèò âñå íàøè ïðîáëåìû<br />

(çàêîïàòü Áèëëà Ãåéòñà íà 640 Êá íèæå àñôàëüòà<br />

— íå ïðåäëàãàòü).<br />

×ÅÌ ÌÛ ÁÓÄÅÌ ÇÀÍÈÌÀÒÜÑß<br />

Àâàðèéíî çàâåðøèòü ðàáîòó ñèñòåìû, âûáðîñèâ<br />

ñèíèé ýêðàí, — ñàìîå ïðîñòîå, ÷òî<br />

òîëüêî ìîæíî ñäåëàòü ïðè êðàõå ñèñòåìû.<br />

Microsoft íåñïðîñòà ïîøëà ïî ïóòè íàèìåíüøåãî<br />

ñîïðîòèâëåíèÿ. Ìû æå ïîêàæåì, êàê<br />

âûéòè èç ãîëóáîãî ýêðàíà â íîðìàëüíûé ðåæèì,<br />

÷òîáû óñïåòü ñîõðàíèòü âñå äàííûå<br />

åùå äî òîãî, êàê ñèñòåìà ðóõíåò îêîí÷àòåëüíî.<br />

Ýòî äîâîëüíî ðèñêîâàííûé òðþê. Â ñëó-<br />

÷àå ïðîâàëà ìû ìîæåì ïîòåðÿòü âñå, äàæå<br />

íàø äèñêîâûé òîì, êîòîðûé ïîòîì ïðèäåòñÿ<br />

î÷åíü äîëãî âîññòàíàâëèâàòü.<br />

Èíîãäà SoftICE îñòàíàâëèâàåòñÿ íå<br />

íà ïåðâîé êîìàíäå îáðàáîò÷èêà<br />

èñêëþ÷åíèé, à íåïîñðåäñòâåííî<br />

íà ìåñòå ñàìîãî ñáîÿ. Ïîä VM Ware<br />

ïåðâûé ðàç SoftICE 2.6 âñåãäà<br />

îñòàíàâëèâàåòñÿ â îáðàáîò÷èêå,<br />

à âî âñåõ ïîñëåäóþùèõ ñëó÷àÿõ —<br />

íà ìåñòå ñáîÿ. Ýôôåêò ñîõðàíÿåòñÿ<br />

âïëîòü äî ïåðåçàïóñêà VM Ware.<br />

114 XÀÊÅÐ 01 /85/ 06

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!