- Katılım
- 5 Mart 2017
- Mesajlar
- 6.714
- Makaleler
- 7
- Çözümler
- 59
Daha fazla
- Cinsiyet
- Erkek
İşletim sistemlerinin yazılış amacını bilmemiz lazım sanırım bunu cevaplamamız için. Önceden işletim sistemi yoktu, yani elmalı turta yapmak için öncelikle o elma ağacının dikileceği toprağı oluşturup daha sonra da o ağacın nasıl olacağını belirtip o ağacı dikmeliydiniz. Sonra ağaçtan elmayı toplayıp işlemlerden geçirerek elma yapardınız. İşletim sistemleri, direkt olarak elmaya ulaşmanızı sağlıyor. Elmalı turta yapmanızı çok kolaylaştırıyor.
Bir C programı yazdığınızı düşünün. Bu C programını GNU C Compiler ile derletirsiniz, ve karşınıza sadece o programı yazdığınız işletim sisteminde çalışacak kod çıkacaktır. Bunun nedeni ise şudur, örneğin Linux'ta printf() yazdığınız zaman, printf() fonksiyonu, Linux'un (daha doğrusu UNIX tabanlı veya benzeri çoğu işletim sistemlerinin) write() sistem çağrısı ile bağlanacaktır.
Yani şunu demek istiyorum, yazdığınız C programını ayrı ayrı işletim sistemlerine port etmeniz için başka işletim sistemlerinde derletmek zorunda olma sebebiniz bu sistem çağrılarıdır. Sizin belki kullandığınızdan haberiniz bile olmaz ama en basit şeyler için bile kullanırsınız.
İşletim sistemi yazarken bu yüzden direkt olarak işletim sisteminin size sağladığı stdio.h dosyasını kullanmak yerine kendiniz yazarsınız.
DOS gibi VGA text mode'da çalışan bir OS yaptığınızı düşünelim. Siz bu printf() fonksiyonunu, veya printf()'i bağladığınız sistem çağrısını, ekran kartı BIOS'unun belirlediği text mode başlangıç adresi olan 0xB8000'e bağlamanız gerekecektir. Bu da sadece pointerlar ile mümkün olacağı için zaten pointer olmayan dillerde işletim sistemi yazılamaz, yazılsa bile onun derleyicisi veya yorumlayıcısı o işletim sistemine göre uyarlanmıştır veya baştan yazılmıştır.
Bir C programı yazdığınızı düşünün. Bu C programını GNU C Compiler ile derletirsiniz, ve karşınıza sadece o programı yazdığınız işletim sisteminde çalışacak kod çıkacaktır. Bunun nedeni ise şudur, örneğin Linux'ta printf() yazdığınız zaman, printf() fonksiyonu, Linux'un (daha doğrusu UNIX tabanlı veya benzeri çoğu işletim sistemlerinin) write() sistem çağrısı ile bağlanacaktır.
Yani şunu demek istiyorum, yazdığınız C programını ayrı ayrı işletim sistemlerine port etmeniz için başka işletim sistemlerinde derletmek zorunda olma sebebiniz bu sistem çağrılarıdır. Sizin belki kullandığınızdan haberiniz bile olmaz ama en basit şeyler için bile kullanırsınız.
İşletim sistemi yazarken bu yüzden direkt olarak işletim sisteminin size sağladığı stdio.h dosyasını kullanmak yerine kendiniz yazarsınız.
DOS gibi VGA text mode'da çalışan bir OS yaptığınızı düşünelim. Siz bu printf() fonksiyonunu, veya printf()'i bağladığınız sistem çağrısını, ekran kartı BIOS'unun belirlediği text mode başlangıç adresi olan 0xB8000'e bağlamanız gerekecektir. Bu da sadece pointerlar ile mümkün olacağı için zaten pointer olmayan dillerde işletim sistemi yazılamaz, yazılsa bile onun derleyicisi veya yorumlayıcısı o işletim sistemine göre uyarlanmıştır veya baştan yazılmıştır.