Skip to content

Latest commit

 

History

History
184 lines (129 loc) · 12.3 KB

Gün06-26-07-18.md

File metadata and controls

184 lines (129 loc) · 12.3 KB

Süreçler

Süreç nedir?

Bir başlangıcı ve bir sonu olan olaylar topluluğudur. Bilgisayarlarda bu tanım pek farklı değildir. Süreçlerin kimlikleri vardır (pid). Her sürecin bir baba (ata, parent) süreci vardır (ppid). Süreçlerin denetimi sinyal mekanizması ile yapılmaktadır.

$ ps

Süreçler $ ps komutuyla gözlenebilir.

Sinyal Mekanizması

Süreçler arasındaki iletişim için kullanılabilecek en temel iletişim biçimidir. Bir süreç diğerine sinyal gönderir ve diğer süreç bu sinyal ile gerekli eylemleri gerçekleştirmesi beklenir.

Pek çok işlem için ön-tanımlı sinyaller söz konusudur:

Sinyal Açıklaması
SIGHUP Ayar dosyalarının yeniden okutulması
SIGKILL Çalışan ve sonlandırılmasını kabul etmeyen bir süreci sonlandırmak
SIGTERM Çalışan bir süreci sonlandırmak
SIGSTOP Çalışan bir süreci duraklatmak
SIGCONT Duraklatılmış bir süreci yeniden başlatmak

$ kill

İlgili sürece sinyali göndermek için kullanılır:

$ kill -SIGHUP süreçnumarası

$ killall

Süreçlere sinyalleri süreç ismi ile iletmektedir

$ killall --SIGSTOP httpd
$ killall --SIGCONT httpd

$ nice

Süreçlerin öncelikleri $ nice komutu ile belirlenmektedir. Geçerli öncelik değerini gösteriyor ve komutun önceliğini değiştirebilir.

$ nice komut parametreler -> önceliği 10 azaltır (nice değerini 10 artırır)
$ nice -n 12 komut parametreler -> önceliği 12 azaltır (nice değerini 12 artırır)

$ renice

?eksik?

Çok görevli bir işletim sistemi olan UNIX, birden fazla süreci aynı anda işletebilmektedir. Süreç sayısı kadar işlemci varsa gerçek paralellik sağlanabilmektedir, aksı durumda zaman paylaşımı zorunludur.

X-Window Grafik Arayüzü

UNIX ve türevleri için X Konsorsiyumu tarafından standartlanmış ağ tabanlı grafil arayüzüdür. X Konsorsiyumu, kullanılacak standartı "X" olarak adlandırmıştır.

X sunucusu, X istemcilerine grafik arabirimi sunmak için çalışan yerel ya da ağ temelli bir sunucudur. İstemci ve sunucu alışılageldiğin tam tersi biçimdedir; pencerelerin gösterildiği bilgisayar "sunucu", uygulamanın çalıştığı istemci. Ağ üzerinden kullanılmak zorunda değildir, aynı bilgisayar hem sunucu hem de istemci olabilir.

X Window sistemi, kullanıcılar tarafından başlatılabilir ya da durdurulabilir. Devamlı çalışır durumda olmak zorunda değildir.

X sistemi, taşınabilir arayüz niteliklerinden bağımsız bir grafik kullanıcı arabirimi sağlar. Dileyenler bu zeminin üzerinde kendi arayüzlerini kendileri programlayabilirler. Her farklı arayüz farklı biçimde davranabilir ve görünebilir. Bu arayüz yazılımlarına Pencere Yöneticisi denir. Popülerleri: FVWM, SawFish, WindowMaker, AfterStep, BlackBox...

GNOME, KDE, Xfce gibi masaüstü ortamlarının kendi pencere yöneticileri vardır ve değiştirilebilir.

Masaüstü Ortamları

Masaüstü ortamları, pencere yöneticisi, yapılandırma dosyaları, çok genel uygulama yazılımları, simgeler, sesler ve temalardan oluşan bir "paket"tir. Sistemin kullanıcı arayüzü alabildiğine değiştirilebilir. KDE ve GNOME en popüler iki masaüstü ortamıdır. Bütün bir masaüstü ortamı, yalın bir pencere yöneticisinden çok daha fazla sistem kaynağı tüketecektir.

GNOME (The GNU Network Object Model Environment)

Kendisini GNU projesinin bir parçası ve özgür bir yazılım olarak tanımlamaktadır. COBRA, XML gibi en yeni teknolojiler kullanılarak geliştirilmektedir. Türkçe dahil olmak üzere pek çok dile çevrilmiştir.

KDE

1996 yılından beri geliştirilmekte olan, kullanımı son derece kolay bir masaüstü ortamıdır. Tamamı LGPL/GPL lisansı ile dağıtılan özgür bir yazılımdır. Tamamı yerelleştirilmiştir.

Masaüstü ortamlarının değiştirilmesi

Birden fazla masaüstü ortamı veya pencere yöneticisi kurulu olan linux sistemlerinde,

  • ~/.xsession
  • ~/.xinitrc

dosyaları düzenlenerek ilgili ayarlar ile masaüstü ortamı değiştirilebilir.

Metin Editörleri

Deneyimsiz kullanıcılar için genel olarak pico veya nano gibi editörleri tercih etmelidir. Deneyimli kullanıcılar da genellikle vi veya vim kullanmaktadır.

pico

Pico (Oine COmposer) Washington Üniversitesi tarafından geliştirilmektedir ve Pine e-posta istemcisi ile birlikte dağıtılmaktadır.

nano

Washington Üniversitesi GPL lisansı ile dağıtmak istemedi. Daha sonra da GNU/Linux topluluğu Nano adında Pico ile fonksiyonalite anlamında aynı olan bu editörü geliştirdi. Kolay bir kullanıma sahiptir.

vi

UNIX'lerde ve türevlerinde çok kullanılan, gelişmiş bir metin editörüdür.

vi'den nasıl çıkılır (XD): ESC'ye bastıktan sonra ":" ile komut kısmına geçilir. "q!" yazıp enter tuşuna basıp vi'den çıkabilirsiniz.

vim

"vi improvised" olarak tanımlanan vi'nin daha gelişmiş yeteneklere sahip versiyonudur.

Yukarıda sayılanların dışında çok kullanılan metin editörleri:

  • emacs
  • joe
  • sed
  • jed
  • ee
  • mcedit
  • Kwrite
  • KVI
  • Elvis
  • gEdit
  • biew

Sistem Servislerine İlk Adımlar

Bazı servislerin açılması, başka servislere bağımlı olabilir. Servislerin açılması için bir sıra ile açılması gerek. Birbirlerinin açılıp açılmadığını kontrol etmeleri için servisler, "Soket Bağlantısı" ile birbirleri arasında iletişim sağlarlar. Eğer servis kendisi için bir soket bağlantısı açarsa o servisin açılmış olduğu kabul ediliyordu.

Bu tip açılışa "Klasik Tip" adı verilmektedir. Klasik tip açılış sırasında servislerin sıra ile açılması ve birbirlerini beklemesi çok vakit alan bir olaydı.

Zaman içinde bilgisayarların gelişmesiyle bu eski sıralı başlatma olayı değiştirildi ve systemd (yani system-daemon) geliştirildi. Bu yöntem ile tüm servislerin soket bağlantıları daha servisler başlamadan önceden açılıyor. Bu sayede servisler ihtiyacı olan servislerin soket bağlantılarının olduğunu fark edip servisin başladığını varsayarak çalışmaya başlıyorlar.

systemd nedir?

systemd, Linux işletim sistemleri için geliştirilmiştir. Amacı; bilgisayardaki sistem ve servislerin çalışmasını organize etmektir.

Hizmet süreçleri şu araçlar ile yönetilebilir:

  • $ systemctl
  • $ chkconfig

$ systemctl söz dizimi:

# systemctl start | stop | restart | reload | status servisadi.service

Eskiden ilgili servisleri başlatmak için örneğin şu betikler kullanılırdı;

  • /etc/init.d/ftp
  • /etc/init.d/mysql
  • /etc/init.d/apache2
  • ...

ve sistemcinin bu betikleri tek tek öğrenmesi gerekirdi. Fakat systemd ile tek bir yerden tüm bu işlemleri yapması sağlandı. Servisler için şu gibi kullanımlar mevcuttur:

Komut Açıklaması
$ systemctl enable Servisi otomatik başlatmayı aktifleştirir
$ systemctl disable Servisi otomatik başlatmayı deaktifleştirir
$ systemctl mask Servisi elle başlatmayı engelleme
$ systemctl unmask Servisi tekrar elle başlatılabili hale getirme

$ systemctl genel olarak sistem için de geçerli aksiyonlara sahiptir. Örneğin:

Komut Açıklama
$ systemctl reboot Sistemi yeniden başlatır
$ systemctl poweroff Sistemin kapatır
$ systemctl suspend Sistemi uyku moduna alır
$ systemctl hibernate Sistemi derin uyku moduna alır

Uyku modu ile derin uyku modunun karıştırılmaması gerekir. Uyku modu bilgisayarın gücünü kesmez ve tüm veriler RAM'de saklı durur. Derin uyku modunda ise RAM'de saklı durması gereken tüm veri diske saklanır, ardından bilgisayarın gücü kapanır.

Mantıksal Hacim Yönetimi - Logical Volume Management (LVM)

  • VolumeGroup ?eksik?

RAID

  • RAID ?eksik?
  • RAID Dağılması ?eksik?

Defragmentasyon

Bu kısım Vikipedia'dan alınmıştır.

Defragmentasyon animasyonu

Kısaca defrag, disk birleştirme anlamına gelmektedir. Bilgisayardaki sabit diskte parçalanmış dosyaları birleştirmek için yapılır. Windows içerisinde dâhilî disk birleştirme aracı olduğu gibi bu işlemi hâricen gerçekleştiren yazılımlar da mevcuttur.

Sabit diske yüklenmiş yazılımlar ve onların bileşenleri, sabit disk üzerine her zaman art arda ve düzgün olarak yerleştirilemezler. Bu durum sabit disk üzerinde dosyaların parçalı olarak kalmasına neden olur. Bu parçalar işlemci tarafından çağırıldığında sabit diskinin okuyucu kafası dosyaları okumak için çok fazla hareket eder. Sonuç olarak sabit diskte gecikmeler, gürültüler ve ömründe azalma olur.

Windows işletim sisteminin aksine Linux tabanlı işletim sistemlerinde, disk birleştirme diye bir kavram yoktur, çünkü bu işletim sistemlerinde, sistemlerin mimarîsi gereği, zaten disk parçalanma olmaz. Bu yüzden disk birleştirme ihtiyacı kalmamış olur.

Uyarı: defrag dosya sistemine yapılır, hard diske yapılmaz!

SSD diskler için "trim" operasyonu

Bu kısım Technopat'tan alınmıştır.

Mekanik sürücülerde yada diğer adıyla harddisk’lerde veriler, çok hızlı bir şekilde dönen (ortalama 7200RPM) metal plaka-lar üzerine yine çok hızlı hareket eden bir kafa yardımıyla kaydedilir. Kaydedilen her bilginin bu metal plaka-lar üzerinde mutlaka bir adresi vardır. Veriye ulaşmak için okuma/yazma kafası ilk olarak adresin kayıtlı olduğu bölüme, ardından verinin plaka üzerindeki koordinatına (izine) yönelir.

Mekanik sürücülerde herhangi bir dosyayı sildiğiniz zaman, o dosya fiziksel olarak değil, sadece plaka üzerindeki adresi silinir. Kayıtlı bir adres olmayınca okuma/yazma kafası veriye ulaşamaz ve biz veriyi göremediğimiz için silindiğini düşünürüz. Ancak mekanik sürücülerde; adresleri kayıt defterinden silinmiş olduğu halde hala plaka üzerinde fiziksel olarak varolan verilerin üzerine tekrar yazma işlemi yapılabiliyor. Yani; 1GB’lık bir dosyayı tamamen plaka üzerinden kazımadan üzerine başka bir dosyayı yazabiliyoruz.

SSD’lerde ise; mekanik sürücülerde olduğu gibi silinmiş, ama fiziksel olarak blok içinde yer alan verinin üzerine tekrar kayıt yapabilmemiz için, 4K büyüklüğündeki blokların tamamen boş olması gerekir. Adres defterinden çıkartıldığı halde içi dolu olan herhangi bir hücreye tekrar kayıt yapılamaz.

Bir üstteki paragrafta geçen, "bir bloğun tamamen boş olması" gerekliliği SSD disklerin çalışma prensiplerinden gelmektedir. Bir bloğun içeriğinin değişmesi için o bloğun tamamının tek seferde alınıp işlenip ardından tek seferde bloğa geri yazılması demektir.

Bunun sebebi de SSD diskler içerisinde bitlerin sadece 1'den 0'a dönüştürülmesi mümkün. 0'dan 1'e dönüştürülemeyeceği için önce blok tamamen 1'ler ile değiştiriliyor, ardından 0 olacak kısımlar değiştiriliyor.

TRIM komutu tam bu anda burada devreye giriyor. İşletim sistemi desteği ile, kullanıcının hiç bir müdahalesi yada haberi olmadan 4K’lık hücre bloklarını fiziksel olarak tamamen boşaltılarak sistemin bu boş hücrelere verileri tekrar kaydedilmesi sağlanıyor.

SSD’lerde yer alan Nand Flash yongaların içinde milyarlarca hücre yer alır. Her hücrenin bir silme/yazma ömrü vardır. TRIM komutunun ikinci fonksiyonu ise; hücreler içindeki kayıtlı verileri diğer boş olan hücrelere eşit olarak dağıtmaktır. Bu sayede, ortalama 3000-8000 arası kayıt ömrü olan hücreler eşit zamanda aşınır. Yani forumlarda dolaşan şehir efsanesinin aksine TRIM komutu, SSD’lerin ömrünü uzatmaz, hücrelerin aynı zamanda aşınmasını sağlar.