در تکمیل صحبت دوستان عرض می کتن.
وقتی شما برنامه را اجرا می کنید(یه برنامه مستقیم مثل یه app و یا یه درخواست از سیستم عامل مثل چاپ تو paint)، اون برنامه یکسری کد و داده داره که باید اجرا بشه و مسلما کدش هم کد ماشین مقصد هستش، شما یکسری کد قابل اجرا و داده رو تحویل سیستم عامل می دید. سیستم عامل یک فرآیند برای کنترل اون برنامه ایجاد می کنه، کارهای لازم مثل پیوند های حافظه، استک، منابع اولیه، شمارنده ها و ... رو انجام میده و pc اون فرآیند رو برابر با اولین دستور کد ماشین(که در حافظه اصلی مقداریشو بارگذاری کردیم که بستگی به مدیریت حافظه سیستم عامل داره ) برنامه اصلی شما قرار میده، سپس فرآیند شمارو تویه صف زمانبندی خودش میذاره تا طبق سیاست های زمانبندی خودش زمان اجرای فرآیند شما برسه و اجرا بشه.
البته ریزه کاره هایی زیادی داره که به همین علت هم ما سیستم عامل می خونیم. ممکنه فرآیند ایجاد نشه و فقط یک نخ اجرا بشه که اون کارهای برنامه شمارو انجام بده. به هر حال یک واحد منطقی قابل کنترل برای اجرای کدهای ماشین شما ایجاد میشه تا سیستم بتونه تویه روال الگوریتمیک و به صورت سرراست اونا کنترل و مدیریت کنه.
این فرآیندها رو سیستم عامل درست می کنه( البته مثلا وقتی تویه DBMS شما یک query اجرا می کنید، این فرآیند DBMS هست که یه نخ برای شما ایجاد می کنه تا query شما انجام بشه، انگار که سیستم عامل فقط با فرآیند های DMBS سرو کار داره)، چون سیستم عامل باید ترتیب دسترسی به منابع(cpu هم یه منبعه) رو کنترل کنه. فرآیند که به خودی خود هیچ کد خاصی نداره جز کدهای اجرایی سیستم عامل و هدفش فقط اجرای کدهای ماشین برنامه شماست و کدهای مابقی فقط جهت ایجاد هماهنگی و کنترل در داخل خود سیستم عامل هستش.
در کل اگه تویه لحظه از سیستم تصویر بگیری(همون snapshot) می بینی که تعدادی فرآیند دارن قطعه کدهای ماشینی رو اجرا می کنن، هر کدوم ناحیه خاص حافظه خودشون رو دارن و صف های متعدد کنترلی، بافرها و ... رو میشه دید.