Bu wikiHow makalesi, C veya C++'da nasıl kod yazacağını bilmiyorsan bir işletim sistemini nasıl planlayıp geliştireceğini öğretir. İşletim sistemleri, bilgisayar donanımını yönetir ve uygulamaların çalışması için gereken kaynakları sağlar. Bir işletim sistemini sıfırdan yazmak, güçlü bir bilgisayar bilimi bilgisi, C veya C++ gibi bir programlama dili, derleme ve kod yönetimi uygulamaları gerektirir.
adımlar
Bölüm 1/2: Temelleri Öğrenmek
Adım 1. Bazı temel Bilgisayar Bilimleri derslerini alın
Web için geliştirmenin aksine bir işletim sistemi oluşturmak, algoritmalar, veri yapıları, bilgisayar donanımı ve kaynak yönetimi konularında güçlü bir anlayış gerektirir. İnsanlar bu konuda derece alırlar, bu yüzden çevrimiçi bir öğreticiyi okuduktan sonra tüm işletim sistemini yazmayı beklemeyin! Harvard'ın Bilgisayar Bilimlerine Giriş kursu, EDX aracılığıyla ücretsiz olarak çevrimiçi olarak mevcuttur.
Adım 2. Python gibi üst düzey bir programlama dili öğrenin
Bilgisayar bilimi konusunda sağlam bir temel anlayışa sahip olduğunuzda, sonraki adım C ve/veya C++'da uzmanlaşmaktır. Bilgisayar bilimi hakkında bilgi edinmek gibi, bir dilde uzmanlaşmak isteğe bağlı değildir - sağlam uygulamalar yazamıyorsanız bir işletim sistemini kodlayamazsınız.
C konusunda yeniyseniz, EDX aracılığıyla ücretsiz olan Dartmouth'un C Programlama: Başlarken kursuna göz atın. Bu kursu tamamladığınızda, serideki bir sonraki kursu alabilirsiniz: C Programlama: Dil Temelleri. Ardından Modüler Programlama ve Bellek Yönetimi ve İşaretçiler ve Bellek Yönetimi gibi sonraki kurslara geçin
Adım 3. Bir montaj dili öğrenin
Assembly dilleri, farklı işlemcilerle iletişim kurmak için tasarlanmış düşük seviyeli dillerdir. Montaj farklı işlemci türleri için farklı olduğundan (örneğin, Intel, AMD, VIA ve diğer işlemciler için x86 montaj Dili), kodlama yaptığınız işlemci türünün sürümünü öğrenmeniz gerekir.
- Bu açık kaynak kitap, bütünüyle okunursa, bir işletim sistemi oluşturmak için size yeterince sağlam bir anlayış verebilir.
- Montaj Dili Sanatı, montaj hakkında hem çevrimiçi hem de çevrimdışı olarak sunulan, şiddetle tavsiye edilen bir kitaptır.
- Ayrıca işletim sisteminizin üzerinde çalışması gereken işlemci(ler) türü hakkında da çok araştırma yapmalısınız. İşlemci mimarisi kılavuzları, bir Google araması kullanılarak kolayca bulunabilir ("Intel Kılavuzları, " "ARM kılavuzları, " vb.).
Adım 4. Bir işletim sistemi eğitimini tamamlayın
İşletim sistemi eğitimleri, temel bir işletim sistemi oluşturma sürecinde size yol gösterecektir. Bu, sürece alışmanızı sağlar ve eksik olduğunuz herhangi bir parça olup olmadığını anlamanıza yardımcı olur. Bir veya iki öğreticiyi tamamladığınızda, kendi işletim sisteminizi yaratma yolunda ilerlemiş olacaksınız.
- Bare Bones, ilk basit 32-bit çekirdeğinizi yazmanıza yardımcı olan bir öğreticidir. Öğreticiyi tamamladıktan sonraki adım, kendi işletim sisteminizi yapılandırmak için Meaty Skeleton'ı kullanmaktır.
- Scratch'ten Linux, kendi Linux işletim sisteminizi oluşturmanızda size yol gösteren çevrimiçi bir kitaptır.
- 0'dan 1'e İşletim Sistemleri, baştan sona çeşitli işletim sistemleri oluşturma hakkında ücretsiz bir kitaptır.
Adım 5. İşletim sistemi hedeflerinizi belirleyin
İşletim sisteminizin ne yapmasını istiyorsunuz? Nasıl görünmelidir? Gerçekten tam bir işletim sistemi yazmanız mı gerekiyor yoksa sadece masaüstünüz için belirli bir görünüm mü yaratmak istiyorsunuz? Bunların hepsi kodlamaya başlamadan önce göz önünde bulundurulması gereken şeylerdir.
- Diğer programcılardan oluşan bir ekiple geliştirmeyi düşünün. Proje üzerinde çalışan bir geliştirici ekibine sahip olmak, geliştirme süresini önemli ölçüde kısaltacaktır.
- Başkalarının size yardım etmesini kolaylaştırmak için proje hedeflerinizi, planlarınızı ve sorularınızı herkese açık havuzunuza ekleyin.
Bölüm 2/2: İşletim Sisteminizi Oluşturma
Adım 1. Bir geliştirme ortamı seçin
Bu, yeni işletim sisteminizi kodlamak için kullanacağınız platformdur. Bu kişisel bir tercih meselesidir, ancak çoğu insan ya Windows ya da bir UNIX çeşidi kullanır. Windows kullanıyorsanız, Cygwin veya MinGW gibi bir UNIX ortamı kurmak iyi bir fikirdir. Genellikle, kullandığınız ortamın aşağıdakileri içerdiğinden emin olmak istersiniz:
- GCC (Gnu derleyicisi). Windows kullanıyorsanız, Cygwin veya MinGW'ye yükleyebilirsiniz.
- Binutils, nesne dosyalarını işlemek için kullanılan bir araçlar topluluğudur. Yine, Windows kullanıyorsanız, Cygwin'e yükleyebilirsiniz.
- İyi bir metin editörü. Vim ve emacs, UNIX ortamlarında yaygın olarak kullanılır. Windows kullanıcıları Notepad'i kullanabilir veya çok sekmeli yükseltme için Notepad++'a göz atabilir.
- Perl ve/veya Python. Dize işleme için biri veya her ikisi önerilir.
Adım 2. Sürüm kontrol sisteminizi kurun
Bir işletim sistemi yazmak, muhtemelen yüzlerce (veya binlerce!) kod satırı oluşturacağınız anlamına gelir. Revizyonlar üzerinde çalışırken, bu kafa karıştırıcı olabilir. Kontrol edilecek bazı seçenekler CVS, Mercurial ve Subversion'dur.
Adım 3. Bir önyükleyiciye karar verin
Kendinizinkini oluşturmak istemiyorsanız, Grand Unified Bootloader (GRUB) gibi mevcut bir tane kullanabilirsiniz. Bir önyükleyiciyi kodlamaya cesaretiniz varsa, OSDev.org'da Kendi Önyükleyicinizi Yuvarlama bölümüne bakın.
Adım 4. Bir çekirdek tasarımı seçin
Çekirdek, işletim sisteminizin çekirdeğidir ve kullanıcı ile bilgisayar donanımı arasında bir arayüz sağlar. Monolitik çekirdekler ve mikro çekirdekler vardır. Monolitik çekirdekler, çekirdekteki tüm hizmetleri uygularken, mikro çekirdekler, hizmetleri uygulayan kullanıcı arka plan programlarıyla birleştirilmiş küçük bir çekirdeğe sahiptir. Genel olarak, monolitik çekirdekler daha hızlıdır, ancak mikro çekirdekler daha iyi hata yalıtımı ve güvenilirliğe sahiptir.
Adım 5. Küçük başlayın
Bellek yönetimi ve çoklu görev gibi şeylere geçmeden önce metin görüntüleme ve kesintiler gibi küçük şeylerle başlayın. Büyük bir adım atmak yerine basit bir 16-bit İşletim Sistemi yapmayı da deneyebilirsiniz.
İki hafta içinde tam bir sisteme sahip olmayacaksınız. Önyükleme yapan bir işletim sistemi ile başlayın, ardından harika şeylere geçin
Adım 6. Yeni işletim sisteminizi bir sanal makine ile test edin
Her değişiklik yaptığınızda veya dosyaları geliştirme bilgisayarınızdan test makinenize aktarmanız gerektiğinde bilgisayarınızı yeniden başlatmak yerine, bir sanal makine uygulaması kullanın. VMWare, hem Windows hem de Linux ile çalışan yaygın bir seçenektir ve Bochs da öyle. Olası kilitlenmeleri ve diğer hataları kontrol edin ve gerektiğinde onarın.
Adım 7. Bir "serbest bırakma adayı" yayınlayın
Bunu, test edilmiş kodunuzu genel deponuza yükleyerek yapabilirsiniz. Bu, insanların işletim sisteminizi test etmelerine ve karşılaştıkları sorunlar hakkında geri bildirimde bulunmalarına olanak tanır.
Adım 8. Diğer işletim sistemi geliştiricileriyle ağ kurun
Reddit'teki /r/osdev ve Yazılım Mühendisliği Yığın Değişimi dahil olmak üzere çeşitli forumlarda bir araya gelen tam bir işletim sistemi geliştiricileri topluluğu var. Temel bir işletim sistemi geliştirmeyi kavradıysanız, geliştirme sürecinde ne tür şeylerin ortaya çıktığını görmek için mevcut gönderileri okuyun.
Video - Bu hizmet kullanılarak YouTube ile bazı bilgiler paylaşılabilir
İpuçları
- Sisteminizin uygulanabilir olmasını istiyorsanız, güvenlik özelliklerini en yüksek önceliğiniz olarak uyguladığınızdan emin olun.
- Tüm geliştirmeler tamamlandıktan sonra, kodu açık kaynak olarak mı yoksa tescilli olarak mı yayınlamak istediğinize karar verin.
- Bir işletim sisteminin birden çok işlemciyi işleyebilmesi için, Bellek Yöneticinizin, birden çok işlemcinin aynı kaynağa aynı anda erişmesini engelleyen "kilitleme" mekanizmalarına sahip olması gerekir. Bunun için kullanılan "kilitler", herhangi bir zamanda yalnızca bir işlemcinin kritik bir kaynağa erişmesini ve diğerlerinin beklemeye alınmasını sağlamak için bir zamanlayıcının varlığını gerektirecektir. Yine de zamanlayıcı, bir Bellek Yöneticisinin varlığına bağlıdır. Bu, kilitlenmiş bir bağımlılık durumudur. Bunun gibi sorunları çözmenin standart bir yolu yoktur; bir programcı olarak, bununla başa çıkmanın kendi yolunu bulabilecek kadar yetenekli olmanız bekleniyor.
- Bir işletim sistemi de kullanıcı dostu olabilir. Bunları tasarımınızın ayrılmaz bir parçası haline getiren kullanıcı dostu özellikler eklediğinizden emin olun.
- katılma OSDev.org forumlarını ziyaret edin ve bariz sorular sormaya başlayın. Basitçe sonuçlanacak "Kılavuzu okuyun" Yanıtlar. Wikipedia'yı ve kullanmak istediğiniz çeşitli araçların kılavuzlarını okumayı denemelisiniz.
- Başlama programlama öğrenmeye başlamak için bir işletim sistemi projesi. C, C++, Pascal veya işaretçi işleme, düşük düzeyli bit işleme, bit kaydırma, satır içi derleme dili vb. dahil olmak üzere başka bir uygun dili zaten bilmiyorsanız, işletim sistemi geliştirmeye hazır değilsiniz..
- Rastgele G/Ç bağlantı noktalarına rastgele bayt yazmak gibi tavsiye edilmeyen bir şey yaparsanız, işletim sisteminizi çökertir ve (teoride) donanımınızı kızartırsınız.