Linux Sistemlerde Süreç Zamanlama Algoritmaları (Scheduler Algorithms) ÜMİT İŞGÜDER

Benzer belgeler
İşletim Sistemlerine Giriş

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2

İŞ SIRALAMA. İş Sıralama 6. İşletim Sistemleri

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

& WIN 32 DEN BAKIŞ AÇISI İSMAİL YALÇIN

Multicore/Multithread Programlama

İşlem Yönetimi (Process Management)

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition

Algoritmalar ve Karmaşıklık

Alıştırma 1: Yineleme

{\} /\ Suhap SAHIN Onur GÖK

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA I

MATLAB/Değişkene Değer Atamak

Algoritma Geliştirme ve Veri Yapıları 8 Kuyruk ve Yığın Yapısı. Mustafa Kemal Üniversitesi

Yrd. Doç. Dr. Caner ÖZCAN

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Bilgisayar İşletim Sistemleri BLG 312

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

Özyineleme (Recursion)


GELİŞMİŞ ŞİFRELEME STANDARDI - AES

else *on=*on+1; return gecici; } int giseyeyerlestir(struct gise*giseler) {//giseye bos olmasi durumunda yerlestirme yapiliyor...

Yrd. Doç. Dr. Caner ÖZCAN

İleri Diferansiyel Denklemler

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

Ayrık Fourier Dönüşümü

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ALGORİTMA VE PROGRAMLAMA II

İşletim Sistemlerine Giriş

BELLEK YÖNETY. Bellek Yönetimi

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

VIESMANN VITOCLIMA-S. Kullanma kılavuzu VITOCLIMA 300-S. Grup Kontrol VITOCLIMA VIESMANN 1

PROCESS YARATIMI (TEKRAR):

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Yrd. Doç. Dr. Caner ÖZCAN

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

İşletim Sistemlerine Giriş

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

İŞLETİM SİSTEMLERİ. (Operating Systems)

PROSESLER. Proses. Proses

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları

3.2. DP Modellerinin Simpleks Yöntem ile Çözümü Primal Simpleks Yöntem

Veri Yapıları Laboratuvarı

Her bir kapının girişine sinyal verilmesi zamanı ile çıkışın alınması zamanı arasında çok kısa da olsa fark bulunmaktadır -> kapı gecikmesi

İşletim Sistemlerine Giriş

Yrd. Doç. Dr. Caner ÖZCAN

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

C++ Dersi: Nesne Tabanlı Programlama

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

BİT in Temel Bileşenleri (Yazılım-1)

Dr. Fatih AY Tel: fatihay@fatihay.net

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition

Fonksiyon Optimizasyonunda Genetik Algoritmalar

Linux Assembly Programlamaya Giriş

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

Proses. Prosesler 2. İşletim Sistemleri

YMT219 VERİ YAPILARI ÖDEV-1

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Yrd. Doç. Dr. Caner ÖZCAN

İşletim Sistemlerine Giriş

Bilgisayar Sistemlerine Genel Bakış

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

YZM 5257 YAPAY ZEKA VE UZMAN SİSTEMLER DERS#6: GENETİK ALGORİTMALAR

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

Bekleme Hattı Teorisi

Dosya Sıkıştırma (File Compression) Kütük Organizasyonu 1

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

Göstericiler (Pointers)

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

İşletim sistemlerinde, gerçekleştirilen işlemlerin geçici olarak saklandığı merkeze ana bellek (RAM) denir.

Giriş. geleneksel işletim sistemlerinde her prosesin. aynı adres uzayında birden fazla akış kontrolü gerekebilir

Çok işlemli (multitasking) sistemlerde işlemler (process) kısıtlı kaynakları kullanmak zorundadırlar.

JAVADA DİZİ İŞLEMLERİ

Bilgisayar İşletim Sistemleri BLG 312

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

Genel Programlama II

Algoritma ve Akış Diyagramları

ALGORİTMA VE PROGRAMLAMA II

GÖRÜNTÜ İŞLEME - (7.Hafta) KENAR BELİRLEME ALGORİTMALARI

Yrd. Doç. Dr. Caner ÖZCAN

YZM 2116 Veri Yapıları

Transkript:

Linux Sistemlerde Süreç Zamanlama Algoritmaları (Scheduler Algorithms) ÜMİT İŞGÜDER 21/03/07 İşletim Sistemleri 1

Linux 2.6.8.1 Zamanlayıcısının Temelleri Linux 2.5.x 'in geliştirilmesi sırasında yeni bir zamanlama algoritması Linux çekirdeğine en önemli değişikliğini yaşattı. Linux 2.4.x zamanlayıcısı geniş bir alanda güvenilir, genelde sorunsuz olarak kullanılıyordu fakat birçok istenilmeyen özelliklere sahipti ve bunlar yapılanmadan ötürü yerleşik durumdaydı. 21/03/07 İşletim Sistemleri 2

Linux 2.6.8.1 Zamanlayıcısının Temelleri Ingo Molnar bunları iyileştirma çabası içine girdi ve eski algoritmada değişiklikler yapmak yerine tümüyle yeni olan bir algoritma oluşturdu. Linux 2.4.x zamanlama algoritmasının O(n) algoritmalarını içermesi belki de en büyük kusuruydu ve sonradan anlaşıldığı gibi en iyi gelişme yeni zamanlayıcının O(1) algoritmalarından oluşmasıydı. 21/03/07 İşletim Sistemleri 3

Peki nedir bu O(1) algoritması? 21/03/07 İşletim Sistemleri 4

O(1) Algoritması Bir algoritma girdiler (input) üzerine işlem yapar ve girdilerin sayısı genellikle çalışma zamanını belirler. Big-O notasyonu algoritmanın çalışma zamanının büyüme oranının girdi sayısınına dayalı olarak belirlenmesinde kullanılır. Örneğin O(n) algoritmasının çalışma zamanı n arttıkça doğrusal olarak artar. Bir O(n²) algoritması için üstsel olarak artar (quadratical). 21/03/07 İşletim Sistemleri 5

O(1) Algoritması Eğer bir algoritmanın çalışma zamanında (running time) sabit üs kullanmak mümkün olursa bu bize O(1)'i sağlar.başka bir deyişle algoritmamız sabit zamanda çalışabilir. Yani bir O(1) algoritması bize girdi sayısı ne olursa olsun kesin bir sürede tamamlanma garantisi veriyor. 21/03/07 İşletim Sistemleri 6

Linux 2.6.8.1 Zamanlayıcısının O(1) Zamanında Görevini Yerine Getirmesini Ne Sağlıyor? 21/03/07 İşletim Sistemleri 7

Linux 2.8.6.1 Zamanlayıcısının Yapısı Linux 2.6.8.1 zamanlayıcısı O(1)'den daha kötü çalışan bir algoritma içermiyor. Bu durum zamanlayıcının her bölümünün sistemde ne kadar görev varsa kesin bir sürede çalıştırılacağına garanti veriyor. Bu da Linux çekirdeğinin etkin bir şekilde çok fazla sayıda artan görevlerin maliyeti arttırmaksızın yönetmesine izin veriyor. 21/03/07 İşletim Sistemleri 8

Linux 2.8.6.1 Zamanlayıcısının Yapısı Linux 2.6.8.1 zamanlayıcısında bu görevlerin O(1) zamanında gerçekleşmesini sağlayan iki adet veri yapısı vardır ve yapısı bunlar etrafında döner: Öncelik Dizileri -Priority Arrays Çalışma Kuyrukları -Runqueues 21/03/07 İşletim Sistemleri 9

Runqueues (Çalışma Kuyrukları) Runqueue veri yapısı Linux 2.6.8.1 zamanlayıcısında kullanılan en temel veri yapısıdır ve bütün algoritma bunun üzerine kuruludur. Aslında bir runqueue CPU'ya atanmış tüm çalışabilir görevlerin alan bilgisini tutar.bunun için sistemde her CPU için bir runqueue oluşturulur ve yönetilir. 21/03/07 İşletim Sistemleri 10

Runqueues (Çalışma Kuyrukları) Her runqueue iki adet öncelik dizisi (priority array) içerir. Runqueue'nin işi CPU'nun özel thread bilgilerinin yerlerini tutup bunları iki öncelik dizisiyle yönetmektir. 21/03/07 İşletim Sistemleri 11

Runqueues Veri Yapısı ve Kullandığı Değişkenler Runqueue veri yapısı kernel/sched.c 'de tanımlanmış olan bir veri yapısıdır. spinlock_t lock Bu değişken runqueue'yi koruyan kilittir. Sadece bir görev belirli zamanda runqueue üzerinde oynama yapabilir. 21/03/07 İşletim Sistemleri 12

Runqueues Veri Yapısı ve Kullandığı Değişkenler unsigned long nr_running Runqueue'deki çalışabilir durumda olan görevlerin sayısını tutar. unsigned long expired_timestamp En son Priority Array değişiminden beri geçen zaman ( aktif ölü ) 21/03/07 İşletim Sistemleri 13

Runqueues Veri Yapısı ve Kullandığı Değişkenler unsigned long nr_uninterruptible Runqueue'deki çalışması kesilemeyen görevlerin sayısını tutar. task_t *curr En son çalışan göreve pointer. task_t *idle CPU'nun idle görevine pointer. ( Idle: sistem boşta hali ) 21/03/07 İşletim Sistemleri 14

Runqueues Veri Yapısı ve Kullandığı Değişkenler struct mm_struct *prev_mm Bir sonraki çalışacak olan görevin bulunduğu sanal belleğe pointer. Etkin olarak sanal bellek haritalama ve yönetiminde kullanılır. (cache) atomic_t nr_iowait I/O için runqueue'de sıra bekleyen görevlerin sayısını tutar. 21/03/07 İşletim Sistemleri 15

Runqueue ve Kilitleme Sadece bir görev belirli zamanda runqueue üzerinde oynama yapabilir ve bunu yapmak isteyen görev önce kilidi açmalıdır. Birden çok runqueue kilitlerini açmak karmaşıklıktan kaçınmak için runqueuenin azalan adresler olarak düzenlenmesi gerekir. İki runqueyi kilitlemek için uygun bir fonksiyon olan double_rq_lock(rq1, rq2) kilitleri kendi yönetir. Tersi olarak da, double_rq_unlock(rq1, rq2) ikisini birden kilitler. Runqueueyi kilitleme de task_rq_lock(task, &flags) adındaki fonksiyondaki bir görevdir. 21/03/07 İşletim Sistemleri 16

Priority Arrays (Öncelik Dizileri) Bu veri yapısı Linux 2.6.8.1 zamanlayıcısının O(1) zamanlı performansını sağlamadaki en önemli öğesidir. Zamanlayıcı daima sistemdeki en yüksek öncelikli görevleri zamanlar ve eğer birden çok görev aynı öncelik seviyesinde ise birbirleriyle dönüşümlü olarak zamanlanır. 21/03/07 İşletim Sistemleri 17

Priority Arrays (Öncelik Dizileri) Öncelik kuyrukları sistemde en yüksek seviyeli öncelikli görevleri bulurlar ayrıca sabit zamanda mümkün olduğunca öncelik seviyelerini dönüşümlü olarak ayarlarlar. 21/03/07 İşletim Sistemleri 18

Priority Arrays (Öncelik Dizileri) Bundan başka zaman dilimi bölümleri arasında geçiş yaparak iki öncelik kuyruğunu uyum içinde kullanmak sabit zamanlı işlemleri meydana getirdi. Bu zaman dilimi bölümleri tüm çalışabilir görevlerin yeni bir zaman dilimiyle başlamaları ve zamanlarını harcamaları arasındaki zamandır. 21/03/07 İşletim Sistemleri 19

Priority Arrays Nasıl Kullanılır? 21/03/07 İşletim Sistemleri 20

Priority Arrays Öncelik kuyrukları, her öncelik seviyesinden oluşan bağlı listeler dizisidir. (Linux 2.8.6.1'de 140 seviyede öncelik vardır ). Bir görev diziye eklendiğinde aslında listeye eklenen onun öncelik sırasıdır. Boyutu MAX_PRIO+1 olan bir bitmapde her öncelik seviyesi için aktif görevleri içeren bit seti vardır. 21/03/07 İşletim Sistemleri 21

Priority Arrays Dizideki en yüksek seviyeli öncelikli görevi bulmak için biri sadece bitmape konulan bitlerin ilkini bulmak zorunda. Aynı önceliğe sahip çoklu görevler dönüşümlü olarak zamanlanır; çalışmadan sonra, görevler öncelik seviyelerinin listesine göre dibe konulur. 21/03/07 İşletim Sistemleri 22

Priority Arrays Çünkü sonlu uzunluktaki bir bitmapde ilk biti bulmak ve listede ilk elemanı bulmak işlemin ne kadar zaman alacağını belirleyen bir dizi işlemlerdir. CPU'daki her görev aktif olan öncelik sırasında yaşamına başlar ve ona verilen zaman dilimi süresince yaşar ve süresi dolan ölü dolan görevlerin tutulduğu öncelik dizisine taşınır. 21/03/07 İşletim Sistemleri 23

Priority Arrays Taşınma süresinde de yeni çalışma süresi hesaplanır. Artık aktif öncelik dizisinde çalışabilir durumda bir görev kalmamışsa sadece diziler yer değiştirir. Çünkü zaman dilimleri görevlerin süreleri dolunca yeniden hesaplanır, ama bu tüm görevler için yeni zaman dilimlerinin hesaplanması demek değildir. 21/03/07 İşletim Sistemleri 24

Priority Arrays Bu birkaç görev için hesaplanan zaman dilimleri ve bunların iterasyonunu kullanmak yerine kullanılan birkaç küçük sabit-zaman işlemidir. Yani bizim O(n) algoritmamızdaki istemediğimiz olay çözüme kavuşmuştur. Ölü ve aktif öncelik dizilerimizin pointerlarının yer değiştirilmesi n adet görevi sayılarca diziden diziye taşıyan ve O(n) zaman alan işlemlerden kaçınan sabit-zaman işlemidir. 21/03/07 İşletim Sistemleri 25

Priority Arrays Veri Yapısının Kullandığı Değişkenler prio_array_t *active Aktif olan ve daha çalışma zamanları bulunan görevlerin bulunduğu aktif priority array'e pointer. prio_array_t *expired Zamanlarını kullanmış ve bitirmiş olan ölü priority array'e pointer. 21/03/07 İşletim Sistemleri 26

Priority Arrays Veri Yapısının Kullandığı Değişkenler int best_expired_prio Ölü bir dizide en yüksek öncelik. EXPIRED_STARVING makrosu içinde kullanılır ve çalışan görev öldükten sonra hangi görevin en yüksek öncelikli olduğunu saptamaya yarar. 21/03/07 İşletim Sistemleri 27

Linux Sistemlerde Süreç Zamanlama Algoritmaları (Scheduler Algorithms) ÜMİT İŞGÜDER 21/03/07 İşletim Sistemleri 28