Process Yaratma

Yine, bu ders ve bir sonraki ders tamamen kaputun altındaki şeyleri görmenizi sağlayan bilgilerdir. İşlemlerle biraz daha çalıştıktan sonra buna geri dönmekte özgürsünüz.

Yeni bir işlem oluşturulduğunda, var olan bir işlem temelde fork system call (sistem çağrıları ileride çok daha ayrıntılı olarak ele alınacaktır) adı verilen bir şey kullanılarak kendisini klonlar. fork system call çoğunlukla aynı olan bir child process (çocuk işlem) oluşturur, bu child process yeni bir process ID (PID) alır ve orijinal işlem onun parent process (ebeveyn işlem) olur ve parent process ID (PPID) adı verilen bir şeye sahip olur. Ardından, child process ya ebeveyninin daha önce kullandığı aynı programı kullanmaya devam edebilir veya daha sık olarak yeni bir program başlatmak için execve system call'u kullanır. Bu sistem çağrısı, çekirdeğin bu işlem için yerleştirdiği bellek yönetimini yok eder ve yeni program için yenilerini kurar.

Bunu şu şekilde görebiliriz:

$ ps l

l seçeneği bize çalışan işlemlerimizin "uzun formatlı" veya daha da ayrıntılı bir görünümünü verir. PPID olarak etiketlenmiş bir sütun göreceksiniz, bu parent ID'dir (ebeveyn kimliği). Şimdi terminalinize bakın, kabuğunuzu çalıştıran bir işlem göreceksiniz, bu yüzden benim sistemimde bash çalıştıran bir işlemim var. Şimdi ps l komutunu çalıştırdığınızda, bunu bash'i çalıştıran işletimden çalıştırdığınızı unutmayın. Artık bash kabuğunun PID'sinin ps l komutunun PPID'si olduğunu göreceksiniz.

Dolayısıyla, her işlemin bir ebeveyni olması gerekiyorsa ve bunlar birbirlerinin sadece kopyalarıysa, tüm süreçlerin bir annesi olmalı, değil mi? Doğru, sistem önyüklendiğinde çekirdek 1 PID'li init adı verilen bir işlem oluşturur. init işlemi, sistem kapanmadıkça sonlandırılamaz. Root yetkileriyle çalışır ve sistemi çalışır durumda tutan birçok işlemi çalıştırır. Sistem açılışı kursunda init'e daha yakından bakacağız, şimdilik sadece tüm diğer işlemleri başlatan işlem olduğunu bilin.

Last updated