0%
Ardovski ~ cmd
Ardovski ~ logs
CV'ye Dön
42 Türkiye Müfredat Projesi

Philosophers

İşletim sistemlerindeki eşzamanlılık (concurrency) ve kaynak paylaşımı problemlerini çözmek amacıyla, POSIX Thread (pthread) ve Mutex yapılarını kullanarak "Yemek Yiyen Filozoflar" problemini deadlock ve data race olmaksızın simüle eden optimize bir sistem programlama projesidir.

C Programming Systems Programming Concurrency Multi-threading POSIX Threads (pthreads) Mutexes Synchronization Deadlock Prevention

Proje Detayları

Eşzamanlı programlama (concurrent programming) ilkelerini, çoklu iş parçacığı (multi-threading) yönetimini ve paylaşılan kaynakların güvenli kullanımını kavramak amacıyla geliştirilmiş gelişmiş bir sistem programlama projesidir. Proje, belirli kurallar çerçevesinde hayatta kalmaya (düşünmeye, yemek yemeye ve uyumaya) çalışan filozofların, sınırlı sayıdaki kaynağı (çatalları) asenkron olarak paylaşmasını konu alır. Simülasyonda her bir filozof bağımsız birer POSIX Thread (pthread) olarak kurgulanmış, paylaşılan kaynaklar olan çatallar ise Mutex (Mutual Exclusion) kilit mekanizmaları ile koruma altına alınmıştır. Projenin temel mühendislik zorluğu; mikro saniye düzeyinde zaman yönetimi sağlayarak, thread'lerin birbirini sonsuza kadar engellediği Deadlock (Ölümcül Kilitlenme) durumlarını ve aynı veriye asenkron erişimden kaynaklanan Data Race (Veri Yarışı) hatalarını tamamen önlemektir. Süreç boyunca, bir filozofun öldüğü anı milisaniyelik gecikmeler olmadan anlık yakalayan izleyici (monitoring) thread mimarisi kurulmuştur. Proje, bellek sızıntıları ve iş parçacığı güvenliği açısından ThreadSanitizer (-fsanitize=thread) ve Valgrind araçları ile titizlikle test edilmiştir.