Selasa, November 05, 2019

Sinyal error program

Sinyal atau tanda pada komputer adalah cara berkomunikasi antara proses dan sistem operasi. Ketika sebuah program berjalan dengan beberapa tanda error maka sistem operasi akan memberi sinyal pada proses dan proses selanjutnya akan dihentikan proses eksekusinya. Beberapa proses mungkin memiliki signal handler atau penanganan sinyal yang melakukan beberapa tugas penting sebelum proses berhenti dari CPU.

Sinyal dan interupsi pada dasarnya adalah sama tetapi terdapat sedikit perbedaan dimana interupsi di-generate oleh prosessor dan ditangani oleh kernel tetapi sinyal atau signal di-generate oleh kernel dan ditangani oleh proses. Sinyal error umumnya dikarenakan terminasi dari program dan sebuah core dump file yang diciptakan dan dinamai core, yang menyimpan state dari proses ketika terjadi terminasi. File tersebut dapat ditemukan menggunakan debugger yang fungsinya untuk mengetahui penyebab dari terminasi program.

Error signal

satu, SIGFPE-
Sinyal error ini menandai beberapa kesalahan aritmatik seperti pembagian oleh angka 0, floating point error, dan lain sebagainya. Jika sebuah program menyimpan data integer pada lokasi dinama digunakan untuk operasi dengan tipe data float, maka dapat menyebabkan invalid operasi kecuali jika processor tidak mengenali data sebagai nilai float. Tetapi tanda ini tidak menentukan tipe error floating point.

dua, SIGILL-
Sinyal ini menandai instruksi ilegal. Ketika instruksi garbage atau instruksi yang dibuat tetapi tidak diijinkan pada eksekusi program atau tidak memiliki aturan untuk mengeksekusi program tersebut, dan kemudian perintah tersebut tetap di-generate maka sinyal error ini akan dimunculkan. Bahasa C tidak menghasilkan instruksi ilegal sehingga tidak mungkin akan menemukan sinyal error semacam ini, sehingga hasil dari kemungkinan yang program dieksekusi maka dapat menyebabkan file menjadi corrupted. Sinyal ini juga di-generate ketika terjadi stack overflow.

tiga, SIGSEGV-
Sinyal error ini akan muncul ketika pada tahap proses program mencoba mengakses lokasi yang tidak diijinkan untuk diakses, seperti melakukan referensi ulang pointer secara sembarangan menuju ke "segmentation fault". Sinyal ini hanya di-generate ketika sebuah program menuju terlalu jauh dari ruang memorinya sehingga akan dideteksi oleh mekanisme memori proteksi. Atau lebih akrab dikenal dengan istilah pelanggaran segmentasi atau segmentation violation.

empat, SIGBUS-
Sinyal ini dikenal dengan singkatan "Bus error". Sinyal ini dihasilkan ketika mengalami akses memori invalid. Sekilas mirip seperti SIGSEGV tetapi pada SIGSEGV referensi lokasi memori adalah valid, tetapi pada SIGBUS referensi memori tidak ada atau invalid, dengan kata lain lokasi memori berada diluar jangkauan ruang.

lima, SIGABRT-
Jika error terdeteksi oleh program maka sinyal ini akan di-generate dengan memanggil perintah abort(). Sinyal ini juga digunakan oleh library standard untuk melaporkan internal error. Fungsi assert() pada C++ juga menggunakan abort() untuk generate tanda tersebut.

enam, SIGSYS-
Sinyal ini dikirim untuk diproses ketika argument invalid dilewatkan menuju ke pemanggilan sistem.

tujuh, SIGTRAP-
Sinyal ini dikirim untuk diproses ketika muncul tanda exception. Sinyal ini diperintahkan oleh debugger untuk memberikan informasi. Contohnya, jika sebuah variabel berubah nilainya maka akan hal ini dapat memberikan sinyal error.





Related Posts

Sinyal error program
Oleh

mohon untuk melakukan koreksi jika terdapat kesalahan pada penulisan blog ini,