Üye Kayıt Üye Giriş
biz-sizi-arayalim
biz-sizi-arayalim
Bilgisayarlı Muhasebe Eğitim Seti
Masaüstü bilgisayarı cebe sığdırdılar
Masaüstü bilgisayarı cebe sığdırdılar
Avast ve Windows Güncellemeleri Çakışınca!
Avast ve Windows Güncellemeleri Çakışınca!
Toshiba'nın İddialı Bilgisayar Tableti!
Toshiba'nın İddialı Bilgisayar Tableti!
Yeni Microsoft'un Windows tanıtılıyor
Yeni Microsoft'un Windows tanıtılıyor
Skype 7, Mac ve Windows İçin Yayınlandı!
Skype 7, Mac ve Windows İçin Yayınlandı!
kpss-egitim-setleri

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


YDS Eğitim Seti

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.

Rusça Eğitim Seti
Bilgisayar Dershanesi Ders Sahibi;
Bilgisayar Dershanesi

Yorumlar

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

ETİKETLER

SEO En İyi SEO Firması Opencart Opencart E Ticaret İngilizce Öğren Fransızca Öğren Rusça Öğren Arapça Öğren Almanca Öğren Çince Öğren Japonca Öğren İspanyolca Öğren Hollandaca Öğren Kürtçe Öğren