Семафор

Семафор (Англи: Semaphore) нь процессууд нөөцийг хамтран ашиглахад хэрэглэгддэг бөгөөд нөөцийг процесс ашиглаж байгаа эсэхийг илэрхийлдэг хувьсагч юм. Процесс семафор ашиглах үед хүлээх болон сигнал дамжуулах үйлдлүүд ээлжлэн явагдана. Семафор нь бүхэл тоон хувьсагч байна. Хүлээх үйлдэл семафорын утгыг хорогдуулж Сигнал нь семафорын утгыг нэмдэг.

Хүлээх үйлдэл: wait(S) { while S<=0 ; // no op S--; }

Сигнал дамжуулах үйлдэл: signal(S) { S++; }

Ерөнхийдөө процесс нөөцийг ашиглахын тулд семафорын утгыг шалгаад ашиглаж болохоор бол нөөцийг эзэмших ба энэ хугацаандаа семафорын утгыг өөрчилж бусад процесст хүлээлт үүсгэдэг. Нөөцийг ашиглаж дууссаны дараа семафорын утгыг мөн өөрчилнө.