Linux’da Process ( işlem ) ve Sistem Yönetim Komutları

0
5655

Bölümümüzde gördüğümüz derslerden biri olan Operating Systems ( İşletim Sistemleri ) dersinde process’lerin ( işlemler ) yönetimi hakkında bilgiler üzerinde durduk. Ders sırasında anlatımı yapan hocamızın kullandığı terminal komutlarını kullanımları üzerinde biraz araştırma yaptım ve bulduklarımı burda yazdım.

Process ( işlem ) nedir ?

Process kullanılan programların soyutlanması diyebiliriz. Genellikle job veya task olarak adlandırılan Türkçe’de ise process’ler için işletim sisteminin yaptığı iş, işlem olarak düşünebiliriz.

Process ile program, arasındaki fark göz ardı edilsede  aynı olmadığı kesindir. Programı hard disk’de veya floppy’de saklanan bir dosya olarak düşünürsek, process’ler memory ‘ de ( bellek ) saklanan bir dosyadır. Küçük bilgileri yazmak ve saklamak için kullandığımız notepad bir programdır, iki tane notepad belgesi açabilirsiniz. Process, programların oluşturulmasını ve başlamısını sağlar. Process, modülleri eş zamanlı olarak çalışmasını sağlayabilir.

Başka bir açıdan bakarsak, programı, belirli bir iş için oluşturulan komutlar kümesi olarak düşünebilirken, process komutların yüklenmesini sağlamak, komutların idaresini sağlayan bir operasyon olarak düşünebiliriz.

UNIX işletimin güçlü komutlarıyla bilgisayarınızın açılmasından sonra yapacağınız işlemleri görmek ve yönetmek konusunu anlatacağım.

Linux’da Process ( İşlem )

Bilgisayarınızın açılmasıyla görevi üstlenen kernel ilk process olan init process’ini çalıştıracaktır. Diğer process’lerin oluşması için init process’i mutlaka oluşturulmalı çünkü diğer process’ler bu init process’in çoçuğu olarak yani init process’in altında çalışacaktır.

Terminal’den pstree komutunu çalıştırdığınızda hangi process’in hangi process’e bağlı olduğunu görebilirsiniz. Benim bilgisayarımda şöyle bir görüntü ile karşılaştım.

Şeklinde devam eden bir parent-child ilişkisine dayanan bir yapıyla karşılaştım. Her process belli bir sıraya dizilerek kuyruk yapısına sokulur. Bu sıralama yaparken, kernel pek çok durumu göz önünde bulundurmaktadır. Böylelikle her process sırasını beklemektedir ve kernel process’lere eşit zaman ayırmaya çalışarak en verimli şekilde process’lerin bitirilmesi sağlanacaktır.

Bazı durumlarda process’lerin sonlandırılması gerekebilir. Bu durumlarda kernel parent process’e durması gerektiğini bildirecektir. Normalde parent process bu process’e bağlı olan child process terminate oluncaya kadar yani bitirilinceye kadar çalışır durumda olacaktır.

Fakat anormal durumlarda, parent process durdurulduğu halde bu parent process’e bağlı olacan child process sistemde bir zombie gibi bulunmaktadır. Zombie process’ler için yapacak bir şey yok restart işlemi bu zombie’leri temizleyecektir. :)

ps aux komutunu terminalde çalıştırdığımızda process’lerin durumları ile ilgili bilgileri görebileceğiz. STAT sütunu altında process’lerin durumları belirtilecektir.

Process durumları şöyle olabilir.

Running : Aktif olan process’ler için

Sleeping : Process bellekte hazır halde bulunmaktadır fakat aktif hale getirilmemiş process’ler için

Zombie : Fonksiyonelliğini kaybetmiş olan process ‘ler için

Stopped : Durdurulan ve bellekten çıkarılan process’ler için

kullanılırlar.

Şu ana kadar yaptıklarımızı özetlersek, process’ler birden fazla işlemleri uygulamaya koymak için iki farklı yolu izler. Gelen işlem için aynı process’in bir örneğini oluştururak işlemi yerine getirebilir. Diğer bir yol ise process’lerin iş parçacıkları olarak Türkçe’de yer alan thread’leri – alt process olarak düşünelebilir – kullanmasıdır. Her yeni gelen işlem için ilgili process’in altında bu yeni işlem için bir thread oluşturulur. Process’ler birden fazla thread oluşturabilir böylelikle sistem kaynaklarının verimli şekilde kullanılması sağlanacaktır. Çünkü thread’ler aynı bellek aralığını ( memory space ) kullanır.

Process’lerin Görüntülenmesi

Process’lerin görüntülenmesini sağlayan iki temel komut vardır. Bunlardan biri top diğeri ise pskomutlarıdır. “ps” bilgisayarınızda çalışmakta olan tüm process’lerin listelenmesini sağlayacaktır. “top”komutu ise bilgisayarınızda çalışan en aktif process’lerin gösterilmesini sağlayacaktır. Bu gösterim her 5 saniyede bir yenilecektir.

“top” komudunun yapısı

Process’lerin yönetilmesini sağlayacak en önemli komutlardan biridir. Bu komutu çalıştırmanız için root olmanız gerekecektir. Aksi takdirde process yönetimini yapamazsınız.

Bu komutun benim bilgisayarımda çıardığın sonuç ;

Yukardaki çıktıyı biraz incelediğimizde listenin iki parçadan oluştuğunu görmekteyiz. Varsayılan vakit olan her 5 saniyede yenilenen bu listenin üst kısmı sisteminizin nasıl meşgul olduğunu görüyoruz. Alt bölümlerde ise en aktif olan process’lerin gösterildiğini görüyoruz.

Yukardan aşağıya doğru ilk beş satırda, sisteminizin şu an ne yaptığını göstermektedir. Process’lerin durumlar hakkında bilgiler vermektedir.

En üst satıra baktığımızda sistem zamanı, sisteme bağlı olan kullanıcı sayısı ( root ve suleyman kullanıcı – 2 users )

Load average kısmında ise, CPU ‘ larınızın veya CPU çekirdeğinin ne kadar meşgul olduğunu görebilirsiniz. CPU ve CPU çekirdeği arasında bir fark yoktur. Bu üç değer, sırasıyla son dakika, son beş dakika, son onbeş dakika içerisinde CPU’larınızın ne kadar meşgul olduğunu gösterir.

Tasks diye başlayan satırda ise sistemde bulunan process’ler ve bu process’lerin durumları hakkında bilgi verilmektedir.

CPU(s) diye başlayan satıra baktığımızda, process’lerinizin CPU’ya istek çeşitleri göstermektedir. Birden fazla CPU’ya sahip sistemlerde, CPU kullanımının bir özeti görüntülenecektir. Terminalizden top komutunu çalıştırdıktan sonra yukardaki gibi bir görüntüde 1 tuşuna bastığınızda sisteminizde bulunan CPU’ların ayrı ayrı istatistikleri görüntülenecektir. Diğer görünen değerler aşağıdaki gibidir.

– us – : Kullanıcı alanında yüklenen process miktarını gösterir. Bu tür process’ler root izni olmadan çalışır ve kernel ( çekirdek ) fonksiyonlarına direkt olarak ulaşamazlar.

– sy – : Sistem alanında yüklenen process miktarını gösteriri. Bu tür process’ler root izni altında çalışır ve direkt olarak kernek fonksiyonlarına ulaşabilir. Bu tür process’lerin miktarı kullanıcı process’lere nazaran daha azdır.

– ni : nice komutu ile priority ( önem ) derecesi ayarlanan process’leri gösterir.

– id : Sisteminizin durgunluğunu gösteren bir yüzdedir. Yüksek olması endişe edici bir durum arz etmez.

– wa: Sisteminizin waiting mode’da harcadığı süreyi göstermektedir. Bu bekleme süresi sisteminizin I/O ( input-output ( giriş – çıkış ) ) işlemleri için beklediği süredir. Bu zamanın yüksek olması sisteminizin pek çok I/O işlemi gerektiren işlemler yaptığını gösterir.

– hi : Sisteminizin hardware ( donanım ) interrupt’larını tutması için harcadığı süreyi gösterir. Genelde düşük seviyede bulunur.

– si : Sisteminiz software ( yazılım ) interrupt’larını tutması için harcadığı süreyi gösterir.

– st :Diğer sanal makinelerin işlemciyi kullandığı vakittir.

Currently Memory Use satırında bilgisayarınızın kullandığı hafızanın boyutunu gösterir. Bu iki satır real memory ile swap memory ( sabit disk ) gösterir.

Mem total : Sistemde yüklü olan RAM belleğinin boyutunu gösterir.

Mem used : Kullanılmakta olan belleğin miktarını gösterir.

Mem free : Kullanılmayan belleğin miktarını gösterir.

Buffers : Yazma ara belleği ( buffer ) için ayrılan hafıza bloğunun miktarını gösterir. Yazma işlemi sırasında, bilgisayarınız yazdığınız veriyi ara belleğe alır, daha sonra burada sırasını bekler.

Cache : Son yapılan işlemleri bünyesinde saklayan bir memory’dir. Cache’in çalışma prensibi gereği işlemci gerekli programa ve dosyaya hızlı bir şekilde ulaşmak için, son kullanılan hafıza bloklarını burda saklar. İşlemci gerekli olan programı veya dosyaya ilk önce cache’in içinde arar, eğer burdaysa cache hit oluşur, gereken dosyayı burdan alır. Cache’in içinde olmaması durumunda işlemci istediği programla ilgili dosyaların, hafızadaki yerin adresini hafızaya yollayarak, bilginin hem kendine hem de cache’e aktarılmasını sağlar.

Swap total : Daha önce de anlattığımız gibi, bilgisayarınızda bulunan hard disk gibi çalışır. Linux’da swap, overflow ( taşma ) durumunda kullanılır. Fiziksel hafızanın taşması durumunda kullanılır.

Swap used : Bu değer, swap hafızanın ne kadar kullandığını gösterir.

– top – komutunun sonucu elde ettiğiniz ekran görüntüsün aşağı kısımlarında process bilgilerini göreceksiniz. Pek çok sütuna göre process bilgilerini göreceksiniz fakat sütunları arttırmanız mümkündür. Diğer sütunları aktif hale getirmeniz için, top görüntüsü açıkken F tuşuna basmanız gerekecektir. Aşağıdaki görüntü F tuşuna bastıktan sonra benim karşıma çıkan terminal görüntüsüdür.

Örnek olarak aktif etmek istediğiniz sütun, swap hafızanın boyutunu görmek için, bu ekran görüntüsü açıkken p tuşuna basın, p tabloda p harfinin yanında ( * ) bu simge görünecektir. Daha sonra enter’a basarak geri dönebilirsiniz. Aktif ettiğim swap sütunu aşağıdaki gibi karşımdadır.

PID : Process’lerin tanımlamasını yarayan numaralardır. ( Process identifacation number ). Her process’in bir pıd numarası vardır. Yönetmeniz gereken process’in bu numarası bilinmesi gerekir.

User : Process’i başlatan kullanıcının ismi.

Pr ( priority ) : Process’lerin önceliğini göstermektedir. Yüksek önceliğe sahip process’ler daha önce hizmet görecektir.

NI ( nice ): Process’ler arasında önem sırası eşit olanların arasından hangisinin önce geleceğini belirleneceği değerdir.

VIRT : Process tarafından kullanılan hafızanın miktarını gösterir.

RES : Process için ayrılan hafızanın boyutunu gösterir. VIRT sütunu altındaki değer ile bu sütun arasındaki değerin arasındaki farkın olması, process’lerin gereğinden fazla yer istemesinden kaynaklanmaktadır.

SHARE : Paylaşılan hafızayı gösterir. Processlerin beraber kullandığı ortak kütüphane gibidir.

S : Process durumlarını gösterir.

%CPU : Process’lerin kullandığı CPU döngü yüzdesini gösterir.

%MEM : Process’in kullandığı hafıza miktarı yüzdesini gösterir.

TIME : Process ‘ in başlamasından sonra CPU ‘ yı ne kadar süre kullandığını gösterir.

COMMAND : Process’in başlamasını sağlayan komutu gösterir.