Bu makaledeki ortak yazarlar Nicole Levine, MFA. Nicole Levine, wikiHow’da Teknoloji Yazarı ve Editör’dür. Teknik dokümantasyon oluşturma ve önde gelen internet sitesi barındırma ve yazılım şirketlerindeki destek ekiplerini yönetme alanlarında 20 yıldan fazla deneyime sahiptir. Nicole ayrıca Portland Eyalet Üniversitesi’nden Yaratıcı Yazarlık alanında Güzel Sanatlar Yüksek Lisans derecesine sahiptir ve farklı kurumlarda kompozisyon, bilim kurgu yazarlığı ve ev yapımı dergi (zin) hazırlama dersleri vermektedir.
Bu makale 8.237 defa görüntülenmiştir.
Bu wikiHow makalesi sana, C veya C++'ta kodlamayı bilmiyorsan bir işletim sistemini nasıl planlayacağını ve 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, bilgisayar bilimine, C veya C++ gibi bir programlama diline, assembly ve kod yönetimi uygulamalarına güçlü bir hâkimiyet gerektirir.
Adımlar
Kısım 1
Kısım 1 / 2:Temel Bilgileri Öğrenmek
-
1Temel Bilgisayar Bilimleri kurslarına katıl. Web için geliştirmenin aksine, bir işletim sistemi oluşturmak algoritmaların, veri yapılarının, bilgisayar donanımının ve kaynak yönetiminin güçlü bir şekilde anlaşılmasını gerektirir.[1] X Kaynağı araştır İnsanlar bunun diplomasını alıyor, bu nedenle çevrim içi bir rehber okuduktan sonra bir işletim sistemi yazmayı bekleme! Harvard'ın Intro to Computer Science (Bilgisayar Bilimlerine Giriş) kursu, ücretsiz olarak EDX aracılığıyla çevrim içi olarak alınabilir.
-
2C gibi üst düzey bir programlama dili öğren. Bilgisayar bilimi hakkında sağlam bir temel anlayışa sahip olduğunda, bir sonraki adım C ve/veya C++'ta uzmanlaşmaktır. Bilgisayar bilimi hakkında bilgi edinmek gibi, bir dilde uzmanlaşman da zorunludur; sağlam uygulamalar yazamazsan bir işletim sistemini kodlayamazsın.
- C'de yeniysen EDX aracılığıyla ücretsiz olan Dartmouth'un C Programming: Getting Started (C Programlama: Başlarken) kursuna göz at. Bu kursu tamamladıktan sonra dizideki bir sonraki kursu alabilirsin: C Programming: Language Foundations (C Programlama: Dil Temelleri). Ardından, Modular Programming and Memory Management (Modüler Programlama ve Bellek Yönetimi) ve Pointers and Memory Management (İşaretçiler ve Bellek Yönetimi) gibi sonraki kurslara geç.
-
3Bir assembly dili öğren. Assembly dilleri, farklı işlemcilerle iletişim kurmak için tasarlanmış düşük seviyeli dillerdir. Assembly, farklı işlemci türleri için farklı olduğundan (örneğin, Intel, AMD, VIA ve diğer işlemciler için x86 assembly dili), kodladığın işlemci türünün sürümünü öğrenmen gerekir.
- Bu açık kaynaklı kitap bütünüyle okunduğunda, sana bir işletim sistemi oluşturmak için yeterince sağlam bir kavrayış sağlayabilir.[2] X Kaynağı araştır
- The Art of Assembly Language (Assembly Dili Sanatı) hem çevrim içi hem de çevrim dışı olarak mevcut olan, assembly hakkında şiddetle tavsiye edilen bir kitaptır.
- Ayrıca, işletim sisteminin çalışması gereken işlemci türleri hakkında da çok araştırma yapmalısın. İşlemci mimarisine yönelik kılavuzlar, bir Google araması ("Intel Kılavuzları", "ARM kılavuzları" vb.) kullanılarak kolayca bulunabilir.
-
4Bir işletim sistemi eğitimini tamamla. İşletim sistemi eğitimleri, temel bir işletim sistemi oluşturma sürecinde sana yol gösterecektir. Bu, sürece alışmanı sağlar ve eksik olan herhangi bir parça olup olmadığını anlamana yardımcı olur. Bir veya iki eğitimi tamamladıktan sonra kendi işletim sistemini yaratma yolunda ilerleyeceksin.
- Bare Bones ilk basit 32 bit çekirdeğini yazmana yardımcı olan bir eğitimdir. Eğitimi tamamladıktan sonraki adım, kendi işletim sistemini yapılandırmak için Meaty Skeleton'u kullanmaktır.
- Linux from Scratch (Sıfırdan Linux) kendi Linux işletim sistemini oluştururken sana rehberlik eden çevrim içi bir kitaptır.
- Operating systems from 0 to 1 (0’dan 1’e İşletim Sistemleri) baştan sona çeşitli işletim sistemleri oluşturma hakkında ücretsiz bir kitaptır.
-
5İşletim sistemi hedeflerini belirle. İşletim sisteminin ne yapmasını istiyorsun? Nasıl görünmeli? Gerçekten tam bir işletim sistemi yazman mı gerekiyor yoksa sadece masaüstün için belirli bir görünüm oluşturmak mı istiyorsun? Bunların hepsi kodlamaya başlamadan önce dikkate alınması gereken şeylerdir.[3] X Kaynağı araştır
Reklam
- Başka programcılardan oluşan bir ekiple geliştirme yapmayı düşü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 sana yardım etmesini kolaylaştırmak için proje hedeflerini, planlarını ve sorularını herkese açık depona ekle.
Kısım 2
Kısım 2 / 2:İşletim Sistemini Oluşturmak
-
1Bir geliştirme ortamı seç. Bu, yeni işletim sistemini kodlamak için kullanacağın platformdur. Bu kişisel bir tercih meselesidir ancak çoğu insan ya Windows'u ya da bir UNIX çeşidini kullanır. Windows kullanıyorsan Cygwin veya MinGW gibi bir UNIX ortamı kurmak iyi bir fikirdir. Genellikle kullandığın ortamın aşağıdakileri içerdiğinden emin olmak istersin:
- GCC (Gnu derleyicisi). Windows kullanıyorsan Cygwin veya MinGW'de yükleyebilirsin.
- Binutils, nesne dosyalarını işlemek için kullanılan bir araç koleksiyonudur. Bunu da Windows kullanıyorsan Cygwin'e yükleyebilirsin.
- İyi bir metin editörü. Vim ve emacs genellikle UNIX ortamlarında kullanılır. Windows kullanıcıları Notepad kullanabilir veya çok sekmeli yükseltme için Notepad++'a göz atabilir.
- Perl ve/veya Python. Dize manipülasyonu için biri veya her ikisi de önerilir.
-
2
-
3
-
4Bir çekirdek tasarımı seç. Çekirdek, işletim sisteminin temelidir 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 yordamları ile birleştirilmiş küçük bir çekirdeğe sahiptir. Genel olarak, monolitik çekirdekler daha hızlıdır ancak mikro çekirdekler daha iyi hata izolasyonuna ve güvenilirliğe sahiptir.
-
5Küçük adımlarla başla. Bellek yönetimi ve çoklu görev gibi şeylere geçmeden önce metin görüntüleme ve kesintiler gibi küçük şeylerle başla. Büyük bir sıçrama yapmak yerine basit bir 16 bit İşletim Sistemi yapmayı da deneyebilirsin.
- İki hafta içinde tam bir sisteme sahip olmayacaksın. Önyükleme yapan bir işletim sistemi ile başla, ardından havalı şeylere geç.
-
6Yeni işletim sistemini bir sanal makine ile test et. Her değişiklik yaptığında veya dosyaları geliştirme bilgisayarından test makinene aktarmak zorunda kaldığında bilgisayarını yeniden başlatmak yerine, bir sanal makine uygulaması kullan. VMWare, hem Windows hem de Linux ile çalışan yaygın bir seçenektir, Bochs da öyle. Olası kilitlenmeleri ve diğer hataları kontrol et ve gerektiğinde onar.
-
7Bir "yayın adayı" yayınla. Bunu, test edilmiş kodunu herkese açık depona yükleyerek yapabilirsin. Bu, insanların işletim sistemini test etmelerine ve karşılaştıkları sorunları geri bildirmelerine olanak tanır.
-
8Diğer işletim sistemi geliştiricileriyle ağ kur. Reddit'te /r/osdev ve the Software Engineering Stack Exchange dâhil olmak üzere çeşitli forumlarda bir araya gelen işletim sistemi geliştiricilerinden oluşan bir topluluk var. Temel bir işletim sistemi geliştirmeyi anladıysan geliştirme sürecinde ne tür şeylerin ortaya çıktığını görmek için mevcut gönderileri oku.Reklam
İpuçları
- Sisteminin uygulanabilir olmasını istiyorsan güvenlik özelliklerini en büyük önceliğin olarak uyguladığından emin ol.
- Tüm geliştirme tamamlandıktan sonra, kodu açık kaynak olarak mı yoksa özel olarak mı yayınlamak istediğine karar ver.
- Bir işletim sisteminin birden çok işlemciyi işleyebilmesi için, Bellek Yöneticinin aynı anda birden çok işlemcinin aynı kaynağa erişmesini önlemek adına "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ştiğinden ve diğerlerinin hepsinin bekletildiğinden emin olmak için bir programlayıcının varlığını gerektirecektir. Yine de programlayıcı, bir Bellek Yöneticisinin varlığına bağlıdır. Bu, kilitlenmiş bir bağımlılık durumudur. Böyle problemleri çözmenin standart bir yolu yoktur; bir programcı olarak, onun üstesinden gelmek için kendi yolunu bulacak kadar yetenekli olman beklenir.
- Bir işletim sistemi de kullanıcı dostu olabilir. Bunları tasarımının ayrılmaz bir parçası hâline getirerek kullanıcı dostu özellikler eklediğinden emin ol.
- OSDev.org forumlarına katılıp bariz sorular sormaya başlama. "Kılavuzu Oku" yanıtları alırsın. Wikipedia'yı ve kullanmak istediğin çeşitli araçların kılavuzlarını okumayı denemelisin.
- Programlamayı öğrenmeye başlamak için bir işletim sistemi projesi başlatma. İşaretçi manipülasyonu, düşük seviyeli bit işleme, bit kaydırma, satır içi montaj dili vb. dâhil olmak üzere C, C++, Pascal veya başka bir uygun dili zaten bilmiyorsan işletim sistemi geliştirmeye hazır değilsindir.
- Rastgele G/Ç bağlantı noktalarına rastgele baytlar yazmak gibi tavsiye edilmeyen bir şey yaparsan işletim sistemini çökertirsin ve (teoride) donanımını yakabilirsin.