Kesalahan segmentasi: Perbedaan antara revisi
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 29547888; atribusi sumber disertakan. |
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi |
||
| Baris 1: | Baris 1: | ||
Dalam [[ilmu komputer]], '''kesalahan segmentasi''' atau '''galat segmentasi''' (, sering disingkat menjadi '''segfault''' atau secara resmi diklasifikasikan sebagai '''pelanggaran akses''' di lingkungan Windows) adalah kondisi galat fatal yang dipicu oleh perangkat keras komputer bersistem [[Paging|manajemen memori]] ketika sebuah [[program komputer]] mencoba mengakses [[Memori komputer|lokasi memori]] yang dilarang atau tidak valid. | Dalam [[ilmu komputer]], '''kesalahan segmentasi''' atau '''galat segmentasi''' (, sering disingkat menjadi '''segfault''' atau secara resmi diklasifikasikan sebagai '''pelanggaran akses''' di lingkungan Windows) adalah kondisi galat fatal yang dipicu oleh perangkat keras komputer bersistem [[Paging|manajemen memori]] ketika sebuah [[program komputer]] mencoba mengakses [[Memori komputer|lokasi memori]] yang dilarang atau tidak valid.<ref>Paul E. Black. [https://xlinux.nist.gov/dads/HTML/segmentationFault.html segmentation fault]. ''Dictionary of Algorithms and Data Structures''. National Institute of Standards and Technology.</ref> | ||
Kondisi ini merupakan salah satu mekanisme pertahanan terpenting pada [[sistem operasi]] modern untuk menjaga [[keamanan memori]]. Dengan membatasi ruang gerak setiap aplikasi agar hanya beroperasi di dalam ruang alamat (''address space'') miliknya sendiri, sistem operasi dapat mencegah sebuah aplikasi yang rusak atau jahat menimpa data milik aplikasi lain atau merusak data sensitif milik [[Kernel (ilmu komputer)|kernel]] sistem operasi utama. | Kondisi ini merupakan salah satu mekanisme pertahanan terpenting pada [[sistem operasi]] modern untuk menjaga [[keamanan memori]]. Dengan membatasi ruang gerak setiap aplikasi agar hanya beroperasi di dalam ruang alamat (''address space'') miliknya sendiri, sistem operasi dapat mencegah sebuah aplikasi yang rusak atau jahat menimpa data milik aplikasi lain atau merusak data sensitif milik [[Kernel (ilmu komputer)|kernel]] sistem operasi utama. | ||
| Baris 14: | Baris 14: | ||
Berikut adalah contoh kode sumber sederhana dalam [[C (bahasa pemrograman)|bahasa C]] yang dipastikan akan memicu kesalahan segmentasi seketika saat dieksekusi karena mencoba menulis data ke lokasi yang ditunjuk oleh penunjuk nol: | Berikut adalah contoh kode sumber sederhana dalam [[C (bahasa pemrograman)|bahasa C]] yang dipastikan akan memicu kesalahan segmentasi seketika saat dieksekusi karena mencoba menulis data ke lokasi yang ditunjuk oleh penunjuk nol: | ||
<syntaxhighlight lang="c"> | |||
#include <stdio.h> | |||
int main() { | |||
int *ptr = NULL; // Mendeklarasikan penunjuk yang mengarah ke nol | |||
*ptr = 99; // ERROR: Mencoba menulis nilai ke alamat nol (memicu segfault) | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
== Penanganan oleh sistem operasi == | == Penanganan oleh sistem operasi == | ||
Ketika arsitektur [[Central Processing Unit|prosesor]] (seperti unit manajemen memori atau MMU) mendeteksi adanya upaya pelanggaran batas memori oleh suatu instruksi program, prosesor akan mengeluarkan interupsi perangkat keras khusus ke sistem operasi. | Ketika arsitektur [[Central Processing Unit|prosesor]] (seperti unit manajemen memori atau MMU) mendeteksi adanya upaya pelanggaran batas memori oleh suatu instruksi program, prosesor akan mengeluarkan interupsi perangkat keras khusus ke sistem operasi. | ||
Sistem operasi kemudian akan mengambil tindakan tegas dengan menghentikan paksa aplikasi tersebut secara tidak terencana (''crash'') untuk melindungi sistem secara keseluruhan. | Sistem operasi kemudian akan mengambil tindakan tegas dengan menghentikan paksa aplikasi tersebut secara tidak terencana (''crash'') untuk melindungi sistem secara keseluruhan. | ||
| Baris 30: | Baris 40: | ||
== Referensi == | == Referensi == | ||
<references /> | |||
== Sumber dan atribusi == | == Sumber dan atribusi == | ||
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Kesalahan+segmentasi&oldid=29547888 Wikipedia bahasa Indonesia], revisi 29547888 (2026-08-10T01:13:01Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku. | Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Kesalahan+segmentasi&oldid=29547888 Wikipedia bahasa Indonesia], revisi 29547888 (2026-08-10T01:13:01Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku. | ||
<!-- WIKI_UNISSULA_PRESENTATION_V4 --> | |||
Revisi terkini sejak 23 Agustus 2026 10.29
Dalam ilmu komputer, kesalahan segmentasi atau galat segmentasi (, sering disingkat menjadi segfault atau secara resmi diklasifikasikan sebagai pelanggaran akses di lingkungan Windows) adalah kondisi galat fatal yang dipicu oleh perangkat keras komputer bersistem manajemen memori ketika sebuah program komputer mencoba mengakses lokasi memori yang dilarang atau tidak valid.[1]
Kondisi ini merupakan salah satu mekanisme pertahanan terpenting pada sistem operasi modern untuk menjaga keamanan memori. Dengan membatasi ruang gerak setiap aplikasi agar hanya beroperasi di dalam ruang alamat (address space) miliknya sendiri, sistem operasi dapat mencegah sebuah aplikasi yang rusak atau jahat menimpa data milik aplikasi lain atau merusak data sensitif milik kernel sistem operasi utama.
Penyebab umum
Kesalahan segmentasi hampir selalu disebabkan oleh adanya kutu pemrograman (software bug) di dalam kode sumber yang melakukan manipulasi alamat memori tingkat rendah secara keliru. Beberapa pemicu paling umum meliputi:
- Dereferensi penunjuk nol (Null Pointer Dereference): Mencoba membaca atau menulis data melalui sebuah variabel penunjuk yang masih bernilai kosong atau menunjuk ke alamat
0x0(alamat terlindung). - Limpahan penyangga (Buffer Overflow): Menulis data melampaui batas alokasi akhir suatu larik sehingga meluap dan menerobos area segmen memori tetangga yang dilindungi.
- Penunjuk menjuntai (Dangling Pointer): Menggunakan penunjuk untuk mengakses lokasi memori yang statusnya sudah dibebaskan (di-free atau dihapus) oleh sistem.
- Limpahan tumpukan (Stack Overflow): Pemanggilan fungsi rekursif yang terlalu dalam dan tidak berujung sehingga menghabiskan seluruh kapasitas ruang memori tumpukan panggilan (call stack).
Contoh kasus
Berikut adalah contoh kode sumber sederhana dalam bahasa C yang dipastikan akan memicu kesalahan segmentasi seketika saat dieksekusi karena mencoba menulis data ke lokasi yang ditunjuk oleh penunjuk nol:
<syntaxhighlight lang="c">
- include <stdio.h>
int main() {
int *ptr = NULL; // Mendeklarasikan penunjuk yang mengarah ke nol *ptr = 99; // ERROR: Mencoba menulis nilai ke alamat nol (memicu segfault)
return 0;
} </syntaxhighlight>
Penanganan oleh sistem operasi
Ketika arsitektur prosesor (seperti unit manajemen memori atau MMU) mendeteksi adanya upaya pelanggaran batas memori oleh suatu instruksi program, prosesor akan mengeluarkan interupsi perangkat keras khusus ke sistem operasi.
Sistem operasi kemudian akan mengambil tindakan tegas dengan menghentikan paksa aplikasi tersebut secara tidak terencana (crash) untuk melindungi sistem secara keseluruhan.
- Pada sistem mirip Unix (seperti Linux, macOS, atau FreeBSD), sistem operasi akan mengirimkan sinyal khusus bernama SIGSEGV (singkatan dari Signal Segmentation Violation) ke proses aplikasi yang bermasalah. Umumnya sistem juga akan mencetak tulisan
"Segmentation fault"pada terminal konsol dan menghasilkan berkas core dump untuk membantu pemrogram melakukan pengawakutuan. - Pada sistem Microsoft Windows, kondisi ini ditangani melalui mekanisme penanganan eksepsi terstruktur (SEH) dengan kode kesalahan spesifik
0xC0000005(Access Violation).
Lihat pula
Referensi
- ↑ Paul E. Black. segmentation fault. Dictionary of Algorithms and Data Structures. National Institute of Standards and Technology.
Sumber dan atribusi
Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 29547888 (2026-08-10T01:13:01Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.