آموزش پروژه سیستم سی - نوشتن جمع‌آوری‌کننده زباله از ابتدا - آخرین آپدیت

دانلود System C Project - Write a Garbage Collector from Scratch

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

آموزش پروژه محور: ساخت ابزار تشخیص نشتی حافظه (Memory Leak Detector) در C/C++

این دوره آموزشی به شما امکان می‌دهد تا با برنامه‌نویسی سیستم عامل و مدیریت حافظه در زبان‌های C و C++ به صورت عملی آشنا شوید. هدف اصلی این پروژه، توسعه یک ابزار قدرتمند برای تشخیص نشتی حافظه (Heap Memory Leak detection tool) است.

چرا این دوره برای شما مفید است؟

اگر به دنبال ارتقای مهارت‌های خود در زمینه برنامه‌نویسی سیستمی لینوکس و ویندوز هستید و می‌خواهید درک عمیق‌تری از نحوه عملکرد مدیریت حافظه در سیستم‌عامل‌ها به دست آورید، این دوره دقیقا برای شما طراحی شده است.

سوالات چالش‌برانگیز مصاحبه‌های آمازون و گوگل:

  • چگونه یک جمع‌آوری‌کننده زباله (Garbage Collector) برای برنامه‌های C طراحی می‌کنید؟
  • اگر طراحی جمع‌آوری‌کننده زباله به این سادگی است، چرا قبلاً با زبان C ادغام نشده است؟

پاسخ این سوالات و بسیاری دیگر را در این دوره خواهید یافت!

ساخت کتابخانه تشخیص نشتی حافظه

در این پروژه، شما گام به گام نحوه طراحی و پیاده‌سازی یک کتابخانه جمع‌آوری زباله (Garbage Collector Library) به نام MLD (Memory Leak Detector) را خواهید آموخت. با ادغام این کتابخانه در برنامه‌های خود، قادر خواهید بود اشیاء دارای نشتی حافظه را شناسایی و گزارش دهید.

MLD یک کتابخانه عمومی خواهد بود که توانایی تجزیه و تحلیل و دستکاری ساختارهای داده‌ای هر برنامه‌ای را داراست.

فازهای اصلی پروژه:

این پروژه در 3 فاز کلیدی به صورت کامل توضیح داده شده است.

نکات مهم:

  • این دوره نیازمند قدرت تحلیل کمی است. دانشجویان مبتدی نیز می‌توانند با یادگیری چگونگی ایجاد برنامه‌ای که قادر به تجزیه و تحلیل اشیاء و ساختارهای خود باشد، چیزهای زیادی بیاموزند. این تکنیک در پروژه‌های متعدد دیگری از جمله تشخیص نشتی حافظه کاربرد دارد.
  • پیشنهاد: دانشجویانی که به دنبال آموزش گام به گام و "تغذیه با قاشق" هستند، لطفا از ثبت نام در دوره‌های پروژه محور خودداری کنند.

ویژگی‌های کلیدی دوره:

  • از زمان ظهور زبان‌های برنامه‌نویسی C/C++، مدیریت حافظه یکی از مسئولیت‌های اساسی توسعه‌دهندگان بوده است.
  • نرم‌افزارهای C/C++ اغلب با دو مشکل اساسی مرتبط با حافظه مواجه می‌شوند:
    • خرابی حافظه (Memory Corruption)
    • نشتی حافظه (Memory Leak)
  • برخلاف زبان‌هایی مانند جاوا، C/C++ از مزیت جمع‌آوری خودکار زباله بهره‌مند نیستند.
  • جاوا به برنامه‌نویسان اجازه دسترسی مستقیم به حافظه فیزیکی را نمی‌دهد و همچنین اشاره‌گرها را مستقیماً در معرض دید توسعه‌دهنده قرار نمی‌دهد. به همین دلیل، برنامه‌های جاوا با مشکل خرابی حافظه مواجه نمی‌شوند، اما C/C++ اینگونه نیستند.
  • در این دوره، ما یک ابزار تشخیص نشتی حافظه (Memory Leak Detector) برای برنامه‌های C طراحی و پیاده‌سازی خواهیم کرد که به راحتی برای C++ نیز قابل توسعه است.

رزومه سازی حرفه‌ای:

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

عنوان: "طراحی و پیاده‌سازی جمع‌آوری‌کننده زباله شبیه جاوا برای برنامه‌های C"

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

پیش‌نیازها:

  • دانش قوی در برنامه‌نویسی C و مفاهیم اشاره‌گرها.
  • دانش مقدماتی در زمینه مدیریت حافظه سیستم‌عامل.

کلمات کلیدی سئو: برنامه‌نویسی سیستم لینوکس، برنامه‌نویسی سیستم ویندوز، پروژه C، ابزار تشخیص نشتی حافظه، سیستم عامل، مدیریت حافظه، توسعه کتابخانه C/C++، ادغام کتابخانه با برنامه، ردیابی اشیاء malloc شده، طراحی Garbage Collector، C++, Memory Leak, Heap Memory, Operating System, Memory Management, System Programming.


سرفصل ها و درس ها

مقدمه Introduction

  • این دوره درباره چیست؟ What is this Course About ?

  • پیوستن به گروه تلگرام Join Telegram Group

  • پیش‌نیازهای دوره Course Pre-requistes

معرفی پروژه MLD Introduction to the MLD Project

  • پروژه MLD چیست؟ What is MLD Project ?

  • نمودار بلوکی و معماری پروژه Project Block Diagram and Architecture

  • فازهای توسعه پروژه Project Development Phases

فاز ۱: پایگاه داده ساختار MLD Phase 1 : MLD Structure Database

  • اهداف فاز ۱ Phase 1 Goals

  • ثبت ساختار Structure Registration

  • مدل‌سازی پایگاه داده ساختار Modelling Structure Database

  • مثال ثبت ساختار Structure Registration Example

  • مهارت‌های C خود را بیازمایید Test your C Skills

  • بررسی کد بخش ۱ Code Walk Part 1

  • بررسی کد بخش ۲ Code Walk Part 2

  • نمایش فاز ۱ پروژه Project Phase 1 Demonstration

  • خلاصه Summary

  • تکلیف Assignment

فاز ۲: پایگاه داده اشیاء MLD Phase 2 : MLD Object Database

  • اهداف فاز ۲ Phase 2 Goals

  • مدل‌سازی پایگاه داده اشیاء Object Database Modelling

  • مثال پایگاه داده اشیاء و Xcalloc Object DB and Xcalloc example

  • بررسی کد - نمایش Code Walk - Demo

  • خلاصه Summary

  • تمرین کدنویسی Coding Exercise

فاز ۳: الگوریتم تشخیص نشت حافظه Phase 3 : Memory Leak Detection Algorithm

  • اهداف فاز ۳ Phase 3 Goals

  • مجموعه مجزای گراف‌ها Disjoint set of graphs

  • اشیاء قابل دسترسی و نشت کرده Reachable and Leaked Objects

  • گراف‌های جهت‌دار دوره‌ای Directed Cyclic Graphs

  • مدیریت اشیاء ریشه Root Objects Management

  • APIهای مدیریت اشیاء ریشه - بررسی کد Root Objects Mgmt APIs - Code Walk

  • الگوریتم MLD - آماده شدن MLD Algorithm - Getting Ready

  • الگوریتم MLD در عمل MLD Algorithm In Action

  • بحث الگوریتم MLD - سطح ۱ MLD Algorithm Discussion - Level 1

  • بحث الگوریتم MLD - سطح ۲ MLD Algorithm Discussion - Level 2

  • بهبود - پشتیبانی از اشیاء اولیه Enhancement - Support for Primitive Objects

  • نمایش نهایی! Final Demo !

  • تکلیف Assignment

تحلیل کلی پروژه Overall Analysis of the Project

  • تحلیل پروژه Project Analysis

  • محدودیت کتابخانه MLD - مورد ۱ MLD Library Limitation - Case 1

  • محدودیت کتابخانه MLD - مورد ۲ MLD Library Limitation - Case 2

  • محدودیت کتابخانه MLD - مورد ۳ MLD Library Limitation - Case 3

  • محدودیت کتابخانه MLD - مورد ۴ MLD Library Limitation - Case 4

  • نتیجه‌گیری Conclusion

اضافی: ساخت پروژه با استفاده از Makefile Extra : Building Project Using Makefile

  • معرفی Makefile Introducing Makefile

  • قیاس Makefile - درخت وابستگی Makefile Analogy - Dependency Tree

  • تکلیف Makefile - بخش ۱ Makefile Assignmnet - Part1

  • تکلیف Makefile - بخش ۲ Makefile Assignmnet - Part2

  • Makefile نهایی Final Makefile

جایزه! Bonus !

  • درس جایزه Bonus Lecture

نمایش نظرات

آموزش پروژه سیستم سی - نوشتن جمع‌آوری‌کننده زباله از ابتدا
جزییات دوره
3.5 hours
43
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
2,513
4.5 از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Abhishek CSEPracticals Abhishek CSEPracticals

من شبکه می سازم!

Shiwani Nigam Shiwani Nigam

مجری بازاریابی دیجیتال

Ekta Ekta Ekta Ekta

مدیر تاسیسات