آموزش تکنیک ها و مفاهیم برنامه نویسی سیستم لینوکس

Linux System Programming Techniques & Concepts

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
توضیحات دوره: برای توسعه‌دهندگان - ساخت کتابخانه‌های قابل برنامه‌ریزی لینوکس، فایل‌های Makefiles، مدیریت حافظه، کامپایل و پیوند، برنامه‌نویسی C مفاهیم برنامه‌نویسی پیشرفته را در C/C++ بیاموزید. پیوند دادن فرآیند کامپایل یک کامپایلر GCC سازماندهی کدها در فایل‌های سربرگ و منبع درک تخصیص حافظه، مدیریت حافظه پشته، حافظه پشته نشت‌های حافظه، سرریز پشته، خرابی پشته، مفاهیم صفحه‌بندی ثبت پشته و جداول صفحه مفهوم TLV ها پیشها: دانش اولیه برنامه نویسی در C/C++ مورد نیاز است غیرت و اشتیاق برای یادگیری و تقویت مهارت ها خوب است دانش اولیه سیستم عامل داشته باشید اما اجباری نیست.

در حال حاضر دوره‌ها/آموزش‌های بیشماری در اینترنت/Udemy وجود دارد که تقریباً همه جنبه‌های زبان برنامه‌نویسی C را آموزش می‌دهند. همه آن دوره ها یکسان هستند، یکسان صحبت می کنند و کم و بیش همان دانش را ارائه می دهند. این دوره چه تفاوتی با بقیه دارد؟


هدف از این دوره این است که شما را برای مصاحبه های فنی برنامه نویسی سیستم، در سطح مصاحبه - از مبتدی تا متوسط ​​آماده کند. این دوره برای توسعه دهندگان (آینده) است، نه برای آزمایش کنندگان یا مدیران سیستم.


من این دوره را برای پر کردن شکاف بین برنامه نویسان مبتدی/مبتدی و متوسط/پیشرفته انتخاب می کنم. این دوره فرض می کند که شما حداقل در برنامه نویسی بالاتر از حد متوسط ​​هستید (در هر زبان برنامه نویسی، اما در C/C++ ترجیح داده می شود) - تخصیص حافظه، انواع حلقه ها، فراخوانی توابع، اشاره گرها و غیره را بدانید. در این دوره، من آموزش نمی دهم. C/C++ (در حال حاضر دوره های زیادی در مورد آن به صورت آنلاین وجود دارد) اما تکنیک های برنامه نویسی و جزئیات سطح پایین در مورد نحوه عملکرد برنامه C در پشت صحنه را آموزش می دهد - همه موضوعات از نقطه نظر مصاحبه بسیار مهم هستند. هدف من این است که این دوره را به Linux/C Bible تبدیل کنم.


با این حال، من همیشه احساس می‌کنم، شما باید در این دوران رقابت سخت از همکاران خود پیشی بگیرید، و بنابراین، من سعی کردم تا خرد و دانشی را که برای یک برنامه‌نویس بسیار مهم است به شما ارائه دهم. من دیده‌ام که اگرچه دانش‌آموزان می‌توانند برنامه‌های C/C++ خوبی بنویسند، اما در مورد نحوه نوشتن کدهای سازمان‌یافته، قابل مدیریت، توسعه‌پذیر و قابل برنامه‌ریزی بهتر در قالب کتابخانه‌ها، شفافیت ندارند. برای مثال، دانش‌آموزان در برنامه‌نویسی رقابتی بسیار خوب هستند، اما نمی‌دانند چگونه یک Makefile ساده بنویسند، دلیل آن این است که دانشگاهیان تدریس نمی‌کنند و دانش‌آموزان برای یادگیری اهمیتی ندارند.

در این دوره، من موضوعات مربوط به ایجاد کتابخانه های سیستم لینوکس (نسخه 1) را با مفاهیم برنامه نویسی پیشرفته زبان-آگنوستیک (نسخه 2) پوشش خواهم داد که اگر فردا برنامه نویس زبان های دیگر شوید، می تواند به خوبی اعمال شود.


مفاهیمی مانند MultiThreading، Thread-Synchronization، Socket Programming، IPCها، و غیره نیاز به یک دوره جداگانه برای هر موضوع دارد. در حال حاضر، من یک دوره در مورد IPC دارم، لطفاً آن را بررسی کنید. این موضوعات خارج از محدوده این دوره هستند.


دوره باید در دو نسخه ارائه شود:


انتشار 1 ساخت و مدیریت کتابخانه : این بخش اصول اولیه را در مورد نحوه ایجاد و سازماندهی کد خود به عنوان کتابخانه پوشش می دهد.

Release 2 Memory Management Concepts: این به طور خاص مفاهیم پیشرفته مدیریت حافظه لینوکس را پوشش می دهد. لطفاً فهرست مطالب را برای اطلاعات بیشتر بررسی کنید.


چرا نباید *نباید* این دوره را انجام دهید؟

1. لطفاً اگر مبتدی نهایی در برنامه نویسی C هستید، این دوره را ببخشید!!

2. اگر علاقه ای به زدن صفحه کلید ندارید و به اندازه کافی تنبل هستید که فقط VDOهای سخنرانی را تماشا کنید، انجام این دوره بی فایده است

3. اگر می خواهید همه چیز پخته و در بشقاب شما سرو شود.


پیش نیاز دوره:

  • بالاتر از سطح مبتدی در برنامه نویسی C/C++

  • داشتن دانش اولیه سیستم عامل خوب است

  • علت به اکسل و کدگذاری


هیچ کتابخانه شخص ثالثی وجود ندارد

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


اخطار: این دوره دارای زیرنویس‌های خودکار تولید شده توسط سیستم است که ممکن است کامل نباشند. لطفاً زیرنویس‌ها را در صورت تمایل غیرفعال کنید.


برنامه درسی:

************************************************

انتشار 1 ساخت و مدیریت کتابخانه

************************************************

بخش 1: مقدمه ای بر کتابخانه ها

  • کتابخانه چیست

  • رابطه بین کتابخانه و برنامه

  • مثلا: فهرست پیوندی دوگانه به عنوان کتابخانه

  • مراحل تدوین سریع

  • خلاصه

بخش 2: فایل های سرصفحه

  • رابطه بین فایل های منبع و سرصفحه

  • روش جایگزینی متن

  • روش جایگزینی متن - مثال و نسخه نمایشی

بخش 3: دستورالعمل های پیش پردازش

  • مشکل درج تکراری فایل‌های Hdr

  • دستورالعمل های پیش پردازش

  • راه حل برای درج تکراری فایل های Hdr

بخش 4: روش صحیح استفاده از ساختارها و توابع

  • ساختارها - قانون شست را تعریف و استفاده کنید

  • توابع - اعلام و استفاده از قانون شست

  • مشکل وابستگی بازگشتی

  • راه حلی برای وابستگی بازگشتی

بخش 5: ایجاد کتابخانه های ایستا و پویا

  • ازسرگیری با کتابخانه فهرست پیوندی دوگانه

  • ایجاد سریع کتابخانه های ایستا و پویا

  • پیوند با کتابخانه استاتیک

  • پیوند با کتابخانه پویا

بخش 7: درک چهار مرحله از کامپایل

  • چهار مرحله از C/C++ Compilation

  • کتابخانه پویا چگونه کار می کند؟

  • پیوند پویا: پیوند با کتابخانه پویا

  • مقایسه - پیوند استاتیک در مقابل پیوند پویا

بخش 8: ساخت با استفاده از Makefile

  • Makefiles چیست و چرا به آن نیاز داریم

  • توابع Makefile

  • درخت وابستگی Makefile

  • مراحل نوشتن یک Makefile

  • تکالیف در Makefile

بخش 9: کتابخانه های قابل برنامه ریزی زمان اجرا

  • کتابخانه های قابل برنامه ریزی چیست؟

  • مراحل برنامه نویسی کتابخانه ها

  • ثبت تماس‌ها با کتابخانه‌ها

    • کلید_بازخوانی

    • comparison_fn پاسخ به تماس

  • واگذاری عملیات ویژه برنامه به کتابخانه ها

بخش 10: نوشتن تکرار کننده ها با استفاده از ماکرو

  • ماکروهای تکراری چیست؟

  • چرا به ماکروهای تکراری نیاز داریم؟

  • نحوه نوشتن ماکروهای تکراری - برای درختان و فهرست‌های پیوندی

  • تمرینات

بخش 11: کتابخانه های مبتنی بر چسب و ساختارهای داده

  • کتابخانه‌های مبتنی بر چسب چیست؟

  • معرفی Glthreads - A Glued LinkedList

  • Glthreads در مقابل فهرست پیوندی سنتی

  • تغییر فیلد ساختار

  • عملیات GLThread

  • Code Walk

  • مزایای GLThread

بخش 12: برنامه نویسی سطح بیت

  • اپراتورهای منطقی

  • اجرای BIT دستکاری ماکروهای C

  • استفاده از Enums به عنوان بیت

  • تطابق الگوی بیت

  • BitMaps

******************************************** *

2 مفهوم مدیریت حافظه را منتشر کنید

******************************************** *

بخش 13: چیدمان حافظه فرآیند لینوکس

  • مبانی حافظه مجازی

  • طرح بندی حافظه فرآیند لینوکس

  • مثال: چیدمان حافظه فرآیند لینوکس

  • دستور اندازه را تمرین کنید

بخش 14: مدیریت حافظه پشته

  • مبانی و محتویات حافظه را روی هم قرار دهید

  • سرریز پشته و پیشگیری

  • خرابی پشته حافظه

  • رجیسترهای رایج Cpu

  • مکانیسم تماس رویه - گام به گام

  • هدف ثبت نشانگر پایه (ebp)

  • مکانیسم بازگشت روش - گام به گام

  • جلسه آزمایشگاه

بخش 15: مدیریت حافظه Heap

  • مقدمه و اهداف

  • چگونه Malloc کار می کند

  • بالای منطقه حافظه Heap - نشانگر شکست

  • حافظه Heap Mgmt Sys تماس - brk و sbrk

  • بلوک های متا و داده

  • نحوه کارکرد free()

  • تفکیک بلوک

  • مسدود کردن ادغام

  • بیماری حافظه - مشکل تکه تکه شدن

بخش 16: مفهوم صفحه بندی

  • مقدمه ای بر صفحه بندی

  • حافظه آدرس پذیر بایت

  • معماری ماشین 32 بیتی و 64 بیتی

  • اتوبوس آدرس و گذرگاه داده

  • آدرس فیزیکی در مقابل مجازی

  • قاب‌های حافظه فیزیکی

  • ترکیب آدرس مجازی

  • جدول صفحه

  • Paging In Action

  • حافظه فیزیکی مشترک

بخش 17: صفحه بندی چند سطحی

بخش 18: صفحه بندی تقاضا

بخش 19: مدیریت حافظه برای فرآیند چند رشته ای



هدف از این دوره این است که شما را برای مصاحبه های فنی برنامه نویسی سیستم از مبتدی تا 8 تا 9 سال تجربه آماده کند.


س. وقتی کسی زبان برنامه نویسی C/C++/System را در رزومه خود می نویسد، سؤالات متداول مصاحبه کنندگان در یک دور فنی چیست؟

پاسخ: اگر من مصاحبه کننده هستم، چه سوالاتی می پرسم بستگی به سال ها تجربه او در C دارد.

1-3 سال تجربه - من می پرسیدم:

  1. نشانگرهای دوگانه

  2. یک ماکرو برای برگرداندن اندازه ساختار طراحی کنید

  3. آرایه های دو بعدی، ارسال و برگرداندن آرایه ها از یک fn

  4. مراحل مختلف تدوین برنامه C

  5. fork() چگونه کار می کند

  6. روش های مختلف برای رفع اشکال خرابی حافظه چیست.

  7. IPC های مختلف

  8. سوال مبتنی بر حافظه پشته و پشته

4-6 سال تجربه - من می پرسیدم:

  1. نحوه تخصیص حافظه توسط سیستم عامل

  2. تجزیه داخلی و خارجی، برای جلوگیری از آن چه کاری می توان انجام داد

  3. تماس‌های سیستمی، strace()

  4. تجارت یک IPC بر دیگری

  5. روش های مختلف برای برقراری ارتباط با هسته و مقایسه

  6. سریال سازی داده ها در C

  7. RPC در C

  8. برنامه پیشرفته پاسخ به تماس

  9. typedef در مقابل #define

  10. برنامه نویسی عمومی در C با استفاده از ماکروها

  11. همگام سازی موضوع

  12. سوال مبتنی بر حافظه پشته و پشته

بیش از 7 سال تجربه - من می پرسیدم

  1. آیا ماژول سیستمی برای حل هر مشکلی طراحی کرده اید

  2. کتابخانه رشته طراحی 0 چه ویژگی هایی را در آن گنجانده اید و چگونه؟

  3. کارهای باید و نباید برای نوشتن یک کتابخانه قوی و منعطف چیست

  4. نحوه نوشتن کد عمومی در C

  5. روشهای مختلف برای پیاده سازی تایمرها در C و مقایسه رویکردها

  6. وقفه ها چگونه کار می کنند؟

  7. IPC و مقایسه

  8. چگونه یک کد C را به C++ و بالعکس تبدیل می کنید

  9. نحوه نوشتن ابزاری برای تشخیص نشت حافظه یا جمع آوری زباله

  10. ابزار تخصیص حافظه خود را طراحی کنید. چرا می خواهید طرح تخصیص حافظه خود را بنویسید؟

  11. چه زمانی باید به طراحی چند فرآیندی روی طراحی چند رشته ای و بالعکس

  12. چگونه ابزار ValGrind کار می کند

  13. در کد تولید، آیا منطق بازگشتی اما ساده را ترجیح می دهید، یا منطق غیر بازگشتی اما پیچیده، و چرا؟

اگر الگو را تجزیه و تحلیل کنید،

کاندیدایی با 1 تا 3 سال تجربه، من ترجیح می‌دهم بیشتر سؤالات مستقیم و سرراست بپرسم.

نامزد با 4 تا 6 سال تجربه، من ترجیح می دهم سوال فنی پیشرفته تر C را بپرسم به اضافه مقداری مقایسه سوالات مبتنی بر رویکردها

نامزدی با بیش از 7 سال تجربه، من ترجیح می دهم بیشتر از یک سؤال مبتنی بر طراحی و تجزیه و تحلیل بپرسم.

توجه داشته باشید که از آنجایی که سوال مربوط به C و برنامه نویسی سیستم است، بنابراین من به ساختارهای داده و الگوریتم ها اشاره نکرده ام.


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

معرفی Introduction

  • معرفی Introduction

  • عضویت در گروه تلگرام Join Telegram Group

  • راه اندازی محیط توسعه لینوکس Setting up Linux Development Environment

  • شروع - فهرست پیوندی دوگانه به عنوان کتابخانه Begin - Doubly Linked List as a Library

  • مراحل تدوین سریع Quick Compilation Steps

  • خلاصه Summary

معرفی Introduction

آشنایی با فایل های هدر Understanding Header Files

  • فایل های هدر و هدف آنها چیست؟ What are Header Files and their Purpose ?

  • ارتباط بین فایل های منبع و سربرگ Relationship between Source and Header Files

  • جایگزینی متن Text Substitution

  • مثال جایگزینی متن Text Substitution Example

  • نمایش جایگزینی متن Text Substitution Demonstration

آشنایی با فایل های هدر Understanding Header Files

دستورالعمل های پیش پردازش Preprocessing Directives

  • مشکل درج تکراری فایل های هدر Problem Of Duplicate Inclusion of Header Files

  • دستورالعمل های پیش پردازش چیست؟ What are Pre-processing Directives ?

  • راه حل برای گنجاندن تکراری فایل های Hdr با استفاده از دستورالعمل های پیش پردازش Solution to Duplicate Inclusion of Hdr files using Preprocessing Directives

دستورالعمل های پیش پردازش Preprocessing Directives

روش صحیح استفاده از ساختارها و توابع Correct Way of Using Structures and Functions

  • تعاریف ساختار و کاربرد Structure Definitions and Use

  • اعلام عملکرد و استفاده Function Declaration and Use

  • وابستگی بازگشتی Recursive Dependency

  • راه حل وابستگی بازگشتی Solution to Recursive Dependency

  • خلاصه Summary

روش صحیح استفاده از ساختارها و توابع Correct Way of Using Structures and Functions

ایجاد سریع کتابخانه های استاتیک و پویا Quick Creation of Static and Dynamic Libraries

  • از سرگیری با کتابخانه فهرست پیوندی دوگانه Resuming with Doubly Linked List Library

  • کتابخانه های ایستا و پویا - ایجاد سریع Static and Dynamic Libraries - Quick Creation

  • پیوند با کتابخانه استاتیک Linking with Static Library

  • پیوند با کتابخانه پویا Linking with Dynamic Library

  • خلاصه Summary

ایجاد سریع کتابخانه های استاتیک و پویا Quick Creation of Static and Dynamic Libraries

چهار مرحله از فرآیند تالیف Four Stages of Compilation Process

  • 4 مرحله از فرآیند تدوین 4 Stages of Compilation Process

  • مرحله 1 از 4 - مرحله پیش پردازش Stage 1 of 4 - Preprocessing stage

  • مرحله 2 از 4 - مرحله تدوین Stage 2 of 4 - Compilation Stage

  • مرحله 3 از 4 - مرحله اسمبلر Stage 3 of 4 - Assembler Stage

  • مرحله 4 از 4 - مرحله پیوند Stage 4 of 4 - Linking Stage

چهار مرحله از فرآیند تالیف Four Stages of Compilation Process

ساخت پروژه با استفاده از Makefiles Build Project using Makefiles

  • معرفی Makefile Introducing Makefile

  • Makefile Analogy - Dependency Tree Makefile Analogy - Dependency Tree

  • تکلیف Makefile - part1 Makefile Assignment - part1

  • تکلیف Makefile - part2 Makefile Assignment - part2

  • فایل نهایی نهایی Final Makefile

ساخت پروژه با استفاده از Makefiles Build Project using Makefiles

کتابخانه های قابل برنامه ریزی - Generics Programmable Libraries - Generics

  • معرفی Introduction

  • بازبینی DLL Revisiting DLL

  • بیان مسأله Problem Statement

  • راه حل - تفویض مسئولیت Solution - Responsibility Delegation

  • استفاده از کتابخانه DLL قابل برنامه ریزی - Code Walk Using Programmable DLL Library - Code Walk

  • جستجوی خلاصه پاسخ به تماس Search Callback Summary

  • مقایسه پاسخ به تماس Comparison Callback

  • مقایسه نسخه نمایشی پاسخ به تماس Comparison Callback Demo

  • خلاصه Summary

  • تکلیف کدنویسی Coding Assignment

کتابخانه های قابل برنامه ریزی - Generics Programmable Libraries - Generics

ماکروهای تکراری Iterative Macros

  • شروع شدن Getting Started

  • برای معناشناسی حلقه For loop Semantics

  • ماکروهای تکراری برای LinkedList Iterative Macros For LinkedList

  • ماکروهای تکراری برای درختان باینری Iterative Macros for Binary Trees

  • پیش نیازهای تکرار کننده درخت Tree Iterators Prerequisites

  • پیاده سازی Tree Iterators Tree Iterators Implementation

  • خلاصه Summary

  • تکلیف کدنویسی Coding Assignment

ماکروهای تکراری Iterative Macros

ساختارهای داده مبتنی بر چسب Glue Based Data structures

  • معرفی Introduction

  • تعریف Glthreads Glthreads Definition

  • تفاوت - DLL سنتی در مقابل چسب مبتنی بر چسب Difference - Traditional Vs Glue Based DLL

  • آفست فیلد ساختار Structure Field Offset

  • وظیفه Assignment

  • درج GLNode GLNode Insertion

  • تکرار GLThread GLThread Iteration

  • حذف GLNode GLNode Removal

  • Code Walk - نسخه ی نمایشی Code Walk - Demo

  • مشکلات فهرست سنتی Traditional List Problems

  • مزایای GLThread GLThread Benefits

ساختارهای داده مبتنی بر چسب Glue Based Data structures

اشاره گرهای مات Opaque Pointers

  • معرفی Introduction

  • طراحی کتابخانه معمولی Typical Library Design

  • بیان مسأله Problem Statement

  • استراتژی راه حل Solution Strategy

  • نتیجه Conclusion

اشاره گرهای مات Opaque Pointers

برنامه نویسی بیت Bit Programming

  • مقدمه ای بر برنامه نویسی بیت Introduction to Bit Programming

  • اپراتور XOR XOR Operator

  • استفاده از بیت ها به عنوان پرچم Using Bits as Flags

  • استفاده از Enums به عنوان بیت Using Enums as Bits

  • تکلیف برنامه نویسی بیت Assignment on Bit Programming

  • تطبیق الگوی بیت Bit Pattern Matching

  • مراحل تطبیق الگوی بیت Bit Pattern Matching Steps

  • بیت مپ BitMaps

  • API ها و پیاده سازی BitMap BitMap APIs and Implementation

  • تخصیص در BitMaps Assignment on BitMaps

برنامه نویسی بیت Bit Programming

اندین بودن ماشین Machine Endianness

  • اندین بودن ماشین Machine Endianness

  • برنامه ای برای یافتن Endianness ماشین Program to find Machine Endianness

اندین بودن ماشین Machine Endianness

ارتباطات مبتنی بر TLV TLV Based Communication

  • معرفی TLVs TLVs Introduction

  • چرا به TLV نیاز داریم؟ Why we need TLVs ?

  • چرا ما به TLV نیاز داریم - یک سناریوی دیگر Why we need TLVs - Another scenario

  • درک TLV ها Understanding TLVs

  • TLV پرداختن به مشکل ناهمگونی TLV Addressing the problem of Heterogeneity

  • TLV پرداختن به مشکل ارتقاء نرم افزار TLV Addressing the problem of Software Upgrade

  • ساختار داده - STREAMS Data Structure - STREAMS

  • سریال زدایی TLV با استفاده از STREAMS TLV De-Serialization using STREAMS

  • تخصیص کدگذاری - در جریان ها Coding Assignment - on Streams

  • تخصیص کدگذاری - در TLVs Coding Assignment - on TLVs

ارتباطات مبتنی بر TLV TLV Based Communication

کار با تایمرهای پوزیکس لینوکس Working with Linux Posix Timers

  • دستور کار و پیش نیازها Agenda and Prerequisites

  • ارتباط تایمر Timer Relevance

  • انواع تایمر Timer Types

  • API های Posix برای تایمرها Posix APIs for Timers

  • طراحی تایمر Timer Design

  • مراحل ایجاد تایمر Timer Creation Steps

  • پیاده سازی تایمر و نسخه ی نمایشی Timer Implementation and Demo

کار با تایمرهای پوزیکس لینوکس Working with Linux Posix Timers

چیدمان حافظه فرآیند لینوکس Memory Layout of Linux Process

  • دستور جلسه Agenda

  • مبانی حافظه مجازی حافظه Virtual Memory Memory Basics

  • چیدمان حافظه فرآیند لینوکس Memory Layout of Linux Process

  • مثال: چیدمان حافظه فرآیند لینوکس Example : Memory Layout of Linux Process

  • روی دستور اندازه تمرین کنید Exercise on size command

چیدمان حافظه فرآیند لینوکس Memory Layout of Linux Process

مدیریت حافظه پشته Stack Memory Management

  • مبانی حافظه پشته Stack Memory Basics

  • پشته محتویات حافظه Stack Memory Contents

  • پشته سرریز و پیشگیری Stack-Overflow and Prevention

  • خرابی حافظه پشته Stack Memory Corruption

  • مراحل تماس و بازگشت - شروع به کار Procedure Call and Return - Getting Started

  • رجیسترهای رایج CPU Common Cpu Registers

  • مکانیسم فراخوانی رویه Procedure Call Mechanism

  • هدف از ثبت اشاره گر پایه (ebp) Purpose of Base Pointer register (ebp)

  • الگوریتم فراخوانی رویه رسمی Formalizing Procedure Call Algorithm

  • روند بازگشت - اهداف Procedure Return - Goals

  • روش بازگشت توضیح داده شده - گام به گام Procedure Return Explained - Step by Step

  • الگوریتم بازگشت رویه رسمی Formalizing Procedure Return Algorithm

  • جلسه آزمایشگاه - تجزیه و تحلیل حافظه پشته Lab Session - Stack Memory Analysis

مدیریت حافظه پشته Stack Memory Management

مدیریت حافظه Heap Heap Memory Management

  • مدیریت حافظه Heap - اهداف و مقدمه Heap Memory Management - Goals and Introduction

  • Malloc() - بازبینی سریع Malloc() - Quick Revision

  • نشانگر شکست Break pointer

  • تماس های سیستم brk و sbrk brk and sbrk system calls

  • Malloc نسخه 1.0 Malloc Version 1.0

  • بیان مسأله Problem Statement

  • نیاز مدیریت حافظه Heap Heap Memory Management Requirement

  • MetaBlock و DataBlock MetaBlock and DataBlock

  • تخصیص ها و تخصیص ها Allocations and Deallocations

  • تقسیم بلوک Block Splitting

  • بلوک ادغام Block Merging

  • مشکل تکه تکه شدن Problem of Fragmentation

مدیریت حافظه Heap Heap Memory Management

مفاهیم صفحه بندی Concepts of Paging

  • معرفی Introduction

  • حافظه آدرس پذیر بایت Byte Addressable Memory

  • سیستم 32 بیتی یا 64 بیتی چیست؟ What is 32 bit Or 64 bit system ?

  • سیستم اتوبوس Bus System

  • CPU آدرس های مجازی تولید می کند CPU Generates Virtual Addresses

  • گذرگاه داده و گذرگاه آدرس Data bus and Address Bus

  • درک خود را بررسی کنید Check your Understanding

  • نگاشت آدرس مجازی به آدرس فیزیکی Mapping of Virtual Address to Physical Address

  • صفحات و فریم های فیزیکی Physical Pages and Frames

  • تعویض صفحه Page Swapping

  • صفحات حافظه مجازی Virtual Memory Pages

  • نقشه برداری 1:1 بین صفحه فیزیکی و مجازی 1:1 Mapping between Physical and Virtual Page

  • ترکیب آدرس مجازی Virtual Address Composition

  • جدول صفحه Page Table

  • درک خود را آزمایش کنید Test your Understanding

  • صفحه بندی در عمل Paging in Action

  • درک خود را آزمایش کنید Test your Understanding

  • سناریوی فرآیند چندگانه Multiple Process Scenario

  • رفع تکه تکه شدن خارجی Resolve External Fragmentation

  • تخصیص صفحه به یک فرآیند - قسمت 1 Page Allocation to a Process - Part1

  • تخصیص صفحه به یک فرآیند - قسمت 2 Page Allocation to a Process - Part2

  • صفحات فیزیکی به اشتراک گذاشته شده Shared Physical Pages

  • مشکلات جداول صفحه Page tables Problems

  • مسئله 1 جدول صفحه - اندازه جدول صفحه بزرگ مهم است Page Table Problem 1 - Large Page Table Size Matters

  • جدول صفحه مسئله 2 - نیاز به حافظه اصلی پیوسته Page Table Problem 2 - Need for Contiguous Main Memory

  • مسئله 3 جدول صفحه - توخالی جدول صفحه Page Table Problem 3 - Page Table Hollowness

مفاهیم صفحه بندی Concepts of Paging

صفحه بندی چند سطحی Multi Level Paging

  • معرفی Introduction

  • صفحه بندی چند سطحی در عمل - قسمت 1 Multi Level Paging In Action - Part1

  • صفحه بندی چند سطحی در عمل - قسمت 2 Multi Level Paging In Action - Part2

  • درک خود را آزمایش کنید Test your Understanding

صفحه بندی چند سطحی Multi Level Paging

صفحه بندی بر اساس تقاضا Paging on Demand

  • بیان مسأله Problem Statement

  • مراحل صفحه بندی تقاضا Demand Paging Steps

  • زمان دسترسی موثر Effective Access Time

صفحه بندی بر اساس تقاضا Paging on Demand

مدیریت حافظه برای فرآیندهای چند رشته ای Memory Management for Multi-threaded Processes

  • معرفی Introduction

  • مدیریت حافظه مجازی Virtual Memory Management

  • مدیریت جدول صفحه Page Table Management

  • پایان تاپیک Thread Termination

مدیریت حافظه برای فرآیندهای چند رشته ای Memory Management for Multi-threaded Processes

جایزه Bonus

  • سخنرانی جایزه - زمان برای گرفتن آب نبات! Bonus Lecture - Time to get some Candies !!

جایزه Bonus

نمایش نظرات

نظری ارسال نشده است.

آموزش تکنیک ها و مفاهیم برنامه نویسی سیستم لینوکس
خرید اشتراک و دانلود خرید تکی و دانلود | 160,000 تومان (5 روز مهلت دانلود) زمان تقریبی آماده سازی لینک دانلود این دوره آموزشی حدود 5 تا 24 ساعت می باشد.
جزییات دوره
14 hours
153
Udemy (یودمی) udemy-small
20 آبان 1401 (آخرین آپدیت رو دریافت می‌کنید، حتی اگر این تاریخ بروز نباشد.)
7,170
4.5 از 5
دارد
دارد
دارد

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Abhishek CSEPracticals Abhishek CSEPracticals

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

Shiwani Nigam Shiwani Nigam

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

Ekta Ekta Ekta Ekta

مدیر تاسیسات

Shiwani Nigam Shiwani Nigam

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

Ekta Ekta Ekta Ekta

مدیر تاسیسات

Udemy (یودمی)

یودمی یکی از بزرگ‌ترین پلتفرم‌های آموزشی آنلاین است که به میلیون‌ها کاربر در سراسر جهان امکان دسترسی به دوره‌های متنوع و کاربردی را فراهم می‌کند. این پلتفرم امکان آموزش در زمینه‌های مختلف از فناوری اطلاعات و برنامه‌نویسی گرفته تا زبان‌های خارجی، مدیریت، و هنر را به کاربران ارائه می‌دهد. با استفاده از یودمی، کاربران می‌توانند به صورت انعطاف‌پذیر و بهینه، مهارت‌های جدیدی را یاد بگیرند و خود را برای بازار کار آماده کنند.

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