Örnek sorular
Linux Process Management SignalsZorluk 1
Linux'ta bir program ile bir process arasındaki pratik fark nedir?
- aFark yoktur; iki terim tamamen aynı şeyi tanımlar
- bProgram disk üzerinde durağan bir dosyadır; process ise kendi belleği ve PID'i olan çalışan bir örneğidir.✓
- cBir program, boot başına yalnızca bir kez çalışabilirken bir process birden fazla kez çalışabilir
- dProcess derlenmiş ikili dosyadır, program ise kernel'in CPU'da zamanladığı şeydir
Açıklama:Program, disk üzerinde pasif bir veridir (çalıştırılabilir dosya). Yüklenip başlatıldığında kernel bir process oluşturur: kendi adres alanı, PID'i, açık dosya tanımlayıcıları ve zamanlama durumu olan çalışan bir örnek. Aynı program aynı anda birçok çalışan process'i besleyebilir.
Linux Process Management SignalsZorluk 1
Çalışan bir process için PPID neyi ifade eder?
- aOnu oluşturan process'in (ebeveyn process'inin) PID'i✓
- bZamanlayıcı tarafından process'e atanan öncelik seviyesi
- cO process içinde şu anda çalışan thread sayısı
- dProcess her sleep'ten uyandığında yeniden atanan rastgele bir tanımlayıcı
Açıklama:PPID (Parent Process ID), mevcut process'i (tipik olarak fork() ile) oluşturan process'in PID'idir. PID 1 hariç her process'in bir ebeveyni vardır, bu da pstree gibi araçlarda görülen process ağacını oluşturur.
Linux Process Management SignalsZorluk 1
ps aux çıktısında STAT sütununda R gösterilen bir process hangi durumdadır?
- aBir job-control sinyaliyle durdurulmuş, devam ettirilmeyi bekliyor
- bBir zombie, ebeveyninin çıkış durumunu toplamasını bekliyor
- cÇalışıyor veya çalıştırılabilir: bir CPU'da yürütülüyor ya da çalıştırma kuyruğunda bekliyor.✓
- dDisk I/O üzerinde kalıcı olarak bloke, kesilmesinin hiçbir yolu yok
Açıklama:R, kernel açısından process'in TASK_RUNNING durumunda olduğu anlamına gelir: ya şu anda gerçekten bir CPU'da yürütülüyor ya da zamanlanmayı bekleyen çalıştırma kuyruğunda oturuyor.
Linux Process Management SignalsZorluk 1
ps aux çıktısında STAT S gösterilen bir process "kesilebilir sleep" (interruptible sleep) durumunda olarak tanımlanır. Bu ne anlama gelir?
- aProcess çökmüştür ve hiçbir koşulda uyandırılamaz
- bProcess beklerken CPU'nun %100'ünü tüketiyordur
- cProcess yalnızca SIGKILL ile uyandırılabilir, başka hiçbir sinyal işe yaramaz
- dBir olayı bekliyor; bekleyen bir sinyal bu beklemeyi erken kesebilir.✓
Açıklama:Kesilebilir sleep (S), en yaygın boşta durumdur: process bazı koşulları (bir socket'te veri, bir zamanlayıcı, bir mutex) bekleyerek bloke olmuştur, ama bekleyen bir sinyal bu beklemeyi kesip koşul sağlanmadan kontrolü process'e geri verebilir.
Linux Process Management SignalsZorluk 2
STAT D (kesilemez sleep / uninterruptible sleep) ile STAT S (kesilebilir sleep) arasındaki temel pratik fark nedir?
- aGerçek bir fark yoktur;
D ve S tamamen aynı kernel durumunun iki farklı adıdır - b
D durumundaki bir process, I/O'su bitene kadar kill dahil sinyallere genellikle yanıt vermez.✓ - c
D durumundaki bir process ebeveyni tarafından zaten reap edilmiştir, S process'leri ise hâlâ canlıdır - d
D process'leri beklerken her zaman S process'lerinden daha fazla CPU tüketir
Açıklama:D (kesilemez sleep) tipik olarak doğrudan donanım/I/O beklemeleri (disk, bazı NFS işlemleri) sırasında oluşur. Kernel bu bekleme sırasında bir sinyalin kesmesine izin vermez, bu yüzden kill -9 bile I/O bitene ya da zaman aşımına uğrayana kadar etkisizmiş gibi görünür — process o kernel yolunda sıkışmışken bekleyen sinyalleri kontrol edemez.
Linux Process Management SignalsZorluk 2
Bir zombie process (STAT Z) nedir?
- aÇıkış yapmış ve kaynaklarını serbest bırakmıştır, ama reap edilene kadar bir tablo kaydı kalır.✓
- bHâlâ aktif olarak çalışan ama sıfır CPU tüketen bir process
- c
ps'den saklanan, kötü amaçlı yazılım tarafından enjekte edilmiş bir process - dSIGKILL ile öldürülmüş ama belleği kernel tarafından hiç serbest bırakılmamış bir process
Açıklama:Bir zombie zaten çıkış yapmıştır: belleği, dosya tanımlayıcıları ve diğer kaynakları serbest bırakılmıştır. Geriye kalan tek şey, PID'ini ve çıkış durumunu tutan küçük bir process-tablosu kaydıdır; bu, ebeveynin wait()/waitpid() ile o durumu almasını sağlamak için tutulur. Bu kayıt dışında CPU veya bellek tüketmez.