Skip to content

Instantly share code, notes, and snippets.

@talayhan
Created March 24, 2015 20:16
Show Gist options
  • Select an option

  • Save talayhan/fecec0a8a293f9944475 to your computer and use it in GitHub Desktop.

Select an option

Save talayhan/fecec0a8a293f9944475 to your computer and use it in GitHub Desktop.
Operating System Project 1B Turkish Explanation

Pintos Project 1-B

Bu ödevde lottery scheduling algoritmasını implement etmeniz bekleniyor.

Lottery scheduling algoritması söyle çalışır : Sisteme yeni bir thread katıldığında işletim sistemi elindeki biletlerden bir kısmını (en az bir tane en fazla k tane olacak şekilde) yeni gelen thread’e verir. İşletim sistemi thread switch yapacağı zaman dağıttığı biletlerden bir tanesini random olarak seçer ve o bilet hangi threadde ise o threadi çalıştırır.

Bu durumda bir threadin prioritisi o threadde bulunan bilet sayısı ile doğru orantılı olacaktır.

Bir örnek verecek olursak : Sistemde A , B ve C threadleri bulunsun ve bunların ellerindeki bilet sayıları sırasıyla 5,3 ve 2 olsun. Bu durumda B’nin seçilme ihtimali %30 ‘dur. Sistemde B ve C olsaydı sadece B’nin seçilme ihtimali %60 olacaktı.

Prioritisi yüksek bir thread prioritisi düşük bir threadin elindeki bir kaynağı beklediğinde prioritesi yüksek thread geçici olarak elindeki biletleri düşük prioriteli threade verip düşük prioritesi olan threadin çalıştırılma ve işini bitirip elindeki kaynağı bırakma süresini/ihtimalini yükseltmesi gerekiyor.(proje 1’in 2. Kısmındaki inversion probleminin modifiye edilmiş hali)


Note:

  1. Sistemdeki thread sayısı ile ilgili bir sınır olmadığı için elimizdeki biletler tükendiğinde sisteme yeni bir thread gelirse bir miktar bilet basmamız gerekecek.
  2. Çalışmasını bitiren thread yok olmadan önce elindeki biletleri sisteme iade edecek.
  3. Sistemin verimli çalışması için gerekli ayarlamaları yapınız. Çünkü zamanla sistemdeki bilet sayısı gereksiz şekilde artarsa bu sistemde yavaşlamaya sebep olabilir. Dolayısıyla bilet sayısını gereksiz şekilde artırmayın.

Yukarıda anlatılan algoritmayı your_name1&yorname2.c uzantılı bir dosyaya implement ediniz ve yaptıklarınızı anlattığınız bir rapor ekleyiniz.

PS: Pintos Project 1’de kullandığınız fonksiyonları aynı şekilde kullanabilirsiniz. Değişiklik yaptığınız bütün fonksiyonları your_name1&yorname2.c dosyasına ekleyiniz. Grup adına tek bir kişinin ödevi yollaması yeterli.

DEAD-LINE 3.4.2015

talayhan@t4:~$ sudo su (thread.h e o threadin tuttuğu biletlerin listesini ekleyip , sistemde yeni thead oluşturan fonksiyonda oluşturulan threadlere bilet verecek değişiklikleri yaparak başlayabilirsiniz.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment