دوره آموزشی
The Great Courses
دوبله زبان فارسی

بررسی عمیق درایورهای دستگاه کاراکتری

بررسی عمیق درایورهای دستگاه کاراکتری

✅ سرفصل و جزئیات آموزش

آنچه یاد خواهید گرفت:

  • نوشتن درایور دستگاه کاراکتری از ابتدا
  • درک عملیات فایل مختلف ارائه‌شده توسط درایور کاراکتری

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

  • توانایی نوشتن/کامپایل/لود/آنلود ماژول‌های Hello World کرنل لینوکس

توضیحات دوره

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

از این دوره چه چیزی خواهید آموخت؟

  • مقدمه‌ای بر درایورهای کاراکتری
  • شماره دستگاه و فایل دستگاه چیست؟
  • تخصیص شماره دستگاه - به صورت استاتیک و داینامیک
  • ایجاد فایل دستگاه - دستی و خودکار 
  • ثبت دستگاه کاراکتری و عملیات فایل آن در کرنل
  • کپی کردن داده‌ از فضای کاربر به فضای کرنل و برعکس
  • درک ساختارهای مختلف - struct file و struct inode
  • پیاده‌سازی عملیات فایل open ،release ،read ،write ،llseek و ioctl
  • نحوه ایجاد چندین نود دستگاه و اضافه کردن پشتیبانی برای داده‌های خصوصی
  • جریان فراخوانی سیستمی write از نقطه ورود فراخوانی سیستمی کرنل تا عملیات فایل write در درایور
  • مدیریت تمام موارد خطا در پیاده‌سازی ioctl
  • ارسال سیگنال به فضای کاربر از فضای کرنل
  • مکانیسم‌های مختلف کنترل دسترسی و قابلیت‌ها
  • درایور Misc

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

  • MAJOR
  • MINOR
  • MKDEV
  • register_chrdev_region
  • alloc_chrdev_region
  • class_create
  • device_create
  • class_destroy
  • device_destroy
  • unregister_chrdev_region
  • imajor
  • iminor
  • copy_from_user
  • copy_to_user
  • put_user
  • get_user
  • print_dev_t
  • format_dev_t
  • strnlen_user
  • container_of
  • access_ok

فرمان های استفاده شده در این دوره:

  • mknod
  • udevadm monitor

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

  • توسعه‌دهندگانی که علاقه‌مند به یادگیری برنامه‌نویسی کرنل لینوکس هستند.

بررسی عمیق درایورهای دستگاه کاراکتری

  • مقدمه‌ای بر درایورهای دستگاه کاراکتری 03:36
  • لیست کردن دستگاه‌های کاراکتری و بلوکی 02:28
  • مراحل ثبت یک درایور کاراکتری 00:41
  • شماره دستگاه = Major + Minor 03:32
  • چگونگی انتخاب شماره دستگاه 01:58
  • نوع داده برای شماره دستگاه dev_t 00:50
  • مثالی از ماکروهای MAJOR ،MINOR و MKDEV 03:27
  • فایل /proc/devices 01:03
  • تخصیص استاتیک شماره‌های دستگاه 01:36
  • مثال تخصیص استاتیک شماره‌های دستگاه 02:26
  • موارد تست روی مثال قبلی 01:58
  • اگر برای ثبت همان شماره Major تلاش کنیم چه اتفاقی می‌افتد؟ 01:39
  • اگر برای ثبت همان نام تلاش کنیم چه اتفاقی می‌افتد؟ 01:36
  • ثبت حداکثر شماره‌های Minor 03:27
  • حداکثر شماره Major چیست؟ 03:02
  • تخصیص داینامیک شماره دستگاه 00:48
  • مثال تخصیص داینامیک شماره دستگاه 01:54
  • فراخوانی alloc_chrdev_region در حلقه 04:12
  • ایجاد دستی نود دستگاه 03:54
  • ایجاد خودکار نود دستگاه - class_create 04:02
  • ایجاد خودکار نود دستگاه - device_create 02:48
  • مثال ایجاد خودکار نود دستگاه 01:54
  • آزمون 1 None
  • مقدمه 01:46
  • ثبت file_operations در کرنل لینوکس 01:44
  • مقایسه cdev_init و cdev_alloc 01:27
  • مثال ماژول کرنل لینوکس برای ثبت file operations با استفاده از cdev_alloc 03:14
  • مثال ماژول کرنل لینوکس برای ثبت file operations با استفاده از cdev_init 02:33
  • دستگاه‌های مجازی - /dev/null، /dev/zero، /dev/urandom 04:25
  • بررسی قدم‌به‌قدم فایل drivers/char/mem.c 02:42
  • در صورت fork، توابع open و release چند بار فراخوانی می‌شوند؟ 04:16
  • در صورت وجود چندین پردازش، توابع open و release چند بار فراخوانی می‌شوند؟ 01:27
  • ساختار struct file 03:14
  • مثال struct file 02:27
  • ساختار struct inode 03:12
  • مثال struct inode 02:33
  • مثال مقایسه struct inode و struct file 03:28
  • وقتی بافر فضای کاربر را در تابع write چاپ می‌کنیم چه اتفاقی می‌افتد؟ 05:27
  • دسترسی به بافر فضای کاربر در فضای کرنل 02:26
  • copy_from_user 02:58
  • وقتی اشاره‌گر NULL را در فراخوانی سیستمی write پاس می‌دهیم چه اتفاقی می‌افتد؟ 01:19
  • copy_to_user 01:41
  • put_user 04:11
  • get_user 02:14
  • پاس دادن ساختار از فضای کاربر به فضای کرنل و برعکس 02:47
  • آیا می‌توان متغیرهای کاربر در heap را به درایور کرنل پاس داد؟ 01:52
  • پاس دادن ساختار با یک عضو در stack و دیگری در heap 02:29
  • ابزار کرنل برای چاپ dev_t - توابع print_dev_t و format_dev_t 03:53
  • آیا می‌توان از strlen در فضای کرنل استفاده کرد 04:14
  • strnlen_user 02:30
  • راه حل پاس دادن ساختار با یک عضو در stack و دیگری در heap 03:16
  • مشکل درایور کاراکتری زمانی که کاراکتر به کاراکتر می‌خوانیم 02:33
  • افزودن پشتیبانی از افست در پیاده‌سازی read و write 05:44
  • منطق بروزرسانی شده برای خواندن/نوشتن بایت‌های کمتر از مقدار درخواست‌شده/موجود 03:51
  • افزودن پشتیبانی lseek 02:17
  • ایجاد چندین نود دستگاه 03:52
  • ماکرو container_of 03:32
  • افزودن پشتیبانی برای داده‌ خصوصی 02:25
  • وقتی write را از فضای کاربر فراخوانی می‌کنیم چه اتفاقی می‌افتد؟ 04:26
  • مقدمه 03:54
  • مثال Ioctl - BLKGETSIZE 03:13
  • مثال Ioctl - BLKGETSIZE64 01:16
  • متد درایور Ioctl - unlocked_ioctl 03:26
  • افزودن سه ioctl در درایور کرنل 03:24
  • نام‌های نمادین برای فرمان های ioctl 01:58
  • تعریف فرمان های ioctl 06:07
  • مثال C از ماکروهای ioctl 01:52
  • ماکروهایی برای کدگشایی اطلاعات از فرمان ioctl 01:59
  • کد درایور به‌روزرسانی شده با استفاده از ماکروهای ioctl 01:59
  • اگر فرمان پشتیبانی‌نشده از فضای کاربر ارسال شود مقدار بازگشتی چه باید باشد؟ 01:34
  • ماکرو access_ok 02:25
  • کد درایور به‌روزرسانی شده با استفاده از ماکرو access_ok 02:32
  • سناریوهای شکست access_ok 02:23
  • وقتی سایز متفاوتی را در فرمان ioctl پاس می‌دهیم چه اتفاقی می‌افتد؟ 02:41
  • compat_ioctl 06:05
  • مشکلات زمانی که پردازش 32 بیتی تلاش می‌کند فرمان ioctl را اجرا کند 06:21
  • ارسال سیگنال از ماژول به پردازش 03:39
  • درایور دستگاه چند بار توسط برنامه استفاده می‌شود؟ 02:34
  • اجازه دادن به تنها یک پردازش برای استفاده از فایل دستگاه در هر زمان 04:59
  • محدود کردن دسترسی به یک کاربر واحد در هر زمان 05:59
  • قابلیت‌ها 05:19
  • مثال استفاده از قابلیت‌ها - cap_dac_override 03:15
  • مثال استفاده از قابلیت‌ها - cap_sys_module 03:14
  • مثال استفاده از قابلیت‌ها - cap_sys_admin 02:55
  • فلگ‌های Open 05:11
  • اگر تابع close فراخوانی نشود و پردازش خاتمه یابد چه اتفاقی می‌افتد؟ 01:47
  • مقدمه 05:07
  • مثال درایور Misc 02:05

2,587,600 646,900 تومان

مشخصات آموزش

بررسی عمیق درایورهای دستگاه کاراکتری

  • تاریخ به روز رسانی: 1404/12/10
  • سطح دوره:مقدماتی
  • تعداد درس:88
  • مدت زمان :04:20:31
  • حجم :3.23GB
  • زبان:دوبله زبان فارسی
  • دوره آموزشی:AI Academy

آموزش های مرتبط

The Great Courses
2,260,000 452,000 تومان
  • زمان: 03:02:02
  • تعداد درس: 14
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
795,000 159,000 تومان
  • زمان: 58:00
  • تعداد درس: 12
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
19,403,000 3,880,600 تومان
  • زمان: 26:02:40
  • تعداد درس: 175
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
8,508,000 1,701,600 تومان
  • زمان: 11:25:13
  • تعداد درس: 94
  • سطح دوره:
  • زبان: دوبله فارسی
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
1,833,000 366,600 تومان
  • زمان: 02:27:39
  • تعداد درس: 24
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
6,100,500 1,220,100 تومان
  • زمان: 08:11:21
  • تعداد درس: 28
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
7,256,500 1,451,300 تومان
  • زمان: 09:44:25
  • تعداد درس: 67
  • سطح دوره:
  • زبان: دوبله فارسی
The Great Courses
3,634,500 726,900 تومان
  • زمان: 04:52:43
  • تعداد درس: 38
  • سطح دوره:
  • زبان: دوبله فارسی

آیا سوالی دارید؟

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