Catatan perakitan Windows 32 (1): pengetahuan dasar
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1. Mode kerja prosesor 80x86
1.1 Modus nyata
Ikhtisar mode nyata
Mode Nyata adalah mode kerja paling awal yang didukung oleh prosesor 80x86 dan juga merupakan mode kerja paling dasar. Mode nyata terutama digunakan pada sistem operasi MS-DOS awal dan lingkungan operasi sederhana lainnya. Dalam mode nyata, prosesor memiliki akses langsung ke ruang memori fisik sebesar 1MB. Mode ini sepenuhnya kompatibel dengan cara kerja prosesor 8086, oleh karena itu dinamakan "mode nyata".
Fitur mode nyata
-
Mengatasi keterbatasan ruang
- Dalam mode nyata, prosesor hanya dapat mengakses ruang memori 1MB (dari 0x00000 hingga 0xFFFFF).
- Ruang memori dibatasi oleh bus alamat 20-bit.
-
Alamat segmen dan alamat offset
- Mode nyata menggunakan metode segmen: offset (segmen) untuk pengalamatan memori.
- Alamat segmen dikalikan dengan 16 (yaitu, digeser ke kiri sebanyak 4 bit) dan ditambahkan ke alamat offset untuk membentuk alamat fisik 20-bit.
- Misalnya, jika alamat segmen adalah 0x1234 dan alamat offset adalah 0x5678, maka alamat fisiknya adalah: Alamat fisik = (0x1234×16) + 0x5678 = 0x12340 + 0x5678 = 0x179B8text{alamat fisik} = (0x1234 dikali 16) + 0x5678 = 0x12340 + 0x5678 = 0x179B8 alamat fisik=(0x1234×16)+0x5678=0x12340+0x5678=0x179B8
-
Tidak ada perlindungan memori
- Mode nyata tidak memiliki mekanisme perlindungan memori, dan program dapat secara sewenang-wenang mengakses seluruh ruang memori 1MB, termasuk area sistem operasi dan area program lain.
- Hal ini memungkinkan program untuk saling mengganggu dan dengan mudah menyebabkan sistem crash.
-
akses perangkat keras langsung
- Mode nyata memungkinkan akses langsung ke perangkat keras dan port I/O.
- Dalam mode nyata, program dapat berinteraksi dengan perangkat keras secara langsung menggunakan instruksi I/O seperti IN dan OUT.
-
Interupsi dan inisialisasi prosesor
- Mode nyata mendukung interupsi perangkat keras dan interupsi perangkat lunak, yang dikelola menggunakan Interrupt Vector Table (IVT).
- Tabel vektor interupsi disimpan di area memori terendah 1KB (dari 0x00000 hingga 0x003FF).
- Setelah prosesor dihidupkan atau direset, maka secara otomatis akan masuk ke mode nyata dan mulai mengeksekusi kode dari alamat 0xFFFF0.
-
Batasan pada kode yang dapat dieksekusi
- Ukuran segmen kode yang dapat dieksekusi dalam mode nyata terbatas, biasanya segmen kode berukuran hingga 64KB (0x0000 hingga 0xFFFF).
Tata letak memori mode nyata
Dalam mode nyata, tata letak memori biasanya mencakup bagian-bagian berikut:
-
wilayah BIOS
- Memori kelas atas (dari 0xF0000 hingga 0xFFFFF) biasanya digunakan untuk menyimpan kode dan data BIOS.
- Saat dinyalakan atau disetel ulang, prosesor mulai mengeksekusi kode BIOS pada 0xFFFF0.
-
Tabel vektor interupsi
- Area memori terendah 1KB (dari 0x00000 hingga 0x003FF) menyimpan tabel vektor interupsi.
- Setiap vektor interupsi menempati 4 byte (alamat segmen 2 byte dan alamat offset 2 byte).
-
Sistem operasi dan aplikasi
- Area memori yang tersisa digunakan untuk kode sistem operasi, kode aplikasi, dan data.
1.2 Modus perlindungan
Ringkasan
Mode Terproteksi adalah mode kerja tingkat lanjut yang diperkenalkan oleh prosesor 80x86. Dibandingkan dengan mode sebenarnya, mode ini memberikan fungsi manajemen dan perlindungan memori yang lebih kuat. Mode terlindung pertama kali diperkenalkan pada prosesor 80286 dan telah diperluas dan ditingkatkan lebih lanjut pada prosesor 80386 dan yang lebih baru.
Fitur mode terlindungi
-
Ruang alamat memori yang diperluas
- Mode terproteksi mendukung bus alamat 24-bit atau 32-bit dan dapat mengakses ruang memori fisik sebesar 4 GB (pada 80386 dan lebih baru).
- Pemilih segmen dan deskriptor segmen digunakan untuk manajemen memori, memungkinkan tata letak dan manajemen memori yang lebih kompleks.
-
perlindungan memori
- Melalui deskriptor segmen dan tabel halaman, mode terlindung dapat menerapkan perlindungan memori untuk mencegah program mengakses memori program atau sistem operasi lain secara ilegal.
- Mendukung segmen kode dan data dengan tingkat hak istimewa yang berbeda (level 0 hingga level 3) untuk mencapai isolasi antara mode pengguna dan mode kernel.
-
Mekanisme halaman
- Mendukung mekanisme paging dan memetakan alamat virtual ke alamat fisik melalui tabel halaman untuk lebih meningkatkan kemampuan manajemen memori.
- Ukuran halaman biasanya 4KB, namun halaman besar (misalnya 4MB) juga didukung.
-
Multitasking yang didukung perangkat keras
- Menyediakan peralihan multi-tugas yang didukung perangkat keras, termasuk Task State Segment (TSS) dan Task Register (Task Register).
- Mendukung gerbang tugas untuk peralihan dan perlindungan antar tugas.
-
Penanganan interupsi dan pengecualian yang ditingkatkan
- Dalam mode terproteksi, Interrupt Descriptor Table (IDT) digunakan untuk mengelola interupsi dan penanganan pengecualian.
- IDT mendukung deskriptor gerbang (Gate Descriptor), termasuk gerbang interupsi, gerbang jebakan, dan gerbang tugas.
-
Memori Maya
- Mendukung memori virtual dan mengimplementasikan ruang alamat virtual melalui mekanisme paging, memungkinkan program menggunakan ruang alamat yang lebih besar daripada memori fisik sebenarnya.
Manajemen memori mode terproteksi
-
Pemilih segmen dan deskriptor segmen
- Setiap pemilih segmen menunjuk ke deskriptor segmen, yang berisi alamat dasar segmen, batas segmen, dan atribut segmen (seperti izin dan jenis).
- Pemilih segmen dan deskriptor segmen dikelola oleh Tabel Deskriptor Global (GDT) dan Tabel Deskriptor Lokal (LDT).
-
Mekanisme halaman
- Mekanisme paging membagi alamat virtual menjadi direktori halaman (Page Directory), tabel halaman (Page Table) dan bingkai halaman (Page Frame).
- Melalui direktori halaman dan tabel halaman, alamat virtual dipetakan ke alamat fisik untuk mencapai perlindungan dan manajemen memori.
Aplikasi mode terlindungi
Mode terproteksi banyak digunakan dalam sistem operasi modern, seperti Windows, Linux, Unix, dll. Mereka menggunakan karakteristik mode terproteksi untuk mengimplementasikan fungsi-fungsi lanjutan seperti multi-tasking, multi-pengguna, dan perlindungan memori. Melalui mode terlindungi, sistem operasi dapat mengelola sumber daya perangkat keras secara efektif dan menyediakan lingkungan pengoperasian yang stabil dan aman.
Mode terlindung adalah fondasi sistem operasi dan aplikasi modern, memanfaatkan sepenuhnya fitur-fitur canggih prosesor 80x86 untuk meningkatkan stabilitas dan keamanan sistem.
1.3 Modus maya 8086
Ikhtisar Mode Virtual 8086
Mode Virtual 8086 (Mode Virtual 8086) adalah mode khusus yang disediakan oleh prosesor 80x86 dalam mode terlindung, memungkinkan prosesor menjalankan program 8086 seolah-olah dijalankan dalam mode nyata. Mode ini terutama digunakan untuk kompatibilitas mundur, memungkinkan program DOS versi lama berjalan di sistem operasi modern seperti Windows dan Linux tanpa meninggalkan mode terproteksi.
Fitur mode virtual 8086
-
Kompatibilitas mode nyata
- Mode virtual 8086 memungkinkan prosesor untuk mensimulasikan lingkungan operasi dalam mode nyata dan mendukung set instruksi dan ruang alamat 8086.
- Prosesor dapat menjalankan program 8086 dalam mode terproteksi sambil tetap mempertahankan fitur dan manfaat mode terproteksi.
-
Mekanisme paging dan perlindungan
- Dalam mode virtual 8086, prosesor masih dapat menggunakan mekanisme paging mode terlindung untuk menerapkan memori virtual dan perlindungan memori.
- Melalui tabel halaman, ruang alamat dalam mode virtual 8086 dapat dipetakan ke memori fisik, memberikan isolasi dan perlindungan memori.
-
Penanganan interupsi dan pengecualian
- Mode Virtual 8086 mendukung penanganan interupsi dan pengecualian, yang dapat dikelola melalui tabel deskriptor interupsi mode terproteksi (IDT).
- Interupsi dan pengecualian dapat ditangani oleh monitor virtual 8086 (biasanya kernel sistem operasi), memastikan stabilitas dan keamanan sistem.
-
Dukungan virtualisasi perangkat keras
- Beberapa prosesor modern menyediakan teknologi virtualisasi yang didukung perangkat keras yang dapat mengimplementasikan mode virtual 8086 dengan lebih efisien.
- Misalnya, teknologi Intel VT-x dan AMD AMD-V dapat memberikan dukungan virtualisasi yang dipercepat perangkat keras dan meningkatkan kinerja.
Manajemen memori dalam mode virtual 8086
-
Segmen: pengalamatan offset
- Pada mode virtual 8086, metode pengalamatan memori sama dengan mode nyata, menggunakan mode segmen: offset (segmen).
- Alamat segmen dan alamat offset bersama-sama membentuk alamat fisik 20-bit, yang dapat mengakses ruang memori hingga 1MB.
-
Mekanisme halaman
- Mode virtual 8086 mendukung mekanisme paging, yang dapat memetakan alamat mode nyata 20-bit ke ruang alamat virtual dalam mode terlindungi.
- Melalui tabel halaman, perlindungan dan isolasi memori dapat dicapai untuk mencegah program dalam mode virtual 8086 mengakses area memori lain secara ilegal.
Penerapan mode virtual 8086
-
Jalankan program DOS lama
- Mode Virtual 8086 terutama digunakan untuk menjalankan program dan aplikasi DOS versi lama, sehingga memberikan kompatibilitas ke belakang.
- Dalam sistem operasi modern, mode virtual 8086 memungkinkan Anda menjalankan beberapa program lama yang harus dijalankan dalam mode nyata.
-
Mesin virtual dan emulator
- Beberapa mesin virtual dan emulator menggunakan mode virtual 8086 untuk mendukung sistem operasi dan perangkat lunak lama.
- Misalnya, emulator seperti DOSBox mensimulasikan lingkungan DOS melalui mode virtual 8086, memungkinkan pengguna menjalankan game dan aplikasi DOS klasik.
Keterbatasan mode virtual 8086
-
ruang alamat memori
- Dalam mode virtual 8086, program hanya dapat mengakses 1MB ruang alamat memori, yang dibatasi oleh mode nyata.
-
Overhead kinerja
- Penerapan mode virtual 8086 memerlukan dukungan mode terlindungi, yang dapat menyebabkan overhead kinerja tertentu.
- Penanganan interupsi dan pengecualian memerlukan intervensi monitor virtual 8086 (kernel sistem operasi), yang meningkatkan kompleksitas pemrosesan.
-
Keterbatasan perangkat keras
- Tidak semua perangkat keras sepenuhnya mendukung mode virtual 8086, dan beberapa fitur perangkat keras mungkin tidak tersedia dalam mode virtual 8086.
Meringkaskan
Mode Virtual 8086 adalah mode khusus yang disediakan oleh prosesor 80x86 dalam mode terproteksi, terutama untuk kompatibilitas dengan versi program DOS yang lebih lama. Mode virtual 8086 memungkinkan prosesor untuk mensimulasikan lingkungan operasi mode nyata dalam mode terproteksi sambil tetap mempertahankan fitur dan keunggulan mode terproteksi. Mode ini banyak digunakan untuk menjalankan perangkat lunak lama, mesin virtual, dan emulator.
2. Manajemen memori Windows
2.1 Pengaturan memori sistem operasi DOS
Manajemen memori sistem operasi DOS (Disk Operating System) terutama didasarkan pada model memori mode nyata dari prosesor 8086/8088. Ruang alamat memori dalam mode nyata adalah 1MB, dari 0x00000 hingga 0xFFFFF. Ruang alamat 1MB ini dibagi menjadi beberapa area besar, masing-masing dengan tujuan tertentu. Berikut ini adalah pengenalan rinci tentang susunan memori sistem operasi DOS.
model memori mode nyata
Dalam Mode Nyata, alamat memori diakses dengan menggabungkan alamat segmen dan alamat offset menjadi alamat fisik 20-bit. Alamat segmen digeser ke kiri sebanyak 4 bit dan alamat offset ditambahkan untuk membentuk alamat fisik sebenarnya.
tata letak memori
Tata letak ruang memori 1MB dalam mode real kira-kira sebagai berikut:
-
Tabel vektor interupsi (IVT): 0x00000 - 0x003FF
- Menempati 1KB (256 vektor, masing-masing 4 byte).
- Simpan alamat entri dan informasi terkait dari rutinitas layanan interupsi.
-
Area Data BIOS (BDA): 0x00400 - 0x004FF
- Sekitar 256 byte.
- Menyimpan parameter sistem dan perangkat keras, seperti informasi hard disk, port serial, port paralel, dll.
-
Memori lama (memori konvensional): 0x00500 - 0x9FFFF
- 640KB, terutama digunakan untuk sistem operasi DOS, aplikasi DOS, dan program memori tetap (TSR).
- Dapat digunakan sebagai kode program, data, stack, dll.
-
Penyangga tampilan: 0xA0000 - 0xBFFFF
- Area memori yang digunakan oleh adaptor layar.
- 0xA0000 - 0xAFFFF: 64KB, biasanya digunakan dalam mode grafis kartu grafis EGA/VGA.
- 0xB0000 - 0xB7FFF: 32KB, biasanya digunakan untuk adaptor tampilan monokrom (MDA).
- 0xB8000 - 0xBFFFF: 32KB, biasanya digunakan untuk tampilan teks berwarna (mode teks CGA, EGA, VGA).
-
Area Data BIOS yang Diperluas (EBDA): 0xC0000 - 0xC7FFF
- Sekitar 32KB, yang menyimpan beberapa data BIOS tambahan dan kode BIOS adaptor.
-
Area ekstensi BIOS: 0xC8000 - 0xEFFFF
- Terutama digunakan untuk BIOS dan driver kartu ekspansi (seperti adaptor jaringan, pengontrol SCSI, dll.).
-
BIOS Sistem: 0xF0000 - 0xFFFFF
- 64KB, menyimpan kode BIOS sistem.
- Menyediakan inisialisasi sistem dasar, rutinitas layanan interupsi, kontrol perangkat keras, dan fungsi lainnya.
2.2 Mekanisme pengalamatan memori 80386
Prosesor Intel 80386 memperkenalkan mekanisme pengalamatan memori yang lebih canggih, memberikan kemampuan manajemen dan perlindungan memori yang lebih kuat dibandingkan pendahulunya. 80386 mendukung dua mode pengalamatan memori utama:modus nyataDanmode terlindungi . Dalam mode terproteksi, mekanisme paging juga diperkenalkan untuk lebih meningkatkan kemampuan manajemen memori. Berikut ini adalah pengenalan rinci:
1. Modus nyata
Dalam mode nyata, prosesor 80386 memiliki metode pengalamatan memori yang sama dengan 8086/8088. Prosesor ini menggunakan bus alamat 20-bit dan dapat mengakses ruang memori sebesar 1MB. Alamat dihitung dari alamat segmen dan alamat offset:
- alamat segmen: Bergeser ke kiri sebanyak 4 bit.
- alamat offset: Ditambahkan pada hasil shift kiri alamat segmen, diperoleh alamat fisik 20 bit.
物理地址 = (段地址 << 4) + 偏移地址
2. Modus terproteksi
Mode terproteksi adalah mode kerja utama prosesor 80386, yang memberikan perlindungan memori dan fungsi manajemen yang ditingkatkan. Pengalamatan memori dalam mode terproteksi melibatkan dua lapisan mekanisme:mekanisme segmentasiDanMekanisme halaman。
2.1 Mekanisme segmentasi
Dalam mode terlindungi, prosesor 80386 menggunakan pemilih segmen dan deskriptor segmen untuk mengelola segmen. Deskriptor segmen disimpan dalam tabel deskriptor global (GDT) atau tabel deskriptor lokal (LDT).
-
pemilih segmen: 16 bit, termasuk tiga bidang:
- indeks: 13 bit, menentukan posisi deskriptor segmen dalam GDT atau LDT.
- TI (Indikator Tabel): 1 bit, menunjukkan apakah akan menggunakan GDT (0) atau LDT (1).
- RPL (Tingkat Hak Istimewa yang Diminta): 2 bit, menentukan tingkat hak istimewa yang diminta.
-
deskriptor segmen: 8 byte, termasuk bidang berikut:
- Alamat Dasar: 32 bit, alamat awal segmen.
- Batas segmen (Limit): 20 bit, ukuran segmen.
- Hak akses dan properti: 12 bit, menjelaskan tipe segmen, tingkat hak istimewa, dll.
Perhitungan alamat linier berdasarkan mekanisme segmentasi adalah sebagai berikut:
线性地址 = 段基址 + 偏移地址
2.2 Mekanisme paging
Mekanisme paging adalah metode manajemen memori lain yang disediakan oleh prosesor 80386 dalam mode terlindungi. Mekanisme ini mewujudkan virtualisasi dan perlindungan memori dengan mengubah alamat linier menjadi alamat fisik. Mekanisme paging melibatkan direktori halaman, tabel halaman, dan bingkai halaman.
- direktori halaman: Berisi entri direktori halaman (PDE), setiap PDE menunjuk ke tabel halaman.
- tabel halaman: Berisi entri tabel halaman (PTE), setiap PTE menunjuk ke bingkai halaman.
- bingkai halaman: Blok memori fisik sebenarnya, biasanya 4KB.
Terjemahan alamat mekanisme paging adalah sebagai berikut:
- Alamat linier dibagi menjadi tiga bagian: direktori, tabel, dan offset intra-halaman.
- Bagian direktori mengindeks direktori halaman untuk menemukan PDE yang sesuai.
- Bagian tabel mengindeks tabel halaman untuk menemukan PTE yang sesuai.
- Offset intra-halaman ditambahkan ke alamat dasar bingkai halaman untuk mendapatkan alamat fisik.
物理地址 = 页帧基址 + 页内偏移
Diagram skema mekanisme paging:
+----------------+----------------+----------------+
| 页目录(10位) | 页表(10位) | 页内偏移(12位)|
+----------------+----------------+----------------+
3. 80386 Unit Manajemen Memori (MMU)
MMU (Memory Management Unit) 80386 bertanggung jawab untuk segmentasi dan terjemahan alamat paging, dan menerapkan perlindungan memori.
-
Daftar CR0: Kontrol register untuk mengaktifkan/menonaktifkan mode terproteksi dan paging.
- Bit PE (Perlindungan Aktif): Mengaktifkan mode terproteksi.
- Bit PG (Paging Aktif): Aktifkan paging.
-
Daftar CR3: Alamat dasar direktori halaman penyimpanan.
-
Daftar CR2: Menyimpan alamat linier dari kesalahan halaman terakhir.
4. Mekanisme proteksi
Dalam mode terproteksi, prosesor 80386 menyediakan berbagai mekanisme perlindungan untuk menjamin keamanan memori dan sistem:
- Tingkat Hak Istimewa : Dari 0 hingga 3, total ada empat level, dengan level 0 adalah yang tertinggi. Kontrol akses ke kode dan data.
- perlindungan segmen: Menerapkan pemeriksaan batas segmen dan kontrol akses melalui bidang atribut di deskriptor segmen.
- perlindungan halaman: Melalui bidang atribut di PTE, kontrol izin baca, tulis, dan eksekusi halaman diwujudkan.
2.3 Pengaturan memori Windows
1. Memori maya
Sistem operasi Windows menggunakan manajemen memori virtual, yang menggabungkan memori fisik (RAM) dan file memori virtual (file halaman) pada hard disk untuk menyediakan ruang alamat virtual independen untuk setiap proses. Setiap proses biasanya memiliki ruang alamat virtual sebesar 4GB (sistem 32-bit), dimana 2GB digunakan oleh program mode pengguna dan 2GB digunakan oleh mode kernel. Sistem 64-bit memiliki ruang alamat virtual yang lebih besar.
2. Tata letak ruang alamat virtual
Ruang alamat virtual dibagi menjadi wilayah mode pengguna dan mode kernel:
ruang alamat mode pengguna
- 0x00000000 - 0x7FFFFFFF: Ruang alamat mode pengguna, untuk digunakan oleh aplikasi.
- Tumpukan: Area alokasi memori dinamis, aplikasi mengalokasikan dan melepaskan memori saat runtime.
- Tumpukan: Setiap thread memiliki tumpukannya sendiri untuk pemanggilan fungsi dan variabel lokal.
- Berbagi memori: Segmen data yang dibagikan antar proses yang berbeda.
ruang alamat mode kernel
- 0x80000000 - 0xFFFFFFFF: Ruang alamat mode kernel, yang digunakan oleh kernel dan driver sistem operasi.
- Kode dan data kernel: Kode dan data global kernel sistem operasi.
- Tembolok sistem: Digunakan untuk caching sistem file untuk meningkatkan kinerja akses file.
- driver perangkat: Kode dan data pengemudi.
3. Halaman memori
Windows menggunakan mekanisme paging untuk mengelola memori dan mengubah alamat virtual menjadi alamat fisik. Unit dasar paging adalah sebuah halaman, biasanya 4KB.
Struktur tabel halaman
- Direktori Halaman: Berisi entri direktori halaman (PDE), menunjuk ke tabel halaman.
- Tabel Halaman: Berisi entri tabel halaman (PTE) yang menunjuk ke halaman memori fisik sebenarnya.
4. Unit Manajemen Memori (MMU)
Unit manajemen memori (MMU) prosesor bertanggung jawab untuk mengubah alamat virtual menjadi alamat fisik, melakukan penggantian halaman, dan perlindungan memori. Sistem operasi Windows mengimplementasikan fungsi-fungsi berikut melalui MMU:
- terjemahan alamat: Memetakan alamat virtual ke alamat fisik.
- perlindungan memori: Mengontrol izin akses halaman (baca, tulis, jalankan).
- Penggantian halaman: Tukar halaman yang jarang digunakan ke file halaman hard disk untuk mengosongkan memori fisik.
5. Perlindungan memori
Sistem operasi Windows melindungi memori melalui mekanisme berikut:
- Tingkat hak istimewa: Pastikan program mode pengguna tidak dapat mengakses memori mode kernel secara langsung.
- Izin halaman: Mengontrol jenis akses (baca, tulis, jalankan) setiap halaman.
- Kontrol akses: Kernel sistem operasi menetapkan izin akses untuk mencegah akses memori yang tidak sah.
6. Alokasi memori
Windows menggunakan beberapa strategi dan struktur data untuk alokasi memori:
- pengalokasi halaman: Kelola alokasi paging dan pelepasan memori virtual.
- Manajer tumpukan: Menyediakan alokasi dan dealokasi memori yang efisien untuk aplikasi.
- pengalokasi memori kernel: Mengelola memori mode kernel, termasuk pengalokasi kumpulan dan kumpulan non-halaman.
7. API manajemen memori
Windows menyediakan serangkaian API manajemen memori untuk digunakan oleh aplikasi dan sistem:
- VirtualAlloc/VirtualFree: Mengalokasikan dan melepaskan memori virtual.
- HeapAlloc/Bebas Heap: Mengalokasikan dan mengosongkan memori di heap.
- GlobalAlloc/GlobalGratis: Mengalokasikan dan mengosongkan blok memori global.
- Alokasi Lokal/Bebas Lokal: Mengalokasikan dan mengosongkan blok memori lokal.
8. Berkas halaman
Windows menggunakan file halaman (Pagefile.sys) sebagai bagian dari memori virtual. Ketika memori fisik tidak mencukupi, halaman yang jarang digunakan akan ditukar ke file halaman. Lokasi dan ukuran file halaman dapat dikonfigurasi oleh pengguna.
3. Perlindungan hak istimewa Windows
3.1 80386 interupsi dan pengecualian
1. Klasifikasi interupsi dan pengecualian
Interupsi dan pengecualian dapat dibagi ke dalam kategori berikut:
- Interupsi Perangkat Keras: Dikirim melalui perangkat eksternal, seperti keyboard, mouse, hard disk, dll.
- Interupsi Perangkat Lunak: Dilalui oleh perangkat lunak
INT
Perintah itu terpicu. - Pengecualian: Dipicu oleh kesalahan atau kondisi khusus yang terdeteksi oleh prosesor, seperti kesalahan pembagian dengan nol, kesalahan halaman, dll.
2. Tabel Vektor Interupsi (IVT)
Prosesor 80386 menggunakan tabel vektor interupsi untuk mengelola interupsi dan pengecualian. IVT adalah tabel yang terdiri dari 256 entri, masing-masing menempati 4 byte, menyimpan alamat pengendali interupsi atau pengecualian. Alamat dasar IVT disimpan dalam IDTR (Interrupt Descriptor Table Register).
3. Tabel Deskriptor Interupsi (IDT)
Dalam mode terlindungi, prosesor 80386 menggunakan tabel deskriptor interupsi (IDT) untuk menyimpan penangan interupsi dan pengecualian. IDT berisi deskriptor gerbang interupsi, gerbang jebakan, dan gerbang tugas, masing-masing deskriptor menempati 8 byte.
- Gerbang Interupsi: Digunakan untuk interupsi perangkat keras dan perangkat lunak, secara otomatis menghapus IF (bendera interupsi).
- Gerbang Perangkap: Digunakan untuk penanganan pengecualian, JIKA tidak dihapus.
- Gerbang Tugas: Digunakan untuk berpindah tugas.
Alamat dasar dan batas IDT disimpan di IDTR.
4. Mengganggu aliran pemrosesan
Ketika terjadi interupsi atau pengecualian, prosesor 80386 melakukan langkah-langkah berikut:
- simpan konteks: Simpan CS (Code Segment Register), EIP (Instruction Pointer Register) dan EFLAGS (Flags Register) saat ini ke tumpukan.
- Temukan IDT: Temukan deskriptor yang sesuai dari IDT berdasarkan nomor interupsi atau pengecualian.
- Periksa izin: Periksa tingkat hak istimewa (CPL) saat ini dan tingkat hak istimewa target (DPL) untuk memastikan konversi izin legal.
- melompat ke pawang: Muat CS dan EIP baru, lompat ke pengendali interupsi atau pengecualian.
- Tangani interupsi atau pengecualian: Jalankan kode pengendali.
- memulihkan konteks:lulus
IRET
Instruksi memulihkan CS, EIP dan EFLAGS dan kembali ke keadaan sebelum interupsi atau pengecualian terjadi.
5. Jenis pengecualian
Prosesor 80386 mendukung banyak pengecualian, setiap pengecualian memiliki kode kesalahan dan metode penanganan yang berbeda:
- Kesalahan: Pengecualian yang dapat dipulihkan. Ketika handler kembali, instruksi yang menyebabkan pengecualian akan dieksekusi kembali.
- Perangkap: Pengecualian yang digunakan untuk debugging atau penelusuran. Ketika handler kembali setelah pengecualian terjadi, instruksi berikutnya terus dieksekusi.
- Dibatalkan: Kesalahan serius, biasanya tidak dapat dipulihkan.
Pengecualian umum meliputi:
- Kesalahan Pembagian: Dibesarkan ketika pembaginya nol.
- Satu langkah: Digunakan untuk debugging, dimunculkan saat menjalankan satu langkah.
- Titik putus: Dibesarkan saat men-debug breakpoint.
- Meluap:menggunakan
INTO
Dibesarkan ketika instruksi mendeteksi overflow. - Rentang TERIKAT Terlampaui: Dibesarkan ketika akses array melampaui batas.
- Opcode tidak valid: Dibesarkan saat menjalankan instruksi ilegal.
- Perangkat Tidak Tersedia: Dibesarkan ketika koprosesor tidak tersedia.
- Kesalahan Ganda: Pengecualian terjadi lagi saat menangani pengecualian.
- Segmen Koprosesor Dibanjiri: Dibesarkan oleh operasi koprosesor.
- TSS tidak valid: Dimunculkan ketika segmen status tugas ilegal.
- Segmen Tidak Ada: Dimunculkan ketika segmen yang tidak ada diakses.
- Kesalahan Tumpukan: Dimunculkan ketika terjadi kesalahan operasi tumpukan.
- Kesalahan Perlindungan Umum: Dipicu ketika aturan perlindungan dilanggar.
- Kesalahan Halaman: Dibesarkan ketika operasi paging tidak normal.
6. Penangan interupsi dan pengecualian
Penangan interupsi dan pengecualian adalah rutinitas khusus yang digunakan untuk menangani interupsi atau pengecualian tertentu. Mereka biasanya disediakan oleh sistem operasi dan bertanggung jawab untuk memulihkan keadaan sistem, mencatat informasi kesalahan, melakukan operasi pemulihan yang diperlukan, atau respons interupsi.
7. Prioritas interupsi dan penyembunyian
Prosesor 80386 mendukung prioritas interupsi dan mekanisme penyembunyian, serta mengelola prioritas dan penyembunyian interupsi perangkat keras melalui PIC (Programmable Interrupt Controller). Interupsi tingkat tinggi dapat mengganggu pemrosesan interupsi tingkat rendah untuk memastikan respons tepat waktu terhadap peristiwa penting.
3.2 Mekanisme proteksi 80386
1. Perlindungan segmentasi
Prosesor 80386 menggunakan mekanisme segmentasi untuk mengelola memori. Setiap segmen memiliki deskriptor yang berisi alamat dasar segmen, batasan, dan hak akses. Perlindungan segmentasi memastikan bahwa proses hanya dapat mengakses area memori yang diotorisasi.
deskriptor segmen
Deskriptor segmen disimpan dalam tabel deskriptor global (GDT) dan tabel deskriptor lokal (LDT). Setiap deskriptor berisi informasi berikut:
- Alamat Dasar: Alamat awal segmen.
- Membatasi: Ukuran segmen, menunjukkan alamat akhir segmen.
- Jenis (Jenis) dan tingkat hak istimewa (DPL): Jenis segmen (segmen kode, segmen data, segmen sistem) dan hak akses.
- Bit kehadiran segmen (P): Apakah segmen tersebut ada di memori.
Penerapan perlindungan segmentasi
Saat mengakses memori, prosesor mencari deskriptor segmen berdasarkan pemilih segmen dan melakukan pemeriksaan berikut:
- Pengecekan alamat dasar dan batas: Pastikan alamat akses berada dalam jangkauan segmen.
- Pemeriksaan izin: Pastikan hak akses sesuai dengan jenis dan tingkat hak istimewa di deskriptor.
2. Perlindungan halaman
Mekanisme paging semakin menyempurnakan manajemen memori, dengan setiap halaman memiliki hak aksesnya sendiri. Mekanisme perlindungan paging diimplementasikan melalui direktori halaman dan tabel halaman.
Direktori halaman dan tabel halaman
- Direktori Halaman: Berisi entri direktori halaman (PDE), menunjuk ke tabel halaman.
- Tabel Halaman: Berisi entri tabel halaman (PTE) yang menunjuk ke halaman memori fisik sebenarnya.
Setiap entri tabel halaman berisi informasi berikut:
- Alamat dasar halaman: Alamat awal halaman memori fisik.
- Bit kehadiran (P): Apakah halaman tersebut ada di memori.
- Bit baca/tulis (R/W): Apakah halaman tersebut dapat ditulisi.
- Bit pengguna/pengguna super (U/S): Izin akses untuk halaman tersebut.
Penerapan perlindungan paging
Saat mengakses memori, prosesor melakukan pemeriksaan berikut:
- Pemeriksaan keberadaan halaman: Periksa apakah halaman ada di memori, jika tidak, memicu kesalahan halaman (Page Fault).
- pemeriksaan baca/tulis: Periksa apakah halaman tersebut dapat ditulis. Jika Anda mencoba menulis ke halaman yang tidak dapat ditulis, Kesalahan Perlindungan akan dipicu.
- Pemeriksaan pengguna/pengguna super: Periksa izin akses untuk memastikan bahwa kode mode pengguna tidak dapat mengakses halaman mode kernel.
3. Tingkat keistimewaan
Prosesor 80386 mendukung 4 tingkat hak istimewa (Privilege Levels), dari 0 hingga 3. Semakin rendah tingkatnya, semakin tinggi hak istimewanya.
- Tingkat hak istimewa 0 (Dering 0): Tingkat hak istimewa tertinggi, biasanya digunakan di kernel sistem operasi.
- Hak istimewa tingkat 1 (Cincin 1)DanHak Istimewa Tingkat 2 (Cincin 2): Tingkat hak istimewa menengah, jarang digunakan.
- Hak istimewa level 3 (Cincin 3): Tingkat hak istimewa terendah, biasanya digunakan oleh aplikasi mode pengguna.
Penerapan tingkat hak istimewa
Tingkat keistimewaan diterapkan melalui mekanisme sebagai berikut:
- Tingkat Hak Istimewa Segmen Kode (CPL): Tingkat hak istimewa dari kode yang sedang dijalankan.
- Tingkat Hak Istimewa Segmen Data (DPL): Tingkat hak istimewa segmen data, yang menentukan CPL mana yang dapat mengakses segmen tersebut.
- Permintaan Tingkat Hak Istimewa (RPL): Tingkat hak istimewa pemilih segmen, yang menunjukkan izin akses yang diminta.
Saat melakukan operasi akses, prosesor memeriksa CPL, DPL, dan RPL untuk memastikan kepatuhan terhadap aturan tingkat hak istimewa. Jika tidak cocok, Kesalahan Perlindungan Umum akan terpicu.
4. Deskriptor segmen dan gerbang sistem
Prosesor 80386 mendukung segmen sistem dan deskriptor gerbang untuk peralihan tugas dan penanganan interupsi.
segmen sistem
- Segmen Status Tugas (TSS): Berisi informasi kontekstual tugas dan digunakan untuk peralihan tugas.
- Tabel deskriptor lokal (LDT): Berisi deskriptor segmen khusus tugas.
deskriptor gerbang
- Gerbang Interupsi: Digunakan untuk pemrosesan interupsi, melompat ke pengendali interupsi.
- Gerbang Perangkap: Digunakan untuk penanganan pengecualian dan tidak menutupi interupsi.
- Gerbang Tugas: Digunakan untuk peralihan tugas, peralihan tugas melalui TSS.
5. Peralihan tugas
Prosesor 80386 mendukung peralihan tugas perangkat keras, yang diimplementasikan melalui segmen status tugas (TSS). Peralihan tugas dapat dipicu oleh interupsi, pengecualian, atau gerbang tugas.
Segmen Status Tugas (TSS)
TSS berisi status register tugas, register segmen, penunjuk tumpukan, dan tautan tugas. Saat peralihan tugas, prosesor menyimpan status tugas saat ini ke TSS dan memuat status tugas baru.
Proses peralihan tugas
- Simpan status tugas saat ini: Simpan register dan register segmen dari tugas saat ini ke TSS.
- Muat status tugas baru: Memuat register dan register segmen dari TSS tugas baru.
- Perbarui daftar tugas (TR): Menunjuk ke TSS tugas baru.
6. Penanganan interupsi dan pengecualian
Penanganan interupsi dan pengecualian adalah bagian penting dari mekanisme perlindungan prosesor 80386. Interupsi dan pengecualian dikelola melalui tabel deskriptor interupsi (IDT), dan pemeriksaan izin serta peralihan konteks dilakukan selama pemrosesan.
Prosedur penanganan interupsi dan pengecualian
- simpan konteks: Simpan CS, EIP dan EFLAGS saat ini ke tumpukan.
- Temukan IDT: Temukan deskriptor yang sesuai dari IDT berdasarkan nomor interupsi atau pengecualian.
- Pemeriksaan izin: Periksa CPL dan DPL untuk memastikan konversi izin legal.
- melompat ke pawang: Muat CS dan EIP baru dan jalankan handlernya.
- memulihkan konteks:lulus
IRET
Pulihkan CS, EIP dan EFLAGS dan kembalikan ke keadaan sebelum gangguan atau pengecualian terjadi.
3.3 Mekanisme perlindungan Windows
1. Mode pengguna dan mode kernel
Sistem operasi Windows membagi mode eksekusi prosesor menjadi mode pengguna (User Mode) dan mode kernel (Kernel Mode):
- mode pengguna: Menjalankan aplikasi dengan akses terbatas dan tidak ada akses langsung ke perangkat keras atau struktur data kernel.
- modus kernel: Menjalankan komponen sistem operasi inti dan driver perangkat dengan akses penuh dan dapat menjalankan instruksi istimewa.
Beralih antara mode pengguna dan mode kernel
Peralihan antara mode pengguna dan mode kernel biasanya diimplementasikan melalui panggilan sistem. Aplikasi meminta layanan kernel dengan memanggil API sistem, dan sistem operasi mengalihkan permintaan tersebut ke mode kernel untuk diproses.
2. Perlindungan memori
Memori Maya
Windows menggunakan mekanisme memori virtual untuk menyediakan setiap proses dengan ruang alamat independen. Mekanisme ini mencegah proses mengakses memori satu sama lain secara langsung, sehingga meningkatkan keamanan dan stabilitas sistem.
- tabel halaman: Setiap proses mempunyai tabel halaman independen yang memetakan alamat virtual ke alamat fisik.
- pertukaran halaman: Ketika memori fisik rendah, sistem operasi menukar halaman yang jarang digunakan ke file halaman di hard disk.
segmen memori
Windows menggunakan segmen memori untuk membagi berbagai jenis data dan kode, dan setiap segmen memiliki hak akses dan mekanisme perlindungan yang berbeda. Misalnya, segmen kode bersifat baca-saja, sedangkan segmen data bersifat baca-tulis.
3. Kontrol akses
Sistem operasi Windows menggunakan Access Control List (ACL) untuk mengelola hak akses pengguna dan proses terhadap sumber daya.
Pengidentifikasi Keamanan (SID)
Setiap pengguna, grup, dan komputer memiliki pengidentifikasi keamanan unik (SID) yang mengidentifikasi mereka.
Daftar Kontrol Akses (ACL)
Setiap objek (seperti file, direktori, kunci registri, dll.) memiliki daftar kontrol akses, yang berisi sekumpulan item kontrol akses (ACE) yang menentukan hak akses berbagai pengguna dan grup ke objek.
4. Pengelolaan hak istimewa
Windows mengontrol proses dan pengguna apa yang dapat dilakukan melalui manajemen hak istimewa. Hak istimewa tertentu hanya diberikan kepada kelompok pengguna tertentu (seperti administrator), seperti menginstal driver, mengakses log sistem, dll.
strategi keamanan
Windows menyediakan serangkaian kebijakan keamanan yang dapat mengonfigurasi kontrol akun pengguna (UAC), kebijakan kata sandi, kebijakan audit, dll. untuk meningkatkan keamanan sistem.
5. Penanganan interupsi dan pengecualian
Sistem operasi Windows menggunakan mekanisme penanganan interupsi dan pengecualian untuk mengelola interupsi perangkat keras, interupsi perangkat lunak, dan pengecualian prosesor.
Penanganan interupsi
Penangan interupsi (Interrupt Service Routine, ISR) bertanggung jawab untuk menangani interupsi perangkat keras dan memastikan bahwa perangkat eksternal dapat merespons tepat waktu.
Penanganan pengecualian
Penangan pengecualian menangani pengecualian prosesor, seperti kesalahan pembagian dengan nol, kesalahan halaman, dll., untuk memastikan bahwa sistem dapat mengambil tindakan pemulihan yang tepat ketika pengecualian terjadi.
6. Multitugas
Windows memungkinkan beberapa proses dan thread dijalankan secara bersamaan melalui mekanisme multitasking. Sistem operasi menggunakan penjadwal untuk mengelola eksekusi proses dan thread serta memastikan bahwa sumber daya sistem dialokasikan secara adil.
Penjadwalan utas
Windows menggunakan algoritma penjadwalan prioritas untuk mengalokasikan irisan waktu CPU berdasarkan prioritas dan status thread (seperti siap, menunggu, berjalan, dll.).
isolasi proses
Setiap proses memiliki ruang alamat virtual dan sumber daya independen, mencegah satu proses mempengaruhi pengoperasian proses lain dan meningkatkan stabilitas sistem.
7. Fitur keamanan
Windows menyediakan serangkaian fitur keamanan, seperti Pencegahan Eksekusi Data (DEP), Pengacakan Tata Letak Ruang Alamat (ASLR), dll., untuk meningkatkan kemampuan perlindungan sistem.
Pencegahan Eksekusi Data (DEP)
DEP mencegah eksekusi kode di segmen data dengan menandai area memori tertentu sebagai tidak dapat dieksekusi melalui kombinasi perangkat keras dan perangkat lunak.
Pengacakan Tata Letak Ruang Alamat (ASLR)
ASLR mengacak ruang alamat memori suatu proses, sehingga lebih sulit bagi penyerang untuk mengeksploitasi kerentanan.