Üye Kayıt Üye Giriş

Linux Kernel Kodlarına İlişkin Açıklamalar


Linux Kernel Kodlarına İlişkin Açıklamalar

 

Linux sistemlerinde fork, vfork, clone gibi sistem fonksiyonları kernel moda geçerek
sys_fork, sys_vfork, sys_clone gibi fonksiyonları çağırırlar, bu fonksiyonlar da gerçek fork
işlemini yapan do_fork fonksiyonunu çağırmaktadır. do_fork fonksiyonu linux/kernel/fork.c
dosyası içerisindedir.


do_fork fonksiyonunda önce alloc_task_struct fonksiyonuyla yeni bir process handle
alanı tahsis edilmiştir, *p = *current; işlemi ile üst process'in process handle alanı yeni
yaratılan process handle alanına kopyalanmıştır. Daha sonra yeni yaratılan alt process'in
process durumu oluşturulmuştur. Daha sonra yaratılan alt process için handle değeri tespit
edilmeye çalışılmıştır.


p->pid = get_pid(...);


Artık bu işlemlerden sonra içerik kopyalaması işlemine geçilir. task_struct yapısı, yani
process handle alanı çeşitli göstericiler içermektedir. Bu göstericiler tahsis edilmiş olan başka
alanları gösterir, oysa *p = *current işleminden sonra bu göstericiler de aynı alanları gösterir
hale gelirler. Bu durumda bu göstericilerin gösterdiği yerler de ayrıca tahsis edilip o alanların
da kopyalanması gerekir (bu işlem tamamen C++'taki atama operatör fonksiyonunun yazım
gerekçesinde olduğu gibidir). Örneğin copy_files fonksiyonu dosya tablosu için yeni bir
alan tahsis eder ve üst process'teki tabloyu bu alana kopyalar. copy_fs fonksiyonu
process'in geçerli dizini gibi alt process'e aktarılan bu tür bilgileri kopyalar. Buradaki en
önemli fonksiyon belki de copy_mm fonksiyonudur. Bu fonksiyon process'in bellek alanını
kopyalar.


Dosya tablosunun alt process'e kopyalanmasının en önemli sonucu alt process'in aynı
dosyaları açık olarak görmesidir. Dosya göstericisinin aktif pozisyonu dosya nesnesinde
saklandığı için process’lerden biri dosya göstericisini konumlandırdığında diğer process de
bunu konumlanmış olarak görür. Şüphesiz dosya nesnesine erişim atomik düzeyde
yapılmaktadır. Fakat dosyaya yazım ve dosyadan okuma işlemleri atomik düzeyde yapılmaz.

Bilgisayar Dershanesi Ders Sahibi;
Bilgisayar Dershanesi

Yorumlar

Yorum Yapabilmek İçin Üye Girişi Yapmanız Gerekmektedir.

ETİKETLER