[Archiv bulletinů ^] [< Svazek 1, číslo 1] [Svazek 1, číslo 3 >]
The Systems Internals Newsletter volume 1, Number 2
15. května 1999 – V tomto problému:
CO JE NOVÉHO V INTERNÍCH SYSTÉMECH
- SDelete
- BlueScreen Screen Saver Win2K Update
- "Linux a enterprise"
- "Uvnitř nástrojů NT"
- My May systém Windows NT Magazine Column
- Ne tak nové věci
INTERNÍ ZPRÁVY
- Dr. GUI je Špatné Bedside Manners
- WinDev (ročník '99 East)
- Numega Driver Works vydání při nejbližším vydání
- Beta verze 3 DDK vydaná
- Spinlocky ve frontě Win2K
CO SE CHYSTÁ
- Ochrana systémových souborů Win2K (SFP)
SPONZOR: WINTERNALS SOFTWARE
Bulletin Internals Systems je sponzorován společností Winternals Software na webu na adrese http://www.winternals.com. Winternals Software je přední vývojář a poskytovatel pokročilých systémů nástrojů pro systém Windows NT/2K. Produkty Winternals Software zahrnují FAT32 pro systém Windows NT 4.0, ERD Commander (funkce spouštěcího disku pro systém Windows NT) a NTRecover.
Dobrý den,
Vítejte ve druhém vydání bulletinu Systems Internals. Bulletin má aktuálně 2700 odběratelů, přičemž předplatná jsou stále silná.
Od posledního bulletinu společnost Microsoft oficiálně vydala systém Windows 2000 Beta 3. Číslo buildu jádra Beta 3 je 2031, zatímco počáteční verze jádra NT 4.0 byla 1381 a NT 3.51 měl číslo buildu 1025. . Co najdu liché (a trochu nepříjemné), je, že Microsoft zvýší číslo buildu pokaždé, když dělají úplné sestavení operačního systému (každý pracovní den), ale hlášené číslo buildu jádra odráží, že jeho počáteční veřejná verze. I když je například skutečný počet sestavení jádra AKTUALIZACE SERVICE Pack 5 NT 4.0 mnohem vyšší než 1381, jádro stále hlásí číslo buildu 1381.
Verze Beta 3 systému Windows 2000 je určená jako buzení pro komunitu vývojářů. Společnost Microsoft oznámila, že v říjnu odešle systém Windows 2000 a že Beta 3 představuje kompletní verzi toho, co se bude dodávat, takže vývojáři mohou začít psát nové produkty bez obav, že se věci změní z nich.
Systém Windows 2000 se dodává s novými rozhraními API, vrstvenými službami a vylepšeními jádra. Jednou z změn, která se bude zvlášť zobrazovat vývojářům ovladačů zařízení, je, že se změnila modrá obrazovka smrti (BSOD). V předchozích verzích nt se v BSOD zobrazovaly informace o čase propojení a načtení adres pro všechny ovladače v systému, stejně jako výpis zásobníku, protože existuje v době chybového ukončení. V systému Windows 2000 se zobrazí pouze kód stop a přidružené řádky adres (řádky adres překládají jeden nebo více parametrů stop-code do umístění v ovladačích zařízení) společně s podrobnou zprávou. Zpráva podpory naznačuje, že zkontrolujete nastavení systému BIOS a pevného disku a zakážete defragmentaci softwaru a virových skenerů, abyste se pokusili zabránit opětovnému chybovému ukončení. Služby podpory Microsoft Premier (PSS) se určily na základě jejich zkušeností a zpětné vazby zákazníků, že bsOD ve stylu NT 4 není užitečné pro určení příčiny chybového ukončení.
Osobně jsem našel načtený seznam ovladačů a zejména výpis zásobníku, aby byl užitečný při získávání zpráv o chybách ovladače od uživatelů, je mnohem jednodušší a rychlejší získat tyto informace, než aby uživatelé poslali více megabajt výpisu stavu systému. Často jsem izoloval příčinu chybového ukončení na základě výpisu zásobníku a ověřené verze ovladačů, které uživatelé načetli na základě informací o verzi zobrazených v seznamu ovladačů. Zajímalo by mě, co si myslíte: chcete vidět NT 4-style BSOD přenést do Windows 2000, nebo je nový BSOD formát dostačující? Pokud máte názor, pošlete mi e-mail. Výsledky tohoto neformálního hlasování hlásím v dalším bulletinu. I když jsem na téma BSOD, nezapomeňte si rezervovat Windows 2000 aktualizace ever-popular Systems Internals BlueScreen Screen Saver, která je popsána v tomto problému.
Díky!
-Známka
CO JE NOVÉHO V INTERNÍCH SYSTÉMECH
SDELETE
V rámci systém Windows NT 4.0, které splňují požadavky na hodnocení zabezpečení C2, implementuje "ochranu opakovaného použití objektů". To znamená, že nt nuly soubory a paměťové prostředky aplikace přidělují, když aplikace přistupují k prostředkům poprvé. To zabrání aplikaci například v vytvoření velkého souboru a zkoumání jejího obsahu, abyste viděli, co bylo dříve uloženo na disku. Ochrana proti opakovanému použití objektů však nemá rozsah ochrany prostředků, které jsou přístupné aplikacemi, které obcházejí standardní rozhraní API související s prostředky nebo zcela obcházejí operační systém. K prozkoumání obsahu nepřidělených částí disku můžete například použít editor disku, například DiskProbe sady Resource Kit. Díky tomu můžete zobrazit data, která dříve patřila do odstraněných souborů.
Mnoho prostředí vyžaduje možnost bezpečného odstranění. Tato funkce umožňuje uživatelům trvale odstranit citlivá data, aby je nástroje, které obcházejí zařízení ochrany operačního systému, nezviditelněly. Nástup systému souborů EFS (Encrypting File System) zdůraznil potřebu zabezpečeného zařízení pro odstranění v systému Windows 2000. Když zašifrujete dříve nešifrovaný soubor, systém SOUBORŮ EFS vymaže obsah přidělení disků, které obsahovaly nezašifrovaná data souboru, když uvolní přidělení disků. I když je aktivní verze souboru, který šifrujete, zabezpečená, stará verze souboru stále existuje v nepřidělených částech disku, dokud se nepřepíše novými daty souborů, která ntfs přiřadí k těmto částem.
Abych tuto díru vyplnil, napsal jsem SDelete (Secure Delete). Je to nástroj příkazového řádku, který umožňuje nejen bezpečné odstranění standardních souborů, ale také bezpečné odstranění všech dříve odstraněných dat, která existují v nepřidělených částech disku. Kromě toho funguje s komprimovanými, šifrovanými a řídkými soubory systém Windows NT/2000, něco, co vyžaduje použití defragmentačního rozhraní API. SDelete dodržuje ministerstvo obrany vymazání a sanitizaci standardu DOD 5220.22-M, abyste si mohli být jisti, že jakmile odstraníte data, jejich navždy pryč.
Poskytujem SDelete s úplným zdrojovým kódem a popisem, jak to funguje, abyste viděli, jak využívá defragmentaci rozhraní API, a abyste mohli ověřit moje deklarace identity, že zabrání obnovení citlivých odstraněných dat.
Dokumentaci k rozhraní API pro defragmentaci systém Windows NT/2000 najdete na adrese
BLUESCREEN SCREEN SAVER WIN2K UPDATE
Změny, které Společnost Microsoft udělala na spouštěcí obrazovce NT a blue Screen of Death (BSOD) rozložení v systému Windows 2000 udělala, že systém Internals BlueScreen Screen Saver vyžaduje hlavní aktualizaci. Pokud chcete pokračovat v poskytování co nejvíce v BSOD realismus, vydal jsem verzi 2.0 spořič obrazovky. Odráží nejen změny formátu BSOD, ale také přesně napodobuje úvodní obrazovku systému Windows 2000, která je dokončena s otáčením průběhu pruhu a aktualizacemi indikátoru průběhu. Je to tak skutečné, že spořič obrazovky bude blázen dokonce i Windows 2000 expertní uživatelé a vývojáři. Samozřejmě, pod NT 4.0 BlueScreen Spořič obrazovky stále prezentuje NT 4.0 BSOD a spouštěcí obrazovky.
Jak jsem znovu vytvořit úvodní obrazovku systému Windows 2000 tak dokonale a zároveň neporušovat zákony o autorských právech? Nezahrnuju spouštěcí rastrovou grafiku systému Windows 2000 s šetřičem obrazovky. Místo toho používám DirectX k přepnutí grafického režimu na stejný, který používá systém Windows 2000 během spouštěcí sekvence, a pak odkazuji na rastrové zdroje souboru jádra systému Windows 200, ntoskrnl.exe. Tyto prostředky (můžete je zobrazit otevřením prostředků ntoskrnl.exe v sadě Visual Studio) jsou ty, které jádro zobrazuje, což je změna z Windows 9x způsob, jak dělat věci, kde spouštěcí grafika jsou skutečně samostatné soubory. Nevypadá jako počítače OEM, budou mít možnost přizpůsobit spouštěcí prostředí v systému Windows 2000...
Spořič obrazovky BlueScreen si můžete stáhnout na adrese http://www.sysinternals.com/bluescreen.htm. Pokud máte humorný příběh související s blbnutím někoho s šetřičem obrazovky, projděte si ho spolu.
Další informace o tom, jak a proč BSOD najdete v mém prosinci 1997 systém Windows NT Časopis NT Internals sloupec "Inside the Blue Screen". Odkaz na stránce Systems Internals Publications vás http://www.sysinternals.com/publ.htmpřesoudí na on-line verzi tohoto sloupce. Stránka obsahuje také odkazy na další online prezentace článků a sloupců, které jsem vytvořil(a).
"LINUX A ENTERPRISE"
Obrovská reakce komunity Linuxu na můj článek v dubnovém vydání systém Windows NT Magazine o nedostatků škálovatelnosti jádra Linuxu vyzvala časopis k publikování on-line verze článku před plánem. Odkaz na článek "Linux a Enterprise" najdete v části Články na adrese http://www.sysinternals.com/publ.htm. Tento článek popisuje několik omezení aktuální verze jádra Linuxu (2.2x), včetně nedostatku efektivního mechanismu čekání na události, významné serializace systémového volání, žádné asynchronní vstupně-výstupní operace a špatná implementace souboru sendfile (v NT s názvem TransmitFile) rozhraní API soketu. Kombinace těchto omezení brání Tomu, aby Linux soupeřil mezi hlavními systémy s NT a dalšími UNIXy z hlediska výkonu, a to z hlediska výkonu, na podnikových aplikacích, jako jsou webové servery, databázové servery a e-mailové servery.
"INSIDE NT UTILITIES"
Pokud jste použili Filemon, Regmon nebo HandleEx a chtěli jste se dozvědět více o tom, co vám říkají a jak jsou implementovány, pak vás bude zajímat můj únor systém Windows NT Magazine sloupec "Inside NT Utilities" (Uvnitř nástrojů NT). Tento sloupec popisuje interní informace o těchto nástrojích a pro Regmon a Filemon vás trochu informuje o kódech chyb a typech požadavků, které protokolují při zachytávání aktivit registru nebo systému souborů. Odkaz na on-line verzi tohoto článku, který je právě k dispozici, se nachází na adrese http://www.sysinternals.com/publ.htm.
MY MAY WINDOWS NT MAGAZINE COLUMN
Přemýšleli jste někdy, jak systém Windows NT/2000 uspořádat obsah registru v paměti nebo na disku? Aktuální (květen) vydání systém Windows NT Magazine obsahuje můj sloupec "Uvnitř registru", který vám to a další. Zjistěte například, jak subsystém v režimu jádra Configuration Manageru (subsystém zodpovědný za správu registru) vyhledává klíče, ukládá data hodnot, optimalizuje vyhledávání a chrání integritu souborů na disku registru. systém Windows NT Magazine, http://www.winntmag.comje k dispozici na adrese Borders a Barnes a Nobles.
NE TAK NOVÉ VĚCI
Ne dlouho po vydání systému Windows 2000 Beta 2 jsem vzal sestavení Zaškrtnuté (ladění) souboru bitové kopie jádra (ntoskrnl.exe), provedl vyhledávání řetězců v jádru a přišel se seznamem názvů zdrojových souborů použitých k sestavení jádra. Kontrola sestavení jádra NT/2000 obsahuje řadu příkazů Assert (kontroly konzistence), které obsahují název souboru souboru, ve kterém se nachází Assert. Za předpokladu, že prakticky každý soubor libovolného významu ve zdroji jádra bude mít alespoň jeden Assert, je seznam poměrně komplexní. Výpis seznamu do skriptu v Javě mi dal pěkný Explorer-like treeview struktury adresářové struktury zdrojového stromu Windows 2000. Podívejte se na http://www.sysinternals.com/nt5src.htm.
INTERNÍ ZPRÁVY
DR. GUI JE ŠPATNÉ BEDSIDE MANNERS
V březnu/dubnu vydání zprávy Microsoft Developer Network Dr. GUI pole otázky od čtenáře, který se ptá, jak ovladač může spřažení (vynucení použití konkrétního procesoru) jeho vláken. Grafické uživatelské rozhraní dr. reaguje, že neexistuje způsob, jak určit počet procesorů v systému z ovladače a že vlákno ovladače nemůže zjistit, na jakém procesoru běží. Dr. GUI bohužel tuto diagnózu vyhodila (možná dr. GUI by se měla držet guis).
Jádro NT (ntoskrnl.exe) exportuje proměnnou s názvem KeNumberProcessors, která je definována v NTDDK. H jako:
extern PCCHAR KeNumberProcessors;
Na ovladač se dá přímo odkazovat takto:
CHAR i;
for( i = 0; i < *KeNumberProcessors; i++ ) {
// do processor specific stuff
}
Pokud chcete zjistit, na kterém procesoru běží vlákno ovladače, použijte KeGetCurrentProcessorNumber(), jiný export jádra, který není definován pouze v NTDDK. H, ale ve skutečnosti je dokumentován v DDK!
Dr. GUI předepisuje nesprávné léky na toto onemocnění, takže jsem zdvořile dejte dr. vědět prostřednictvím zdvořilého e-mailu. Dr. GUI překvapivě ani nepotvrdil e-mail. Uvidíme, jestli dobrý Dr. fesses až k chybě v dalším problému...
WINDEV (ROČNÍK '99 VÝCHOD)
Edice East Coast z roku 1999 první konference pro vývojáře windows se rychle blíží. WinDev (ročník '99 East) probíhá 14. června 18 v Bostonu Cambridge Marriot. Řada velkých jmen ve vývoji pro Windows hovoří, včetně Jeffa Richtera, Jeffa Prosise a Don Boxu. Budu tam s Jamie Hanrahanem a Brianem Catlinem ve stopě řidiče zařízení. Moje prezentace zahrnují každodenní kurz na interních systémech NT, stejně jako jeden při psaní ovladačů systému souborů systém Windows NT/2K a jeden v pokročilých problémech s vývojem ovladačů zařízení. Pojďte se pozdravit!
VYDÁNÍ OVLADAČE NUMEGA FUNGUJE PŘI NEJBLIŽŠÍM VYDÁNÍ
Compuware NuMega Labs je na okraji vydání výkonné nové sady Windows 9x/NT/2K ovladače pro ovladače zařízení, DriverStudio. DriverStudio kombinuje všechny existující nástroje ovladače zařízení NuMega, včetně DriverAgent, DriverWorks, SoftICE a VtoolsD a přidá nový BoundsChecker pro ovladače a FieldAgent (pouze systém Windows NT/2K).
Verze ovladače zařízení BoundsChecker poskytuje komplexní monitorování všech rozhraní API jádra, které ovladač používá, a můžete ho použít k monitorování interakcí ovladače s jakýmkoli jiným ovladačem zařízení v systému. FieldAgent umožňuje nasadit verzi ovladače BoundsChecker do klientských systémů, aby klienti mohli shromažďovat trasování za vás, které můžete analyzovat. Připravuje se bezplatná aktualizace pro zákazníky DriverStudio jsou TrueTime pro ovladače a TrueCoverage pro ovladače, nástroje, které umožňují snadno optimalizovat výkon a pokrytí testovat ovladače zařízení.
Tento balíček je ultimate driver development kit, a já heartily doporučuji to (jsem v beta programu). Další informace najdete na adrese http://www.numega.com.
BETA VERZE 3 DDK VYDANÁ
Ve spojení s vydáním systému Windows 2000 Beta 3 společnost Microsoft provedla zdarma ke stažení systém Windows 2000 Beta 3 DDK (Device Driver Kit). DDK si můžete vzít na http://www.microsoft.com/ddk/ddk2kb3.htm. Doufám, že sada SDK bude následovat brzy, protože existuje několik rozhraní API Win32 v beta verzi 3, která nejsou zdokumentovaná od dubnové edice MSDN.
SPINLOCKS VE FRONTĚ WIN2K
Systém Windows 2000 používá pro globální zámky nový typ spinlock označovaný jako "spinlock ve frontě". Globální zámky ve Windows 2000 jsou stejné jako globální zámky pro systém Windows NT 4.0 a zahrnují:
KiDispatcherLock: zámek databáze plánovačeKiContext-SwapLock: zámek pro prohození běhounuMmPfnLock: zámek databáze fyzického rámce stránkyMmSystemSpaceLock: zámek adresního prostoru v režimu jádraCcMasterSpinLock: globální zámek Správce mezipamětiCcVacbSpinLock: zámek mapování pole správce mezipaměti
U jednoprocesorových spinlocků ve frontě fungují přesně stejně jako normální spinlocky. V multiprocesorovém buildu NT se však ve frontě spinlocks výrazně liší. Stejně jako standardní spinlocky jsou ve frontě implementované v hal. Jádro volá funkci KeAcquireQueuedSpinlock HAL, aby získala zámek ve frontě a vyvolá se KeReleaseQueuedSpinlock uvolnění spinlocku ve frontě. KeAcquireSpinlock a KeReleaseSpinlock, funkce HAL, které jádro používá k získání a uvolnění standardních spinlocků, vyžadují adresu zadaného spinlocku jako parametr. Naproti tomu funkce spinlocku ve frontě přebírají číslo indexu globálního spinlocku. Jádro inicializuje globální spinlocks v poli, kde každý spinlock má předdefinované číslo indexu, které jádro používá k identifikaci hal. Proto nelze definovat a používat ovladače zařízení ve frontě, protože neexistuje způsob, jak rozšířit globální pole číselníku ve frontě.
V systému Windows 2000 má každá oblast řízení procesoru (PCR) v protokolu SMP (jeden PCR pro každý procesor) pole s tolika položkami, kolik v něm existuje, protože jsou ve frontě spinlocky. Každá položka pole obsahuje dvě pole: ukazatel na číselník ve frontě, který odpovídá poli (pole "spinlock" ) a "queue" (fronta). V následujícím popisu, když odkazujem na pole číselníku a fronty, mluvím o polích přidružených k položce pole pro spinlock, který je získán nebo uvolněn.
KeAcquireQueuedSpinlock funguje takto: funkce se pokusí získat zámek pomocí instrukce procesoru interlocked-exchange k umístění adresy PCR aktuálního procesoru do spinlocku. Pokud je zámek uložen, funkce má v rámci operace výměny adresu PCR jiného procesoru. Pak se funkce identifikuje jako "čeká" přepnutím nízkého bitu pole spinlock ve svém vlastním PCR. V dalším kroku umístí vlastní adresu PCR do pole fronty PCR, které načetl ze spinlocku. Nakonec počká v zaneprázdněné smyčce, dokud se nízký bit v poli spinlock vypne, jakmile je bit vypnutý, aktuální procesor byl udělen spinlock, a proto se vrátí volajícímu funkce acquire.
Jakmile procesor získal zablokovaný ve frontě a dokončil zpracování, které chtělo provést při držení zámku, volá KeReleaseQueuedSpinlock. KeReleaseQueuedSpinlock Vyhledá pole fronty pro zadaný spinlock v pcR aktuálního procesoru. Pokud je pole fronty nenulové, pak tam jiný procesor "zařadí" do fronty svůj PCR. KeReleaseQueuedSpinlock vymaže nízkou část pole spinlock pro čekající PCR a pak vymaže vlastní pole fronty a vrátí. Vymazáním nízkého bitu v poli pro spinlock čekajícího PCR, který právě signalizoval další procesor v řádku, že může mít zámek. Pokud pole fronty bylo nula, pak na zámek nečeká žádný jiný procesor a KeReleaseQueuedSpinlock jednoduše provede operaci vzájemné výměny, která vymaže globální spinlock.
Operace spinlocků ve frontě je jedna, kde procesory "line up" čekají na spinlock, který se drží. Každý procesor se zařadí do fronty tím, že před ním řekne, že čeká. To poskytuje deterministické pořadí získání procesorů spinlock ve frontě získat spinlock v pořadí, v jakém ho požadují. Pro standardní spinlocky neexistuje takové řazení. Zámek ve frontě má ještě větší výhodu. Vzhledem k tomu, že procesor rotuje a čeká na jeho pole spinlock, aby bylo málo bitů vymazáno, rotuje se v privátní paměti na vlastní procesor. Když procesor zaneprázdněný počká na standardní spinlock, otočí se na globální spinlock sám, který sdílí všechny procesory. Proto mají spinlocky ve frontě lepší vlastnosti sběrnice s víceprocesorem, protože během čekání na zaneprázdnění neexistuje žádný sdílený přístup na řádek mezipaměti. Vzhledem k povaze zařaděných číselných zámků do fronty navíc obvykle dochází k menšímu počtu operací uzamčení sběrnice než u standardních číselných zámků, pokud je zámek pod kolizí z několika procesorů.
Zablokování ve frontě je jedním z několika vylepšení, které společnost Microsoft provedla víceprocesingové škálovatelnosti systému Windows 2000.
CO SE CHYSTÁ
Systém Windows 2000 obsahuje celou řadu funkcí, díky kterým je odolnější vůči chybám operátorů a chybným aplikacím. Jedním z nich je, že mnoho knihoven DLL a ovladačů v rámci %systemroot%\system32 adresáře a %systemroot%\system32\drivers adresář jsou chráněny sledovacímogem označovaným jako Ochrana systémových souborů (SFP). Jeho existenci můžete ověřit tak, že přejdete do daného system32 adresáře a přejmenujete ntoskrnl.exe. Watchdog se probudí a upozorní vás, že zjistil manipulaci s chráněným systémovým souborem a opravuje ho. Pokud znovu zkontrolujete adresář, najdete ntoskrnl.exe ho magicky. Příště ti řeknu, jak to funguje.
Děkujeme vám za přečtení bulletinu Internals Systems.
Publikováno v sobotu 15. května 1999 15:15 od ottoh
[Archiv bulletinů ^] [< Svazek 1, číslo 1] [Svazek 1, číslo 3 >]