6️⃣ xv6

xv6, MIT tarafından ( günümüzde CSAIL, Computer Science & Artificial Intelligence Laboratory altında duran PDOS, Parallel & Distributed Operating Systems Group tarafından, evet tarafından! [1]) İşletim Sistemi ders(ler)i için eğitim amaçlı geliştirilmiş mini bir işletim sistemidir [2]. Unix baz alınarak tasarlanmıştır. İlk olarak 2006 yılında x86 işlemciler için geliştirilmiştir. Fakat 2019 yılında RISC-V mimarisine port edilmiştir [3]. Orijinal x86 sürümü artık geliştirilmemektedir, x86 sürümüne son commit 2020 yılında yapılmıştır [4]. Gerçi hoş RISC-V sürümüne de son commit 2022 yılında yapılmıştır [5]. RISC-V için olan sürümü, xv6-riscv olarak da anılmaktadır. Ben kısaca xv6 diyeceğim.

xv6, Version 6 Unix, v6 dan esinlenerek tasarlanmıştır. Meşhur A Commentary on the UNIX Operating System, Lions’ Commentary on UNIX 6th Edition kitabı gibi bir dokümantasyonu vardır (Bu daha çok x86 için yapılmış ilk xv6 için geçerli, RISC-V için olanında bu tarz bir kitap yok, farklı bir kitap var). 2006 yılında xv6’nın tasarlanma amacı orijinal Unix v6’nın standart olmayan bir C dili ile, PDP-11 gibi çok eski ve adeta tarihi eser bir makine için tasarlanmış olmasıymış [6]. Adamlar da güncel bir donanımda, x86’da, çalışabilecek ve standart bir C ile (ANSI C, 1989, eski ama standart) yazılmış benzer bir işletim sistemi yapmışlar sınıfta göstermek için.

MIT İşletim Sistemi Kursları ve Tarihçesi

Kısa bir arama yapınca bile MIT’de verilen farklı kodlarda birçok işletim sistemi dersleri çıkıyor, biraz karışık, bulduklarımı özetliyorum.

MIT’de uzun yıllar boyunca işletim sistemi kursu olmamış (çok ilginç, adamlar exokernel diye bir çekirdek icat ediyorlar ama kusları mı yok?). İlk kurs 2002 yılında açılmış [7]. Bulabildiğim kadarıyla açılan bu kursun kodu ve adı 6.097 Operating System Engineering[8]. Bu kursta öğrencilere Lion’s Commentary kitabi ile klasik meşhur Unix v6 anlatılıyormuş. Labların sonunda da öğrenciler x86 için Jos isminde bir exokernel yazıyorlarmış. Derste hem Unix görmek hem de exokernel yazmak geniş bir örnek görmek açısından iyi oluyormuş. Fakat Unix v6 1975 yılında çıkan PDP-11 için yazılmış bir işletim sistemi. Meşhur K&R C kitabının 1978 yılında yayınlandığını unutmamak lazım. İşletim sisteminin hem tarihi eser bir donanım, PDP-11 için olması hem de standart C’den önce, hatta K&R C’den önce (ilk C standartı olan ANSI C 1989 yılında yayınlanmıştır) olan bir C ile yazılmış olması öğrenciler açısından pek motive edici olmuyormuş. Lablardan dolayı da x86’nın detaylarını öğrenmeleri gerekiyormuş. Bu tarz problemlerin önüne geçmek için 2006 yılında Unix v6’dan esinlenerek ANSI C’de x86 için Xv6 işletim sistemi yazılmış.

Yeniden eskiye doğru kurs tarihçesi ile ilgili bulabildiğim bilgiler:

  • 6.1810 Operating System Engineering Güncel durumda xv6 bu derste kullanılıyor, lisans dersi. Link

  • 6.5810 Operating System Research Seminer Grad dersi, xv6 ile ilgisi yok. Bulunsun diye koydum. Link

  • 6.S081 Operating System Engineering Anladığım kadarıyla 6.1810’un eski kodu. 6.S081 MIT kurs kataloğunda special subject olarak geçiyor, yani bir placeholder kod gibi [9]. 2021 yılına kadar bu isim kullanılmış [10] [11] 2022 yılında kod 6.1810 olmuş gibi anladım [12] [13]. Her iki kursun da sitesi neredeyse aynı.

  • 6.828 Operating System Engineering Bu da 6.S081’den önceki kod sanırım. 2018’e kadar 6.828 imiş [14], 2019’da 6.S081 kodu undergrad OS kursu olmuş, 6.828 ise grad seminer kursu olmuş [15]. Öncesinde 6.828 grad kursu diye anlıyorum [16]. 2019’da 6.S081’in açılmasıyla xv6 da x86’dan, RISC-V’a geçmiş [3]. Kursun içeriği köklü değiştiyse S kodlu special subject ? kurs yapılmış. Birkaç sene sonra da 6.1810 yapılmış olabilir. ODTÜ EE’de de benzer bir şey oluyordu. Mesela yeni açılan grad dersleri EE7123 gibi açılıyor, bir süre sonra EE799 gibi 3 haneli oluyordu, neyse. 6.828’in sitesi en eski 2003 yılına kadar gidiyor bulabildiğim kadarıyla [17]. Elbette o zamanlar xv6 falan yok. İlk xv6’dan, 6.828’in 2006 sitesinde bahsediliyor [6].

  • 6.097 Operating System Engineering Bu da en eski kurs sanırım bu konudaki. İlk olarak 2002 yılında verilmiş [8]. 2003 yılında 6.828 var demiştik zaten [17], herhalde 6.097’in yerine 6.828 geçmiş.

🤔 Zaman içerisinde neden habire kurs kodu değişmiş, pek anlamadım. Günümüzdeki güncel kurs numarası 6.1810

Diğer Üniversitelerdeki Kurslar

xv6’nın Wikipedia sayfasına göre bu işletim sistemi birçok üniversitede ders içeriği olarak kullanılmış. Benim dikkatimi çeken kurslardan biri Harvey Mudd College’ta Neil Rhodes tarafından verilen CS 134 oldu, çünkü YouTube’ta videoları var. Sanıyorum x86 için.

Kitap Hakkında

xv6’nın bir de ders için yazılmış bir kitabı bulunuyor, bağlantısını aşağıda Kaynaklar altında verdim. Bu kitapta temel işletim sistemi kavramları ve xv6’nın tasarımından bahsediliyor. Kitabın yazarlarını araştırmak istedim.

Russ Cox Google çalışanı, Go dilinin yaratıcılarından biri. Daha fazla bir şey demeye gerek yok sanırım 🙂. Kişisel sitesi ve YouTube

Frans Kaashoek MIT’de hoca. Kişisel sitesi

Robert (Tappan) Morris MIT’de hoca. Kişisel sitesi ve Wikipedia. Wikipedia’ya göre meşhur Hacker News servisini sağlayan Y Combinator oluşumunun partnerlerinden birisiymiş. Morris worm u yapan kişi. Ayrıca babası Robert Morris 60’lı yıllarda Bell Labs’ta Multics ve Unix üzerine çalışmış, babadan oğla geçen işletim sistemi sevdası adeta. Derslerde, rtm olarak geçen kişi bu abimiz olmalı.


Adam Belay Kitap yazarlarından değil ama derslerde ab olarak geçen kişi bu kişi olmalı. Kişisel sitesi

📝 Notlarım

xv6’ya bir süredir bakmak istiyordum. Sitemin bu kısmında aldığım notları sizlerle paylaşacağım. Aksini belirtmediğim sürece xv6-riscv üzerinden devam edeceğim. Aldığım notlar:

📚 Kaynaklar

Konu ile ilgili kaynaklar

RISC-V

İlginç geldi: MIT CSAIL’den çıkan spin-offlar