Nasıl bir Çekirdek / Sistem / Aygıt sürücüsü programcısı olunur? [kapalı]


40

Şu anda Android işletim sistemi ile çalışan bir yazılım mühendisi olarak profesyonel bir kapasitede çalışıyorum. Platformumuzu projenin diğer unsurları arasında yerel bir daemon olarak entegre etmek için çalışıyoruz. Öncelikle Java'da SDK ve Android uygulamalarını geliştirmek için çalışıyorum ancak platformda C / C ++ ile ilgili yardım alıyorum.

Her neyse, linux için profesyonel olarak düşük seviyelerde çalışarak çalışmak için büyük bir ilgim var. Şu anki durumumdan mutsuz değilim ve şirket izin verdiği müddetçe etrafta dolanacak (aslına bakarsanız orada çalışmaktan büyük zevk alacağım!), Ancak bu yönde çalışmak istiyorum. Linux Çekirdek Gelişimi (Robert Love) ve Linux Programlama Arayüzü (Michael Kerrisk) (C becerilerimi her fırsatta gçlendirmeye ek olarak ek olarak) ve Canavar ve benzeri sitelere göz atmaya çalışıyorum.

Gördüğüm sorun şu ki, giriş seviyesi pozisyonu yok. Kişi bu alana nasıl girer? Ne zaman istersen, "Linux Sistem Programcısı" veya "Linux Aygıt Sürücüsü Programcısı" nı görüyorum, hepsi en az 5-7 yıllık deneyim gerektiriyor. Halatları bilen birini istiyorlar, orta seviye bir programcı değil (7 aydır çalışıyorum ...).

Bu yüzden, yığın akışındaki bazılarınızın yapmak istediğim şeyi yaparak profesyonel bir kapasitede çalıştığını farz ediyorum. Oraya nasıl gittin? Oraya gitmek için hangi platformları kullandınız? Daha zor zamanlar geçireceğim çünkü bilgisayar mühendisinin aksine CSC'de lisanslarım var (nerede biraz daha gömülü, asm, vb. Yaşayacakları)?

AYDINLATMA İÇİN DÜZENLEME! Linux çekirdeğinin / sürücülerinin açık kaynak yapısının farkındayım. Gündelik işimin nerede olduğuna bakılmaksızın katkıda bulunmayı planlıyorum. Ne tür giriş seviyesi pozisyonlarının ilgili işler yapmama ve bunu yapmam için bana izin vereceğini merak ediyorum! Şimdiye kadarki bütün cevaplar için teşekkürler!


6
Çok basit. Linux açık kaynak kodludur. Sadece geliştirme listesini takip edin, bazı hataları düzeltin, eşyalarınızı
öğrendikten

2
Ancak Linux'ta herhangi bir alanı seçmeden önce, Linux'un ve bazı kişilerin üzerinde çalışacağını iyi bilmeniz gerekir. Diyelim ki Linux dosya sistemi vb. Hakkında bilgi sahibi olmalısınız
user29973

Yanıtlar:


36

Şirketim için Linux aygıt sürücüleri yazıyorum ve bölümümdeki Linux geliştirme hakkında en iyisini bilerek bu pozisyona girdim ve beni yeni bir rol almaları için teşvik ettiler / işe aldılar. Çok küçük yaşta bir stil girişiydi, bu yüzden varlar ve umudunu yitirmiyorlar!

Size derhal tavsiyem, odağınızı daraltıp dayamayacağınızı görmek. Çekirdek programlaması sistem programlamasından çok farklı, aygıt sürücüsü programlamasından çok farklı.

  1. Çekirdek geliştiricileri, işletim sisteminin çekirdeği için arayüzler, veri yapıları, algoritmalar ve optimizasyona odaklanır.
  2. Sistem programcıları ortak veya zor işleri otomatikleştirmek için ödüller, yardımcı programlar ve diğer araçlar yazarlar.
  3. Aygıt sürücüleri, aygıt denetleyicisini ve G / Ç'yi uygulamak için çekirdek geliştiricileri tarafından yazılan arabirimleri ve veri yapılarını kullanır.

Çok iyi bir çekirdek programcısı, gecikme süresinin ve donanım belirleyiciliğinin kesilmesi hakkında pek bir şey bilmeyebilir, ancak kilitlerin, sıraların ve Kobjectlerin nasıl çalıştığı hakkında çok şey bilecektir. Bir aygıt sürücüsü programcısı, donanımlarının düzgün ve hızlı bir şekilde çalışmasını sağlamak için kilitleri, kuyrukları ve diğer çekirdek arabirimlerini nasıl kullanacağını bilecektir, ancak bir sayfa ayırma hatasını düzeltmesi veya yeni bir zamanlayıcı yazması olası olmayacaktır.

Dolayısıyla, belki de geliştirme listelerini veya hata izleyicileri inceleyerek sizi en çok ilgilendiren şeyi seçin ve ne tür bir etki yapmak istediğinizi görün. Ardından, bu projeler ve çabalar üzerinde çalışarak deneyim kazanın. Adınız / e-posta adresiniz çekirdek ana hattındaki koda eklendiğinde, diğer pozisyonlar için özgeçmiş / kapak mektubunuzda gösterebileceğiniz bir deneyim yaşarsınız :-)


3
İlginç, ama belki de sihirli bir mermi değil.
Matt Joiner

7
Sihirli mermiler nadiren bulunur.
Ed S.,

Girişiniz için teşekkür ederiz! Şimdilik odağımı daraltmak için çalışacağım (nihayetinde bütün yönleri anlamak istiyorum). Hangi kapasitede (ifşa etmeye hazırsanız) sürücüler için “erkeğe git” olmak için daha önce çalıştınız mı?
akordeon

4
İster inanın ister inanmayın, ama bunu anlamaya çalışan donanımı ve satışları kullanan müşteriler için teknik destek yaptım: E-posta ve telefon konuşmalarını cevapladım. Ancak Linux için çekirdek ve kullanıcı alanı geliştirme konusundaki deneyimim bana daha fazla yardımcı oldu.
Joe Friedrichsen

3

Motorola ve birkaç diğer yüksek teknoloji firmasında çalışan 15+ yıllık deneyime sahip bir yazılım geliştiriciyim. Lisans derecem var. Bu yüzden amatör değilim.

Bu soru ... nasıl girilir ... sadece Linux için değil, hemen hemen her uzmanlık alanı için ortak bir sorundur. Yazılım mühendisliği tıpta tıp uzmanlarının uzmanlaşması gereken bir ilaç haline geldi. Ancak, 10 yıllık bir uzmanlıktan sonra şirketiniz küçülüp sizi işten çıkardığında, iş piyasasının değiştiğini ve şu anki durumunuz olmadığını görüyorsunuz. Şirketler çok seçici değildiler - sık sık şimdi dilek listesindeki tüm becerilere sahip olan tek aday, o şirket için doğrudan çalışan ya da doğrudan bir rakip! Oldukça zorlaştı.

Şu an bu durumdayım ve zor olsa da, işe almak için kullanabileceğiniz birkaç strateji var. Ama önce, teknoloji konusunda uzman olmalısınız, çünkü işe alınırsa üretmeniz beklenir. Hazır hissettiğinizde, aşağıdakileri göz önünde bulundurun:

  1. Başlamak için küçük bir şirket arayın. Büyük adamlar gibi kimi işe aldıkları konusunda çok seçici olamazlar. Orada bir veya iki yıl geçirin ve ondan sonra kalifiye olmak için özgeçmişle ilgili mesleki deneyime sahip olacaksınız.

  2. Sözleşmeyi düşünün, özellikle de tam zamanlı olarak çalışmıyorsanız. Şirketler bir müteahhide tam zamanlı olmaktan çok daha fazla şans istemeye isteklidir. Yine, özgeçmişinizi koymak için doğrulanabilir bir deneyime sahip olduğunuzda, kapıları açar.

  3. Küçük bir projeyi kendi başınıza yapın ve potansiyel işverenlere sunmak için bir portföy oluşturun. Bu, sadece küçük bir şirkete değil, aynı zamanda orta ölçekli bir şirkete girmenin kapısını açabilir.

Yukarıdakilere ek olarak, Kforce, Aerotek, vb. Bir şirketten profesyonel bir işveren kullanmayı düşünün. İşveren işe alım ücretini öder ve işe alan kişi, sizi kendi başınıza yapamayacağınız şekilde satmanıza yardımcı olur.

Aslında, sadece 7 aylık deneyime sahip bir "genç programcı", yeni bir şeyler yapmak için işe alınmaya çalışırken benim gibi bir adama karşı çok büyük bir avantaja sahip. Şirketler çok fazla para istemeyeceğinizi ve gerektiğinde yurtdışında uzun ipuçlarını da içeren SENİN KORUNMASI GEREKECEĞİNİ bildikleri için "yeni ürünler" / "yeni sınıflar" SEVİYOR. Şirketler, daha önce bir tane için daha iyi bir tane bırakmak istediğimi bildikleri için, bir tane için başvurmuş olsam bile beni küçük bir pozisyon için işe almayacaklar. Durumun o kadar da kötü değil.

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.