Sinyaller
Sinyal mekanizması, sistemde yeni bir olay (event) oluştuğunda çalışan uygulamaların asenkron biçimde haberdar edilebilmesine olanak verir. Bu yapısı nedeniyle sinyal mekanizması genellikle yazılım tabanlı kesmeler (software interrupt) şeklinde de adlandırılır. Tıpkı donanım kesmelerinde olduğu gibi (hardware interrupt) sinyaller de bir uygulamanın normal akışını kesintiye uğratır ve uygulamanın ne zaman bir sinyal alacağı önceden bilinemez.
Sinyaller 3 temel durumda oluşturulur:
- Donanım tarafında istisnai bir durum oluştuğunda sinyal üretilir. Örnek olarak uygulamanın kendi izin verilen adres alanının dışındaki bir bölgeye erişmeye çalışması (Segmentation Fault), sıfıra bölme işlemi içeren bir makine kodu üretilmesi vb. gösterilebilir.
- Kullanıcı tarafından konsolda CTRL-C veya CTRL-Z gibi tuş kombinasyonlarının kullanımı, konsol ekranının yeniden boyutlandırılması ya da
killuygulaması ile sinyal gönderim isteğinin oluşturulması
- Uygulama içerisinde kurulan bir timer'ın dolması, uygulamaya verilen CPU limitinin aşılması, açık bir file descriptor'e veri gelmesi vb.
Sinyal kavramı Unix'in ilk versiyonlarından beri bulunmaktadır. Önceleri sinyal işlemleriyle ilgili Unix versiyonları arasında çeşitli farklılıklar mevcuttu. Sonradan sinyal yönetimi için POSIX standardizasyonu yapıldı ve Linux dahil diğer Unix türevleri de bu standartları takip etti. Bu nedenle kimi dokümanlarda karşılaşabileceğiniz Unix Sinyalleri ve POSIX Sinyalleri kavramları aradaki farklılıklara işaret etmektedir.