IPC adalah singkatan dari Inter-process Communication.
Teknik ini memungkinkan proses untuk berkomunikasi satu sama lain.
Karena setiap proses memiliki ruang alamat dan ruang pengguna yang unik, bagaimana proses berkomunikasi satu sama lain?
Jawabannya adalah Kernel, jantung dari sistem operasi Linux yang memiliki akses ke seluruh memori. Jadi kita dapat meminta kernel untuk mengalokasikan ruang yang dapat digunakan untuk berkomunikasi antar proses.
Proses juga dapat berkomunikasi dengan memiliki file yang dapat diakses oleh kedua proses. Proses dapat membuka, dan membaca/menulis file, yang membutuhkan banyak operasi I/O yang menghabiskan waktu.
Berbagai Jenis IPCS
Ada berbagai IPC yang memungkinkan suatu proses untuk berkomunikasi dengan proses lain, baik di komputer yang sama atau komputer yang berbeda di jaringan yang sama.
- Pipa – Menyediakan cara bagi proses untuk berkomunikasi satu sama lain dengan bertukar pesan. Pipa bernama menyediakan cara bagi proses yang berjalan pada sistem komputer yang berbeda untuk berkomunikasi melalui jaringan.
- Memori Bersama – Proses dapat bertukar nilai dalam memori bersama. Satu proses akan membuat sebagian memori yang dapat diakses oleh proses lain.
- Antrian Pesan – Ini adalah daftar segmen memori yang terstruktur dan berurutan tempat proses menyimpan atau mengambil data.
- Semaphore – Menyediakan mekanisme sinkronisasi untuk proses yang mengakses sumber daya yang sama. Tidak ada data yang dilewatkan dengan semaphore; itu hanya mengoordinasikan akses ke sumber daya bersama.
Contoh Perintah 10 IPCS
ipcs adalah perintah UNIX / Linux, yang digunakan untuk membuat daftar informasi tentang komunikasi antar-proses Perintah ipcs memberikan laporan tentang Sistem V IPCS (Antrian pesan, Semaphore, dan Memori bersama).
Contoh IPCS 1:Daftar semua fasilitas IPC
Perintah ipcs dengan opsi -a mencantumkan semua fasilitas IPC yang memiliki akses baca untuk proses saat ini. Ini memberikan detail tentang antrian pesan, semaphore dan memori bersama.
# ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2 ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204 ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
Semua fasilitas IPC memiliki kunci dan pengenal unik, yang digunakan untuk mengidentifikasi fasilitas IPC.
Contoh IPCS 2:Daftar semua Antrian Pesan
ipcs dengan opsi -q, hanya mencantumkan antrian pesan dimana proses saat ini memiliki akses baca.
$ ipcs -q ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
Contoh IPCS 3. Daftar semua Semaphore
ipcs -s option digunakan untuk membuat daftar semaphore yang dapat diakses.
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204
Contoh IPCS 4. Daftar semua Memori Bersama
Opsi ipcs -m dengan perintah ipcs mencantumkan memori bersama.
# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2
Contoh IPCS 5. Informasi lengkap tentang fasilitas IPC
ipcs -i option memberikan informasi rinci tentang fasilitas ipc.
# ipcs -q -i 32768 Message Queue msqid=32768 uid=0 gid=0 cuid=0 cgid=0 mode=0644 cbytes=0 qbytes=65536 qnum=0 lspid=0 lrpid=0 send_time=Not set rcv_time=Not set change_time=Thu Aug 5 13:30:22 2010
Opsi -i dengan -q memberikan informasi tentang antrian pesan tertentu. Opsi -i dengan -s memberikan detail semaphore. Opsi -i dengan -m memberikan detail tentang memori bersama.
Contoh IPCS 6. Mencantumkan Batas untuk fasilitas IPC
ipcs -l option memberikan batasan sistem untuk setiap fasilitas ipc.
# ipcs -m -l ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 67108864 max total shared memory (kbytes) = 17179869184 min seg size (bytes) = 1
Perintah di atas memberikan batasan untuk memori bersama. -l dapat digabungkan dengan -q dan -s untuk melihat batas antrian pesan dan semaphore masing-masing.
Opsi tunggal -l memberikan batasan untuk ketiga fasilitas IPC.
# ipcs -l
Contoh IPCS 7. Detail Pembuat Daftar dan Pemilik untuk Fasilitas IPC
ipcs -c option daftar pencipta userid dan groupid dan pemilik userid dan group id. Opsi ini dapat digabungkan dengan -m, -s, dan -q untuk melihat detail kreator untuk fasilitas IPC tertentu.
# ipcs -m -c ------ Shared Memory Segment Creators/Owners -------- shmid perms cuid cgid uid gid 1056800768 660 oracle oinstall oracle oinstall 323158020 664 root root root root 325713925 666 root root root root
Contoh IPCS 8. Id proses yang mengakses fasilitas IPC baru-baru ini
Opsi ipcs -p menampilkan id pembuat, dan id proses yang baru-baru ini mengakses fasilitas ipc terkait.
# ipcs -m -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 1056800768 oracle 16764 5389 323158020 root 2354 2354 325713925 root 20666 20668
-p juga dapat digabungkan dengan -m,-s atau -q.
Contoh IPCS 9. Waktu Terakhir Diakses
ipcs -t option menampilkan waktu operasi terakhir di setiap fasilitas ipc. Opsi ini juga dapat dikombinasikan dengan -m, -s atau -q untuk mencetak untuk jenis fasilitas ipc tertentu. Untuk antrian pesan, opsi -t menampilkan waktu pengiriman dan penerimaan terakhir, untuk memori bersama ini menampilkan lampiran terakhir (bagian dari memori) dan cap waktu yang dilepas dan untuk semaphore menampilkan operasi terakhir dan detail waktu yang diubah.
# ipcs -s -t ------ Semaphore Operation/Change Times -------- semid owner last-op last-changed 0 root Thu Aug 5 12:46:52 2010 Tue Jul 13 10:39:41 2010 32769 root Thu Aug 5 11:59:10 2010 Tue Jul 13 10:39:41 2010 1094844418 oracle Thu Aug 5 13:52:59 2010 Thu Aug 5 13:52:59 2010
Contoh IPCS 10. Status penggunaan saat ini
ipcs dengan perintah -u menampilkan penggunaan saat ini untuk semua fasilitas IPC. Opsi ini dapat digabungkan dengan opsi khusus untuk menampilkan status fasilitas IPC tertentu.
# ipcs -u ------ Shared Memory Status -------- segments allocated 30 pages allocated 102 pages resident 77 pages swapped 0 Swap performance: 0 attempts 0 successes ------ Semaphore Status -------- used arrays = 49 allocated semaphores = 252 ------ Messages: Status -------- allocated queues = 1 used headers = 0 used space = 0 bytes