کار با لولههای با نام
لولهها امکان ارتباط پردازشها با یکدیگر را فراهم میکنند. همچنین لوله ممکن است به عنوان FIFO (اختصاری برای First In- First Out) شناخته شود.
برتری آنها از کاربرد فایلها به عنوان وسیله ارتباط، آن است که با استفاده از لولهها، پردازشها با یکدیگر همگام میشوند: اگر پردازشی از یک لوله نخواند، پردازش نوشتن در لوله مسدود میشود، و اگر نویسنده وجود نداشته باشد، پردازش خواندن از لوله، مسدود میشود.
مثال زیر نمونهای از لوله نامگذاری شده است، در اینجا به عنوان pipe1 نامیده شده.
cd /tmp mkfifo pipe1
برای ارسال یک پیغام به لوله، از این استفاده کنید:
echo "hello" > pipe1
در این نقطه به نظر میرسد پردازش هنگ شده باشد. پردازش دیگری برای جمعآوری داده در حال اجرا نیست، بنابراین کرنل پردازش را به حالت تعلیق در میآورد. گفته میشود پردازش در این مرحله مسدود(blocked) گردیده است.
امکان دارد در ترمینال دیگری، اطلاعات از لوله جمع آوری گردد، به این شکل:
cat /tmp/pipe1
اکنون توسط cat اطلاعات از لوله خوانده خواهد شد( و در ترمینال نوشته میشود)، و پردازش نویسندهِ مسدودشده برای ادامه یافتن آزاد میشود.
برای برخی اطلاعات بیشتر، پرسش و پاسخ شماره ۸۵ را ببینید.
مثال همگامی دوطرفه سرویسدهنده- سرویسگیرنده
این مثال کوچکی از مخابره کردن یک پردازش سرویسدهنده با یک پردازش سرویسگیرنده است. سرویسدهنده فرمانها را به سرویسگیرنده ارسال میکند، و سرویس گیرنده هر فرمان را تصدیق میکند:
ادامه مطلب