Kernel developer olmaq üçün hardan başlamalı

Salamlar. Mən kernel development ilə məşğul olmaq istəyirəm. Ancaq hardan başlayacağımı tam bilmirəm. İnternetdə araşdırma edərkən bəzi müxtəlif fikirlərlə qarşılaşmışdım: Kimisi deyirdi ki, birbaşa kernel development kitabı al və başla oxumağa. Kimisi də deyirdi ki, c dilini mütəxəssis səviyyəsində öyrəndikdən sonra kernel development öyrənməyə başla. Qısaca özüm haqqında deyim ki, mən ümumiyyətlə c dili ilə o qədər çox məşğul olmamışam. Yalnız orta səviyyəli proqramlar yazmışam. Ümumi götürdükdə isə proqramlaşdırmadan anlayışım var; uzun müddətdir c# proqramlaşdırma ilə məşğulam və bu üzrə işləyirəm. Əməliyyat sisteminə gəldikdə isə artıq 3 aydan çoxdur ki, linux əməliyyat sistemi işlədirəm. Ancaq əməliyyat sistemindən dərin biliyə sahib deyiləm. Sözümün canı, yuxarıdakılara əsasən mənə hardan başlamağı məsləhət görərdiz?

Verilmiş cavablar və yazılan şərhlər (3 cavab var)

ahmed (2017-01-03 18:05:53)
Bu yaxınlarda ilkaddimlar -ın dəstəyi ilə Linux kernel programming seminarlarına başlanacaq - Pulsuz. İstəsəniz iştirak edə bilərsiniz. Vaxt və yeri ilkaddimlar.com -da elan olunacaq.

Osminoq (2017-01-01 20:01:23)
Çox sağolun ətraflı cavab üçün.

ahmed (2016-12-31 11:33:30)
Deməli belə: C vəya C++ -dan göstəriciləri mükəmməl bilməlisiniz, o cümlədən siyahıları, biristiqamətli və ikiistiqamətli. Siyahıları əla bildikdən sonra (element əlavə etmək, axtarmaq, silmək) deməli C dilini kafi bilirsiniz hesab etmək olar. İkinci mərhələ mütləq Unix sistemini örgənməlisiniz. Ən azından aşağıdakı funksiyaları mükəmməl bilməlisiniz: open(), read()/write(), fork(), exec(), pipe(), dup2(), socket(). Üstəgəl unixdə faylsistemi anlayışını da bilmək tələb olunur. Üçüncü mərhələ əlbəttdə ki Assembler. Assembler dilini mükəmməl olmasa da ən azından orta səviyyədə bilmılisiniz. Funksiyaların tərtibi, funksiyalara parametr ötürmə, funksiyaların qiymət qaytarması v.s. -a aid assemblerdə sərbəst proqram qurmağı örgənməlisiniz. Bütün bunlar əlbəttdə ki istifadəçi proqramlaşdırmaya aiidir və bu mövzuları mükəmməl bildikdən sonra artıq sistem proqramlaşdırmanı örgənməyə başlamaq olar. Linux mürəkkəb inkişaf etmiş nüvədir. İlk olaraq onu örgənmək sizə çox çətin ola bilər. Ona görə ilk əvvəl arxitektura, sistem v.s. məsələrlə tanış olmaq lazımdır. Nəzərə alın ki, sistem proqramlaşdırma istifadəçi proqramlaşdırmadan köklü şəkildə fərqlənir. Burada sizin adət etdiyiniz kimi salam dünya proqramı yazım, test edim v.s. yoxdur. Sistem proqramlaşdırmada birbaşa avadanlıqlar, ünvanlar, kəsilmələrlə işləyirsiniz. Ona görə avadanlıqlarla da tanış olmalısınız. Ilk olaraq bu dərsliyi nəzərdən keçirin writing your toy os Daha sonra əlbəttdə ki məşhur Bkendev dərsliyi Bkerndevi də mükəmməl bildikdən sonra, deyək ki, artıq klaviatura drayverində sərbəst dəyişikliklər edə bildikdən sonra Linuxa başlamaq olar. Professional Linux Kernel Architecture kitabını məsləhət görürəm. Bundan əlavə Linux Memory Management, Linux Virtual Filesystem v.s. -ə aid çoxlu məqalələr, pdf kitablar mövcuddur. Bundan əlavə mütləq İntel Programmers Referense Manual sizin stolüstü kitabınız olmalıdır.