"Linux Aygıt Sürücüsü Geliştirme" (Linux Device Driver Development) eğitimini almak için "akademi@braxp.com" e-posta adresi üzerinden bize erişebilirsiniz. Talebinize göre eğitimi atölye tarzı da sunuyoruz; yani birlikte aygıt sürücüsü de geliştiriyoruz.
Linux ve bilgisayarlar hakkındaki her türlü yardım, eğitim ve destek taleplerinizi "bilgi@braxp.com" adresine e-posta atarak bize iletebilirsiniz.
Bizlere +905362615860 numaralı hattan erişebilirsiniz.
=====
Asenkronizasyon nedir, CPU ve I/O bound process kavramı, CPU ve I/O Schedulerlar, quantum nedir, schedule edilmesine göre process türleri (interactive, batch, real-time), CPU scheduling policyler, elevatorlar (noop, deadline, cfq), I/O modelleri (senkron, asenkron ve bloklanan, bloklanmayan), kernelda zaman kavramı, HZ sabiti, jiffies ve BogoMIPS, NO_HZ opsiyonu, RTC üzerinden zaman bilgisine erişmek, işlemci bazında zaman ölçümü ve high resolution timers (CONFIG_HIGH_RES_TIMERS), ertelenmiş işlemler, busy waiting vs sleep waiting, uzun ertelemeler (cpu_relax, schedule ve timeoutlar), kısa ertelemeler (*delay ve *sleep fonksiyon ailesi), erteleme zamanına göre kullanılması önerilen yöntemler, üst ve alt katmanlar (top and bottom halves), tasklets ile workqueues ve bunların karşılaştırılması
8. KERNELDA ZAMAN
• HZ tanımlaması ve jiffies global değişkeni
• BogoMIPS = loops_per_jiffy x Saniyedeki jiffies sayısı x Bir işlemci döngüsünde tüketilen
instruction sayısı (milyon bazında)
• RTC üzerinden gerçek zamana erişmek
• <linux/time.h>, do_gettimeofday, mktime
• İşlemci bazında zaman ölçümü
• <asm/msr.h>, Time Stamp Counter (rdtsc, rdtscl, rdtscll)
• CONFIG_HIGH_RES_TIMERS ve nanosleep
9. ERTELENMİŞ İŞLEMLER
• Ertelenmiş işlemler hangi durumlarda gereklidir?
• Process context vs Interrupt context
• Busy waiting vs Sleep waiting
• Uzun ertelemeler
• cpu_relax, schedule ve timeouts
• Kısa ertelemeler
• ndelay, udelay, mdelay
• msleep, msleep_interruptible, ssleep
10. UZUN ERTELEMELER
• while (time_before(jiffies, j1)) cpu_relax();
• while (time_before(jiffies, j1)) schedule();
• #include <linux/wait.h>
• long wait_event_timeout(wait_queue_head_t q, condition, long timeout);
• long wait_event_interruptible_timeout(wait_queue_head_t q, condition, long timeout);
• #include <linux/sched.h>
• signed long schedule_timeout(signed long timeout);
11. KISA ERTELEMELER
• #include <linux/delay.h>
• void ndelay(unsigned long nsecs);
• void udelay(unsigned long usecs);
• void mdelay(unsigned long msecs);
• void msleep(unsigned int millisecs);
• unsigned long msleep_interruptible(unsigned int millisecs);
• void ssleep(unsigned int seconds);
15. WORKQUEUES
• int queue_work(struct workqueue_struct *queue, struct work_struct *work);
• int queue_delayed_work(struct workqueue_struct *queue, struct work_struct
*work, unsigned long delay);
• int cancel_delayed_work(struct work_struct *work);
• void flush_workqueue(struct workqueue_struct *queue);
• void destroy_workqueue(struct workqueue_struct *queue);
16. ÖNÜMÜZDEKİ DERS
• ioctl konvensiyonları
• İzinler (Capabilities) ve Sınırlandırma
• ioctl hariç aygıt kontrol yöntemleri
• Poll ve select
• Asenkron I/O
• Seek etme
• Erişim Kontrolü