تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 2 از 2

نام تاپيک: Semaphore و Process ها در Linux

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    195

    پيش فرض Semaphore و Process ها در Linux

    سلام

    من یک پروزه دارم

    من این برنامه را باید در محیط linux و به زبان c بنویسم
    برنامه :
    باید چندتا پروسس تعریف کنم که به یک بافر مشترک دسترسی داشته باشند البته این دسترسی باید ترتیبی و صف باشه
    هر پروسس باید ای دی خود را در این بافر بنویسد و پروسس بعدی این ای دی را بخواند و ای دی خود را بنویسد

    هر پروسس یک ای دی دارد که با تابع getpid() نمایش می یابد

    برای نوشتن و خواندن از حافظه نیازمند مبحث semafore هستیم

    متشکرم
    لطفا راهنمایی فرمایید

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    اول در مورد 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 کنید. به راحتی میتونید مطالب زیادی در باره اونها پیدا کنید.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •