General protection fault: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
k Novita838 memindahkan halaman GPF ke General protection fault: Agar jelas. Pranala juga lebih banyak mengarah ke sana. |
Tidak ada ringkasan suntingan |
||
(11 revisi perantara oleh 4 pengguna tidak ditampilkan) | |||
Baris 1:
'''General protection fault''' (GPF) pada [[arsitektur CPU|arsitektur]] [[Intel]] [[x86]] dan [[AMD]] [[x86-64]], dan arsitektur lainnya yang tidak berkaitan, adalah sebuah ''[[fault (teknologi)|fault]]'' (sebuah jenis [[interupsi (perangkat keras)|interupsi]]) yang dapat mencakup beberapa keadaan saat mekanisme proteksi di dalam [[mikroarsitektur|arsitektur prosesor]] dilanggar oleh program apapun yang sedang berjalan, baik [[kernel (ilmu komputer)|kernel]] maupun program user. Mekanisme ini pertama kali dijelaskan di bab 9.8.13 dalam manual referensi programmer Intel 80386 pada tahun 1986. General protection fault diimplementasikan sebagai ''interrupt'' ([[vektor interupsi]] nomor 13 dalam [[desimal]]) dalam kedua arsitektur [[x86]] dan [[AMD64]]. [[Aplikasi]] dapat dikatakan mengalami ''crash''.
Penyebab GPF yang paling umum adalah dua aplikasi yang mencoba menggunakan menggunakan blok [[memori]] yang sama, sehingga terjadi bentrok penggunaan memori.
Beberapa sebab GPF lainnya adalah penggunaan ''device driver'' (perangkat penggerak) yang tidak tepat dan [[sistem operasi]] Windows yang terkorupsi.
== Perilaku dalam sistem operasi tertentu ==
<!-- Deleted image removed: [[Image:Llegaloperation.gif|300px|right|A general protection fault.]] -->
Dalam [[Microsoft Windows]], general protection fault disajikan dalam berbagai bahasa, bergantung pada versi produk:
* Unrecoverable Application Error. ([[Windows 3.0]])
* [Nama Program] has caused a General Protection Fault in module [nama modul] at [alamat memori]. ([[Windows 3.1]] dan [[Windows 3.1x|3.1x]])
* This program has performed an illegal operation and will be shut down. ([[Windows 9x]] & [[Windows NT 4.0]])
* [Nama Program] has generated errors and will be closed by Windows. ([[Windows 2000]])
* [Nama Program] has caused an error in [Nama Modul]. [Nama Program] will now close. ([[Windows Me]])
* [Nama Program/Deskripsi] has encountered a problem and needs to close. We are sorry for the inconvenience. ([[Windows XP]])
* [Nama Program/Deskripsi] has stopped working. ([[Windows Vista]], [[Windows 7]] dan [[Windows 8]])
Pada sistem seperti [[Unix]] dan [[Linux]], error tersebut dilaporkan secara terpisah (misalnya [[segmentation fault]] untuk kesalahan (''error'') memori).
== Kesalahan memori ==
Pada kesalahan memori, program yang akan melakukan kesalahan mengakses [[memori komputer|memori]] yang sebaiknya tidak diakses. Contohnya meliputi:
* Mencoba menulis ke bagian [[ROM|hanya baca]] dari memori
* Mencoba menjalankan / mengeksekusi [[bita]] dalam memori yang tidak dirancang sebagai [[set instruksi|instruksi]]
* Mencoba membaca sebagai bita data dalam memori yang sebetulnya dirancang sebagai instruksi
* Perbedaan / konflik lainnya antara perancangan bagian memori dengan penggunaannya
Meskipun begitu, banyak sistem operasi modern menerapkan skema pengendalian akses memori melalui ''paging'', bukan segmentasi, jadi sering ada kasus referensi memori yang tidak valid dalam sistem operasi seperti Windows dilaporkan melalui ''page fault'' daripada general protection fault. Sistem operasi biasanya menyediakan lapisan abstraksi (seperti ''exception handling'' atau sinyal) yang menyembunyikan apapun mekanisme prosesor internal yang digunakan untuk mengirimkan ''memory access error'' dari program, dengan tujuan menyediakan antarmuka standar untuk menangani berbagai tipe berbeda dari kondisi error yang diciptakan prosesor.
Dalam kondisi arsitektur [[x86]], general protection fault adalah khusus untuk proteksi berbasis segmentasi saat sampai pada akses memori. Namun, general protection fault masih digunakan untuk melaporkan pelanggaran proteksi lainnya (di samping pelanggaran terhadap akses memori) saat digunakan ''paging'', seperti penggunaan instruksi yang tidak dapat diakses dari [[current privilege level]].
Meskipun secara teoretis sistem operasi mungkin untuk menyediakan baik ''paging'' maupun segmentasi, dalam bagian besar, sistem operasi umum biasanya mengandalkan ''paging'' untuk kebutuhan ''memory access control''nya.
== Lain-lain ==
Penyebab lain dari general protection fault adalah:
* mencoba mengakses interupsi/''exception handler'' dari [[mode v86]] saat kode ''handler'' pendeskripsi segmen (DPL = ''descriptor privilege level'') sedang lebih dari nol
* mencoba menulis angka satu ke dalam bit yang telah dipesan (''reserved'') dari [[register kontrol|CR4]]
* mencoba mengeksekusi instruksi yang memerlukan ''privilege'' saat ''current privileged level'' (CPL) tidak nol
* menulis ke bit ''reserved'' dalam instruksi MSR
* mengakses gerbang yang mengandung pemilih segmen ''null''
* mengeksekusi interupsi perangkat lunak saat set CPL lebih besar dari DPL untuk gerbang interupsi
* pemilih segmen dalam sebuah pemanggilan, interupsi, atau gerbang ''trap'' tidak menunjuk ke segmen kode
* melebihi panjang instruksi yaitu 15 bita
* melanggar aturan hak akses (''privilege'')
* mengaktifkan ''paging'' saat menonaktifkan proteksi
* mereferensikan tabel pembaca interupsi yang menyertai sebuah interupsi atau ''exception'' yang sebenarnya bukan interupsi, ''trap'', atau gerbang ''task''
* SSE kuno: Operand memori tidak merupakan 16-bita
== Catatan dan referensi ==
* ''Intel Architecture Software Developer's Manual''–Volume 3: System Programming
== Lihat pula ==
* [[Segmentation fault]]
{{Sistem operasi}}
{{komputer-stub}}
[[Kategori:Teknologi informasi]]
|