تکنیکها و مفاهیم برنامهنویسی سیستم لینوکس
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- یادگیری مفاهیم برنامه نویسی پیشرفته
- توسعه و یکپارچه سازی کتابخانه های ++C/C
- خودکار سازی فرآیند ساخت با استفاده از Makefile
- استفاده از اشاره گر های تابع به عنوان فراخوان ها
- پیوند دهی و کتابخانه های پویا و استاتیک
- فرآیند کامپایل یک کامپایلر GCC
- سازمان دهی کد به عنوان هدر و فایل های منبع
- درک تخصیص حافظه، مدیریت حافظه Heap، نشت حافظه
- حافظه پشته (Stack Memory)، سرریز پشته (Stack overflow)، تخریب پشته (Stack Corruption)، ثبات های پشته ای (Stack Registers)
- مفاهیم صفحه بندی و جداول صفحه
- مفاهیم TLVs
پیشنیازهای دوره
- دانش پایهی برنامهنویسی در C++/C ضروری است
- انگیزه و اشتیاق برای یادگیری و تقویت مهارتها
- داشتن دانش پایه از سیستمعامل خوب است اما اجباری نیست.
توضیحات دوره
در اینترنت و سایت Udemy دورهها و آموزشهای بیشماری درباره جنبههای مختلف زبان برنامهنویسی C موجود است. همه این دورهها عملاً مشابهاند، مطالب یکسان دارند و دانش تقریباً یکسانی ارائه میکنند. این دوره چه تفاوتی با دیگران دارد؟
هدف این دوره آمادهسازی شما برای مصاحبههای فنی برنامهنویسی سیستم، از سطح مبتدی تا متوسط می باشد. این دوره برای توسعهدهندگان (آینده) است، نه برای تسترها یا مدیران سیستم.
این دوره را طراحی کردیم تا شکاف میان برنامهنویسان مبتدی و متوسط/پیشرفته را پر کند. فرض میکنیم شما حداقل در برنامهنویسی (هر زبان برنامهنویسی، اما ترجیحاً C++/C) از متوسط بالاتر هستید مباحثی مثل تخصیص حافظه، انواع حلقهها، فراخوانی توابع، اشارهگرها و غیره را میدانید. در این دوره، C++/C را آموزش نمیدهیم (چرا که دورههای زیادی در این زمینه آنلاین موجود است) بلکه تکنیکهای برنامهنویسی و جزئیات سطح پایین درباره عملکرد پشتصحنه برنامههای C را آموزش میدهیم. همه این موضوعات از دیدگاه مصاحبه بسیار مهم هستند. هدف تبدیل این دوره به مرجع کامل Linux/C است.
با این حال، همیشه احساس میکنیم برای برتری در رقابت شدید امروز، باید از همکارانتان بهتر عمل کنید. به همین دلیل تلاش کردیم دانش و خردی را ارائه دهم که برای یک برنامهنویس حیاتی است. دیدهایم دانشجویانی که برنامههای C++/C خوبی مینویسند اما درک روش نوشتن کدهای سازماندهیشده، قابل مدیریت، قابل توسعه و قابل استفاده به صورت کتابخانه را ندارند. بهعنوان مثال، دانشجویان در برنامهنویسی رقابتی عالی هستند، اما نمیدانند چگونه یک فایل Makefile ساده بنویسند، چون دانشگاه آموزش نمیدهد و دانشجو هم برای یادگیری تلاش نمیکند.
در این دوره به موضوعات مرتبط با ساخت کتابخانههای سیستم لینوکس (انتشار اول) و مفاهیم پیشرفته برنامهنویسی بدون وابستگی به زبان (انتشار دوم) میپردازیم که به راحتی در برنامهنویسی با زبانهای دیگر نیز قابل اعمال است.
مخاطبان این دوره:
این دوره برای چه کسانی مناسب است؟
- دانشجویان دارای دانش اولیه از برنامه نویسی ++C/C
- هشدار: این دوره برای مبتدیان برنامه نویسی مناسب نیست.
- افرادی که قصد ارتقا مهارت های برنامه نویسی خود از سطح مبتدی به تخصصی دارند.
- دانشجویان سال آخر که به دنبال پاسخ به سوالات مصاحبه شغلی در زمین
تکنیکها و مفاهیم برنامهنویسی سیستم لینوکس
-
مقدمه 09:58
-
عضویت در گروه تلگرام 00:13
-
شروع - لیست پیوندی دوبل به عنوان کتابخانه 03:27
-
مراحل سریع کامپایل 06:09
-
خلاصه 02:50
-
فایلهای Header چیستند و هدف آنها چیست؟ 04:22
-
رابطه بین فایلهای Source و Header 07:48
-
جایگزینی متنی 03:36
-
مثال جایگزینی متنی 06:23
-
نمایش جایگزینی متنی 03:12
-
مشکل درج تکراری فایلهای Header 06:02
-
دایرکتیوهای پیشپردازش چیست؟ 06:18
-
راهحل درج داپلیکیت فایلهای Header با استفاده از دایرکتیوهای پیشپردازش 08:33
-
تعاریف و استفاده از ساختار 04:19
-
اعلان و استفاده تابع 08:53
-
وابستگی بازگشتی 08:49
-
راهحل وابستگی بازگشتی 04:32
-
خلاصه 01:36
-
ادامه با کتابخانه لیست پیوندی دوبل 05:55
-
کتابخانههای ایستا و پویا - ساخت سریع 08:50
-
اتصال با کتابخانه ایستا 08:07
-
اتصال با کتابخانه پویا 03:32
-
خلاصه 00:55
-
چهار مرحله فرآیند کامپایل 06:15
-
مرحله 1 از 4 - مرحله پیشپردازش 04:52
-
مرحله 2 از 4 - مرحله کامپایل 03:06
-
مرحله 3 از 4 - مرحله اسمبلر 04:32
-
مرحله 4 از 4 - مرحله لینک کردن 06:16
-
معرفی Makefile 05:08
-
تشابه Makefile - درخت وابستگی 05:35
-
تمرین Makefile - قسمت 1 05:41
-
تمرین Makefile - قسمت 2 11:15
-
Makefile نهایی 08:02
-
مقدمه 04:54
-
بررسی مجدد لیست پیوندی دوبل 07:06
-
بیان مسئله 02:49
-
راهحل - تفویض مسئولیت 10:59
-
استفاده از کتابخانه DLL قابل برنامهنویسی - مرور کد 03:28
-
خلاصه کالبک جستجو 02:43
-
کالبک مقایسه 10:47
-
نمایش کالبک مقایسه 03:02
-
خلاصه 01:42
-
تمرین برنامهنویسی None
-
شروع کار 04:20
-
معنای حلقه for 02:59
-
ماکروهای تکراری برای لیست پیوندی 09:50
-
ماکروهای تکراری برای درختهای دودویی 04:58
-
پیشنیازهای Iteratorهای درخت 03:42
-
پیادهسازی Iteratorهای درخت 05:09
-
خلاصه 01:30
-
تمرین برنامهنویسی None
-
مقدمه 03:35
-
تعریف Glthreads 04:19
-
تفاوت - کتابخانه DLL سنتی در برابر مبتنی بر Glue 04:53
-
شیفت فیلد ساختار 07:37
-
تمرین None
-
درج GLNode 03:41
-
API برای درج گره glthread در لیست glthread 03:27
-
تکرار GLThread 03:15
-
حذف گره GLNode 01:18
-
مرور کد - نمایش 06:24
-
مسائل لیست سنتی 05:39
-
مزایای GLThread 04:54
-
مقدمه 02:33
-
طراحی معمول کتابخانه 03:06
-
بیان مسئله 04:07
-
استراتژی راهحل 05:52
-
نتیجهگیری 02:38
-
معرفی برنامهنویسی بیت 11:48
-
عملگر XOR 07:57
-
استفاده از بیتها به عنوان فلگ ها 11:22
-
استفاده از اعداد Enum به عنوان بیت 02:39
-
تمرین برنامهنویسی بیت None
-
تطبیق الگو بیت 04:00
-
مراحل تطبیق الگو بیت 03:07
-
BitMaps 05:36
-
BitMap APIs و پیادهسازی BitMap 07:44
-
تمرین روی BitMaps None
-
اندیان ماشین 06:19
-
برنامه برای تعیین اندیان ماشین 01:55
-
معرفی TLVها 07:28
-
چرا به TLVها نیاز داریم؟ 12:26
-
چرا به TLVها نیاز داریم؟ - سناریوی دیگر 06:17
-
درک TLVها 10:38
-
حل مشکل ناسازگاری با TLV 18:45
-
حل مشکل ارتقای نرمافزار با TLV 05:24
-
ساختار داده - STREAMS 08:45
-
TLV De-Serialization با استفاده از STREAMS 09:03
-
تمرین کدنویسی روی Streams None
-
تمرین کدنویسی روی TLVها None
-
دستور کار و پیشنیازها 02:39
-
اهمیت تایمر 02:08
-
انواع تایمر 02:57
-
Posix APIs برای تایمرها 02:10
-
طراحی تایمر 07:00
-
مراحل ایجاد تایمر 09:44
-
پیادهسازی و نمایش تایمر 14:15
-
دستور کار 03:17
-
مبانی حافظه مجازی 06:59
-
طرح بندی حافظه فرآیند لینوکس 10:15
-
مثال: چیدمان حافظه فرآیند لینوکس 08:53
-
تمرین با فرمان size 03:29
-
مبانی حافظه Stack 05:39
-
محتوای حافظه پشته 08:01
-
Stack-Overflow و روشهای پیشگیری 03:16
-
خرابی حافظه Stack 04:53
-
فراخوانی و بازگشت رویه - شروع کار 04:41
-
رجیسترهای رایج CPU 03:05
-
مکانیزم فراخوانی تابع 10:05
-
هدف Base Pointer register (ebp) 04:14
-
الگوریتم رسمی فراخوانی رویه 03:56
-
بازگشت رویه - اهداف 03:53
-
شرح بازگشت رویه - مرحله به مرحله 06:03
-
الگوریتم رسمی بازگشت رویه 04:23
-
جلسه آزمایشگاهی - تحلیل حافظه پشته None
-
مدیریت حافظه Heap - اهداف و مقدمه 03:59
-
مرور سریع ()malloc 08:49
-
Break pointer 02:31
-
فراخوانی های سیستم brk و sbrk 05:47
-
نسخه 1.0 malloc 07:11
-
بیان مسئله 03:39
-
نیازمندیهای مدیریت حافظه Heap 02:56
-
MetaBlock و DataBlock 06:18
-
Allocations و Deallocations 05:33
-
تقسیم بلوک 06:06
-
ادغام بلوکها 03:45
-
مسئله تکهتکه شدن حافظه 04:17
-
مقدمه 03:35
-
حافظه با قابلیت آدرسدهی بایت به بایت 04:40
-
سیستم 32 بیتی یا 64 بیتی چیست؟ 04:08
-
سیستم باس 04:57
-
تولید آدرس مجازی توسط CPU 07:29
-
خط داده و خط آدرس 10:33
-
سنجش درک شما None
-
نگاشت آدرس مجازی به آدرس فیزیکی 06:13
-
صفحات و فریمهای فیزیکی 04:23
-
Swap کردن صفحه 02:52
-
صفحات حافظه مجازی 04:21
-
نگاشت 1 به 1 بین صفحه فیزیکی و مجازی 07:07
-
ترکیب آدرس مجازی 03:57
-
جدول صفحات 06:36
-
آزمون درک خود None
-
پیادهسازی صفحهبندی 11:09
-
آزمون درک خود None
-
سناریوی چند فرایند 02:30
-
رفع تکه تکه شدن خارجی 02:19
-
تخصیص صفحه به یک فرایند - قسمت 1 06:11
-
تخصیص صفحه به یک فرایند - قسمت 2 05:53
-
صفحات فیزیکی مشترک 10:09
-
مسائل جداول صفحات 02:05
-
مسئله جدول صفحه 1 - اهمیت اندازه بزرگ جدول صفحه 04:35
-
مسئله جدول صفحه 2 - نیاز به حافظه اصلی پیوسته 03:05
-
مسئله جدول صفحه 3 - توخالی بودن جدول صفحه 06:22
-
مقدمه 05:28
-
صفحهبندی چندسطحی در عمل - قسمت 1 07:50
-
صفحهبندی چندسطحی در عمل - قسمت 2 08:31
-
آزمون درک خود None
-
بیان مسئله 04:28
-
مراحل صفحه بندی مورد نیاز 06:19
-
زمان دسترسی موثر 02:47
-
مقدمه 04:39
-
مدیریت حافظه مجازی 05:12
-
مدیریت جدول صفحات 08:03
-
پایان رشته 02:27
-
درس جایزه - وقت گرفتن شیرینیهاست !! 01:16
مشخصات آموزش
تکنیکها و مفاهیم برنامهنویسی سیستم لینوکس
- تاریخ به روز رسانی: 1404/06/14
- سطح دوره:متوسط
- تعداد درس:165
- مدت زمان :14:15:59
- حجم :5.47GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy