Bagaimana sistem operasi berbasis Windows NT menangani perangkat?

9

Saya bingung dengan notasi seperti

multi (0) disk (0) rdisk (0) partisi (1) \ ...

dan

\ Perangkat \ HardDisk1 \ DR1
\ Perangkat \ Video0

Saya melihat alamat ini hanya dalam konteks sistem operasi berbasis Windows NT seperti Windows XP dan Windows 7. Apa maksud dari alamat ini dan bagaimana mereka digunakan untuk merujuk ke perangkat seperti hard disk, adapter grafis, perangkat antarmuka manusia (keyboard) , mouse, dll.), adapter jaringan, dan perangkat keras lainnya?

bwDraco
sumber
Di mana dan bagaimana Anda berencana merujuk mereka?
KCotreau
Terkadang, saya mendapatkan pesan yang merujuk ke perangkat yang menggunakan nama-nama ini. Yang ingin saya pahami adalah apa arti alamat-alamat ini, bagaimana perangkat lain ditangani menggunakan notasi ini, dan bagaimana ini dapat digunakan oleh aplikasi untuk mengakses perangkat keras secara langsung (jika mungkin).
bwDraco
Linux menggunakan /devnode untuk memungkinkan akses langsung ke perangkat keras. Yang ingin saya pahami adalah mekanisme yang mirip dengan alamat dan akses perangkat keras di Windows.
bwDraco
Sejak Windows NT, sejauh yang saya ketahui, Windows tidak memungkinkan Anda mengakses perangkat keras secara langsung. Begitulah cara melindungi dirinya. Dengan Windows 95/98 / ME, programmer mana pun bisa, dan itu memungkinkan mereka untuk membuat OS tidak stabil. Solusinya adalah membuat semuanya melalui kernel, dan biarkan ia memutuskan apakah aman untuk dijalankan. Jika tidak, ini bisa menimbulkan kesalahan, tapi lindungi dirinya dari pemrograman yang buruk ... setidaknya sampai tingkat yang lebih besar.
KCotreau
@KCotreau: Itu benar, tetapi tidak relevan. Anda sekarang harus menanyakan kernel. Tetapi jika harddisk tidak memiliki nama seperti ini, Anda tidak bisa meminta kernel sama sekali. Tidak akan tahu harddisk mana yang sedang Anda bicarakan.
MSalters

Jawaban:

9

Berlawanan dengan kepercayaan umum, kernel Windows memang memiliki sistem file yang di-root ("file"). Di * nix, root adalah /, dan di Windows itu \. Subsistem Win32 tidak memaparkannya. Anda dapat menjelajahinya dengan WinObj .

Beberapa nama perangkat NT (mungkin akrab) ( Mdan Nhanya bilangan bulat):

  • \Device\HarddiskM\DRN: Disk
  • \Device\HarddiskVolumeN: Partisi
  • \Device\CdRomN: Drive disk optik
  • \Device\KeyboardClassN: Keyboard
  • \Device\MountPointManager: Bukan perangkat, tetapi melacak perangkat penyimpanan
  • \Device\Null: Memakan data dan menghasilkan nol (nol)

\Device\HardDisk1\DR1adalah nama sebenarnya dari disk untuk Windows , dan multi(0)disk(0)rdisk(0)partition(1)merupakan warisan - tidak ada hubungannya dengan bagaimana Windows merujuk ke perangkat, tetapi bagaimana boot loader merujuk ke disk. Cara kerjanya, saya tidak tahu ( halaman ini menjelaskan bagian-bagiannya ), tapi itu bukan sesuatu yang menjadi perhatian Windows setelah mulai booting.

Versi Windows yang lebih baru menggunakan Boot Configuration Data (BCD), yang merupakan file bernama BCDformat yang seperti itu dari registri, bukan Boot.ini. Biasanya menggunakan pengidentifikasi unik (GUID) untuk merujuk ke volume alih-alih huruf drive atau jalur sistem file, dan itulah yang digunakan versi Windows yang lebih baru.

pengguna541686
sumber
Bagaimana dengan perangkat keras selain perangkat penyimpanan (seperti \Device\Video0)?
bwDraco
@DragonLord: ... bagaimana dengan itu? Tidak yakin apa yang kamu maksud.
user541686
Nama apa yang digunakan untuk merujuk pada keyboard, mouse, adapter jaringan, dan perangkat lain?
bwDraco
@DragonLord: Poin bagus, saya akan menambahkannya. Saya hanya fokus pada boot loading, tidak melihat pertanyaannya lebih umum.
user541686
"Sistem file yang di-rooting" yang Anda sebutkan disebut namespace Object Manager . Saya menemukan ini setelah mengklik melalui tautan WinObj dan melakukan penelitian. Cukup menarik bagaimana Windows NT bekerja di dalam ...
bwDraco
1

Baris pertama, yang telah dianggap usang oleh BCD (Boot Configuration Data store) di Windows Vista, Windows 7, dan Server 2008, berasal dari file boot.ini untuk Windows XP atau Server 2003, dan terletak di direktori root drive sistem. Itu memberitahu Windows ke mana harus pergi (apa disk dan partisi) untuk menemukan file sistem yang perlu di-boot.

Lihat di sini untuk penjelasan terperinci "multi" dan "rdisk". Sisanya berarti melihat disk 0 (mulai 0 dan naik dari sana, dan Anda dapat melihat nomornya di pengelola disk), partisi 1 (tidak seperti disk, ini mulai diberi nomor 1 dan naik).

http://support.microsoft.com/kb/102873

Sejauh penghitungan perangkat berjalan, itu adalah topik pemrograman yang sangat rumit, yang dijelaskan di sini jika Anda ingin kepala Anda meledak. Format yang Anda berikan adalah bagaimana perangkat dialamatkan sebagai ID perangkat keras dalam registri.

Secara praktis, Anda dapat melihat kunci registri ini

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

untuk mencocokkan kesalahan apa pun, Anda mungkin mendapatkan nilai "ID perangkat keras" di salah satu sub kunci untuk menentukan dengan tepat perangkat apa yang dirujuk kesalahan.

KCotreau
sumber
1
Bagian 4.2.7 dari Spesifikasi Komputasi RISC Tingkat Lanjut , diterbitkan ulang di sini oleh NetBSD Foundation , menceritakan satu hal tentang jalur ARC.
JdeBP