fa
Feedback
Coding Lovers

Coding Lovers

رفتن به کانال در Telegram

:همه شبکه های اجتماعی یکجا 🌐 Zil.ink/codinglovers :چیزی نیاز داری؟ 🧑‍💻 @Amir_OfficiaI 📌 تبلیغات: @CodingLoversAds :گروه 🍻 @CodingLovers_GP :ثبت نمونه کار 🪄 @CodingLovers_result

نمایش بیشتر
1 982
مشترکین
+124 ساعت
+197 روز
+3730 روز
آرشیو پست ها
چالش با regex یه متن دارم، میخوام اعداد کیفیت رو ازش در بیارم با regex. شاید فکر کنین راحته.
🎥دانلود فیلم 《 ناشناس 》
♨️دانلود با کیفیت 1080p ♨️ 
قسمت 15
فصل 3

📽 فیلم عنکبوت
📺كيفيت 360
قسمت 5
اما امتحان کنین میفهمین داستان چیه! دقیقاااا همین متن رو از همینجا کپی کنید و با regex سعی کنید اعداد رو بگیرید. یکیشون رو میشه گرفت، ولی یکی رو نه!😐 دو کلمه کیفیت داخل این متن فرق دارن همین خیلی کار رو سخت کرده. حتی جوابی که هوش مصنوعی بهم داد هم نمیتونست عدده رو در بیاره :( #موقت

خروجی؟
Anonymous voting

❓ خروجی کد چیه بنظرتون؟ اینو میخواستم فردا بزارم ولی طاقت نیاوردم😂😂 #quiz @CodingLovers | Ali
❓ خروجی کد چیه بنظرتون؟ اینو میخواستم فردا بزارم ولی طاقت نیاوردم😂😂 #quiz @CodingLovers | Ali

خروجی کدومه؟
Anonymous voting

❓ بنظرتون خروجی چیه؟ #quiz @CodingLovers | Ali
❓ بنظرتون خروجی چیه؟ #quiz @CodingLovers | Ali

یه چالش تقریبا سخت با استفاده از regex، از متن زیر
"0b0caf091d79a4006ebf6c2f9b17b60c1d798069$[[\\"__json_message\\"\\0540\\05425\\054\\"Your edit code: \\"\\054\\"pZESFitd\\"]]"
چگونه pZESFitd را بگیریم؟ ( یه ساعته درگیرشم )

16 آذر، روز دانشجو مبارک 🔥 روز دانشجو رو به همه دانشجوهایی که وسط چالش‌های سینتکس، دیباگ، و ددلاین‌های پایان‌نامه گیر کردن،
16 آذر، روز دانشجو مبارک 🔥 روز دانشجو رو به همه دانشجوهایی که وسط چالش‌های سینتکس، دیباگ، و ددلاین‌های پایان‌نامه گیر کردن، تبریک می‌گم. شماها اونا هستید که روز و شب با یه مشت کد و لاگ و گاهی ارورهای بی‌منطق سر و کله می‌زنید و آخرش یه چیزی می‌سازید که دنیای دیجیتال رو می‌چرخونه. تو دنیایی که همه‌چیز با کد می‌چرخه، شماها سازنده‌های آینده‌اید. شاید الان تو فکر این باشید که چرا تست‌هاتون پاس نمی‌شه یا چرا یه فانکشن ساده این‌قدر ارور می‌ده، ولی یادتون باشه، همین خطاها شما رو به یه کدنویس حرفه‌ای تبدیل می‌کنه. یه دنیای پر از صفر و یک منتظر ایده‌ها و خلاقیت‌های شماست. پس نترسید از شکست، چون پشت هر ارور، یه راه‌حل خفن مخفی شده. روزتون پر از انگیزه، کامیت‌های تمیز و پروداکت‌های موفق باشه. مخلص💜

#فان فقط دارن همو پوشش میدن😂😂

#فان فقط دارن همو پوشش میدن😂😂

چه زود میگذره، همین دیروز هم 11 آذر بودا 😏 شد 20 سالم یه دوره باحالمون نشه به همین مناسبت؟

⛔️ این دقیقا جوریه که نباید سوال بپرسیم :) https://dontasktoask.com/ 🤝
⛔️ این دقیقا جوریه که نباید سوال بپرسیم :) https://dontasktoask.com/ 🤝

تقریبا ی پست دیگه که شامل مالتی‌پراسسینگ، مالتی‌تردینگ و ی جمع‌بندی مشتی در مورد برنامه‌نویسی موازی داریم و مجدد به عمیق شدن توی TeleBot می‌پردازیم، اگه بحث و مورد خاصی واسه تشریح کردن مد نظرتونه کامنت کنین. به قول این یوتیوبرا "لایک ( اینجا ریکشن) و شِیر هم که مرامتونه" 😁

با چشم پوشی از مالتی‌پراسسینگ و مالتی‌تردینگ (در آینده باهاشون آشنا میشیممیرسیم به Asynchronous و Synchoronous. 👩‍🎓 میدونیم که Asynchronous و Synchoronous به ترتیب به معناهای "غیر‌همزمان" و "همزمان" هستن، قبل از شروع توضیحات لطفا هر چی توی ذهنتون از این مفاهیم ساختین رو پاک کنید، خصوصا مثال هایی که اساتید معمولا با فرایند آشپزی واستون مطرح کردن. 😐 همگی موافقیم که کدهامون دستوراتی هستن که ما تعریف کردیم و کامپیوترهامون موظف به اجرای این دستورات به دو صورت Async و Sync هستن. 🤷‍♀- منظورمون از Synchronous چیه؟!
وقتی حرف از Sync بودن کدمون میزنیم درواقع منظور اصلیمون ترتیب اجرای کده که به اصطلاح بصورت Blocking اجرا میشن؛ یعنی به ترتیب لاین های کد کدمون اجرا میشه و تا وقتی پروسه حال حاظر تکمیل نشه مابقی کد هم اجرا نمیشن. Sync بودن اجرای کد رو قابل پیش‌بینی میکنه و به هر صورتی که کد رو نوشته باشیم، دقیقا به همون صورت و ترتیب هم اجرا میشن.
😀- منظورمون از Asynchronous چیه؟!
شاید با خودتون بگین که Async خلاف روند Sync عمل میکنه، اما جا داره که بگم اینطور نیست!! Async و Sync مکمل هم هستن و در واقع Asynchronous بودن کد باعث متفاوت بودن ترتیب اجرا با ترتیب کد میشه، یعنی منتظر تموم شدن کد قبلی نمیمونه و طی زمانی که کد قبلی اجرا میشه به سایر اجزای کد میپردازه (کارکرد اف‌لود). کد های Async ممکنه که به حالت موازی صورت بگیرن و باعث اجرای پارالل و یا غیر موازی و موجب همروندی بشن. معمولا توی زبان هایی که از Asynchronous پشتیبانی میکنن با کلید های Async و Await مشخص و نوشته میشن.
💡- ی مثال جامع از تفاوت کارکرد Async و Sync؛
اپلیکیشن مثال های قبلی رو دوباره متصور بشین، فرض کنین این اپلیکیشن از چندین فانکشن تشکیل شده که هر فانکشن کار و عملیات خاصی رو انجام میدن، این وسط ی فانکشن تحت عنوان ارسال درخواست به API داریم که مسئولیت ارسال رکوئست به API و برگردوندن خروجی رو داره و ممکنه پاسخ از سمت API کمی طول بکشه، اگه این فانکشن رو بصورت Sync بنویسیم و اون رو کال کنیم، تا زمانی که فرایند و تمامی بلوک این فانکشن کامل انجام نشه مابقی فانکشن و کدها هم اجرا نمیشن و اپلیکیشن منتظر اتمام کار این فانکشن میمونه، ولی اگه صورت Async این کد رو بنویسیم، اپلیکیشن ما منتظر تکمیل شدن کارکرد این فانکشن نمیمونه و سایر فانکشن ها و کد به حالت عادی خودشون ادامه میدن 🥺
🤔- زبان های مختلف مدل Asynchronous رو چطور پیاده سازی میکنن و آیا همه توی همه زبان ها پشتیانی میشه؟!
زبان های مختلف دارای قابلیت Async معمولا یا از موارد زیر یا ترکیب و تلفیقشون واسه مدل Asynchronous استفاده میکنن : 1️⃣- استفاده از پراسس ها مبتنی به حافظه غیر اشتراکی که قبلا باهاشون آشنا شدیم. 2️⃣- با استفاده از Event ها، EventLoop و یا مابقی الگوریتم های مبتنی بر این‌ها 3️⃣- با استفاده از ترد با این تفاوت که از فضای اشتراکی استفاده میکنن (با تردم قبلا بصورت مفصل آشنا شدیم) بعضی از زبان‌ها مثل پایتون و جاوااسکریپت از Async پشتیبانی و بعضی هم مثل PHP، C، Go و.. هم پشتیبانی نمیکنن که البته با مالتی‌تردینگ و مالتی‌پراسسینگ میشه این قابلیت رو پیاده سازی کرد.
🤨- پس با این حال بهتره همیشه Async بنویسم؟!
نه، خیلی اوقات نیازی به Async بودن کدمون نیست و Async نوشتن فانکشن و مابقی اجزای کد بیخودیه مثل این مورد. توی حالت کلی داخل مواقعی که با عملیات های IO Bound طرفیم باید کدمون حالت Async داشته باشه مثل مواقعی که با ارسال رکوئست های پیاپی با تاخیر زیاد یا مواقعی که با ورودی و خروجی زیادی و.. سر و کار داریم
✔️- موارد و نکات زیر رو هم به خاطر داشته باشین :
🔘توی کد های Async ترتیب اجرا، نحوه دسترسی هر جریان و قسمت اجرایی به داده‌ها و مدت زمان صرف شده واسه رسیدن به نتیجه مشخص نیست. 🟢مدیریت استیت‌منیجمنت توی کد های Async ممکنه چالش برانگیز و نیازمند به الگوی مناسب داشته باشه. 🔘نمیتونیم هیچ تضمینی واسه سریع‌تر شدن کد با Async کردنش ارائه بدیم (بستگی به فرایند داره) 🟣توی کد های Async مدیریت منابع خیلی مهمه، فرض کنید بصورت Async به دیتابیسی اتصال داریم، اگه مدیریت درستی انجام نشه منجر به Memory Leek میشه!
😎 CodingLovers | #Farshad@CodingLovers_OFF

کدوم سینتکس، برای یه کتابخونه html parsing ( مثل bs4 )، باهاش بیشتر حال میکنین؟ سینتکس دوم و سوم، تگ divی که کلاس btn یا کلاس pdm دارن رو انتخاب میکنن توی سینتکس اول، قابلیت «یا» و «و» رو نمیشه پیاده سازی کرد، ولی بقیه دارن
import parser

doc = parser.parse_from_file("example.html")

# Syntax 1
doc.select("div", {"class": "btn"})

# Syntax 2
doc.select(
    parser.Name("div") &
    (
     parser.Attr("class", "btn") |
     parser.Attr("class", "pdm")
    )
)

# Syntax 3
doc.select("div.btn, div.pdm")
#پست‌موقت

👩• نوبتی هم باشه، نوبت تشریح نخ یا ترد هست. مطمئنا اگه برنامه‌نویس یا علاقه‌مند به برنامه‌نویسی باشین از شنیدن این کلمه "نخ" زخم شدین و آخر سر هم مفهوم و درک کاملی ازش براتون ایجاد نشده، پس همراه باشید تا کامل این مفهوم و مبحث رو براتون جا بندازم! 🤷‍♀- نخ چیه اصلا؟!
توی پست‌های قبلی با پراسس ها آشنا شدیم و میدونیم که پراسس نمونه‌ای از برنامه درحال اجرا شامل کد های برنامه، فعالیت کنونی و منابع مصرفی هست و با ایزوله بودن نسبت به سایر پراسس ها، توی فضای حافظه خودش کار میکنه. نخ کوچیکترین واحد اجرایی داخل پراسسه که به عنوان پراسس سبک هم شناخته میشه، پس با این حال داخل هر پراسسی ممکنه چندین نخ وجود داشته باشه که با استفاده از منابع مشترک، اشتراک‌گذاری داده ها رو بطور موثری فراهم میکنه. درواقع میشه این نتیجه رو گرفت که نخ همون پراسسه منتها بهینه‌تر!
⚡️- ویژگی های کلیدی نخ :
سبک بودن : نخ ها از پراسس سبک تر هستن به این صورت که واسه ایجاد یا مدیرتشون به هزینه کمتری نیازه. حافظه مشترک : نخ ها توی ی پراسس از منابع مشترکی استفاده میکنن که همین باعث فراهم آوردن ارتباط سریعتری میشه، درواقع با تعریف شدن ی استک جدا ریجستر میشه. هم‌زمانی : نخ ها این امکان که برنامه‌ای با مقیاس پذیری بالاتر و کارآمد رو توسعه بدیم به ارمغان میاره، البته مدیریت هم‌زمانی نخ باید صورت بگیره که خودش بحث مفصلی داره.
🤔- چرا با وجود پراسس، نخ به وجود اومد؟!
اپلیکیشن پست قبلی رو دوباره به خاطر بیارین، فرض کنین همزمان ١٠٠٠ نفر از این اپلیکیشن استفاده کنن و وب‌سرور اپلیکیشن حالت پراسس داشته باشه، یعنی واسه هر نفری که از این اپلیکیشن استفاده میکنه و ریکوئستی به وب‌سرور ارسال میشه، ی پراسس ران بشه و وب‌سرور واسه‌ی این پراسس مقداری منابع مثل رم، استک، دیتا و غیره در نظر بگیره، عملا اگه ساختار به این صورت باشه، با استفاده همزمان ١٠٠٠ نفری از اپلیکیشن، وب‌سرور داون میشه!🤯 اینجاس که میگیم چه کاریه آخه، بجای هر بار ران کردن ی پراسس، بعد از دریافت هر رکوئست، ی ترد جدید ایجاد میکنیم، یعنی ی پراسس واحد یا والد درنظر گرفته میشه ( اینجا همون وب‌سرور پراسس والد حساب میشه ) و با هر بار دریافت رکوئست، نخ یا ترد هایی ران میشن، به بیان ساده تر ی استک جدید تعریف و ریجستر میشه و با هر ترد جدیدی، مجدد دیتای جدید نوشته نمیشه و بدون افت افت کارایی یا کرش به تمامی ریکوست ها پاسخ میدیم!🤤
 در نهایت، معمولا داخل مواقعی که سرعت و سبکی، عملکرد و کارایی و همزمانی حائز اهمیت هست از ترد یا نخ و مواقعی که ایزولاسیون، محاسبات و عملیات های پیچیده و سنگین، پایداری و امنیت نیازه از پراسس ها استفاده میکنیم ( یا بهتره اینطور گفته بشه که توی معماری زیر پراسسی مثل وب‌سرور ها یا برنامه های گرافیکی از نخ و توی معماری های سیستم‌عاملی از پراسس استفاده میشه ) ✔️ 😎 CodingLovers | #Farshad@CodingLovers_OFF

قصد داشتم توی ی پست حداقل دو مورد از موارد لیست رو تشریح کنم، ولی امان از محدوديت کاراکتر، حتی نشد از ایموجی هم استفاده کنم 👀

😎 CodingLovers | #Farshad

💤• روز جدید رو با آشنایی PROCESS شروع‌ کنیم. پراسس / PROCESS چیه؟!
پراسس به عنوان ی مفهوم کلیدی توی سیستم‌عامل ها، نماینگر فعالیت‌هاییه که توی پس‌زمینه در حال اجرا هستن، وقتی ی برنامه و فعالیت رو شروع میکنین، سیستم‌عامل ی پراسس واسش ایجاد میکنه که این پراسس شامل تمامی موارد موردنیاز اجرا شدن برنامه میشه، مثلا سورس‌کد، داده‌ها، وضعیت اجرایی و.. فرض کنین در حال کار با سیستم هستین و برنامه‌ی VSCODE رو باز و شروع به کد زدن میکنین، وقتی این برنامه رو باز میکنین سیستم عامل ی درخواست مبتنی بر ایجاد پراسس جدید ارسال میکنه و پراسس ایجاد میشه، در ادامه با نحوه ایجاد شدنش مفصل تر آشنا میشیم.
پراسس ها چه رفتار هایی رو توی مدت زمان حیاتشون انجام میدن؟!
توی ی حالت کلی به شش حالت و عملکرد تقسیم میشن : ایجاد و ساخته شدن / CREATION : بالاتر گفتیم که با باز و ران کردن ی برنامه، پراسسی ایجاد میشه، اگه بخوایم دقیق تر بیان کنیم، باید گفت ی پراسس زمانی ایجاد میشه که برنامه به حافظه بارگذاری بشه، این مرحله  شامل تخصیص منابع و بلوک کنترل میشه. انتقال بین استیت ها : پراسس ها میتونن حالت های مختلفی داشته و توی این حالت ها جابه‌جا بشن ( درحال ایجاد ، درحالت تخصیص CPU، درحال اجرا توسط CPU، منتظر ی رویداد مثلا ورودی خروجی و یا توی حالت اتمام شده خودشون باشن ). مدیریت منابع : هر پراسسی نیاز به منابعی مثل CPU و یا رم داره، سیستم‌عامل ها توی زمان اجرای پراسس‌ها این منابع رو مدیریت میکنن که از تداخل نداشتن و پیدانکردنشون اطمینان حاصل کنن. زمان‌بندی : سیستم‌عامل واسه اینکه تعیین کنه کدوم پراسس در حال حاظر اجرا بشه از الگوریتم خاصی استفاده و پراسس ها رو صف بندی میکنه. ارتباط بین پراسس‌ها : پراسس ها معمولا نیاز دارن که باهم در ارتباط باشن و با ارتباط باهمدیگه کار میکنن، این ارتباط معمولا از طریق ارسال پیام توی حافظه مشترک انجام میشه. پایان پراسس : توی حالت عادی، وقتی پراسس کار خودش رو تموم میکنه به حالت پایان یافته منتقل میشه و سیستم عامل اقدام به پاکسازی برخی از اجزا مثل حافظه RAM و یا بلوک کنترل پراسس میکنه، البته باید اشاره کنم که همیشه اوضاع به همین خوب و خوشی نیست ممکنه مشکلاتی ایجاد بشه و پراسس تغیر کنه، توی ادامه پست بیشتر آشنا میشیم با این مورد.
هر پراسس چه ویژگی هایی میتونه داشته باشه؟!
هر پراسسی که توسط سیستم‌عامل ایجاد میشه بطور خاص دارای مشخصات خاصیه : استفاده از رم / RAM : هر پراسسی مقداری از رم رو به خودش اختصاص میده که خودش به دو نوع اصلی تقسیم میشه ( استک : واسه ذخیره‌سازی متغیر و داده های محلی، هیپ : واسه ذخیره‌سازی اشیاء و داده‌های داینامیک ) استفاده از سی‌پی‌یو / CPU : هر پراسس به نوبت بسته به نوع و هسته CPU، از CPU استفاده میکنه، توی پست های قبلی با CPUها آشنا شدیم، توی کامپیوتر های جدید هر پراسس با سوئیچینگ با ترتیب از CPU استفاده میکنه. داشتن شناسه پراسس / PID : هر پراسسی واسه شناسایی شدن توی سیستم دارای ی PID یونیکیه.
پراسس ها از نظر وضعیت و مدیریت چند نوع هستن؟!
قبل اینکه حالات پراسس رو بیان کنیم باید با دوتا مسئله آشنا بشیم، یکی پراسس والد و یکی پراسس فرزند : پراسس والد : منظور از پراسس والد همون پراسس اصلی و درواقع اون برنامه‌ایه که اجرا شده پراسس فرزند : وقتی پراسس والد به نوبه‌خودش چندتا پراسس دیگه‌ای رو شروع‌ کنه و انجام بده، به هر یکی از اون پراسس ها به اصطلاح "پراسس فرزند" میگیم، شاید توی نگاه اول یکم پیچیده بیاد ولی اینطور نیست، مثال زیر رو ببینین : فرض کنین همون برنامه VSCODE رو ران کردیم، در اینجا خود برنامه VSCODE به عنوان پراسس والد شناخته میشه و وقتی ی فایل مثلا پایتونی رو داخلش باز میکنیم، پراسس والد ی پراسس فرزند واسه اون فایل پایتونی ایجاد میکنه. توی حالت عادی، پراسس ها رو از نظر وضعیت میتونیم به دو دسته اصلی تقسیم کنیم، پراسس های یتیم و پراسس های زامبی!! : پراسس های یتیم : این پراسس ها وقتی ایجاد میشن که پراسس والد قبل از تموم شدن کارش، تموم میشه، توی همچین موقعیتی معمولا سیستم عامل این پراسس رو به عنوان "INIT" نامگذاری میکنه که کمک مدیریتی ایجاد بشه ( تصور کنین ی کودک وجود داره که باباش تنهاش گذاشته 🐱 ) . پراسس زامبی : وقتی به پراسسی به اصطلاح پراسس زامبی میگیم که کارش تموم شده ولی هنوز اطلاعاتش توسط والد خونده نشده 👀، معمولا به این پراسس، پراسس مرده هم میگن! درکل بدونین که تا وقتی توسط والد خونده نشه موجب مصرف منابعه و توی حالت انتظار قرار داره، پس از این به بعد مراقب باشین که پراسس والد رو KILL نکنین چون ممکنه پراسس های فرزند یا نابود و یا به زامبی تبدیل بشن، شما که ادم‌کُش نیستید نه؟! ( شوخی 😆 )
😎 CodingLovers | #Farshad@CodingLovers_OFF

بسته به نوع سیستم‌عاملتون پراسس‌هایی که شاید تا به‌امروز آگاهی ازشون نداشتید رو ببینید لذت ببرین از فناوری ☺️ ( توی ویندوز با باز کردن تسک‌منیجر و توی لینوکس با کامند هایی نظر TOP و HTOP ) 😎 CodingLovers | #Farshad

💤• روز جدید رو با آشنایی PROCESS شروع‌ کنیم. 😀- پراسس / PROCESS چیه؟!
پراسس به عنوان ی مفهوم کلیدی توی سیستم‌عامل ها، نماینگر فعالیت‌هاییه که توی پس‌زمینه در حال اجرا هستن، وقتی ی برنامه و فعالیت رو شروع میکنین، سیستم‌عامل ی پراسس واسش ایجاد میکنه که این پراسس شامل تمامی موارد موردنیاز اجرا شدن برنامه میشه، مثلا سورس‌کد، داده‌ها، وضعیت اجرایی و.. فرض کنین در حال کار با سیستم هستین و برنامه‌ی VSCODE رو باز و شروع به کد زدن میکنین، وقتی این برنامه رو باز میکنین سیستم عامل ی درخواست مبتنی بر ایجاد پراسس جدید ارسال میکنه و پراسس ایجاد میشه، در ادامه با نحوه ایجاد شدنش مفصل تر آشنا میشیم.
🤨- پراسس ها چه رفتار هایی رو توی مدت زمان حیاتشون انجام میدن؟!
توی ی حالت کلی به شش حالت و عملکرد تقسیم میشن : ایجاد و ساخته شدن / CREATION : بالاتر گفتیم که با باز و ران کردن ی برنامه، پراسسی ایجاد میشه، اگه بخوایم دقیق تر بیان کنیم، باید گفت ی پراسس زمانی ایجاد میشه که برنامه به حافظه بارگذاری بشه، این مرحله  شامل تخصیص منابع و بلوک کنترل میشه. انتقال بین استیت ها : پراسس ها میتونن حالت های مختلفی داشته و توی این حالت ها جابه‌جا بشن ( درحال ایجاد ، درحالت تخصیص CPU، درحال اجرا توسط CPU، منتظر ی رویداد مثلا ورودی خروجی و یا توی حالت اتمام شده خودشون باشن ). مدیریت منابع : هر پراسسی نیاز به منابعی مثل CPU و یا رم داره، سیستم‌عامل ها توی زمان اجرای پراسس‌ها این منابع رو مدیریت میکنن که از تداخل نداشتن و پیدانکردنشون اطمینان حاصل کنن. زمان‌بندی : توی اول این پست اشاره کردم که هر پراسسی به نوبت اجرا میشه، سیستم‌عامل واسه اینکه تعیین کنه کدوم پراسس در حال حاظر اجرا بشه از الگوریتم خاصی استفاده و گراسس ها رو صف بندی میکنه. ارتباط بین پراسس‌ها : پراسس ها معمولا نیاز دارن که باهم در ارتباط باشن و با ارتباط باهمدیگه کار میکنن، این ارتباط معمولا از طریق ارسال پیام توی حافظه مشترک انجام میشه. پایان پراسس : توی حالت عادی، وقتی پراسس کار خودش رو تموم میکنه به حالت پایان یافته منتقل میشه و سیستم عامل اقدام به پاکسازی برخی از اجرا مثل حافظه RAM و یا بلوک کنترل پراسس میکنه، البته باید اشاره کنم که همیشه اوضاع به همین خوب و خوشی نیست ممکنه مشکلاتی ایجاد بیاد و پروسه تغیر کنه، توی ادامه پست بیشتر آشنا میشیم با این مورد.
🤔- هر پراسس چه ویژگی هایی میتونه داشته باشه؟
! هر پراسسی که توسط سیستم‌عامل ایجاد میشه بطور خاص و دارای مشخصات خاصیه : استفاده از رم / RAM : هر پراسسی مقداری از رم رو به خودش اختصاص میده که خودش به دو نوع اصلی تقسیم میشه ( استک : واسه ذخیره‌سازی متغیر و داده های محلی، هیپ : واسه ذخیره‌سازی اشیاء و داده‌های داینامیک ) استفاده از سی‌پی‌یو / CPU : هر پراسس به نوبت بسته به نوع و هسته CPU، از CPU استفاده میکنه، توی پست های قبلی با CPUها آشنا شدیم، توی کامپیوتر های جدید هر پراسس با سوئیچینگ با ترتیب از CPU استفاده میکنه. داشتن شناسه پراسس / PID : هر پراسسی واسه شناسایی شدن توی سیستم دارای ی PID یونیکیه.
🙄- پراسس ها از نظر وضعیت و مدیریت چند نوع هستن؟!
قبل اینکه حالات پراسس رو بیان کنیم باید با دوتا مسئله آشنا بشیم، یکی پراسس والد و یکی پراسس فرزند : پراسس والد : منظور از پراسس والد همون پراسس اصلی و درواقع اون برنامه‌ایه که اجرا شده پراسس فرزند : وقتی پراسس والد به نوبه‌خودش چندتا پراسس دیگه‌ای رو انجام شروع‌ کنه و انجام بده، به هر یکی از اون پراسس ها به اصطلاح "پراسس فرزند" میگیم، شاید توی نگاه اول یکم پیچیده بیاد ولی اینطور نیست، مثال زیر رو ببینین : فرض کنین همون برنامه VSCODE رو ران کردیم، در اینجا خود برنامه VSCODE به عنوان پراسس والد شناخته میشه و وقتی ی فایل مثلا پایتونی رو داخلش باز میکنین، پراسس والد ی پراسس فرزند واسه اون فایل پایتونی ایجاد میکنه. توی حالت عادی، پراسس ها رو از نظر وضعیت میتونیم به دو دسته اصلی تقسیم کنیم، پراسس های یتیم و پراسس های زامبی!! : پراسس های یتیم : این پراسس ها وقتی ایجاد میشن که پراسس والد قبل از تموم شدن کارش، تموم میشه، توی همچین موقعیتی معمولا سیستم عامل این پراسس رو به عنوان "INIT" نامگذاری میکنه که کمک مدیریتی ایجاد بکنه ( تصور کنین ی کودک وجود داره که باباش تنهاش گذاشته 🐱 ) . پراسس زامبی : وقتی به پراسسی به اصطلاح پراسس زامبی میگیم که کارش تموم شده ولی هنوز اطلاعاتش توسط والد خونده نشده 👀، معمولا به این پراسس، پراسس مرده هم میگن! درکل بدونین که تا وقتی توسط والد خونده نشه موجب مصرف منابعه و توی حالت انتظار قرار داره، پس از این به بعد مراقب باشین که پراسس والد رو KILL نکنین چون ممکنه پراسس های فرزند یا نابود و یا به زامبی تبدیل بشن، شما که ادم‌کُش نیستید نه؟! ( شوخی 😆 )