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
xv6-riscv
kaynak kod: https://github.com/mit-pdos/xv6-riscv📖 xv6 book, rev3: https://pdos.csail.mit.edu/6.828/2023/xv6/book-riscv-rev3.pdf
xv6-riscv-book
kaynak kod: https://github.com/mit-pdos/xv6-riscv-bookxv6
kaynak kod (x86, obsolete): https://github.com/mit-pdos/xv6-publicxv6-annotated
x86 olan için ama iyi: https://github.com/palladian1/xv6-annotatedMIT 6.1810 Operating System Engineering kurs sayfası
MIT OCW 6.828 Operating System Engineering, Fall 2012 Grad kurs sayfası xv6 var fakat x86 için.
HMC CS 134 Operating Systems MIT’nin kursu benzeri bir yapısı var fakat sitede daha çok içerik var Fakat x86 için, RISC-v değil.
https://ops-class.org/ genel olarak sevdiğim ve baktığım bir site
📺 2014 yılında, 6.828 kursuna ait ders videoları xv6 var fakat x86 için
📺 Neil Rhodes, CS 134 ders videoları fakat x86 xv6 anlatılıyor.
📺 Harry H. Porter III, hhp3 tarafından hazırlanmış xv6-riscv videoları
📺 Low Byte Productions tarafından hazırlanmış xv6-riscv üzerine birkaç video
📖 Modern Operating Systems, 4th Edition, Tanenbaum.
978-0133591620
🌟
RISC-V
RISC-V An Overview of the ISA by hhp3
İlginç geldi: MIT CSAIL’den çıkan spin-offlar
💭 Yorumlar
Yorum altyapısı giscus tarafından (evet tarafından!) sağlanmaktadır. Yorum yazabilmek için GitHub hesabınız üzerinden giriş yapmanız gerekmektedir. Yorumlar, Github Discussions üzerinde saklanmaktadır.
acca3c53-47c2-463c-98c5-60203bed1d5e