جلسه 2 تعریف برنامه، پردازش، کار، وظیفه، حالات پردازش
مقدمه:
درک نحوه مدیریت و اجرای برنامهها توسط سیستم عامل، اساس درک عملکرد کامپیوتر است. این بخش به مفاهیم کلیدی “برنامه”، “پردازش”، “کار”، “وظیفه” و حالات مختلفی که یک پردازش طی میکند، میپردازد.
۲.۱. تعریف برنامه (Program):
برنامه را میتوان به عنوان مجموعهای از دستورالعملهای کدگذاری شده در نظر گرفت که برای انجام یک وظیفه محاسباتی خاص طراحی شدهاند. برنامه یک موجودیت ایستا است؛ مانند یک فایل اجرایی (.exe در ویندوز یا یک فایل باینری در لینوکس) که روی دیسک ذخیره شده است. تا زمانی که برنامه اجرا نشود، هیچ فعالیتی انجام نمیدهد و هیچ منبعی از سیستم را مصرف نمیکند (به جز فضای ذخیرهسازی).
۲.۲. تعریف پردازش (Process):
وقتی یک برنامه توسط کاربر یا سیستم عامل اجرا میشود، یک “پردازش” ایجاد میگردد. پردازش، نمونهای پویا و در حال اجرای یک برنامه است. هر پردازش دارای فضای آدرس منحصر به فرد خود، کد برنامه، دادهها، پشته (Stack)، و دادههای ویژه پردازش (مانند شناسه پردازش یا PID) است. پردازشها منابع سیستم مانند واحد پردازش مرکزی (CPU) برای اجرای دستورالعملها، حافظه اصلی (RAM) برای نگهداری کد و دادهها، و دستگاههای ورودی/خروجی (I/O) را اشغال و استفاده میکنند. سیستم عامل مسئولیت مدیریت این پردازشها، تخصیص منابع به آنها و زمانبندی اجرایشان را بر عهده دارد.
۲.۳. تعریف کار (Job):
اصطلاح “کار” (Job) بیشتر در زمینه سیستمهای دستهای (Batch Processing Systems) رایج است. در این محیطها، پردازشها به صورت خودکار و بدون دخالت مستقیم کاربر اجرا میشوند. در این سیستمها، “کار” به طور کلی معادل “پردازش” است که توسط سیستم مدیریت میشود و شامل برنامه، دادههای ورودی و دستورالعملهای لازم برای اجرا است.
۲.۴. تعریف وظیفه (Task):
“وظیفه” (Task) واژهای است که میتواند تعاریف مختلفی داشته باشد و اغلب به صورت عمومیتر از “پردازش” به کار میرود. در برخی سیستمها، به ویژه سیستمهای بیدرنگ (Real-time Systems) که پاسخدهی سریع حیاتی است، “وظیفه” ممکن است به یک واحد کوچکتر کار یا یک پردازش اشاره کند. گاهی اوقات، وظیفه میتواند به بخشی از یک پردازش بزرگتر نیز گفته شود که باید به صورت مستقل مدیریت شود.
۲.۵. حالات پردازش (Process States):
یک پردازش در طول عمر خود، چرخهای از حالات مختلف را طی میکند. این حالات نشاندهنده وضعیت فعلی پردازش در سیستم هستند. حالات اصلی پردازش عبارتند از:
- ایجاد (New/Create): پردازش در حال ایجاد شدن است. سیستم عامل در حال تخصیص منابع اولیه و ثبت اطلاعات مربوط به پردازش جدید است.
- آماده (Ready): پردازش تمام منابع لازم (به جز CPU) را در اختیار دارد و منتظر تخصیص CPU توسط زمانبند (Scheduler) سیستم عامل برای اجرا است. این پردازشها در صف آماده (Ready Queue) قرار میگیرند.
- در حال اجرا (Running): دستورالعملهای پردازش در حال حاضر توسط CPU اجرا میشوند.
- انتظار (Waiting/Blocked): پردازش منتظر وقوع یک رویداد خارجی است، مانند تکمیل عملیات ورودی/خروجی (I/O)، دریافت سیگنال از پردازش دیگر، یا آزادسازی یک منبع توسط پردازش دیگر. این پردازشها در صف انتظار (Wait Queue) مربوط به آن رویداد قرار میگیرند.
- پایان (Terminated/Exit): پردازش اجرای خود را به اتمام رسانده است (به طور عادی یا به دلیل خطا) و سیستم عامل منابع آن را آزاد میکند.
سیستم عامل با جابجایی پردازشها بین این حالات (با استفاده از مکانیسمهای زمانبندی و مدیریت وقفه)، امکان اجرای همزمان چندین برنامه را فراهم میکند و منابع سیستم را به طور مؤثر مدیریت مینماید.
خلاصه نکات کلیدی:
- برنامه (Program): مجموعهای از دستورالعملها که برای انجام یک کار خاص نوشته شده است. یک موجودیت ایستا در حافظه ثانویه (مانند دیسک).
- پردازش (Process): نمونهای در حال اجرای یک برنامه. یک موجودیت پویا که منابع سیستم (CPU، حافظه، I/O) را اشغال میکند.
- کار (Job): در محیطهای دستهای (Batch)، معادل پردازش است که توسط سیستم مدیریت میشود.
- وظیفه (Task): واژهای عمومیتر که میتواند به پردازش یا بخشی از آن اشاره کند، مخصوصاً در سیستمهای بیدرنگ (Real-time).
- حالات پردازش (Process States): چرخهی عمر یک پردازش که شامل حالتهای “ایجاد”، “آماده”، “در حال اجرا”، “انتظار”، و “پایان” است.