وظیفه (رایانش)
یک وظیفه در رایانش، واحدی از اجرا یا واحدی از کار است. این واژه مبهم است، برخی اصطلاحات جایگزین عبارتند از "فرایند"، "روند" سبک‌وزن، ریسمان (برای اجرا)، "گام"، "درخواست" یا "پرس" و "جو" (برای کار). در نمودار مجاور، صف کارهای ورودی برای انجام کار، کارهای انجام شده و استخری ریسمان برای انجام کار وجود دارد. خود واحد کار یا ریسمان‌هایی که کار را انجام می‌دهند می‌توانند به عنوان 'وظیفه ها' خوانده شوند. صف‌های ورودی، صف‌های خروجی و ریسمان‌هایی که کار را انجام می‌دهند می‌توانند به ترتیب به عنوان درخواست‌ها / پاسخ‌ها / رشته‌ها، وظایف ورودی /وظایف تکمیل شده/ رشته‌ها (همان‌طور که نمایش داده شده) یا درخواست‌ها / پاسخ‌ها / وظایف نیز معرفی شود.
(برخی از قسمت‌هایی که وظیفه به معنای «واحد اجرا» به کار رفته‌است) در برخی از سیستم عامل‌ها، یک کار مترادف با یک فرایند است ، و در بقیه با رشته‌ها هم‌معنی است. در اجراهایی که در ارتباط نیستند (پردازش دسته ای)یک وظیفه یک واحد از اجرا است که داخل یک کار است، با اینکه وظیفه به‌طور معمول یک فرایند است. اساساً اصطلاح " چند وظیفه ای" اشاره دارد به اجرای چندین وظیفه در یک زمان اما تفاوت ظریفی با کار دارد که نشان می‌دهد که چندین وظیفه در یک زمان در حال اجرا هستند.
(برخی از قسمت‌هایی که وظیفه به معنای "واحد کار" به کار رفته‌است) در یک کار (یک قطعه کار) وظیفه می‌تواند مشابه یک گام باشد (خود گام نه، اجرای آن)، در حالی که در پردازش دسته ای وظیفه‌های منفرد می‌توانند متناظر با با یک قدم از پردازش یک آیتم در یک دسته (بچ) یا به یک قدم از پردازش تمام آیتم‌ها در یک دسته باشند. در سیستم‌های آنلاین، وظایف اغلب به یک "درخواست" منفرد (در معماری درخواست-پاسخ) یا "پرس و جو" (در بازیابی اطلاعات)، یا یک مرحله از بررسی، یا بررسی گسترده سیستم اطلاق می‌شود.
در زبان برنامه‌نویسی جاوا، این دو مفهوم (یک واحد از اجرا و یک واحد از کار) در زمانی که با ریسمان‌ها به صورت مستقیم کار می‌کنیم در هم در میامیزند، اما در Executers freamwork به وضوح قابل تمیز هستند: زمانی که شما به صورت مستقیم با نخ‌ها کار می‌کنید، یک نخ(Thread)هم واحدی از کار و هم مکانیزمی برای اجرا آن را آماده می‌کند. در Executer freamwork، یک واحد از اجرا و یک واحد از کار مستقل هستند. کلید جداسازی این است که واحدی از کار، به عنوان وظیفه نامیده می‌شود.
اصطلاحاتی که IBM استفاده می‌کند دارای نفوذ است، گرچه اصطلاح دارای گنگی باشد، در اصطلاح IBM یک وظیفه دارای چندین معنای بخصوص است، شامل:
در z / OS مخصوصاً، به صورت دقیقاً تعریف شده‌است:
اصطلاح وظیفه در OS/360 از طریق Z/os تقریباً معادل فرایند سبک‌وزن است؛ وظایف در یک مرحله از کار فضای آدرس را به اشتراک می‌گزارند. با این حال، در MVS/ESA از طریق z/OS، یک وظیفه یا بلوک درخواست سرویس (Service Request Block) ممکن است از طریق لیست دسترسی آن به سایر آدرس‌های فضای مجاز دسترسی داشته باشد.
اصطلاح "وظیفه" در هسته لینوکس (حداقل از v2.6.13، تا v4.8)، که به واحدی از اجرا اشاره دارد، استفاده می‌شود، که این وظیفه ممکن است توسط منابع مختلف سیستم با وظیفه‌های دیگر در سیستم به اشتراک گذاشته شود. بسته به میزان به اشتراک گذاری، ممکن است به عنوان یک فرایند یا ریسمان محسوب شود. وظیفه‌ها با استفاده از دستور codice_1 به وجود می‌آیند که در آن کاربر می‌تواند میزان دلخواه اشتراک گذاری منابع را مشخص کند.
واژه وظیفه برای یک قسمت از زمان کار برای چند برنامه گی در اوایل دهه ۱۹۶۰ به کار برده می‌شد، این مثال برای سال ۱۹۶۱ است:
مدل سریال توانایی اجرای وظیفه‌ها از یک کار در شیوه‌های مختلف شبیه به عملکرد IBM 709 را دارد.
این اصطلاح با معرفی OS / 360 (در سال ۱۹۶۴) محبوبیت داشت که شامل خصوصیات چند برنامه‌نویسی با تعداد ثابتی از وظیفه‌ها (MFT) و چند برنامه‌نویسی با تعدادی از وظایف متغیر (MVT) بود. در این مورد، وظیفه‌ها با فرآیندهای سبک‌وزن شناسایی می‌شدند، یک شغل شامل تعدادی از وظایف و بعدها، وظیفه‌ها می‌توانستند زیر وظایف (در اصطلاحات مدرن، پروسه‌های فرزند) داشته باشند.
امروز اصطلاح "وظیفه" به صورت بسیار مبهم استفاده می‌شود. به عنوان مثال، مدیر وظیفه ویندوز (Windows Task Manager)مدیریت "فرایندهای" (در حال اجرا) را بر عهده دارد، در حالی که برنامه‌ریز ویندوز(Wnidows Task Scheduler) برنامه را برای اجرای در آینده زمان‌بندی می‌کند، آنچه که به‌طور سنتی به عنوان یک زمان‌بندی شناخته شده‌است، و از پسوند codice_2 استفاده می‌کند. در مقابل، اصطلاح " صف وظایف " معمولاً به معنای "واحد کار" استفاده می‌شود.