2 Günde İşletim Sistemi Yazabilir Misiniz?

0
FZ
Programlamaya bir şekilde girmiş hemen herkesin aklından bir ara geçmiş sorulardan biridir, "işletim sistemi nasıl yazılır?". İşletim sistemleri bilgisayar dünyasının en popüler, en gizemli, en çok tartışılan ve piyasayı belirleyen konularından biri olagelmiştir. Kimisine göre basit, kimisine göre karmaşık olan bu işte kavram karmaşası da az değildir, çekirdek ile dağıtımı karıştıranlar mı istersiniz, neyin temel işlevsellik olduğu üstüne sabaha dek tartışanlar mı yoksa hangi donanımların esas alınması ve hangi sürücülerin desteklenmesi gerektiğine dair kavga edenler mi istersiniz... BSD, Solaris, Linux, BeOS, VMS, MS Windows ve daha pek çok geliştirme ekibine bakınca konunun popülaritesini ve karmaşıklığını anlamak mümkündür.

Pekiyi bu konuda birkaç günlük bir çalışma ile işin temellerini öğrenmek mümkün müdür? 2 günde işletim sistemi yazabilir misiniz?
Son birkaç gündür insanlarla bu konu hakkında konuşurken aslında gerçekten de kısa süreli atöyle (workshop) çalışmaları ile bilgisayar programcılarına bir şeyler öğretilebileceği düşüncesi gündeme geldi.

Düşüncenin ötesinde somut bazı uygulamalar da mevcuttu, misal:

Libre Software Meeting (LSM) konferansındaki Kernels and operating systems bölümü ve özellikle de buradaki SOS: a step-by-step implementation of a "do it yourself" Unix-like OS konuşması. Buna ek olarak yine Thomas Petazzoni tarafından Wonderful trip inside OS internals, for the dummies (part 1) ve Wonderful trip inside an OS internals for the dummies (part 2).

Gündeme gelen bir başka örnek ise işin kitabını yazmış Tanenbaum ve ekibi tarafından yeni geliştirilmiş MINIX 3. MINIX ve MINIX 2'nin aksine MINIX 3 öğretim amaçlı olmanın ötesine geçen ve düşük donanımlarda, gömülü (embedded) sistemlerde iyi şekilde ciddi olarak çalışmak için tasarlanmış UNIX benzeri bir işletim sistemi imiş. Bu haber bağlamında dikkat çeken kısmı ise sistemin temel kısmının 4000 satırdan daha az C kodundan müteşekkil olması.

Kendi adıma Türkiye'deki özgür yazılım günlerinde ve Linux ile bağlantılı konferanslarda bu tür atölye çalışmalarının ufuk açıcı olabileceğini düşünüyorum. Bu haber ve habere gelecek yorumların oluşturacağı beyin fırtınası sonucunda belki önümüzdeki günlerde, kısa süre içinde bu tür bir şeylerin düzenlenmesine vesile olabilir, bilgi birikiminin daha geniş bir kitleye yayılmasını ve derinleşmesini sağlayabiliriz.

Görüşler

0
sefalet
Atöyle? Atölye? Atelier?

http://www.bizimanadolu.com/sanat/Dil10.htm

işlik?
0
FZ
"İşlik" de olabilir, ben bilmediğim için kullanmadım. Doğru, atöyle lafı da yabancı laf ama herhalde "workshop"dan daha önce ve yaygın kullanılmış olduğu için onu yazayım dedim. Bir dahaki sefere "işlik" sözcüğünü denerim.
0
simor
Çalıştay ?
0
simor
Aslında işlik te olabilir çalıştay da. İkisi de isim, fakat cümle anlam doğruluğu bakımından mesela; "Stratejik planlama çalıştayı" veya altta kendi yorumunuzdaki gibi "...1-2 günlük o tür yoğun bir işlik çalışmasına katılıp elini kirletmeyi göze alacak ;-)). şeklinde de çok güzel kullanılabilir. Yerlerini değiştirerek kendiniz de bir bakın. Neyse konuyu dağıtmayayım. 2 günde işletim sistemi tanımına uyacak birşey yazılabilirmi bilemem ama. Elini kirletecek babayiğitler 2 günde işletim sistemi çıkacak kadar fikir üretebilir. 3. gün de dinlenirler problem kalmaz :).
0
loker
Sanırım mekan olarak işlik, faaliyet olarak çalıştay... işlik bana leGuin çevirilerindeki az kullanılan tanıdık sözcükleri hatırlatır, pek severim kendisini, ama kullandığımda hep uzaylı gibi bakar insanlar... korkarım o yüzden... çalıştay sözcüğüne ise hiç ısınamadım ama workshop faaliyetini karşılıyor sanki...
0
rafet
Islik bence de fena degil, calistay cok tuhaf geliyor bana da. Ama ben yine de atolye derdim, anlasilir olmak icin. Dilde fazla zorlamak, ozturkce kullanacagim diye anlasilmaz cumleler kurmak yanlisi degilim. Dili biraz da kendi haline birakmak lazim. Az biraz yeni sozcukler katarak....
0
Zebani
"İşlik" güzelmiş be :) ama biraz kullanımı zor sanırım. Ama sevdim ben bu "İşlik" i. :)
0
zahter
Bununla ilgili sayilabilecek Serdar Koylu'nun bazi yakinmalari var.Ayrica C ve Sistem Programcilari Dernegi'nin halihazirda calismalari mevcut.Ancak ne LKD seminerleri cercevesinde Serdar Koylu'nun ne de CSD'nin kendi ugraslari insanlari harekete gecirememis.Sanki bir seyler eksik?
0
FZ
Çalışmalardan haberdarım ancak düzgün yapılmış detaylı sunumlardan haberim yok. Yine haberde belirttiğim şekilde düzenlenmiş ve adım adım, düzgün şekilde anlatılan bir "işlik çalışması"ndan da (workshop session) haberdar değilim, varsa lütfen haberdar edin, bir yere not düşelim.

Bilgi Üniversitesi'nin düzenlediği Açık Kaynak ve Özgür Yazılım günlerinin süresinin uzatılacağını ve belki 1 haftaya yayılabileceğini duymuştum organizatörlerden, belki haberde geçen Fransa'dakine benzer bir çalışmayı düzenleyebilecek insanları davet edebilirler yurtdışından, eğer ki Türkiye'deki programcıların ilgi gösterebileceğini düşünürlerse (malum bu iş Java ile ticari sistem geliştirmek ya da PHP ve MySQL ile Internet sitesi yapmak gibi popüler bir şey değil, daha dar ve teknik bir kesime hitap ediyor, yine de herhalde bir bilgisayar lab.ını doldurabilecek 20-25 "hacker" çıkar diye düşünüyorum 1-2 günlük o tür yoğun bir işlik çalışmasına katılıp elini kirletmeyi göze alacak ;-)).

Fransa'daki o etkinlikteki konuşmacılardan birinin de GNU/Hurd ile ilgili sistem iç işleyişine dair güzel bir sunum yapacağı dikkatimi çekmişti. Bu tür birkaç etkinlik düzenlenirse güzel olabilir kanaatindeyim.
0
bm
Ya FZ buna uygulamali kurs filan desen olmuyor mu? Zaten yapilan ise ne workshop ne atolye oturuyor tam, bir de simdi islik cikti basimiza. Kurs desen herkes anlar bence.

Bir de çalıştay var bu arada. TDK sozlugu ise bilim adamlarini filan karistirmis ama onun da 'workshop' yerine kullanildigini duydum.

0
vst
Dun Weber'in burokrasisini okuyordum. Elimde hem turkce hem de ingilizce kitap vardi. Lanet edip, (guyya) turkce kitabi firlattim bir kenara. Ingilizceden okumaya basladim. Oz turkce denilen (bence) sacmalik yuzunden Ingilizce kaynaklara muhtac kaldik. Hiyerarsi dememek icin asama-sirali demisler. Mevzunun ozunden cok sekline takiliyoruz artik... Yapalım boyle bir calisma da adi ne olursa olsun. Turkce'nin gelecegi icin bu acidan cok endiseliyim. Kas yapalim derken goz cikartiyoruz. Tum ifade gucumuzu yitirdik ve cozum maalesef ozturkce (ne demekse) degil.
0
bm
Pekiyi bu konuda birkaç günlük bir çalışma ile işin temellerini öğrenmek mümkün müdür? 2 günde işletim sistemi yazabilir misiniz?

Yazarsiniz tabii. Eger iyi bir ogrenme platformu varsa (RISCimsi bir simulator mesela) ve on bilginiz tamamsa olur. Geregi gibi ogretilen OS dersi alanlardan odevini son gunlere birakanlar senelerdir boyle yazip duruyorlar zaten. (Tabii isletim sistemi denen seyin manasi degisti son senelerde, cekirdekimsi kismini kastediyorum.)

Isin temelini birkac gunluk calisma ile ogrenmek nereden basladiginiza bagli. Bunlarin ille de birisi tarafindan anlatilmasi gerekmiyor, 'kitap' denen birsey oldugu gibi acik kaynaklar da var. Bir ara bir suru simulator filan bulmustum ama simdi kolayimda degil linkler. MIT'nin dersi acik, oraya da bakilabilir fikir almak icin.

0
GtG
Berkeley'den de ders online olarak (ve de ucretsiz) alinabiliyordu. Suan direk linki yok ancak ben Bilkent'te dersi aldigim yillarda hocanin eksiklerini kapatmak icin dersi ordan da takip ediyordum ve acikcasi cok basarili idi. Ulasamayanlar ders notlarinin sakladigim kismina burdan erisebilirler.
0
xelon
Kısıtlı zamanda yazılmaya çalışılan bir yazılımın ne kadar iyi olduğu konusunda hepimiz hemfikiriz sanırım. Bu yüzden, 2 günde işletim sistemi yazmak yerine sunumlar, dökümanlar yada ufak programlarla örnekler vermek bence daha mantıklı. Tabi eğitilmek istenen kitlede çok önemli (Basit mi yoksa ileri düzeydemi?)

İleri düzeyde öğrenmek isteyen arkadaşlar internette iyi bir araştırmadan sonra istediklerine ulaşabilirler. Bu arkadaşlarla yapılabilecek en iyi şey en baştan bir işletim sistemi ortaya atmaktır. Eğer Türk programcıları geliştirmek istiyorsak bu çok mantıklı. 1000 kişilik bir yazılım grubu ile sınırsız zamanda(1-5 sene gibi) neler yaratılamazki :)

Basit olarak anlatılmak isteniyorsa ufak sunumlar ve dökümanlarla bunların üstesinden gelinebilir. Bu da (bence) gereksiz bir fanteziye girer.

Bizde yabancılardan farklı olan sanırım herkesin tek başına birşeyler ortaya çıkarmaya çalışması. Tabi bazı istisnalar var.

Operating System Concepts, Abraham Silberschatz
0
xelon
En alta bu konuyla alakalı iyi bir kitap ismi yazdım. Yoksa alıntı felan yapmadım. :)
0
FZ
Yani sizce Fransa'daki etkinlikler, David Decotigny ve Thomas Petazzoni'nin insanlarla birlikte yaptıkları, anlattıkları şeyler ve pratik olarak uygulama yapmak saçma mı? Boşa vakit kaybı mı?

Şimdi düşünüyorum da, çok iyi matematik, mekanik, mühendislik kitapları da var. Örnek sorular da var. Çözüm yapıp doğru çözüm ile kıyaslamanız da mümkün. Internet denen bir şey var.

Yazılı kaynaklar, etkileşimli Internet sistemleri var dolayısı ile insanların bir araya gelmesine ya da bilen birilerinden bir şeyler dinlemesine gerek yok düşüncesini mi benimseyelim?

Tanenbaum da çok güzel kitap yazmış, madem hocanın kitabı var herhalde kendisi gelip bir şeyler anlatsa, ders verse gidip izlemek, dinlemek de vakit kaybı mı? Konular, kodlar filan hepsi kitaplarda, Internet'te mevcut.
0
xelon
Eğer yaptığınız sunum temel bir işletim sistemini anlatıyorsa, evet gereksiz. Bunu zaten çoğumuz arkadaşlarımıza anlatmaya çalışmışızdır. Eğer daha detaylı bilgileri (örneğin Scheduling Algoritmaları, IPC, Bellek yönetimi, Deadlock vs vs ) sunumla anlatıp, bir tartışma ortamı yaratabilirseniz o zaman kesinlikle gereklidir.

Benim demek istediğim gerçekten bu işe gönül adayacak yada adamış insanların biraraya gelmesi. Elbetteki insanlardan kendimizi soyutlamamalıyız. Hepimiz biliyoruzki bir şahısın anlatımıyla birşey öğrenmek, okuyarak yada araştırılarak öğrenmekten çok daha hızlıdır.

Aslına bakarsanız bir grup kurulması ve bu gruba yönelik aktivitelerin yapılmasından yanayım. Böylelikle eğitimi alanlar hem kendini hem yazılan OS'u geliştirebilir. Böylece sunumları yapanlarda verdikleri emeğin somut bir ürüne dönüştüklerini görebilirler.

Umarım bu sefer düşündüklerimi doğru ifade edebilmişimdir.
0
Geryon
Belki hiçbir öğrenme sürecine ihtiyaç duymayan, daha önce os dev. tecrübesi olan bir programcı ezberden 1 haftada yazabilir.(Desktop,mouse,network layer,fs,executable file model....) VBE için düzgün bir kütüpane belki sadece 1 gün sürebilir. Belki süper hızlı kod yazan programcı 48 saatte hepsini yazar ama ben pek mümkün görmüyorum açıkcası...
0
FZ
Fazla provakatif başlık atıyorum galiba :) Bu bir yarışma değil ve zaten kimse 2 gün içinde tam teşekküllü, tüm donanımları tanıyan, vs. işletim sistemi yazmaktan bahsetmiyor. Eğitim amaçlı yoğun bir pratik, "hands on" etkinlik söz konusu. Temel işlevselliğe dair ve belli ölçüde programlama bilgisine sahip insanlara yoğun şekilde bir şeylerin aktarılması söz konusu gördüğüm kadarı ile o tür bir çalışmada.
0
skoylu
İki günde işletim sistemi neden yazılmasın? Yazılır elbet, ama ne kadar işletir aleti, o ayrı bir soru olur. Birinci husus, günümüzde işletim sistemi dendiği zaman çok çok iri devasa bir kompleksin tamamı görülüyor. Elbet böyle bir kompleks iki üç günü işi olmaz. Fakat, işletim sistemi görevsellğinden uzak, temel olarak process yönetim ve donanım yünetim işlevselliğine sahip bir sistemi 2 günde yazmak ihtimal dahilinde olabilir, o da eğer ne yapacağınızı biliyorsanız harbiden.. Ama ben multitasking, IPC, modülerlik vs. istiyorum derseniz bu süre yetmeyebilir elbet.. Zaten burada amaçlanan öyle dört başı mamur bir sistem değil. Amaç eğitim. Bu durumda bu yazacağımız sistem modern process management vs. konularından ziyade, interrupt handling vs. gibi bilhassa donanıma yönelik çalışma stilini anlamakta bir hayli faydalı olacaktır. Birisi bu faaliyete girişirse, meraklı olarak ve faaliyetin içinde bulunmak büyük kazanç olacaktır. Bir workshop düzenleyip, iki günde işletim sistemi yazmaya çalışmak, bence biraz fazla geyik olur. Bu tür mekanizmaları kullanmak, anlamak isteyen çok dar bir kesim var, bunlarda zaten bir şekilde işi başka kaynaklardan kotarabiliyorlar. Bence bir işletim sistemi nedir, etrafındaki ekosistemi (libc, temel API'ler, IPC vs.) ile birlikte anlamayı sağlayacak bir düzenleme daha faydalı olacaktır. Maalesef pek çokları için programlama demek bir grid ile veritabanını fare ile bağlamaktan ibaret. En basit yünden asenkron bilgi işlem konusunu bilen/kullanan adam sayısı kaçtır? Programlama işinde LISP/Python/C kavgalarına bakınca flat, bir yerde başlayıp, giden giden ve gidip biten programlama konusundan pek öteye gitmediğimizi görüyorum ve üzülüyorum. Bir şekilde birilerinin bilhassa bu tür çalışma yöntemlerini öğretmesi/öğrenmesi gerekiyor. Ama hiç göremiyoruz buna yönelik bir şeyler. Bir diğer husus ise dizayn konusu. Burada perişan haldeyiz. UML veya ne bileyim Java'nın bilmemnesini öğrenmiş olmakla dizayn işini çözdüğümüz gibi anlıyoruz. Oysa yazılmış bir sürü uygulamaya baktığımda, kullanışsızlıktan tutun yanlış sonuç üretmeye, güdük kalmaya kadar varan bir sürü basitten karışığa uzanan dizayn hataları görüyorum. Sorunun mimari modelini çıkarmak, "yazılım gereklerini" doğru görebilmek vs. gibi konuları, veya OS sizin için neler yapar, nasıl yapar gibi konuları kavratacak uygun süreli (3..5 gün x 6..8 saat belki) bir yoğun uygulamalı eğitim sanıyorum şu an için en lüzumu hissedilen şey gibime geliyor. Bu temel bilgilerde yetkinlik kazanılmaması, kestirilemeyen proje zamanı, iş bitti derken çuvallayıp başa dönmeler, sistemin yapabileceği bir ton güzel şey varken güdük kalmış uygulamalar vs. olarak bize geri dönüyor. Buda programcı dediğimiz kitlenin verimini azaltıyor. Hepsinden kötüsü, OSS camiasında yaşanıyor. Versiyonlar arası geçişler vs. acayip sancılara yolaçtığı gibi, bir sürü programcı olmasına rağmen işler kaplumbağa hızıyla ilerliyor. Bu yüzden, bence bu konulara bilhassa yoğunlaşmak lazım..
0
anonim
Maalesef pek çokları için programlama demek bir grid ile veritabanını fare ile bağlamaktan ibaret.
+ 1
0
FZ
Pek çokları için de öyle değil.

Ben hala o tür etkinliklerin faydalı olacağını düşünüyorum, dikkat edenler onun tekil bir etkinlik olmadığını, aynı adamların başka çalışmalar da yaptıklarını ve yine aynı kategoride başka adamların da işletim sistemlerine dair sunumlarını görebilirler.

Öte yandan, belli bir teknik konudan bahsederken, proje yönetimi, UML, gereksinim analizi, değişiklik yönetimi gibi bambaşka konularda eksiklik olduğunu belirtmek de garip geldi bana. O konuları önemsiz bulduğumdan değil, yani biri çıkar da açık kodlu ve özgür yazılım dünyasında tasarım, modelleme, UML, gereksinim analizi, yazılım mühendisliği konusunda ciddi sıkıntı var, şu tür bir seminer yapılsın, yapayım, ya da filanca çok güzel anlatır, anlatsın denirse ve gerçekten de uzun soluklu, 2 günü geçen bir etkinlik olursa o konularla ilgilenecek insanlar da herhalde gelecek, katılacak ve faydalanacaklardır diye düşünüyorum. Ancak bu farklı bir iştir, proje yönetimi, yazılım süreçleri, ekibi kontrol altında tutma ve hedefe yönelik çalışma, vs.
0
oeylem
Buradaki problem kavramların yeteri kadar iyi tanımlanmamış olmasından kaynaklanıyor. Programlama nedir? Progamlama yapan ne yapar? Program yönetmek nedir? Hatta projenin dediğinde insanların ne anlatmak istediklerin bildiklerinden bile şüpheliyim ve bu tartışılmalı ama bu acilen yapılmalı. Türk bilgisayar akademisyen(ler)i bu konuda yavaş ve plansız davrandıklarından sonuç bu oluyor gibi geliyor bana, çünkü bu tartışmayı yapması gerekenler (yapabilecekler) ve bunun sonuçlarının genç insanlar tarafından anlaşılacak şekilde yayma görevi onların. Yoksa Türk bilgisayar akademisyeni dediğimde üniversitede ders veren ve yayın yapan, kitap yazan insanı anlıyorsak unutun gitsin! Zayıf temel üzerinde süslü yapılar kuralım olsun bitsin.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Python tabanlı Türkçe deasciifier

FZ

Kısa süre önce Deniz Yüret'in Türkçe 'deasciifier'ını (turkish-mode, Emacs Lisp ile yapılmış) Python'a çevirdim. Kaynak kod adresi: http://github.com/emres/deasciifier.

'deasciification' ve 'deasciifier' terimlerine aşina olmayanlar için kısa açıklama: Türkçe harfler kullanılmadan, sadece ASCII harfler ile yazılmış Türkçe metinlerin, düzgün şekilde Türkçe harfler kullanılarak yazılmış hale çevrilmesine 'deasciification' denir. Bu duruma bir örnek verelim, girdi metni mesela

"Opusmegi cagristiran catirtilar."

ise, çıktı metni şöyle olmalıdır:

"Öpüşmeği çağrıştıran çatırtılar."

Tüm zamanların en kötü bilgisayar hataları

FZ

Mariner I uzay aracı, Sovyet gaz boru hattı, Therac-25 tıbbi hızlandırıcı, finger sunucusu, Kerberos rastsal sayı üreteci, Intel Pentium, Ariane 5 501 numaralı uçuş. Bağlantısız gibi görünen bu isimlerin ortak bir noktası var: Tarihteki en büyük yazılım hataları.

Detaylar WIRED dergisinin History's Worst Software Bugs başlıklı yazısında.

GNU/Linux Üzerinde Streaming Media

FZ

Neden değerli hard diskimi yığınla MP3/Ogg Vorbis ile doldurayım (ya da bir sürü CD yazıp bunları kataloglamak ile uğraşayım)? Bulunduğum ağ üzerinde birileri bir sunucu kursa ve ben de misal XMMS ile doğrudan oraya bağlanıp paşa paşa müziğimi, radyomu, vs. canlı bağlantı üzerinden dinlesem diyenlerdenseniz ve böyle bir müzik sunucusunun nasıl kurulacağını merak ediyorsanız şu lezzetli makale tam ağzınıza göre: Streaming Audio the Icecast Way

CHAT Arkadaşım Bir Bilgisayar Mı!

FZ

A.L.I.C.E ve AIML

"Dilimin sınırları düşüncemin sınırlarıdır." Ludwig Wittgenstein (*)

Sıradan bir gün. Bilgisayarı açıyorsunuz. Internet'e bağlanıyorsunuz. Aklınıza gelen siteleri gezerken canınız sıkılıyor ve birileri ile canlı olarak yazışmak istiyorsunuz. IRC kanallarından birinde ya da canlı yazışma imkanı sunan bir web sayfasında AI takma isimli bir kullanıcı ile karşılaşıyorsunuz ve aranızda şöyle bir diyalog geçiyor (1) :

DOS: Henüz Ölmedi!

FZ

DOS. Yani MS-DOS. Bugünkü gençlerin büyük bir kısmının dahi bilmediği kadar düşük işlemcili bilgisayarlarda çalışabilen, pek çok öncü yazılımın geliştirilmesine yol açmış, bazılarımızın kolayca küçümseyip aşağılayabileceği bir işletim sistemi. Çoktan öldü, cenazesini kaldırdık diye düşünedurun bazıları pek de öyle düşünmüyor.

Bu makale DOS´a yazılmış bir güzelleme şeklinde ;-) FreeDOS gibi açıkkodlu açık kodlu bir alternatifi bulunan bu ilkel ortamda (!) artık Python ile program yazmanız, MP3 dinlemeniz ve tabii en önemlisi tüm zamanların en güzel oyunlarını oynamanız mümkün ;-) Meraklısı DOSbox ve Interesting DOS Programs sitelerine bir göz atabilir.