Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Gopher Academy
🔵 عنوان مقاله
Building a Coding Agent in Go from Scratch

🟢 خلاصه مقاله:
این مجموعه سه مطلب عملی برای توسعه‌دهندگان Go را کنار هم می‌گذارد: ساخت یک coding agent از صفر در Go، استفاده از Timing Wheels برای انقضای کارآمد ۱۰ میلیون کلید بدون اسکن‌های O(n)، و مروری دقیق بر sync شامل Mutex، RWMutex، WaitGroup، Once، Cond و Pool. بخش agent بر معماری ماژولار، هماهنگی goroutine و channel، sandbox امن و حلقه بازخورد برای اجرای کد و بهبود تدریجی تأکید دارد. نوشته Bill Kennedy نشان می‌دهد چگونه با سطل‌بندی زمان‌سنج‌ها و حرکت چرخ، سربار و نوسان تأخیر کاهش می‌یابد و حتی در مقیاس بزرگ پایدار می‌ماند. در نهایت، مرور sync توصیه‌های عملی برای انتخاب درست بین primitives و channel، کاهش contention، و ارزیابی با benchmark، pprof و race detector ارائه می‌کند تا سامانه‌های Go هم هوشمند و هم سریع باشند.

#Go #Golang #Concurrency #TimingWheels #sync #SystemsProgramming #GoInternals #Performance

🟣لینک مقاله:
https://golangweekly.com/link/175365/web


👑 @gopher_academy
ایجنت رایگان با گراک 4 !

اخیراً گروک 4 رایگان شده و منم رفتم تستش کنم. ولی توی این مسیر یه حرکت باحال زدم!

اول بگم گروک 4 چیه و چرا باحاله:
- مدل جدید xAI با پنجره زمینه ۲ میلیون توکن
- سرعت پردازش بالا
- رایگان! (الان حداقل اینطوریه)
- برای تحلیل کد و حل مسائل پیچیده عالیه

یه افزونه VS Code به اسم Roo Code پیدا کردم!
( توی کرسر و اینا هم میشه نصبش کرد دیگه )
این افزونه مثل یه agent هوشمند عمل می‌کنه:
- فایل‌هاتو ایندکس می‌کنه و می‌شناسه
- می‌تونی تسک‌های مشخص براش تعریف کنی و انجام بده
- از OpenRouter API پشتیبانی می‌کنه
- می‌تونی از مدل‌های مختلف مثل همون گروک 4 توش استفاده کنی

بهترین بخش اینجاست که Roo Code از OpenRouter API پشتیبانی می‌کنه و گروک 4 هم توش هست.
یعنی می‌تونی توی IDE خودت یه agent هوشمند و رایگان داری که فایل‌هاتو می‌شناسه و می‌تونی براش تسک تعریف کنی!
من تست کردم باحال بود .کار راه بندازه و رایگان بدون محدودیت .

تستش ضرر نداره کامنت کنید اگر حال کردید
https://openrouter.ai/
https://roocode.com/

@DevTwitter | <Ali Arghyani/>
Forwarded from a pessimistic researcher (Kc)
PhD, Master, and Intern in Software Testing @ Monash University
————————————————

توی اعلامیه بیشتر به دکتری اشاره کرده ولی توی لینک در مورد اینترن و مستر هم توضیح داده

🚀 Join My Research Group at Monash Information Technology!

I’m looking for motivated PhD students who are passionate about software testing and debugging — particularly in LLM-aided testing/debugging and testing AI systems.

Learn more about my research here 👉 https://yqtian.com/openings.html

Feel free to contact me via [email protected].
دیگه CSS هم داره میشه زبان برنامه نویسی

آیا می‌دونستید که CSS به تازگی داره قابلیت شرطی‌سازی به سبک زبان‌های برنامه‌نویسی رو به خودش اضافه می‌کنه؟

با معرفی تابع if() در CSS (در نسخه‌های جدید Chrome) می‌تونیم شرایط داخل خود CSS تعریف کنیم، با کمترین نیاز به JavaScript برای تغییر استایل!
این ویژگی، CSS رو بیشتر از همیشه به یک زبان برنامه‌نویسیِ Declarative نزدیک‌تر می‌کنه و این یعنی مجبور نیستیم برای “اگر فلان بود فلان کن” به JavaScript رجوع کنیم، بلکه منطق ساده را مستقیماً در خود CSS بنویسیم.

البته فعلاً پشتیبانی مرورگرها محدود هستش، پس برای پروژه‌های تولیدی باید با احتیاط بهش رجوع کرد.
اگه دوست داری خودت این مثال رو امتحان کن تو کدپن گذاشتم:
https://codepen.io/Ali-Nazari-Uzman/pen/MYKmWxQ

@DevTwitter | <Ali Nazari/>
This media is not supported in your browser
VIEW IN TELEGRAM
مدیرعاملی که بدون هیچ تلاشی احترام را جلب کرد

در گرند پری چین ۲۰۱۸، مارتین براندل، مفسر فرمول یک، پرسید: «آیا انگلیسی صحبت می‌کنید؟» - بدون اینکه متوجه شود با دکتر لیزا سو، مدیرعامل AMD، صحبت می‌کند.

او آرام، خونسرد و با اعتماد به نفس، ثابت کرد که نفوذ واقعی ربطی به ظاهر ندارد - بلکه به بینش، تخصص و قدرت حضور در لحظه مربوط می‌شود.


@code2_ir
Forwarded from Accio
Microrizz | A simple proxy protocol meant to be used on cheap Nodejs application services (works over websocket and webrtc). This is one of my older repos but I find it useful from time to time. You can deploy it on a serverless provider and get a local socks5 proxy with its client
https://github.com/Keivan-sf/microrizz
Forwarded from Gopher Academy
🔵 عنوان مقاله
How to Reproduce and Fix an I/O Data Race with Go and DTrace

🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبه‌رو می‌شود که فقط در CI رخ می‌دهد: یک data race در سطح I/O فایل‌ها که باعث شکست گهگاه تست‌ها می‌شود. چون این رقابت در مرز فایل‌سیستم رخ می‌دهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمی‌دهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد می‌کند: اجرای تکراری تست‌ها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیب‌های نادری که خطا را می‌سازند آشکار شوند. با استفاده از DTrace و رصد فراخوانی‌های سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار می‌شود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.

راهکار با اتمی‌سازی و هماهنگ‌سازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریال‌سازی دسترسی به مسیرهای مشترک. در تست‌ها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنال‌های قطعی به‌جای تأخیرهای زمانی استفاده می‌شود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابت‌های I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.

#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition

🟣لینک مقاله:
https://golangweekly.com/link/175360/web


👑 @gopher_academy
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️لینوکس پیشرفته
⭐️مفهوم Copy-on-Write (COW) در لینوکس

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

🔸به محض این‌که یکی از پردازش ‌ها تلاش کند بخشی از داده را تغییر دهد (Write)، مکانیزم Copy-on-Write (COW) فعال می‌شود.
در این لحظه، کرنل یک کپی مستقل از همان صفحه‌ی حافظه (Memory Page) را فقط برای همان پردازش می‌سازد و سایر پردازه‌ها همچنان به نسخه‌ی اصلی دسترسی دارند.
ربه این ترتیب، عملیات نوشتن باعث می‌شود داده‌ها از حالت اشتراک خارج شوند، در حالی که خواندن همچنان بدون تکرار حافظه انجام می‌شود.

🔸این روش باعث صرفه‌جویی چشمگیر در حافظه می‌شود، به‌ویژه زمانی که چند پردازه از یک برنامه واحد ایجاد شده باشند (مانند فرآیندهای متعدد سرورهای وب یا برنامه‌های چندرشته‌ای).

🔹 درون کرنل لینوکس:
پیاده‌سازی اصلی این رفتار در فایل زیر قرار دارد:
mm/memory.c
در این بخش از کرنل، مکانیزم COW هنگام بروز page fault مدیریت می‌شود.

مشاهده‌ی رفتار حافظه‌ی اشتراکی و صفحه‌های COW

با این ابزارها می‌تونی بفهمی چند صفحه‌ی حافظه واقعاً فیزیکی مشترک است و کجاها COW رخ داده.
نمونه:

pmap -x <PID>


نویسنده: حسین سیلانی.اموزش بیشتر در:
https://learninghive.ir
آپدیت اکستنشن تقویم فارسی در صف انتشار قرار گرفت.
در این آپدیت روز های تقویم رو روی آیکون اکستنشن نشون میدیم و میتونید بدون نیاز به باز کردن اکستنشن عدد روز ها رو مشاهده کنید، این قابلیت در هیچ اکستنشن خارجی ای تابحال وجود نداشته و برای اولین بار در اکستنشن تقویم فارسی ایجاد شده.
قابلیت ها:
- نمایش تمامی مناسبت ها
- قابلیت ایجاد یادداشت و یاددآوری برای روز های دلخواه
- رابط کاربری زیبا و حرفه ای
- باز شدن از طریق منوی ساید بار
- نمایش روز های ماه روی ایکون اکستنشن

لینک اکستنشن

@DevTwitter | <امید زاهدی/>
🔔 انتشار Python 3.14.0
پشتیبانی از حالت Free-Threaded (بدون GIL)
در برنامه‌ای محاسباتی، می‌توانید در چند نخ به صورت واقعی روی چند هسته اجرا شود
پیش‌فرض فعال نیست.هنگام ساخت یا با تنظیمات

رشته‌های Template یا t-strings
مشابه f-strings با امکان کنترل بیشتر و ارزیابی دلخواه در زمان اجرا

ارزیابی تنبلی برای annotationها (Deferred Annotations)
به جای اینکه annotationها بلافاصله در زمان تعریف تابع/کلاس ارزیابی شوند، ذخیره و زمان لازم پردازش میشن

دیباگر خارجی امن (Zero-overhead external debugger interface)
اتصال دیباگر به فرایند Python در حال اجرا بدون افزودن سربار زیاد
باید محیط اجرا اجازه اتصال بدهد

ماژول compression.zstd
پشتیبانی از الگوریتم فشرده‌سازی Zstandard در کتابخانه استاندارد

پشتیبانی از چند مفسر (Multiple Interpreters)
ماژول concurrent.interpreters در کتابخانه استاندارد امکان ایجاد چند مفسر در یک فرآیند

بهبود پیام‌های خطا و پیشنهاد اصلاحات
اگر کد اشتباه بنویسی، گاهی خطا به‌صورت «آیا منظور شما … بود؟» پیشنهاد می‌دهد

@MehrdadLinuxchannel
#Linux #لینوکس
#news
🎯 فول‌استک یعنی چی؟

وقتی از Full-Stack Developer صحبت می‌کنیم، منظور کسیه که هم دنیای Front-End رو بلده، هم Back-End رو — یعنی از طراحی رابط کاربری تا معماری سرور و فضای ابری!

تصویر بالا خیلی خلاصه نشون می‌ده که فول‌استک بودن یعنی تسلط روی مجموعه‌ای از مهارت‌ها:
📐 Layout → ساختاردهی و سازمان‌بندی صفحات وب
💡 Front-End → طراحی و پیاده‌سازی رابط کاربری (UI/UX)
⚙️ Logic → ساخت منطق برنامه و ارتباط بین اجزا
🖥 Server → مدیریت سرور و APIها
🏗 Architecture → طراحی ساختار سیستم و دیتابیس
☁️ Cloud → کار با سرویس‌های ابری و دیپلوی پروژه‌ها
🧠 Knowledge → یادگیری مداوم و درک کلی از چرخه‌ی توسعه
🧪 Testing → اطمینان از عملکرد درست کد و رفع باگ‌ها
🖌 UI/UX → طراحی تجربه و رابط کاربری

به زبان ساده:
یک فول‌استک دیولوپر باید بتونه از طراحی صفحه تا تحویل نهایی اپلیکیشن، همه مراحل رو درک کنه و اجرا کنه.


اگر تازه شروع کردی، پیشنهاد من اینه که اول روی Front-End تمرکز کن و بعد کم‌کم به Back-End و Cloud برو.

📱 @MilwadKhosravi
Please open Telegram to view this post
VIEW IN TELEGRAM
🔔 انتشار نسخه جدید اوبونتو Ubuntu 25.10 🎉
با اسم Questing Quokka

کرنل Linux 6.17
پشتیبانی از سخت‌افزارهای جدید، بهبود در عملکرد و درایورهای گرافیکی

حذف GNOME روی Xorg
گزینه “Ubuntu on Xorg” در صفحه ورود حذف و GNOME بر بستر Wayland

ترمینال جدید: Ptyxis
ترمینال Ptyxis جایگزین GNOME Terminal

تصویرنمای جدید Loupe
‏Loupe به عنوان تصویرنمای پیش‌فرض جایگزین Eye of GNOME

سوئیچ به sudo-rs
جایگزینی نسخه sudo در C، با sudo-rs

استفاده از Dracut برای initramfs
به جای initramfs-tools، از Dracut به عنوان ابزار تولید initial RAM filesystem

بهبود در رمزگذاری کامل دیسک با پشتیبانی TPM
امکان استفاده از TPM برای رمزگذاری کامل دیسک

تغییرات در Coreutils → Rust Coreutils
انتقال اجزای پایه‌ای مانند Coreutils به نسخه‌های نوشته‌شده در Rust

تغییرات دیگر قابل توجه
– حذف ابزار Startup Applications؛ مدیریت برنامه‌های خودکار در بخش Settings
– پشتیبانی RISC-V محدود به شبیه‌ساز QEMU
– تقویت پشتیبانی NVIDIA روی Wayland و بهینه‌سازی تجربه دسکتاپ

@MehrdadLinuxchannel
#Linux #لینوکس
#linux_command
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
Media is too big
VIEW IN TELEGRAM
🚨 ربات Figure 03 معرفی شد

شرکت Figure AI از نسل جدید ربات انسان‌نمای خودش رونمایی کرده — Figure 03.
هدف این ربات فقط نمایش تکنولوژی نیست؛ قراره به‌صورت جدی وارد بازار نیروی کار رباتیک بشه.

🤖 طبق اطلاعات رسمی، Figure 03 طوری طراحی شده که بتونه در محیط‌های کاری واقعی مثل کارخانه‌ها و انبارها، جای انسان‌ها رو بگیره.
این ربات با کمک مدل‌های هوش مصنوعی زبانی (مثل GPT) می‌تونه دستورات انسانی رو درک کنه و خودش تصمیم بگیره چطور اون‌ها رو اجرا کنه.

🔋 مهم‌ترین پیشرفت نسبت به نسل قبلی، باتری جدید F.03 هست:
یک باتری ۲.۳ کیلووات‌ساعتی که تا ۵ ساعت کار مداوم رو ممکن می‌کنه.
شرکت Figure می‌گه هزینه ساخت این باتری نسبت به نسل قبل تا ۷۸٪ کاهش یافته و همین باعث می‌شه Figure 03 اولین رباتی باشه که می‌تونه وارد تولید انبوه بشه.

#️⃣ #news

 
🥷🏻 CHANNEL | GROUP
Forwarded from Gopher Academy
🔵 عنوان مقاله
How Cloudflare Found a Bug in Go's arm64 Compiler

🟢 خلاصه مقاله:
Cloudflare در مقیاسی بسیار بزرگ از Go روی زیرساخت‌های متنوع، به‌ویژه arm64، استفاده می‌کند؛ جایی که خطاهای نادر هم به‌دفعات رخ می‌دهند. آن‌ها با مجموعه‌ای از اختلال‌های پراکنده که فقط در بیلدهای arm64 دیده می‌شد مواجه شدند و با مقایسه میان معماری‌ها، کاناری‌کردن، و ساخت یک نمونه حداقلی، سرنخ‌ها را از منطق برنامه به سمت ابزار ساخت هدایت کردند. ریشه مشکل، یک خطای تولید کد در بخش arm64 کامپایلر Go بود که در شرایط خاص به بدترجمه‌سازی منجر می‌شد. تیم Cloudflare با همکاری تیم Go، مشکل را گزارش، بازتولید و برطرف کرد و پس از انتشار پچ، آن را به‌صورت مرحله‌ای در کل ناوگان اعمال نمود. نتیجه این تجربه: آزمون میان‌معماری، کاناری‌کردن ارتقاهای ابزار، و تقویت مشاهده‌پذیری برای مقابله با خطاهای کم‌شیوع اما پرهزینه در مقیاس بالا حیاتی است.

#Cloudflare #Go #arm64 #Compiler #Bug #ProductionScale #Reliability #OpenSource

🟣لینک مقاله:
https://golangweekly.com/link/175353/web


👑 @gopher_academy
This media is not supported in your browser
VIEW IN TELEGRAM
گوگل مدل Gemini 2.5 Computer Use را با قابلیت کنترل مرورگر معرفی کرد

گوگل از یک مدل تخصصی و جدید به نام Gemini 2.5 Computer Use رونمایی کرد. این هوش مصنوعی می‌تواند مانند انسان واقعی، با کلیک، اسکرول و تایپ‌کردن با وب‌سایت‌ها و رابط‌های کاربری گرافیکی تعامل داشته باشد و کارهای پیچیده‌ای را به‌صورت خودکار انجام دهد.

برخلاف مدل‌های سنتی که به API برای تعامل با نرم‌افزارها نیاز دارند، Gemini 2.5 Computer Use مستقیماً رابط کاربری گرافیکی (GUI) را درک می‌کند: هوش مصنوعی یک اسکرین‌شات از صفحه مرورگر به همراه درخواست کاربر دریافت می‌کند. سپس با استفاده از قابلیت‌های پیشرفته درک بصری خود، صفحه را تحلیل و بهترین اقدام بعدی (مانند کلیک روی یک دکمه یا تایپ در یک فیلد) را تعیین می‌کند. در گام بعدی نیز یک اسکرین‌شات جدید گرفته می‌شود و این حلقه تا زمان تکمیل کامل وظیفه ادامه می‌یابد. این مدل درحال‌حاضر از ۱۳ اقدام اصلی مانند بازکردن مرورگر، تایپ‌کردن، کلیک، اسکرول و Drag and drop پشتیبانی می‌کند.

@DevTwitter | <Digiato | دیجیاتو/>
Forwarded from GitHub Trending Daily
🔥 New GitHub Trending Repositories 🔥

Found 7 new trending repositories:

1. computer-use-preview by google
📝 No description available
💻 Python | 485 | 🌟 Today: 200
🔗 Link

2. winboat by TibixDev
📝 Run Windows apps on 🐧 Linux with seamless integration
💻 TypeScript | 7,566 | 🌟 Today: 864
🔗 Link

3. timelinize by timelinize
📝 Store your data from all your accounts and devices in a single cohesive timeline on your own compute...
💻 Go | 1,951 | 🌟 Today: 227
🔗 Link

4. rustfmt by rust-lang
📝 Format Rust code
💻 Rust | 6,495 | 🌟 Today: 9
🔗 Link

5. Cubyz by PixelGuys
📝 Voxel sandbox game with a large render distance, procedurally generated content and some cool graphi...
💻 Zig | 915 | 🌟 Today: 102
🔗 Link

6. rustdesk by rustdesk
📝 An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer...
💻 Rust | 99,431 | 🌟 Today: 53
🔗 Link

7. winapps by winapps-org
📝 Run Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they we...
💻 Shell | 10,707 | 🌟 Today: 176
🔗 Link


🔘 @github_trending_daily
Forwarded from Linuxor ?
محتوا های ارسالی کاربران.pdf
917.8 KB
لیست محتوا های ارسالی شماها به کانال لینوکسور

هر یه مدت یه بار میام و همچین لیستی درست میکنم حتما اگه چیز خوبی دارید بفرستیدیش.


@Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 اوبونتو 25.10 با نام Questing Quokka منتشر شد.

تغییرات اخیر :

- رابط کاربری و GNOME 49
- ابزارها و زبان‌های برنامه‌نویسی به‌روز
- امنیت و ایمنی حافظه (Memory Safety)
- سیستم امنیتی دیسک و رمزگذاری
- هسته لینوکس و پشتیبانی از مجازی‌سازی تو در تو (Nested Virtualization)
- پشتیبانی از RISC-V با پروفایل RVA23

#لینوکس

@TheRaymondDev
Forwarded from محتوای آزاد سهراب (Sohrab)
دیشب گفتن که بگم چطور کار می‌کنه که اونو الان توضیحاتش رو می‌نویسم.

سیستم‌عامل بلادرنگ مثل یک جور مغز فوق‌منظم برای سخت‌افزاره. فرقش با سیستم‌عامل‌های معمولی اینه که همه چیز براش حول محور زمان و اولویت می‌چرخه. یعنی مهم نیست چند تا کار داره انجام می‌ده، همیشه می‌دونه کدوم کار مهم‌تره و باید دقیقاً الان انجام بشه.

تو یه RTOS، برنامه‌ها به‌جای اینکه مثل یه صف طولانی پشت سر هم اجرا بشن، به شکل تسک (Task) یا ترد (Thread) جدا جدا تعریف می‌شن. هر تسک یه اولویت خاص داره. مثلاً اگه داری با یه ربات کار می‌کنی، تسک مربوط به کنترل موتور باید خیلی سریع‌تر از تسک نمایش چراغ LED اجرا بشه. سیستم‌عامل بلادرنگ اینو می‌فهمه و به کمک یه چیز به اسم Scheduler (زمان‌بند) همیشه تصمیم می‌گیره الان نوبت کدوم تسکه.

زمان‌بند تو RTOS با سیستم‌عامل‌های معمولی خیلی فرق داره. تو سیستم‌هایی مثل لینوکس یا ویندوز، scheduler ممکنه بگه «انشالله از شنبه». ولی سیستم‌عامل بلادرنگ کار امروز رو به فردا نمیسپاره :))))

از نظر RTOS همه چیز باید دقیق و قابل پیش‌بینی باشه. مثلاً می‌دونه این تسک باید هر ۱۰ میلی‌ثانیه یه بار اجرا بشه، و دقیقاً همون‌قدر هم اجراش می‌کنه، نه یه میلی‌ثانیه زودتر، نه دیرتر.

این دقت با چیزی به اسم تایمر سیستم (System Timer) تأمین می‌شه. این تایمر مثل یه ضربان قلب، هر چند میکروثانیه یه بار تیک می‌زنه و به زمان‌بند می‌گه وقتشه چک کنی ببین نوبت کیه. اگه تسک جدیدی با اولویت بالاتر آماده باشه، سیستم تسک فعلی رو قطع می‌کنه و اون یکی رو فوری اجرا می‌کنه. به این می‌گن Preemption، یعنی پیش‌دستی کردن در اجرا. این کار باعث می‌شه تسک‌های مهم هیچ‌وقت منتظر نمونن و بلافاصله اجرا بشن.

یه RTOS همیشه یه سری تسک با وضعیت‌های مشخص داره. بعضی تسک‌ها در حال اجرا هستن (Running)، بعضی‌ها منتظر یه رویداد یا دستورن (Waiting)، بعضی‌ها هم خوابیدن تا یه تایمر تموم بشه (Sleeping). سیستم این وضعیت‌ها رو با سرعت خیلی بالا مدیریت می‌کنه تا هیچ تاخیری پیش نیاد. هر لحظه می‌دونه کدوم تسک آماده‌ست، کدوم منتظره، و کدوم باید الان اجرا بشه.

یه بخش خیلی مهم دیگه تو RTOS، وقفه‌ها (Interrupts) هستن. وقتی یه سخت‌افزار مثل یه سنسور یا پورت سریال یه سیگنال می‌فرسته، RTOS اون سیگنال رو نادیده نمی‌گیره یا نمی‌ذاره در نوبت بمونه. بلافاصله می‌ره سراغش، چون ممکنه اون اتفاق حیاتی باشه. برای همین تو RTOS، مدیریت وقفه‌ها فوق‌العاده دقیق و با اولویت بالا انجام می‌شه. حتی ممکنه یه وقفه، یه تسک در حال اجرا رو قطع کنه و خودش رو اجرا کنه، بعد دوباره برگرده به همون تسک قبلی.

توی یه RTOS همه چیز بر پایه‌ی قطعیت و پیش‌بینی‌پذیری ساخته شده. زمان اجرای هر تسک معلومه، اولویت‌ها ثابته، وقفه‌ها سریع جواب داده می‌شن و هیچ چیز تصادفی نیست. به همین خاطر می‌تونی مطمئن باشی که وقتی گفتی "موتور رو بعد از ۵ میلی‌ثانیه خاموش کن"، دقیقاً بعد از همون ۵ میلی‌ثانیه خاموش می‌شه، نه بیشتر، نه کمتر. این دقت همون چیزیه که RTOS رو برای سیستم‌های بحرانی مثل هواپیما، دستگاه‌های پزشکی، خودروها، و ربات‌ها ضروری می‌کنه.


@SohrabContents
Forwarded from محتوای آزاد سهراب (Sohrab)
و اگر هم کسی علاقه‌ این رو داره که کرنل لینوکس رو به صورت بلادرنگ امتحان کنه، این مقاله‌ها رو مطالعه کنه:

https://medium.com/@patdhlk/realtime-linux-e97628b51d5d


https://wiki.archlinux.org/title/Realtime_kernel


البته بخش ویکی آرچ یکمی قدیمی شده.


@SohrabContents