Makaleyi İndirMakaleyi İndir

Bu How.com.vn 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.

Kısım 1
Kısım 1 / 2:

Temel Bilgileri Öğrenmek

Makaleyi İndir
  1. How.com.vn Türkçe: Step 1 Temel 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] İ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.
  2. How.com.vn Türkçe: Step 2 C 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.
  3. How.com.vn Türkçe: Step 3 Bir 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]
    • 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.
  4. How.com.vn Türkçe: Step 4 Bir 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. How.com.vn Türkçe: Step 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]
    • 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.
    Reklam
Kısım 2
Kısım 2 / 2:

İşletim Sistemini Oluşturmak

Makaleyi İndir
  1. How.com.vn Türkçe: Step 1 Bir 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. How.com.vn Türkçe: Step 2 Sürüm kontrol sistemini kur.
    Bir işletim sistemi yazmak, muhtemelen yüzlerce (veya binlerce!) kod satırı oluşturacağın anlamına gelir. Düzeltmeler üzerinde çalışırken bu kafa karıştırıcı olabilir. CVS, Mercurial ve Subversion bakılabilecek seçeneklerdir.
  3. How.com.vn Türkçe: Step 3 Bir önyükleyiciye karar ver.
    Kendininkini oluşturmak istemiyorsan Grand Unified Bootloader (GRUB) gibi mevcut bir tane kullanabilirsin. Bir önyükleyiciyi kodlayacak kadar cesur hissediyorsan OSDev.org'daki Rolling Your Own Bootloader'a (Kendi Önyükleyicini Yapmak) bak.
  4. How.com.vn Türkçe: Step 4 Bir ç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.
  5. How.com.vn Türkçe: Step 5 Küçü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ç.
  6. How.com.vn Türkçe: Step 6 Yeni 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.
  7. Step 7 Bir "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.
  8. How.com.vn Türkçe: Step 8 Diğ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.
Reklam

Bu How.com.vn makalesi hakkında

How.com.vn Türkçe: Stephen Cognetta, MBA
Ortak yazarlar :
Bilgisayar Mühendisi
Bu makaledeki ortak yazar Stephen Cognetta, MBA. Stephen Cognetta, insanların teknoloji sektöründeki iş görüşmelerine hazırlanmalarına ve bu görüşmelerde başarılı olmalarına yardımcı olan Exponent isimli öğrenme platformunun kurucu ortağı ve CEO'sudur. Stephen; ürün yönetimi, yazılım mühendisliği, ürün pazarlaması, yönetim, teknik proje yönetimi ve veri bilimi görüşmeleri alanında koçluk yapmak üzere uzmanlaşmıştır. Stephen, en yüksek onur derecesiyle mezun olduğu Princeton Üniversitesi'nden Bilgisayar Mühendisliği alanında lisans derecesine ve Stanford Üniversitesi'nden yüksek lisans derecesine sahiptir. Stephen, Exponent'i kurmadan önce Google'da Ürün Müdürü olarak çalıştı ve HackMentalHealth'in kurucu ortağıydı. Bu makale 18.077 defa görüntülenmiştir.
Bu sayfaya 18.077 defa erişilmiş.

Bu makale işine yaradı mı?

⚠️ Disclaimer:

Content from Wiki How Türkçe language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.

Notices:
  • - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
  • - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
  • - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
  • - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.

Reklam