مشاهده نسخه کامل
: Semaphore و Process ها در Linux
آرام جان گل
08-03-2007, 14:51
سلام
من یک پروزه دارم
من این برنامه را باید در محیط linux و به زبان c بنویسم
برنامه :
باید چندتا پروسس تعریف کنم که به یک بافر مشترک دسترسی داشته باشند البته این دسترسی باید ترتیبی و صف باشه
هر پروسس باید ای دی خود را در این بافر بنویسد و پروسس بعدی این ای دی را بخواند و ای دی خود را بنویسد
هر پروسس یک ای دی دارد که با تابع getpid() نمایش می یابد
برای نوشتن و خواندن از حافظه نیازمند مبحث semafore هستیم
متشکرم
لطفا راهنمایی فرمایید
سلام.
اول در مورد Semaphore باید بگم که در حقیقت یک شمارنده هست که مقدارش از 0 تا یک شماره خاص
متغییره. کاربردش هم در جایی هست که یک یا چند منبع رو میخواید بین چند Thread یا process به اشتراک
بذارید. شما میتونید مشخص کنید که چند Thread همزمان میتونن به منبع تون دسترسی داشته باشن.
هر Thread با شروع فعالیتش مقدار Semaphore یکی زیاد میکنه و در پایان فعالیتش مقدار اون رو یکی کاهش
میده. اگه مقدار Semaphore منفی یا بیشتر از عدد خاصی که در نظر گرفتید باشه Thread یا Process بعدی
اجازه ی دسترسی به منبع رو نداره و باید منتظر بمونه تا صف Process ها و یا Thread ها خالی بشه.
این یه توضیح خیلی مختصر درباره ی Semaphore.
اما درباره ی کاری که میخواید انجام بدید به نظر من میتونید از CriticalSection و یا Mutex استفاده کنید.
با Critical Section میتونید یک منبع رو به یک Process و یا Thread محدود کنید. چون در پروژه ی که دارید تنها
یک منبع وجود داره و Process ها قرار هست به ترتیب مقداری در اون بنویسن و مقداری رو ازش بخونید.
----------------------------------------------------------------------------------------------------------------
اما در مورد یک Process :
در Win32 برای ایجاد یک Process از این API استفاده میشه : (Windows.h)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای ازبین بردن یک Process :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در Linux برای ایجاد یک Process از این API ها میتونید استفاده کنید : (sys/types.h , unistd.h )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای از بین بردن یک Process :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
-----------------------------------------------------------------------------------------------------------------
Semaphore در Win32 :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما در مورد Semaphore در Linux :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
-----------------------------------------------------------------------------------------------------------------
توابعی هستند که میتونید ازشون استفاده کنید.
کافی در باره ی این API ها Search کنید. به راحتی میتونید مطالب زیادی در باره اونها پیدا کنید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.