Oyun Mekanizması 3

Bu yazıda 2003 yılında yazmış olduğum yazıdan alıntı bir yazıdır.

İşletim Sistemi Nedir ? İşletim sistemi bilgisayar kullanıcısı ile bilgisayar donanımı arasında işleyen bir programdır.

Amaçları Nelerdir ?

  • Kullanıcı programlarını çalıştırmak ve problerine çözüm üretmek
  • Bilgisayar Sistemini kullanılmaya uygun hale getirmek
  • Bilgisayar donanımını en etkili yoldan kullanmak

Bilgisayar Sistemi İçerisindeki Yeri Nedir ?

  • Hardware: Ana işlem kaynaklarının sağlanması (CPU, bellek, I/O)
  • İşletim Sistemi: Donanım ile kullanıcılar için hazırlanmış farklı uygulama programları arasında kontrol ve koordinenin sağlanmasından sorumludur.
  • Uygulama Programları: Kullanıcı problemlerini çözmek için sistem kaynaklarının nasıl kullanılacağı belirler.(compiler, veritabanı sistemleri)
  • Kullanıcılar: (insanlar, makinalar, diğer bilgisayarlar)

İşletim Sisteminin Hangi Bölümlerden Oluşur ?

Süreç(process) Yönetimi:

Süreç proğramın işletilmesidir.Süreç görevini yerine getirebilmek için belli kaynaklara ihtiyaç duyar. (CPU zamanı, bellek, dosya, I/O aygıtları)İşletim sistemi aşağıdaki aktivitelerden süreç yönetimi ile sorumludur.

  • Süreç yaratma ve silme
  • Süreci askıya alma ve tekrar başlatma
  • Süreç Senkranizasyonu ve Süreç iletişimi

Bellek Yönetimi:

Bellek büyük miktarda word ve byte’ ların oluşturduğu kendi adresi olan arraydir.Ana bellek geçici bellek aygıtıdır.İşletim sistemi aşağıdaki aktivitelerden bellek yönetimi ile sorumludur.

  • Kullanılmakta olan bellek alanlarının izlerini tutmak
  • Bellek alanı boşaldığında hangi sürecin belleğe yükleme yapacağına karar vermek.
  • İhtiyaca göre yer tahsisi ve serbest bırakımını gerçekleştirmek

Dosya Yönetimi:

Oluşturucusu tarafından bir araya getirilmiş ilişkili bilgilerdir. Genellikle dosyalar proğramları ifade eder.(tüm obj formları, kaynak dosyaları ve veriler) İşletim sistemi aşağıdaki aktivitelerden dosya yönetimi ile sorumludur.

  • Dosya yaratma ve silme
  • Dizin oluşturma ve silme
  • Dosyalar ve dizinler üzerinde değişiklik yapabilmek için ilkel ilkel yetenekleri desteklemek
  • Dosyaları ikinci bellekte aynen eşleştirebilmek(mapping)
  • Dosyaların backup’ını harddiske alabilmek

I/O Sistem Yönetimi:

Buffer-caching sistemi,Genel aygıt-sürücü arayüzleri Sürücüye özel donanım aygıtlarını kapsar.

İkincil Bellek Alanı Yönetimi:

Birinci bellek alanı verileri geçici olarak tutabilmesi ve çok küçük olması sebebiyle tüm programlar ve verileri sürekli olarak ana bellekte tutulmaz. İşte burada ikincil bellek alanı birincil bellek alanının backup’ı olarak kullanılır.Birçok bilgisayar sistemi backup edilecek proğram ve veriler için diskler (harddiskler) kullanır.İşletim sistemi aşağıdaki aktivitelerden ikincil bellek yönetimi ile sorumludur.

  • Boş alan yönetimi
  • Depolama yer tahsisi
  • Disk paylaştırımı

Networking(Distributed Sistem):

Distributed Sistemden kasıt aynı bellek alanını ve saatini paylaşmayan işlemci topluluğu.İşlemciler sisteme network aracılığı ile bağlanır.İletişim belli bir protokol aracılığı ile gerçekleşir.Distributed Sistem kullanıcıların başka sistem kaynaklarına erişebilmesini sağlar. Bu da

  • İşlem hızının arttırılmasına
  • Veri erişebilirliğinin arttırılması
  • Gelişmiş güvenilirlik sağlar.

Koruma(Protection) Sistemi:

Kullanıcıların, programlarıni süreçlerin sisteme ve kullanıcı kaynaklarına erişimini kontrol eden mekanizmadır.Koruma mekanizması

  • Yetkili veya yetkisiz kullanımı ayırt edebilmeli.
  • Aldatmaları belirleyebilmeli
  • Zorlayıcı olabilmeli

Komut Yorumlayıcı Sistemi:

Kontrol deyimi olarak bir çok komutun işletim sistemine verilmesi. Bunlar;

  • Süreç yaratma ve yönetme,
  • I/O handling
  • İkincil bellek yönetimi
  • Birincil bellek yönetimi
  • Dosya Sistemine erişim
  • Koruma
  • Network

PROGRAMLAMA DİLİ

Programlama dili insanlar ile makineler arasındaki iletişim dilidir.. Sizinde bildiğiniz gibi makineler sadece 0 ve 1(on ,off) değerlerinden algılarlar. Geçmiş senelerde makine dili ile proğramlama yapılsada bunun zorluğu anlaşılarak assembly dili çıkarılmıştır. Peki bu assembly dilini makine nasıl anlar MOV AX, 00000001 yazdığımız kaynak kod parçası 000101010111 gibi değerlere dönüştürülerek makineye verilir. Oyun programlaması açısından önemli olduğunu düşündüğüm iki programlama dilini aktarmaya çalışacağım.

Assembly: Bildiğiniz gibi assembly makine diline en yakın programlama dilidir. Bu sebebten donanıma en etkili ve encapsulation hızlı ulaşan programlama dilide denir. Buna rağmen yazılım geliştirme zorluğu ve platformlar arası taşınamaması gibi sebeblerden dolayı oyun programlamada pek kullanılmaz. Sadece oyunun tamamı yazıldıktan sonra programdaki bazı kısımların hızlandırılması için assembly diline çevrilmesi ile kullanımı gerçekleştirilir. (Yalnız bu birkaç sene içinde vertex shader ve pixel shader programlamada sıkça kullanılarak assembly kullanımını arttırabilir.)

C++/C: Oyun programlamada kullanılan ana dildir. C’nin çıkış amacına baktığımızda bir sistem programlama dili olarak çıkmıştır. Yani hem programlamanın kolay bir şekilde yapılması hemde donanıma etkili erişimin gerçekleşmesi amaçlanarak gerçekleştirilmiştir ve de çok başarılı olmuştur. Şu anda piyasada en çok VC++ compileri kullanılmaktadır.(Windows için)