TGViewer
Channel Public Channel
Univerbity

Univerbity

@univerbity

The Universe of Bits!
Contact : @farzadoxo
Subscribers
362
Photos
94
Videos
1
Links
19
Recent Posts 20 shown
Post #286 77

Forwarded from CS12 Consortium

سیستم عامل به سبکِ تِرِد فصل پراسس ها قسمت پایانی 🔥

با کمی تاخیر منتشر شد 🎉 (مطالعه کنید)

نویسنده این کورس : @Univerbity
این کورس بخشی از پروژه NTB در کامیونیتی کامپیوتر ساینس CS12  هست اگر دوست داشتید میتونید عضوی از جامعه CS12 باشید.
@cbe_archive

@ccismywife

#os_cs12
سیستم عامل به سبک تِرِد جا به جایی بین پراسس ها تو این ترد با مفهوم context swtich آشنا میشیم
  • ❤ 4
Post #285 271
همونطور که گفتیم اولین مرحله کامپایل(C) Preprocessing هستش.
این مرحله توسط پری پراسسور (Preprocessor) انجام میشه ✏️

این مرحله قبل از اینکه کد به مرحله کامپایل، اسمبلینگ و در نهایت تبدیل (اسمبلی یا ماشین کد) برسه میاد و کد رو دستکاری میکنه.

ما یه سری preprocessor directive توی C داریم که حین نوشتن برنامه استفاده میشن. این دایرکتیو ها با # شروع میشن و یه جورایی دستوراتی به پری پراسسور هستن!

#define AGE 15

printf("%d\n", AGE);

اینحا پری پراسسور میاد و به جای AGE توی تابع پرینت مستقیما مقدار 15 رو قرار میده و کد رو به این تغییر میده.
به طور فنی توکن AGE رو با توکن 15 جایگزین میکنه:
printf("%d\n", 15);

یا مثلا دایرکتیو include# برای قرار دادن هدر فایل های دیگه (مثل عمل ایمپورت کردن پایتون) توی فایل کدمون هست.
البته که ایمپورت توی پایتون مثال خوبی نیست ولی خب برای افرادی که C بلد نیستن سرنخ خوبیه.

این رو هم بگم که دقیقا محتوای هدر فایل رو کپی پیست نمیکنه و این وسط implimentation هم تاثیر داره.
(حالا توش دیپ تر میشم بیشتر مینویسم :)  )
  • 🔥 7
Post #284 303
چند وقتیه دارم کتاب Pointers on C رو میخونم.
در حین خوندن کانسپت های مهم و عمیق رو هایلایت میکنم و نوت میذارم 📝
اگر علاقه مند هستید میتونید ایمیلتون رو کامنت کنید (یا پیوی بفرستید) تا کتاب رو براتون توی google drive شیر (share) کنم و با هم بخونیمش :)
(نوت ها و هایلایت ها هم توی شیر میاد) 📚
  • ❤ 13
  • 🔥 1
Post #283 344
دیروز به یه چیز خیلی باحالی برخوردم ✨

میخواستم یه پروژه ای رو بیارم بالا و تستش کنم. پروژه داکر بود و وقتی زدم که اجرا شه یه خطای عجیبی داد مبتنی بر اینکه کرنل ماژول veth پیدا نشد و نمیتونه لودش کنه :/
با lsmod متوجه شدم که ماژول لود نیست و سعی کردم با modprobe، دستی لودش کنم و دیدم که داره خطا میده و میگه:
FATAL: Module veth not found in directory /lib/modules/7.2.3-arch1-3 😐
بعد از سرچ و تحقیق متوجه یه چیز خیلی بامزه و ایراد کارم شدم.

من قبل از اینکه پروژه رو ران کنم زده بودم سیستم اپدیت شه (sudo pacman -Syu)
ولی reboot نکرده بودم!!

همونطور که میدونید وقتی کرنل، ماژول هاش و کلا پکیج های سیستم اپدیت شه دیتای روی دیسک بروز میشه و چیزایی که توی رم لود شده هیچ تغییری نمیکنن. از طرفی کرنل مثل برنامه های عادی نیست که اصطلاحا terminate بشه و کرنل جدید بیاد بالا، پس همونطور به کارش ادامه میده تا سیستم ریبوت شه.

حالا اینجا کرنل اپدیت شده بود.
داکر از کرنل میخاست که براش عملیات شبکه انجام بده و کرنل هم میومد veth رو لود کنه منتها از اون جایی که کرنل اپدیت داده بود و مسیر فایل های ماژول هاش روی دیسک تغییر کرده بود نمیتونستت لود کنه.

کرنل قدیمی همچنان تلاش میکرد نسخه قدیمی veth رو لود کنه (بر اساس kernelrelease دنبال ماژول تو مسیر مربوط به همون کرنل میگرده) در صورتی که اصلا همچین فایلی توی سیستم وجود نداشت 💾

مثلا فرض کن ماژول اپدیت شده تو مسیر زیر باشه:
/lib/modules/7.2.4-arch1-3

اینجا چون کرنل توی رم هنوز کرنل قدیمیه سعی میکنه ماژول veth رو از مسیر زیر بخونه:
/lib/modules/7.2.3-arch1-3

منطقا دیتا های اپدیت شده توی دیسک تغییر کردن و این مسیر دیگه معتبر نیست و اینجاست که کرنل نمیتونه ماژول رو لود کنه و خطا رو رولبک میکنه سمت داکر 🐳
  • 🔥 8
Post #282 239

Forwarded from CS12 Consortium

سیستم عامل به سبکِ تِرِد فصل دوم قسمت اول 🔥

با کمی تاخیر منتشر شد 🎉 (مطالعه کنید)

نویسنده این کورس : @Univerbity
این کورس بخشی از پروژه NTB در کامیونیتی کامپیوتر ساینس CS12  هست اگر دوست داشتید میتونید عضوی از جامعه CS12 باشید.
@cbe_archive

@ccismywife

#os_cs12
سیستم عامل به سبک تِرِد پراسس چیه؟ تو این ترد با مفهوم پراسس ها آشنا میشیم
  • 🔥 4
Post #281 485
همه معمولا کامپایل شدن یه کد (C) رو در یک مرحله واحد میبینن. در صورتی که کامپایل از چندین لایه تشکیل شده 🗒

1⃣ اولین مرحله برای کامپایل Preprocessor نام داره.
تو این مرحله کد نوشته قبل از کامپایل به Preprocessor سپرده میشه تا تغییرات قبل از کامپایل روش اجرا بشه.  این تغییرات شامل جایگذاری و اعمال تغییرات روی کد توسط preprocessor directive هاست (دستور هایی که با # شروع میشن). مثل جایگذاری define# ها یا بررسی if# و...
یه جورایی کد رو قبل از پردازش و کامپایل برای کامپایلر آماده میکنه.

2⃣ مرحله دوم Compilation هستش!
کامپایلر کد به اصطلاح preprocessing شده رو میگیره و به اسمبلی (Assembly) تبدیل میکنه. تو این مرحله بررسی syntax،type cheking، optimization،semantic analysis انجام میشه و در نهایت کد به اسمبلی کامپایل میشه.

3⃣ این مرحله Assembling نام داره.
اینجا کد اسمبلی که توی مرحله قبل ساخته شده به Assembler داده میشه تا به Machine code تبدیل بشه.
خروجی این پردازش میشه چیزی به نام Object file که داخلش ماشین کد، symbol ها و ... وجود داره.
اما هنوز قابل اجرا یا executable نیست.

4⃣ این مرحله Linking نام داره.
که با Linker انجام میشه.
فرض کن توی کدمون از تابع printf استفاده کرده باشیم. اینجا ما کد خودمون رو داریم و implementation مربوط به printf رو نداریم که!
اینجا لینکر میاد وسط و reference های unresolved رو به implementation مربوط متصل میکنه.
حالا لینکر میاد و همه این قطعات رو میذاره کنار هم و یه فایل executable میسازه که قابل اجرا هستش.

ابزار هایی مثل gcc فقط کامپایل نمیکنن بلکه همه این مراحل رو برای کامپایل کردن طی میکنن! 🍉

(توی پست های بعدی در رابطه با همه این موارد بیشتر توضیح خواهم داد (مخصوصا preprocessor)) 💯
  • 🔥 6
  • ❤ 3
Post #280 323
Farhan T-byte مشکل کار پیدا کردن در عصر هوش مصنوعی به یک معضل برای برنامه نویسان و حتی تازه‌کاران تبدیل شده DevChan راه حل این مشکل هست چیزی که 3 ماه گذشته رو داشتیم روش کار میکردیم اونم با تیمی 3 نفره... این صفحه اصلی DevChan در لینکدین هست و میتونید به این صفحه برید…
درود به همگی 🌹

این مدت درگیر توسعه دوچن بودم و خیلی سرم شلوغ بود.
کم کم داریم به انتشار نسخه اول دوچن نزدیک میشیم و به همین سبب سرمم خلوت تر میشه (شایدم نشه🤷‍♂) ولی خب عذرم رو بپذیرید به خاطر کم فعالیتی ♥️
از طرفی یادگیری C رو هم قراره خیلی جدی تر پی بگیرم و قراره کلی پستای جالب بزارم :)
  • ❤ 11
Post #279 245

Forwarded from Farhan T-byte

مشکل کار پیدا کردن در عصر هوش مصنوعی به یک معضل برای برنامه نویسان و حتی تازه‌کاران تبدیل شده DevChan راه حل این مشکل هست چیزی که 3 ماه گذشته رو داشتیم روش کار میکردیم اونم با تیمی 3 نفره... این صفحه اصلی DevChan در لینکدین هست و میتونید به این صفحه برید و اگر دوست داشتید در پیش ثبت نام این سرویس ثبت نام کنید...

@devchan_ir
Linkedin DevChan | LinkedIn DevChan | 54 followers on LinkedIn. DevChan a software that makes the future easy for devs... | درود به دِوچَنی های عزیز، دِوچَن یک نرم افزار، کامیونیتی یا حتی شبکه اجتماعی نیست، یک فرهنگ و یک راه حل برای مشکل بزرگ کار پیدا نکردن در عصر هوش مصنوعی هست، یکی…
  • 🔥 8
  • ❤ 1
Post #278 310

Forwarded from devChan Channel

به نسخه اولیه devChan نزدیک میشیم...

به زودی برنامه و نحوه پیشبرد devChan رو باهاتون به اشتراک میزاریم.

@devchangap | @devchan_ir
  • ❤ 7
Post #277 436

Forwarded from CS12 Consortium

داریم میرسیم به شروع رویداد ها

رویداد پیش رو با موضوع سیستم عامل، در تهران اجرا خواهد شد.

@cbe_archive
@ccismywife
  • 🔥 7
Post #276 598
تو پست قبلی قرار شد درباره یکی از مشکلات branch predictor، سایکل و پایپلاین ها صحبت بنویسم.
این روزا شدیدا درگیر توسعه Devchan هستم واسه همین خیلی وقت نمیکنم چیزی بنویسم 🙂

کد زیر رو در نظر بگیرید:
if(x < array_size)
{
    value= array[x];
}

سی پی یو نمیخاد منتظر بمونه که نتیجه x < array_size بیاد برای همین نتیجه رو حدس میزنه (true) و وارد بدنه شرط میشه. اینجا عملا دیتای array[x] رو خونده.
حالا نتیجه اومد و دست بر قضا نتیجه false بوده. حالا سی پی یو فهمیده اشتباه کرده و دیتایی که خونده رو اصطلاحا rollback میکنه.
اما معمولا همیشه همه چی صد در صد رول بک نمیشه، مخصوصا اثراتی که روی Cache مونده. 🧹
اینجا مهاجم میتونه با Cache timingattack میتونه به دیتا دسترسی داشته باشه.

سایکل ها (Cycles) ها توی سی پی یو مثل واحد زمانی عمل میکنن.
این سایکل ها مثل ضربان قلب یا ساعت کار میکنن. بهتر بگم هر سایکل از سی پی یو مثل یه تیک تیک ساعت میمونه. 🫀
سی پی یو باید کلی کار انجام بده و هر کدوم این کار ها مدتی زمان میبرن.
البته این به معنی نیست که هر کار = یه سایکل
بلکه هر کار میتونه چند سایکل طول بکشه.
مثلا اگر یه CPU داشته باشی که فرکانس اجراییش 3GHz باشه ینی 3,000,000,000 تا سایکل در یک ثانیه میزنه، که هر سایکل میشه تقریبا 0.33 نانوثانیه.⏰

اگر پایپلاین نداشته باشیم سی پی یو مجبوره هر پروسه رو کامل انجام بده. ینی اگر مثلا دو تا پروسه P1 و P2 رو داریم.
اگر پایپلاین نباشه پردازنده فقط میتونه فقط اینستراکشن های P1 رو اجرا کنه و P2 باید منتظر بمونه.
پایپلاین کمک میکنه سی پی یو پروسه رو به چند مرحله تقسیم کنه و توی سایکل های مختلف پخشش میکنه تا اجرای پروسه ها همزمان باشه.

یکم تو هم تو هم نوشتم ولی خب :)
  • 🔥 8
  • ❤ 2
Post #274 509

Forwarded from CS12 Consortium

سیستم عامل به سبکِ تِرِد قسمت پایانی فصل اول 🥳

منتشر شد 🎉 (مطالعه کنید)

نویسنده این کورس : @Univerbity
این کورس بخشی از پروژه NTB در کامیونیتی کامپیوتر ساینس CS12  هست اگر دوست داشتید میتونید عضوی از جامعه CS12 باشید.
@cbe_archive

@ccismywife

#os_cs12
سیستم عامل به سبک تِرِد دسترسی مستقیم به مموری تو این ترد با DMA یا Direct memory access آشنا میشیم.
  • 🔥 3
  • ❤ 1
Post #273 397

Forwarded from devChan Channel

درود و صبح بخیر، devChan در حال توسعه هست و از دوستانی که در پیش ثبت نام اولیه این پلتفرم، ثبت نام کردند بسیار ممنونیم، پیام‌ها و انگیزه‌نامتون رو خوندیم؛ خیلی خوشحالیم که چنین افرادی در کامیونیتی ما حضور دارند...

چیزی تا بالا اومدن ورژن اول و رونمایی از این سرویس نمونده🫡❤️‍🔥

در صورتی که دوست داشتید میتونید از طریق این لینک با ما در ارتباط باشید.

در نهایت :
هوش مصنوعی و Ai می‌تونه بهت کمک کنه بسازی؛ DevChan کمک می‌کنه ثابت کنی واقعاً می‌فهمی چی ساختی.

عضویت در گپ devChan
  • 🔥 6
Post #272 554
یه چیز خیلی باحال پیدا کردم به نام Branch Predictor!

اولش که پیداش کردم فک کردم چرته و حقیقت نداره ولی بعد از تحقیقات متوجه شدم که کاملا واقعیه 🤯

قضیه از این قراره که CPU قبل از اینکه بفهمه به چه مسیری باید بره شروع به اجرای اون کرده باشه!
کد زیر رو در نظر بگیرید:
if(x < 10)
{
    A();
}
else
{
    B();
}

پردازنده نمیخاد منتظر بمونه که بفهمه باید کدوم مسیر رو بره. چون اینجا pipeline خالی میمونه و کلی سایکل بیکار میمونه.
پس Branch predictor حدس میزنه برای مثال احتمالا سرط True میشه. و Cpu شروع میکنه دستورات A رو به صورت especulative execution (جلو جلو اجرا کردن) اجرا کردن در صورتی که مطمئن نیست مسیری که انتخاب کرده درست هست یا نه!

حالا نتیجه مشخص میشه که ایا شرط True بوده یا نه. اگر درست بود که نتیجه کار حفظ میشه اگرم نبود CPU خروجی تولید شده رو دور میریزه (اصطلاحا pipeline flush میکنه) و مسیر درست رو اجرا میکنه!

شاید بپرسی چرا این کار رو انجام میده؟
چون CPU های مدرن خیلی pipeline های عمیقی دارن. اگر هر بار بخوان برای فهمیدن نتیجه یه برنچ صبر کنن pipeline خالی میمونه و کلی cycle هدر میره.

یکی از دلایلی که پردازنده های امروزی انقد سریعن و روز به روز هم سریعتر میشن همین روش های عجیب غریبه😭😂
(Branch predictor یکی از این روش هاست)


البته این غلط حدس زدنه هم یه ایرادی داره که توی پست بعدی میگمش.
یادم باشه درباره pipeline و cycle هم بنویسم!
  • 🔥 12
  • 🤯 2
Post #271 578
به احتمال زیاد اسم Context Switch به گوشتون خورده. توی سیستم عامل وقتی CPU از یه برنامه به یه برنامه دیگه اختصاص داده میشه (سویچ میکنه) میگن Context Switch اتفاق افتاده.

تو کتاب استالینگز به این عمل به جای context switch میگن Process switch! 📚
برای منم اینجوری جا افتاده بود که Cpu داره بین پراسس ها سویچ میکنه در صورتی که به طور فنی پراسس چیزی جز یه موجودیت و یه سری دیتا نیست.

بخش زنده داخل Process ها Thread ها هستن. ترد ها جریانی از Instruction set (مجموعه ای از دستورالعمل ها) ها هستن که توسط Cpu پردازش میشن. 💡
در واقع پردازنده یه جورایی داره Thread ها رو پردازش میکنه (دستورالعمل هاشونو) و سر و کارش با Thread ها هستش نه Process ها.
این عمل سویچینگ هم بین Thread ها اتفاق میوفته. ینی عملیات Context switch روی ترد ها اتفاق میوفته!

این رو هم بگم که دو نوع Context switch داریم:

- Thread Context Switch:
این نوع سویچینگ ینی Cpu بین ترد های یه پراسس سویچ کنه‌. برای مثال اگر ترد 1 از P1 داره اجرا میشه سویچ کنه به مثلا ترد 2 از همون پراسس یعنی P1!

- Process Context Switch:
این نوع سویچینگ هم ینی Cpu از ترد یه پراسس یه ترد یه پراسس دیگه سویچ کنه!
برای مثال پردازنده از ترد 5 از پراسس P5 سویچ میکنه به ترد 2 از پراسس P99!

این رو هم بگم که TCS (Thread Context Switch) خیلی از PCS سریع تره چون ترد های سویچ شده داخل یه پراسس هستن و اینجا دیتای پراسس در حال اجرا یکسانه و از طرفی آدرس فضای مموری هم یکسانه ولی تو PCS اینا کلا متفاوتن و باید همشون مجددا Load شن!💾


بعضی وقتا یه سری چیزای همینقدر بدیهی و مشخص رو اشتباها یاد میگیریم و خیلی راحت این دانش غلط رو منتقل میکنیم و این چرخه ادامه پیدا میکنه!🙂
  • 🔥 10
Post #270 399
devChan Channel پلتفرم DevChan این روزا همه‌جا پر شده از پروژه‌هایی که با چندتا پرامپت به AI ساخته شدن، بدون این‌که سازنده‌شون واقعاً بفهمه زیرش چی می‌گذره. به این نوع محتوا و پروژه‌ها میگن slop؛ چیزی که سریع تولید شده، شبیه محصول واقعیه، ولی پشتش درک، تلاش و فکر نیست. حجمش…
دِوچن (DevChan) پلتفرمیه که توسط یه تیم سه نفره متشکل از من و دو نفر دیگه از اعضای کامیونیتی CS12 راه اندازی شده.

هدف دِوچن ایجاد یه بستر برای پرزنت پروژه های نرم افزاری هستش.
پروژه هایی که نه فقط به قصد تولید یک محصول بلکه یادگیری و مهندسی ایجاد میشن! بر خلاف اکثر پروژه هایی که امروزه طی چند ساعت و چند تا پرامپت میان بالا و فقط کار میکنن.

توی DevChan ما فقط پروژه هامونو پرزنت نمیکنیم بلکه مسیر ایجادشون، چالش های موجود و نوآوری هایی که خلق کردیم رو به نمایش میگذاریم و هم تیمی (همکار، bro یا هر چی که خودتون بهش میگید) که علاقه داره روی پروژه مشارکت داشته باشه پیدا میکنیم!

در حال حاضر پلتفرم در حال توسعه هستش ولی میتونید پیش ثبت نام انجام بدید و جزوی از افرادی باشید که با دعوت نامه به DevChan می پیوندن :)
  • ❤ 9
Post #269 344

Forwarded from devChan Channel

پلتفرم DevChan

این روزا همه‌جا پر شده از پروژه‌هایی که با چندتا پرامپت به AI ساخته شدن، بدون این‌که سازنده‌شون واقعاً بفهمه زیرش چی می‌گذره. به این نوع محتوا و پروژه‌ها میگن slop؛ چیزی که سریع تولید شده، شبیه محصول واقعیه، ولی پشتش درک، تلاش و فکر نیست. حجمش هم هر روز بیشتر میشه؛ فیدها، گیت‌هاب، حتی کامیونیتی‌های برنامه‌نویسی هم دارن پر میشن از این جنس چیزا.

DevChan دقیقاً واکنش به همینه.

یه پلتفرم و کامیونیتی که توش پروژه رو init می‌کنی و به‌جای اینکه فقط نتیجه‌ی نهایی رو نشون بدی، مسیر ساختنش رو قدم‌به‌قدم می‌نویسی؛ تصمیم‌ها، مشکلات، چیزایی که یاد گرفتی. بعد دنبال یه "bro" می‌گردی؛ کسی که همین مسیر رو دنبال می‌کنه، باهات بحث می‌کنه، و شاید حتی کنارت بسازه.

اهمیتش اینجاست که وقتی توی همچین جایی باشی، مجبور میشی واقعاً بفهمی چی داری می‌سازی، نه اینکه فقط چیزی رو تحویل بدی که کار می‌کنه ولی خودتم نمی‌دونی چرا کار می‌کنه. و وقتی آدمای دیگه‌ای هم هستن که همین ارزش رو دارن، این مسیر خیلی راحت‌تر و باکیفیت‌تر طی میشه؛ چون کسی هست که سوال درست بپرسه، نقد کنه، یا صرفاً بفهمه چی داری میگی.

پیش ثبت‌نام باز شده، اگه این نگاه به ساختن نرم‌افزار برات مهمه:

https://devchan-pre-registration.vercel.app/


channel => @devchan_ir
gap::community => @devchangap
  • 🔥 3
Post #268 462
CS12 Consortium سیستم عامل به سبکِ تِرِد قسمت 1 منتشر شد (مطالعه کنید) نویسنده این کورس : @Univerbity این کورس بخشی از پروژه NTB در کامیونیتی کامپیوتر ساینتفیک CS12 هست اگر دوست داشتید میتونید عضوی از جامعه CS12 باشید. @cbe_archive @ccismywife #os_cs12
این همون پروژه ایه که گفتم با بچه های CS12 دارم پیش میبرم :)

یه سیستم آموزشی مدرن (Learn with Threads) که این اجازه رو میده مباحث مختلف رو به صورت متنی یاد بگیرید. بدون اینکه مثل سایر منابع و متود های آموزشی مطالب خیلی خشک یا خسته کننده باشن!

خیلی خوشحالم که همچین زمینه ای فراهم شده و من هم جزوی از این پروژه هستم :)

- موفق باشین :) 🎄
  • 🔥 16
  • ❤ 1
Post #266 420

Forwarded from CS12 Consortium

سیستم عامل به سبکِ تِرِد قسمت 1

منتشر شد (مطالعه کنید)

نویسنده این کورس : @Univerbity

این کورس بخشی از پروژه NTB در کامیونیتی کامپیوتر ساینتفیک CS12 هست اگر دوست داشتید میتونید عضوی از جامعه CS12 باشید.
@cbe_archive
@ccismywife

#os_cs12
  • ❤ 9
  • 🔥 1
Older posts →

About this channel

How can I read @univerbity without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Univerbity: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Univerbity have?
Univerbity (@univerbity) has 362 subscribers on Telegram, refreshed roughly every 30 minutes.
Does Univerbity know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →