Kernel Linux (2.6) mengimplementasikan dua antrian pesan: (lebih tepatnya 'daftar pesan', karena implementasi dilakukan dengan menggunakan daftar tertaut yang tidak sepenuhnya mengikuti prinsip FIFO)
Pesan sistem V IPC
Antrian pesan dari Sistem V.
Suatu proses dapat meminta msgsnd()untuk mengirim pesan. Ia harus melewati pengidentifikasi IPC dari antrian pesan penerima, ukuran pesan dan struktur pesan, termasuk jenis pesan dan teks.
Di sisi lain, suatu proses meminta msgrcv()untuk menerima pesan, melewati pengidentifikasi IPC dari antrian pesan, di mana pesan harus disimpan, ukuran dan nilai t .
t menentukan pesan yang dikembalikan dari antrian, nilai positif berarti pesan pertama dengan jenisnya sama dengan t dikembalikan, nilai negatif mengembalikan pesan terakhir sama dengan tipe t dan nol mengembalikan pesan pertama antrian.
Jawaban:
Kernel Linux (2.6) mengimplementasikan dua antrian pesan:
(lebih tepatnya 'daftar pesan', karena implementasi dilakukan dengan menggunakan daftar tertaut yang tidak sepenuhnya mengikuti prinsip FIFO)
Pesan sistem V IPC
Antrian pesan dari Sistem V.
Suatu proses dapat meminta
msgsnd()
untuk mengirim pesan. Ia harus melewati pengidentifikasi IPC dari antrian pesan penerima, ukuran pesan dan struktur pesan, termasuk jenis pesan dan teks.Di sisi lain, suatu proses meminta
msgrcv()
untuk menerima pesan, melewati pengidentifikasi IPC dari antrian pesan, di mana pesan harus disimpan, ukuran dan nilai t .t menentukan pesan yang dikembalikan dari antrian, nilai positif berarti pesan pertama dengan jenisnya sama dengan t dikembalikan, nilai negatif mengembalikan pesan terakhir sama dengan tipe t dan nol mengembalikan pesan pertama antrian.
Fungsi-fungsi tersebut didefinisikan dalam include / linux / msg.h dan diimplementasikan dalam ipc / msg.c
Ada batasan pada ukuran pesan (maks), jumlah total pesan (mni) dan ukuran total semua pesan dalam antrian (mnb):
Output di atas berasal dari sistem Ubuntu 10.10, standarnya didefinisikan dalam msg .
Hal antrian pesan System V yang lebih luar biasa dijelaskan di sini .
Antrian Pesan POSIX
Standar POSIX mendefinisikan mekanisme antrian pesan berdasarkan antrian pesan System V IPC, memperluasnya dengan beberapa fungsi:
Lihat ipc / mqueue.c
Contoh
util-linux
menyediakan beberapa program untuk menganalisis dan memodifikasi antrian pesan dan spesifikasi POSIX memberikan beberapa contoh C:Buat antrian pesan dengan
ipcmk
; umumnya Anda akan melakukan ini dengan memanggil fungsi C sepertiftok()
danmsgget()
:Mari kita lihat apa yang terjadi dengan menggunakan
ipcs
atau dengancat /proc/sysvipc/msg
:Sekarang isi antrian dengan beberapa pesan:
Sekali lagi, Anda biasanya tidak membuat kode msqid dalam kode.
Dan sisi lain, yang akan menerima pesan:
Lihat apa yang terjadi:
Setelah dua menerima, antrian kosong lagi.
Hapus setelahnya dengan menentukan kunci (
-Q
) atau msqid (-q
):sumber