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

Minishell

Bash (Bourne Again Shell) mimarisi referans alınarak, süreç yönetimi (fork/execve), boru hatları (pipelines), girdi/çıktı yönlendirmeleri ve sinyal yönetimini barındıran tam fonksiyonel bir UNIX komut satırı arayüzünün (CLI/Shell) sıfırdan C diliyle geliştirilmesi projesidir.

C Programming Systems Programming UNIX Kernel Architecture Process Management (Fork/Execve) Inter-Process Communication (IPC) Pipelines I/O Redirection Signal Handling

Proje Detayları

İşletim sistemi çekirdeği (kernel) ile kullanıcı arasındaki haberleşmeyi sağlayan komut satırı arayüzünün (Shell) tüm iç mekanizmalarını sıfırdan implemente etmek amacıyla geliştirilmiş çok katmanlı bir sistem programlama projesidir. Proje; Lexer, Parser ve Executor olmak üzere üç ana alt sistemden oluşmaktadır. İlk aşamada, kullanıcının girdiği komut satırı string manipülasyonları ile token'lara ayrıştırılmış, sözdizimi hataları (syntax validation) denetlenmiş ve soyut sözdizimi ağacı (AST) benzeri modüler veri yapılarına aktarılmıştır. Yürütücü (Executor) katmanında, sistem çağrıları (system calls) kullanılarak fork mimarisiyle alt süreçler (child processes) oluşturulmuş ve execve ile harici UNIX komutları asenkron olarak çalıştırılmıştır. Projenin en büyük mühendislik zorluklarından biri olan çoklu boru hatları (multi-pipelines - |), pipe ve dup2 sistem çağrıları aracılığıyla süreçler arası girdi/çıktı akışları (I/O Redirections - <, >, >>, << heredoc) manipüle edilerek optimize bir şekilde kurgulanmıştır. Ek olarak, kabuğun kararlılığını korumak adına SIGINT (Ctrl+C), SIGQUIT (Ctrl+\) ve EOF (Ctrl+D) asenkron sinyalleri, terminal durumları (termios) optimize edilerek yakalanmıştır. cd, echo, env, export, unset, pwd ve exit gibi yerleşik (built-in) komutlar, ortam değişkenleri (environment variables) tablosu dinamik heap yönetimiyle taklit edilerek sıfırdan yazılmıştır. Proje, süreç (process) takipleri ve bellek sızıntıları (memory leaks) açısından Valgrind ile sıkı mülakat standartlarında test edilmiştir.