آموزش زیر سیستم زمان بندی در عمق

Timing Subsystem in deep

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: برنامه نویسی کرنل لینوکس - زیرسیستم زمان بندی برنامه نویسی زمان بندی در فضای کاربر زمان بندی سخت افزار Jiffies تایمرهای با وضوح پایین و وضوح بالا ساعت های POSIX پیش نیازها: باید درک اولیه ای از ماژول های کرنل لینوکس داشته باشد زبان C

اندازه گیری زمان در کرنل لینوکس

بسیاری از فعالیت‌های رایانه بر اساس اندازه‌گیری‌های زمان‌بندی هستند.

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

زیر سیستم زمان‌بندی لینوکس عمدتاً دو نوع فعالیت زمان‌بندی را انجام می‌دهد

1. حفظ زمان و تاریخ فعلی

a. time() ، gettimeofday() و clock_gettime()

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

2. نگهداری تایمرها

a. مکانیسم هایی برای اطلاع از هسته و فضای کاربر (مثلاً alarm()) که یک بازه زمانی مشخص سپری شده است.

دستگاه های سخت افزاری

لینوکس برای حفظ زمان به دستگاه های سخت افزاری وابسته است. این دستگاه ها را می توان اساساً به دو نوع طبقه بندی کرد:

1. ساعت/شمارنده: اندازه گیری دقیق زمان را ارائه می دهد

برای پیگیری زمان فعلی روز استفاده می شود

2. تایمر: وقفه در فرکانس ثابت و از پیش تعریف شده.

برای اجرای تایمرهای نرم افزاری

استفاده می شود

از این دوره چه چیزی یاد خواهید گرفت؟

  • فرمان‌های زمان‌بندی مختلف: تاریخ، زمان آپدیت

  • ساعت‌های POSIX: CLOCK_BOOTTIME، CLOCK_MONOTONIC_RAW، CLOCK_REALTIME، CLOCK_PROCESS_CPUTIME_ID، CLOCK_THREAD_CPUTIME_ID

  • تماس‌های سیستم زمان‌بندی: ctime، gettimeofday، clock_gettime، clock_settime، clock_getres، times، getrusage

  • تنظیم زمان از فضای کاربری

  • نحوه اندازه گیری زمان برای یک دستورالعمل خاص

  • دستگاه‌های سخت‌افزاری مورد استفاده در اندازه‌گیری زمان: RTC، TSC، تایمر فاصله قابل برنامه‌ریزی، APIC، تایمر رویداد با دقت بالا

  • جیفی

  • تایمرهای با وضوح پایین و وضوح بالا

این دوره با 30 روز تضمین بازگشت وجه ارائه می شود!. اگر از دوره راضی نیستید، پول خود را پس خواهید گرفت

پس منتظر چه چیزی هستید، اکنون ثبت نام کنید و قدم بعدی را در یادگیری زیرسیستم زمان بندی در کرنل لینوکس بردارید


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

برنامه نویسی زمان بندی در فضای کاربر Programming timing in user space

  • دستور تاریخ date command

  • دستور uptime uptime command

  • زمان دوران Epoch time

  • ctime ctime

  • گرفتن وقت روز gettimeofday

  • آیا می توان از gettimeofday() برای زمان سپری شده اندازه گیری شده استفاده کرد Can gettimeofday() be used for measured elapsed time

  • ساعت یکنواخت Monotonic clock

  • CLOCK_BOOTTIME CLOCK_BOOTTIME

  • CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC_RAW

  • CLOCK_REALTIME CLOCK_REALTIME

  • CLOCK_PROCESS_CPUTIME_ID CLOCK_PROCESS_CPUTIME_ID

  • مثالی برای محاسبه زمان افزایشی Example to calculate time taken to increment

  • مثال دیگری با استفاده از clock_gettime Another Example using clock_gettime

  • CLOCK_MONOTONIC در مقابل CLOCK_PROCESS_CPUTIME_ID CLOCK_MONOTONIC vs CLOCK_PROCESS_CPUTIME_ID

  • CLOCK_THREAD_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID

  • ساعت_تنظیم clock_settime

  • clock_getres clock_getres

  • بار times

  • فرار کردن getrusage

دستگاه های سخت افزاری مورد استفاده در اندازه گیری زمان Hardware devices used in timing measurement

  • اندازه گیری زمان در کرنل لینوکس Timing Measurements in Linux Kernel

  • RTC RTC

  • نمونه ماژول هسته در حال خواندن RTC Kernel module example reading RTC

  • RTC قطع می شود RTC Interrupts

  • رابط RTC IOCTL RTC IOCTL Interface

  • وقفه های دوره ای RTC RTC Periodic Interrupts

  • وقفه زنگ RTC RTC Alarm Interrupt

  • چرا RTC بعد از روشن شدن کامپیوتر استفاده نمی شود؟ Why RTC is not used after computer is powered on

  • TSC TSC

  • خواندن TSC از فضای هسته Reading TSC from kernel space

  • RDTSCP RDTSCP

  • مشکلات استفاده از TSC با سیستم های چند پردازنده ای Issues using TSC with multiprocessor systems

  • توابع هسته برای TSC Kernel functions for TSC

  • تایمر فاصله قابل برنامه ریزی Programmable Interval Timer

  • APIC محلی Local APIC

  • تایمر رویداد با دقت بالا High Precision Event Timer

  • انتزاع لینوکس Linux Abstraction

جیفیس Jiffies

  • HZ HZ

  • جیفی ها jiffies

  • اندازه جیفی ها چقدر است What is the size of jiffies

  • چرا jiffies در x86 به عنوان 64 بیتی اعلام نمی شود Why is jiffies not declared as 64-bit on x86

  • Jiffies Wraparound Jiffies Wraparound

  • مقدار اولیه jiffies در بوت چقدر است What is the initial value of jiffies on boot

  • INITIAL_JIFFIES INITIAL_JIFFIES

  • چرا ارسال دوبار برای ماکرو INITIAL_JIFFIES لازم است Why double casting is needed for INITIAL_JIFFIES macro

  • جیفی ها را به ثانیه میلی ثانیه تبدیل کنید Convert jiffies to seconds milliseconds

  • اندازه گیری زمان بارگذاری ماژول با استفاده از جیفیس Measuring module loaded time using jiffies

  • آیا می توانیم جیفی ها را به روز کنیم Can we update jiffies

  • پردازش وقفه تایمر Timer Interrupt processing

  • مشغول حلقه زدن با استفاده از جیفی Busy looping using jiffies

  • تبدیل جیفیس Jiffies conversions

  • حلقه های مشغول چگونه پیاده سازی می شوند How are busy loops implemented

  • معایب وجود وقفه های دوره ای در کرنل لینوکس چیست؟ What is disadvantage of having periodic interrupts in Linux Kernel

  • پیکربندی وقفه های ساعت Configuration of clock interrupts

تایمرهای با وضوح پایین Low Resolution TImers

  • مقدمه ای بر تایمرها Introduction to timers

  • اجرای تایمرهای با وضوح پایین Implementation of low resolution timers

  • تعیین زمان انقضا Specifying an expiration time

  • کدام دسته تایمر زمینه اجرا می شود Which context timer handler runs

  • اجرای تایمر Timer implementation

  • آیا وقفه ها در حین اجرای کنترل کننده تایمر غیرفعال هستند Are interrupts disabled while running timer handler

  • این که آیا کنترل کننده تایمر در softirq یا hardirq اجرا می شود Whether timer handler runs in softirq or hardirq

  • آیا هسته تمام ورودی های تایمر را در هر افزایش نرم افزار بررسی می کند یا خیر Whether kernel checks all timer entries on each raise softirq

  • تایمر را غیرفعال کنید Deactivate a timer

  • del_timer_sync del_timer_sync

  • تایمر_در انتظار timer_pending

  • تایمرهای دوره ای Periodic timers

  • بین زمینه فرآیند و کنترل کننده تایمر همگام سازی کنید Synchronize between process context and timer handler

  • کنترل کننده تایمر را هر یک ثانیه اجرا کنید Run timer handler every one second

  • پرچم های تایمر Timer Flags

  • Schedule_timeout چگونه کار می کند How schedule_timeout works

  • مشکلات تایمرهای با وضوح پایین Problems with low resolution timers

ktime_t ktime_t

  • مقدمه ای بر تایمرهای با وضوح بالا Introduction to high resolution timers

  • ktime_t ktime_t

  • ماکروها و توابع برای ktime_t Macros and functions for ktime_t

  • ماکروها و توابع برای افزودن sub ktime_t Macros and functions for add sub ktime_t

  • توابع تبدیل ktime_t ktime_t conversion functions

  • نمونه ای از توابع تبدیل Example of conversion functions

  • لوازم جانبی ktime ktime accessors

  • لوازم جانبی ktime قسمت 2 ktime accessors part 2

  • لوازم جانبی ktime قسمت 3 ktime accessors part 3

  • خروجی نانوثانیه nanosecond output

  • خروجی با مشخصات زمانی timespec output

  • خروجی ثانیه seconds output

  • نحوه اجرای uptime How uptime is implemented

  • نحوه پیاده سازی gettimeofday How gettimeofday is implemented

  • نحوه پیاده سازی clock_gettime How clock_gettime is implemented

  • انواع درشت coarse variants

  • چرا انواع درشت سریعتر هستند؟ Why are coarse variants faster

HRtimers HRTimers

  • معرفی Introduction

  • لغو یک تایمر Cancel a timer

  • مقدار برگشتی تایمر برگشت تماس Return value of callback timer

  • hrtimer_forward_now hrtimer_forward_now

  • اندازه گیری چرخه های ساعت Measuring clock cycles

  • نمونه هایی از ساعت ها و حالت ها Examples of clocks and modes

  • hrtimer_callback_running hrtimer_callback_running

  • hrtimer_restart hrtimer_restart

  • hrtimer_get_remaining hrtimer_get_remaining

  • نمونه های بیشتر More examples

دانلودها Downloads

  • منابع Resources

نمایش نظرات

آموزش زیر سیستم زمان بندی در عمق
جزییات دوره
5 hours
98
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
260
4.5 از 5
دارد
دارد
دارد
Linux Trainer
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Linux Trainer Linux Trainer

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