Yazan : Şadi Evren ŞEKER Bu yazının amacı, bir UNIX komutu olan diff komutunu açıklamaktır. diff komutu, iki dosyanın araısndaki farklılıkları (ve dolayısıyla benzerlikleri) bularak ekranda göstermeye yarar. Algoritma basitçe en uzun ortak kısmı (longest common subsequence) bulmaya dayanır. Algoritmanın çalışmasını bir örnek üzerinden görebiliriz: Örneğin, a ve b isminde iki dizgi (string) alalım: a: […]
Category: işletim sistemleri
One Lane Bridge (Tek Şeritli Köprü) Problemi
Yazan : Şadi Evren ŞEKER Bu problemde, tek şeritli bir köprünün iki ucundan gelen araçların karşıya geçmesini senkronize etmemiz isteniyor. Köprü tek şeritli olduğu için anlık olarak bir yönde araç geçişi mümkün olabiliyor. Bir aracın karşıya geçmesi, ancak karşı taraftan gelen araç olmadığı zaman mümkündür. Köprünün iki tarafında da duyargaların (sensor) yerleştirildiğini düşünelim ve aynı […]
Sleeping Barber (Uyuyan Berber) Problemi
Yazan : Şadi Evren ŞEKER Problemin tanımı : Bir berber dükkanında, bir bekleme salonu, bu salonda n adet sandelye ve ayrıca m adet berber koltuğu bulunmaktadır. Sistemimizde m adet de berber olduğunu düşünelim. Şayet hiç bekleyen müşteri yoksa berber uyumaya gider (diğer berberlerin traş ettiği müşterileri beklemesine gerek yoktur). Şayet bekleme salonundaki bütün sandelyeler doluyken […]
POSIX Thread pthread kütüphanesi
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde geçen lif (thread, iplik, sicim) kavramının C dili ile kodlanabilmesi için genellikle UNIX türevi işletim sistemelerinde geliştirilen programlama kütüphanesidir. Kütüphane UNIX ortamında (ve dolayısıyla LINUX ortamında da ) POSIX kütüphanesi olarak geçmektedir ve bu kütüphanenin baş harfi olan P harfi ile thread kelimesinin birleşmesinden türemiştir (pthread). Kütüphane kullanılarak […]
exec fonksiyonları
Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar bilimlerinde, özellikle de işletim sistemlerinde kullanılan exec() fonksiyon ailesini açıklamaktır. Bu fonksiyon grubu, kabaca bilgisayarımızın dosya sisteminde bulunan farklı bir programı, yazmış olduğumuz C programı içerisinden çağırmaya yarar. Çalışma durumunu örnek bir kod üzerinden gösterelim: 1 #include <unistd.h> 2 main() 3 { 4 execl(“/bin/ls”, “/bin/ls”, “-r”, […]
fork fonksiyonu ve işlem çatallanması
Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar bilimlerinin bir çalışma alanı olan işletim sistemlerinde sıklıkla kullanılan ve yeni bir işlem (process) oluşturmaya yarayan fork() ve exec() fonksiyonlarını açıklamaktır. Bu fonksiyonlar C programlama dilleri tarafından desteklenmekte ve unistd.h dosyasının içinde bulunmaktadır. Örnek bir kod verip çalışmasını açıklayarak konuyu anlatmaya başlayalım: #include <unistd.h> /* fork […]
Producer Consumer Problem (Üretici Tüketici Problemi)
Yazan : Şadi Evren ŞEKER Bu yazının amacı, başta işletim sistemleri olmak üzere, bilgisayar bilimlerinin pek çok alanında geçen ve klasik bir koşutzamanlı (concurrent) problem örneği olan üretici / tüketici (producer / consumer ) örneğini açıklamaktır. Problemin çeşitli değiştirilmiş tanımları olmasına karşılık, tanımı gayet basittir. Aynı anda çalışan iki iş (process) bulunmaktadır ve bunlardan birisi […]
Filozofların Akşam Yemeği (Dining Philosophers)
Yazan : Şadi Evren ŞEKER Bu yazının amacı, eş zamanlı işlemlerin (concurrent processes) yönetimini anlatmak için geliştirilmiş bir örnek olan yemek yiyen filozoflar konusunu açıklamaktır. Eş zamanlı işlemler, işletim sistemleri (operating systems), ağ programlama (network programming) gibi pek çok bilgisayar bilimi konusunda geçmektedir. Yemek yiyen filozoflar örneği, literatüre Dijkstra tarafından kazandırılmıştır ve eş zamanlı işlem […]
Banker Algoritması (Banker’s Algorithm)
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde işletim sistemi tasarımı konusunda geçen ve kaynaklar üzerindeki kilitlenmeyi (deadlock)engelleme amaçlı algoritmadır. Algoritma Dijkstra tarafından geliştirilmiştir. Algoritmanın temel 3 durumu ve 2 şartı bulunur: Bilmesi gerekenler: Her işlem (process) ne kadar kaynağa ihtiyaç duyar? Her işlem (process) şu anda ne kadar kaynağı elinde tutmaktadır? Şu anda ne kadar […]
Peterson’s Algorithm
Yazan: Şadi Evren ŞEKER Bilgisayar mühendisliğinde, birbirinde ayrı işlerin kontrolü için kullanılır. Aynı anda çalışan işlerin birbirinden tamamen ayrı olması için (mutually exclusive), bazı kontrollerin yapılması gerekmektedir. Algoritma bu problemi aşağıdaki şekilde çözer. Yukarıdaki kodda, iki adet paylaşılmış değişken (shared variable) kullanılmış ve bu değişkenlere hem P0 hem de P1’in erişebileceği kabul edilmiştir. İki işlem […]