مرورگر شما از این ویدیو پشتیبانی نمی کند.
نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
(صرفا برای مشاهده نمونه ویدیو، ممکن هست نیاز به شکن داشته باشید.)
بارگزاری مجدد
توضیحات دوره:
برنامه نویسی کرنل لینوکس - زیرسیستم زمان بندی برنامه نویسی زمان بندی در فضای کاربر زمان بندی سخت افزار 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
نمایش نظرات