Langsung ke konten utama

Process Programming



Process ID di Linux

Setiap process di linux memiliki Process ID atau yang bisa disingkat PID. PID merupakan 16 bit integer yang keluar secara berurutan. Setiap process memiliki parent process kecuali process init. Berikut merupakan contoh kode untuk mendapatkan PID:



Membuat Proses Baru (Proses Anak)
Ada 3 cara untuk membuat proses baru melalui kode program :
1. Fungsi system( )
Fungsi ini menjalankan shell command
Definisi/deklarasi yang digunakan :
  • #include <stdlib.h>
  • int system (const char * string);
Contoh kode :
Fungsi ini tidak disarankan karena tidak portable, menghabiskan resource, dan berbahaya (komputer bisa jadi tidak dapat digunakan lagi ketika ceroboh)

2. Fork ( )
Fork( ) akan menduplikasi proses yang ada. Proses hasil duplikasi disebut proses anak.
Definisi/deklarasi fungsi ini:
  • #include <unistd.h>
  • pid_t fork(void);
  • pid_t vfork(void);
Return value dari fork() menentukan sedang ada di proses mana
  • > 0 → ada di parent process, return value merupakan pid dari child process
  • = 0 → ada di child process
  • < 0 → error ^_^v

Contoh kode menggunakan fork ( )

 

3. Keluarga exec

Ciri-ciri fungsi exec* yaitu dapat mengganti program yang sedang berjalan pada suatu proses. Berikut merupakan macam-macam Keluarga exec :
  • Execv
  • Execvp
  • Execve
  • Execlp
  • Execle

Signal

Signal adalah sebuah event yang dikirimkan ke suatu proses oleh proses itu sendiri atau proses lain. Fungsi ini digunakan untuk mengirimkan notifikasi kepada suatu proses bahwa ada suatu event. Definisi/deklarasi dari fungsi ini adalah :
  • #include <sys/types.h>
  • #include <signal.h>
  • int kill(pid_t pid, int sig);

Berikut signal-signal yang biasa digunakan :
  • SIGKILL : mengakhiri eksekusi program sekarang juga
  • SIGTERM : mengakhiri eksekusi program
  • SIGSEGV : diterima ketika program melakukan segmentation violation
  • SIGSTOP : menghentikan sementara suatu proses sekarang juga
  • SIGCONT : melanjutkan kembali program yang di-stop
  • SIGINT : interrupt ke suatu proses
Mengirimkan sinyal ke proses ada dua cara yaitu:

1. Menggunakan perintah kill
       Contoh : kill -SIGKILL pid
2. Menggunakan system call kill()
       Definisi/deklarasi fungsi :
  • #include <sys/types.h>
  • #include <signal.h>
  • int kill(pid_t pid, int sig);
system call wait ( )

Agar proses induk bisa menunggu proses anaknya selesai, maka dibutuhkan system call wait( ). Wait( ) akan memblok eksekusi program sampai salah satu proses anaknya mati. Definisi/deklarasi fungsi tersebut antara lain :
  • #include <sys/types.h>
  • #include <sys/wait.h>
  • pid_t wait(int *status)
  • pid_t waitpid(pid_t pid, int *status, int options);

Komentar

Postingan populer dari blog ini

Sukses Terbesar dalam Hidup Saya (LPDP > 1000 kata)

Menjadi tumpuan harapan besar bagi keluarga, bukanlah hal yang mudah. Seorang Rizqi Okta Ekoputris lahir di sebuah keluarga menengah kebawah yang dikepalai oleh seorang guru dari suatu SMP negeri di suatu kota sub-urban, Jember. Dialah yang menjadi tumpuan dan harapan pertama bagi keluarga yang memiliki tingkat kecerdasan diatas rata-rata ini. Memang keluarga ini memiliki kecerdasan diatas rata-rata dan bisa jadi beliau-beliau lah yang terlebih dahulu membawa nama baik keluarga dan berkontribusi besar bagi negara. Namun sayang, ayah saya yang bercita-cita ingin menjadi insinyur tidak diijinkan berkuliah di luar kota sehingga hanya bisa berkuliah FKIP di Universitas Jember karena terkendala biaya. Sedangkan ibu saya, yang selalu menjadi juara kelas, hanya lulus sampai jenjang SMA karena terkendala biaya dan minimnya informasi mengenai beasiswa. Dengan permasalahan tersebut, kesuksesan ini seolah-olah wajib diraih oleh saya selaku anak pertama dan memiliki prestasi yang cukup mumpu...

Tanggal Yang Hilang Di Tahun 1752

Ada kejadian aneh yang terjadi pada tahun 1752 bulan september, dimana dunia pernah kehilangan 11 hari. pada bulan september tidak ada tanggal 3 – 13. jadi dari tanggal 2 langsung lompat ke tanggal 14. bagi yang pengen lihat, coba aja atur kalender komputer kalian. cuman sayang, buat pengguna windows, tidak bisa melihat kalender tersebut, bagi yang pakek linux, ato yang selain windows, coba deh, set tanggal komputer kalian bulan september tahun 1752. Oleh Bob Brooke Pada tanggal 2 September 1752, yang terjadi aneh terjadi yang masih tetap genealogists pada kaki mereka. Pada hari itu, Kepulauan Inggris dan semua koloni Inggris, termasuk Amerika, hilang 11 hari – September 3 sampai 13. Orang-orang pergi tidur dan ketika mereka terbangun keesokan harinya, tanggal telah berubah menjadi 14 September. Ada kerusuhan di daerah pedesaan karena orang-orang berpikir pemerintah mencoba menipu mereka dari 11 hari dari kehidupan mereka. Meskipun hari ini menghilang di tanah Inggris tahun 1752, nomo...

Evolusi Sistem Operasi

Simple Processing (akhir 1940 - pertengahan 1950) Ciri-ciri: Tidak ada Sistem Operasi Komputer berjalan dengan sebuah konsole yang terdiri dari lampu, toggle switch, alat input, dan printer Error diindikasikan dengan lampu Masalah:  Penjadwalan : Kebanyakan instalasi masih menggunakan hardcopy sign-up sheet untuk memesan waktu komputer. Biasanya, user dapat menggunakan komputer selama 30 menit per satu hardcopy. Setup Time : Sebuah program, dinamakan job , perlu memakan berbagai tahap. Tahap-tahap tersebut diharuskan untuk memasang atau mencopot tape. Jika terjadi error, proses harus diulangi dari awal.   Simple Batch System  Ada sebuah software yang mengatasi masalah penjadwalan dan setup time. Software tersebut dinamakan Monitor Skema kerja Monitor: a. Operator memasukkan daftar job b. Mengatur antrian job dan secara otomatis menjalankanya c. Program mengembalikan kontrol ke monitor jika selesai Masalah: Memory Protection Timer Privileged Inst...