Như những người khác đã nói semaphores là IPC (cấu trúc truyền thông liên tiến trình). Semaphores như tất cả IPC được sử dụng để cho phép các quá trình khác nhau giao tiếp với nhau.
Về cơ bản, chúng là các bộ đếm được tạo, truy cập và hủy bằng các lệnh gọi hệ thống đặc biệt, chẳng hạn như sempost (3), semwait (3), semget (2) và semop (2). Xem sem_overview (7) trên hệ thống linux để biết mô tả ngắn gọn.
Định nghĩa của giao tiếp ở đây là khá nguyên thủy. "Giao tiếp" cho semaphores có nghĩa là đọc, tăng hoặc giảm bộ đếm thông qua các cuộc gọi hệ thống / thư viện được đề cập ở trên.
Điều đặc biệt về semaphores ngoài thực tế là chúng chỉ có một quá trình tại một thời điểm có thể thực hiện một hoạt động trên chúng, và các hoạt động semaphore được đảm bảo nguyên tử , nghĩa là bạn không thể rơi vào tình trạng chạy đua trong một semaphore là kernel sẽ không trao đổi một quá trình đang thực hiện một hoạt động semaphore.
Điều đặc biệt khác là chúng được tạo trong bộ nhớ dùng chung cho phép nhiều tiến trình truy cập chúng.
Cách họ biểu hiện / tạo ra là các chương trình tạo ra chúng bằng semget (2). Ví dụ, apache tạo sempahores khi nó chạy.
ipcs -l sẽ cho bạn biết về tài nguyên ipc của hệ thống.
Bạn có thể thao tác một số giới hạn liên quan đến semaphore và ipc với sysctls. Cố gắng sysctl kernel.semxem các cài đặt liên quan đến sempahore thông qua sysctl. Nếu bạn muốn tiếp tục bất kỳ thay đổi sysctl nào, hãy thử đặt chúng vào /etc/sysctl.conf.