وظیفه (محاسبه)

در محاسبه، یک وظیفه، واحدی از اجرا یا واحدی از کار است. این واژه مبهم است، برخی اصطلاحات جایگزین عبارتند از فرایند، روند سبک‌وزن، ریسمان (برای اجرا)، گام، درخواست یا پرس و جو (برای کار). در نمودار مجاور، صف کارهای ورودی برای انجام کار، کارهای انجام شده و استخری   ریسمان برای انجام کار وجود دارد. خود واحد کار یا ریسمان‌هایی که کار را انجام می‌دهند می‌توانند به عنوان 'وظیفه ها' خوانده شوند. صف‌های ورودی، صف‌های خروجی و ریسمان‌هایی که کار را انجام می‌دهند می‌توانند به ترتیب به عنوان درخواست‌ها / پاسخ‌ها / رشته‌ها، وظایف ورودی /وظایف تکمیل شده/ رشته‌ها (همان‌طور که نمایش داده شده) یا درخواست‌ها / پاسخ‌ها / وظایف نیز معرفی شود.

واژه‌شناسی

(برخی از قسمت‌هایی که وظیفه به معنای «واحد اجرا» به کار رفته‌است) در برخی از سیستم عامل‌ها، یک کار مترادف با یک فرایند است ، و در بقیه با رشته‌ها هم‌معنی است.  در اجراهایی که در ارتباط نیستند (پردازش دسته ای)یک وظیفه یک واحد از اجرا است که داخل یک کار است، با اینکه وظیفه به‌طور معمول یک فرایند است. اساساً اصطلاح " چند وظیفه ای" اشاره دارد به اجرای چندین وظیفه در یک زمان اما تفاوت ظریفی با کار دارد که نشان می‌دهد که چندین وظیفه در یک زمان در حال اجرا هستند.

(برخی از قسمت‌هایی که وظیفه به معنای "واحد کار" به کار رفته‌است) در یک کار (یک قطعه کار) وظیفه می‌تواند مشابه یک گام باشد (خود گام نه، اجرای آن)، در حالی که در پردازش دسته ای وظیفه‌های منفرد می‌توانند متناظر با با یک قدم از پردازش یک آیتم در یک دسته (بچ) یا به یک قدم از پردازش تمام آیتم‌ها در یک دسته باشند. در سیستم‌های آنلاین، وظایف اغلب به یک درخواست منفرد (در معماری درخواست-پاسخ) یا پرس و جو (در بازیابی اطلاعات)، یا یک مرحله از بررسی، یا بررسی گسترده سیستم اطلاق می‌شود.

مثال‌ها

در زبان برنامه‌نویسی جاوا، این دو مفهوم (یک واحد از اجرا و یک واحد از کار) در زمانی که با ریسمان‌ها به صورت مستقیم کار می‌کنیم در هم در میامیزند، اما در   Executers freamwork به وضوح قابل تمیز هستند: 
When you work directly with threads, a Thread serves as both a unit of work and the mechanism for executing it. In the executor framework, the unit of work and the execution mechanism are separate. The key abstraction is the unit of work, which is called a task.
زمانی که شما به صورت مستقیم با نخ‌ها کار می‌کنید، یک نخ(Thread)هم واحدی از کار و هم مکانیزمی برای اجرا آن را آماده می‌کند. در Executer freamwork، یک واحد از اجرا و یک واحد از کار مستقل هستند. کلید جداسازی این است که واحدی از کار، به عنوان وظیفه نامیده می‌شود.

هسته لینوکس

اصطلاح وظیفه در هسته لینوکس (حداقل از v2.6.13، تا v4.8)، که به واحدی از اجرا اشاره دارد، استفاده می‌شود، که این وظیفه ممکن است توسط منابع مختلف سیستم با وظیفه‌های دیگر در سیستم به اشتراک گذاشته شود. بسته به میزان به اشتراک گذاری، ممکن است به عنوان یک فرایند یا ریسمان محسوب شود. وظیفه‌ها با استفاده از دستور clone() به وجود می‌آیند که در آن کاربر می‌تواند میزان دلخواه اشتراک گذاری منابع را مشخص کند.

تاریخ

واژه وظیفه برای یک قسمت از زمان کار برای چند برنامه گی در اوایل دهه ۱۹۶۰ به کار برده می‌شد، این مثال برای سال ۱۹۶۱ است:
مدل سریال توانایی اجرای وظیفه‌ها از یک کار در شیوه‌های مختلف شبیه به عملکرد IBM 709 را دارد.
این اصطلاح با معرفی OS / 360 (در سال ۱۹۶۴) محبوبیت داشت که شامل خصوصیات چند برنامه‌نویسی با تعداد ثابتی از وظیفه‌ها (MFT) و چند برنامه‌نویسی با تعدادی از وظایف متغیر (MVT) بود. در این مورد، وظیفه‌ها با فرآیندهای سبک‌وزن شناسایی می‌شدند، یک شغل شامل تعدادی از وظایف و بعدها، وظیفه‌ها می‌توانستند زیر وظایف (در اصطلاحات مدرن، پروسه‌های فرزند) داشته باشند.
امروز اصطلاح "وظیفه" به صورت بسیار مبهم استفاده می‌شود. به عنوان مثال، مدیر وظیفه ویندوز (Windows Task Manager)مدیریت فرایندهای (در حال اجرا) را بر عهده دارد، در حالی که برنامه‌ریز ویندوز(Wnidows Task Scheduler) برنامه را برای اجرای در آینده زمان‌بندی می‌کند، آنچه که به‌طور سنتی به عنوان یک  زمان‌بندی شناخته شده‌است، و از پسوند .job استفاده می‌کند. در مقابل، اصطلاح " صف وظایف " معمولاً به معنای "واحد کار" استفاده می‌شود.