ݺߣ

ݺߣShare a Scribd company logo
ÖZET
Bellek Yöne-mi, Proses-Thread, Fifo, Round-
Robin,
ahabe?n Akca - 132132178
Ahmet Yesevi Üniversitesi – Bilg. Müh. Lisans
ÖDEV
İşle-m Sistemleri
CEVAPLAR
1. Soru
Linux Bellek Yöne-mi:
❖ Sayfa (page) adı verilen, mimari ve bellek boyuna göre 4-64 KB boyunda birimler bazında kullanılır
.
❖ MMU (memory management unit) adlı işlemci birimi yardımıyla oluşturulan sanal adresleme ile:
▪ Varolandan daha büyük bir bellek alanı kullanılabilir.
▪ Belleğe sığandan daha fazla uygulama çalışerılabilir.
▪ Her uygulamanın kendine ait bir sanal adres alanı olur
❖ Uygulamanın erişmek istediği sanal adres gerçek bellekte yoksa :
▪ İşlemci bir sayfa hatası (page fault) verir.
▪ İşle-m sistemi kontrolü alır, gerekirse bellekte boş yer açıp, istenen sayfayı takas alanında
n yükler.
▪ Uygulama kaldığı yerden devam eder
❖ Gerçek bellek dolmaya başladığında işle-m sistemi az erişilen sayfaları takas alanına taşır.
❖ Sayfa hataları büyük yavaşlamaya neden olduğundan, en aza indirgenmeye çalışılır.
Linux, disk yüzeyini RAM belleğin bir uzanesıymış gibi kullanan ve böylelikle fiziksel belleğin
görünürdeki miktarını ariran sanal bellek desteğine sahip-r. Çekirdek bellekteki kullanılmayan
bloklarda bulunan bilgileri, disk yüzeyine yazar ve bellek başka işler için serbest kalmış olur. Bu
bölümler gerek-ği zaman bunlar belleğe tekrar alınırlar. Bu olaylar kullanıcıdan bağımsız bir şekilde
gerçekleşir. Linux alenda çalışan programlar geniş bir bellek alanı görürken, aslında bazı bilgilerin
hemen yanı başlarında olduğundan habersizlerdir. Elbeke ki sanal bellek kullanımı RAM kullanımı
kadar hızlı değildir, bu nedenle program hızlarında düşüş yaşanır. Sabit disk üzerinde sanal bellek için
kullanılan bölüme takas alanı denir.
Aşağıdaki komutla içinde oyuklar olmayan bir takas dosyası oluşturabilirsiniz:
# dd if=/dev/zero of=/ek-takas bs=1024 count=1024
1024+0 records in
1024+0 records out
# mkswap /ek-takas 1024
Takas alanı sürüm 1, uzunluk = 1044480 bayt olarak ayarlanıyor
Bazı kaynaklarda, sahip olunan RAM miktarının iki kae kadar bir takas alanı ayırmanız
belir-lebilir. Bu tamamen geçersiz bir kuraldır. Bunun doğru bir şekilde nasıl yapılacağı aşağıda
listelenmiş-r.
1. Yaklaşık bellek ihtiyacınızı belirleyin. Bu genellikle bir seferde çalıştıracağınız
programların ihtiyaç duyacağı toplam RAM miktarıdır. Yani bir seferde en fazla ne
kadar belleğe ihtiyacınız olduğunu bulun. Bunu aynı anda çalıştırmak istediğiniz
programları çalıştırarak öğrenebilirsiniz.
Aklınızdan çıkarmayın ki; sistemde birden fazla kullanıcı aynı anda yer
alacaksa, hepsi ayrı ayrı bellek tüketeceklerdir. Bununla beraber, iki kişi aynı anda
aynı programı kullanıyorsa; aynı veri ve kütüphaneleri kullanıyor olacaklarından
bellek tüketimi iki kat olmayacaktır.
2. Bellek ihtiyaçlarını değerlendirmek için free ve ps komutları oldukça uygundur.
3. Birinci adımda anlatılan değerlendirmeler için bir parça yanılma payı ekleyin. Büyük
ihtimalle kullanmak istediğiniz bazı programları bu hesaplama sırasında
unutabilirsiniz, bazılarının gereksinimlerini yanlış hesaplayabilirsiniz veya ileride
daha fazla alan ihtiyacı duyabilirsiniz. Birkaç MB disk alanını fazladan ayırmak her
zaman iyi olur. Çok küçük bir takas alanı yapmaktansa, biraz büyük bir alan yaratmak
her zaman daha iyidir. Ama bunu da fazla abartıp bütün diski takas alanı olarak
ayırmayın. Unutmayın ki kullanılmayan alan boşa gitmiş sayılır. Daha sonradan da
takas alanına ekleme yapılabileceğini göz önünde bulundurun. Tam sayılarla uğraşmak
daha kolay olacağından ihtiyaç duyulan alan hesaplamasını yuvarlayabilir, bir MB
büyük alabilirsiniz.
4. Yukarıdaki karşılaştırmalar ve hesaplamalar sonucu şu an ne kadarlık bir belleğe
ihtiyaç duyabileceğinizi biliyor olmalısınız. Yerleştireceğiniz takas alanını hesaplamak
için, toplam ihtiyaç duyulan alandan fiziksel belleği çıkarın. Kalan sonuç takas
alanının boyutunu belirtir. Bazı Unix sürümlerinde bu alanı RAM'in bir yansıması gibi
yerleştirmeniz gerekeceğinden, ikinci basamakta hesaplanan alan sizin ihtiyacınızı
gösterecek ve çıkartma işlemine gerek kalmayacaktır.
5. ayet hesaplarınız sonucu ortaya çıkan takas alanı, fiziksel belleğinizin bir kaç
katıysa, yeni bir RAM eklemenin zamanı gelmiş demektir. Aksi taktirde performansta
çok büyük bir düşüş yaşayabilirsiniz.
Hiç ih-yacınız olmasa bile bir parça takas alanına sahip olmak iyi olur. Linux, takas alanını oldukça
tasarruflu bir biçimde kullanır ve bu size mümkün mertebe boş bir fiziksel bellek sağlar. Takas ih-yacı
olmasa bile, Linux kullanılmayan bellek sayfalarını takas alanına gönderir. Bu sayede, disk pasif halde
iken takas yapılarak takasa ih-yaç duyulduğu anlarda bekleme yapılması önlenir.
Windows Bellek Yöne-mi:
Windows geleneksel olarak aşağıda sıraladığım bellek yönetim methodlarını kullanmaktadır.
Hepsinin kullanım amaçlarına göre avantaj ve dezavantajları vardır. Bazısı büyük belleğe ihtiyaç
duyabilir, bazısının algoritmasının işletilmesi, program akışı sırasında yavaşlamalara ve hatalara
sebep olabilir. 

Bu geleneksel yaklaşımların yanı sıra; Windows Vista ile 2007’li yıllarda Readyboost denen
Linux’un swap alanına benzeyen bir yöntem denemiş bu alan için Flash Disk denen bellekleri
kullanarak bilgisayara ram takviyesi yapmaya yarayan yöntemleri de yeni İşletim sistemlerine entegre
etmiştir.
►Bölmeleme (Partitioning) : Boş bölmeye, boyu bölme boyundan küçük ya da
eşit prosesler yüklenebilir. Tüm bölmeler doluysa proseslerden biri bellekten atılır
– Sabit : her program ne kadar boyu küçük de olsa tam bir bölmeyi elinde tutar ⇒ iç
parçalanma (internal fragmentation), Maksimum aktif proses sayısı sınırlıdır, İşletim sistemi
tarafından gerçeklenmesi kolay
– Dinamik : Bölme sayısı ve bölme boyları sabit değil. Proseslere sadece gerektiği
kadar bellek atanır. Hangi boş bloğun hangi proses atanacağına işletim sistemi karar verir. En-
İyi-Sığan Algoritması (Best-Fit) – Boyu istenene en yakın olan boşluk seçilir. Olası en küçük
bölme bulunduğundan artan boş alan daha az kalır. Alternatif olarak İlk-Sığan Algoritması
(First-fit) işletim sistemi daha hızlı çalışacaktır.
►Basit sayfalama (Paging) : Belleği küçük, eşit boylu parçalara böl. Prosesleri de
aynı boyda parçalara ayır. .Eşit boylu proses parçaları: sayfa .Eşit boylu bellek parçaları:
çerçeve .İşletim sistemi her proses için sayfa tablosu tutar – prosesin her sayfasının hangi
çerçevede olduğu – bellek adresi = sayfa numarası ve sayfa içi ofset adresi .İşletim sistemi
hangi çerçevelerin boş olduğunu tutar
►Basit segmanlama (Segmentation): Program segmanlara ayrılır. Tüm
programların tüm segmanları aynı boyda olmak zorunda değil. Segman boyunun üst sınırı
var .Mantıksal adresler iki bölümden oluşur -segman numarası ve segman içi ofset – segman
tablosundan segmanın adresi ve boyu alınır .Segman boyları eşit olmadığından dinamik
bölmelemeye benzer .Bir program birden fazla segmandan oluşabilir
►Sayfalamalı görüntü bellek (Virtual Memory)
►Segmanlamalı görüntü bellek: Program segmanlara ayrılır. Tüm programların
tüm segmanları aynı boyda olmak zorunda değil. Segman boyunun üst sınırı var .Mantıksal
adresler iki bölümden oluşur , segman numarası ve segman içi ofset , segman tablosundan
segmanın adresi ve boyu alınır .Segman boyları eşit olmadığından dinamik bölmelemeye
benzer .Bir program birden fazla segmandan oluşabilir
Windows ve Linux İşle-m Sistemleri Bellek Yöne-mi Karşılaşerılması:
2. Soru
Ölümcül Kilitlenme, bekleme durumundaki görevlerin, hazır görev durumuna
geçebilmek için bir diğerinin sağlayacağı koşulu karşılıklı beklemelerine verilen addır.
Görevlerin her birinin bekler olması ve çalışabilmek için bir diğerinin işletilmesinin
gerekmesi durumu, görevlerin hiçbir zaman gerçekleşmeyecek bir koşulu beklemeleri
sonucunu doğurur. Birden fazla proses olması durumunda proseslerin bir kaynağı ellerinde
tutmaları ve bir başka kaynağı istemeleri durumunda ölümcül kilitlenme meydana gelir.
Algoritmalar:
1-) P n+1 prosesini ancak ve ancak aşağıdaki koşul gerçeklendiğinde başlat:
Tüm i’ler için ;
Optimal değil. Tüm proseslerin maksimum kaynak gereksinimlerini birden
isteyeceğini varsayar.
2-) Banker algoritması : Bu algoritmanın çözdüğü sorun, değişmez bir sermayeye
sahip olup bunu müşterileri arasında bölüştüren bir bankerin iflas etmeden
herkese para sağlaması olarak tanımlanır.
– Sistemde sabit sayıda proses ve kaynak vardır
– Sistemin durumu: Kaynakların proseslere o anki ataması ⇒ durum Kaynak ve Boş
vektörlerinden ve Atanmış ve İstek matrislerinden oluşur.
Windows NT ve türevleri, bellek yöne-mi için bir
dinamik olarak tahsis edilen disk belleği dosyası
kullanırlar. Ak-f olarak kullanılan nesnelere daha fazla
RAM bırakarak bir disk belleği dosyası, bellekte daha az
sıklıkla erişilen nesneler için, disk üzerinde tahsis edilir.
Bu düzen, disk parçalanması, nesnelere ih-yaç
duyulduğunda belleğe geri ge-rilebilir, sabit disk
depolama alanından ge-rilmesi nedeniyle yavaş işlemler
dezavantaj sebebidir.
Ayrı bir bölüm Windows disk belleği dosyası
yerleş-rmek için yapılandırılabilir; Bunu yaparken disk
parçalanması sorunlarını olumsuz etkiler. Ancak; iki
bölüm arasında ileri ve geri geçiş yer alan arama süresi
nedeniyle bir I / O yavaşlama oluşabilir. Ancak, bu
varsayılan yapmadı ana nedeni, disk belleği dosyası ayrı
bir bölüm ise, sonra Windows Dur Hatası ( Mavi ekran )
olay bir bellek dökümü oluşturamazsınız. Performans
açısından ideal bir çözüm, ayrı bir sabit disk birleş-rme
ve I / O sorunları ortadan kaldıran birincil, disk belleği
dosyası var.
Linux sabit disk kurulumları
sayfalama için ayrılan disk alanı,
genel veriler ayrı ve sayfalama
işlemleri için kesinlikle bir "takas
bölümü" kullanmaktadır. 

Bu, genel kullanım disk
parçalanması nedeniyle
yavaşlamayı azaler. 



Windows ile birlikte kullanımda
en iyi performans için, takas
bölümü ve birincil disk ayrı bir
sabit disk üzerine yerleş-rilmiş
olmalıdır.
– Emin durum: Ölümcül kilitlenmeye yol açmayacak en az bir atama sekansı olduğu
durum (yani tüm proseslerin sonlanabileceği durum)
– Bir proses bir grup kaynak için istekte bulunduğunda işle-m sistemi,
1. Kaynakların atandığını varsayarak sistem durumunu günceller.
2. Yeni durum emin bir durum mu diye kontrol eder.
3. Emin ise atamayı gerçekleş-rir. – Emin değilse atamayı yapmaz ve istekte bulunan
prosesi isteklerin karşılanması uygun olana kadar bloke eder.
3. Soru
#define _POSIX_SOURCE
#include <sys⁄times.h>
#include <time.h>
#include <sys⁄types.h>
#include <sys⁄wait.h>
#include <stdio.h>
#include <unistd.h>
main() {
int status;
long i, j;
struct tms t;
clock_t dub;
int tics_per_second;
tics_per_second = sysconf(_SC_CLK_TCK);
if (fork() == 0) {
for (i=0, j=0; i<1000000; i++)
j += i;
exit(0);
}
if (wait(&status) == -1)
perror("hata: wait()");
else if (!WIFEXITED(status))
puts("cocuk cikis hatasi");
else if ((dub = times(&t)) == -1)
perror("hata: times()");
else {
printf("process %f saniye once calistirildi.nn", ((double)
dub)⁄tics_per_second);
printf(" kullanici sistemn");
printf("anne: %f %fn", ((double)
t.tms_utime)⁄tics_per_second, ((double) t.tms_stime)⁄tics_per_second);
printf("cocuk: %f %fn", ((double)
t.tms_cutime)⁄tics_per_second, ((double) t.tms_cstime)⁄tics_per_second);
}
}
4. Soru
Tablolar Hakkinda
T: Sure, P: Proses’leri sembolize etmektedir.. Tablonun P satirinda o an isletilen prosesler
renklendirilmistir. Kuyruktaki isler ise dikey olarak renklendirilmistir. Alt alta 2 kirmizi ve 3 yesil
renk varsa bu kuyrukta isletilecek 2 birim islik P1 prosesi ve 3 birim işlik. P3 prosesi olduğunu
göstermektedir.. Kuyruktaki kalan isler de T surelerine denk gelen dikey dogrultudan
gorulebilir.
First In First Out : İlk Giren İlk Çıkar, önce gelen işler tamamlanıyor, yeni
gelen işler ise kuyruğa ekleniyor.


Ortalama bekleme suresi : (0 + 3 + 4 + 9 + 10) / 5 = 5,2

Proses Gelis Ani Hizmet Suresi Renk
P1 0 4
P2 2 3
P3 4 6
P4 5 3
P5 7 4
T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
P P1 P2 P3 P4 P5
Kuyruktaki Isler


Shortest Remaining Time First
Ortalama bekleme suresi : (0 + 3 + 11 + 3 + 4) / 5 = 4,2
T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
P P1 P2 P4 P5 P3
Kuyruktaki Isler
Round Robin:
Bir zamanlama (scheduling) algoritmasıdır. Özellikle işle-m sistemi tasarımında işlemcinin
(CPU) zamanlamasında kullanılan meşhur algoritmalardan birisidir. Bu algoritmaya göre sırası
gelen işlem, işlemcide işi bitmese bile belirli bir zaman biriminden sonra (-me quadrant)
işlemciyi terk etmek zorundadır.
Bu sayed işle-m sisteminde kıtlık (Starva-on) olma ih-mali kalmaz. Çünkü hiç bir zaman bir
işlemin CPU’yu alıp diğer işlemlere sıra gelmesini engellemesi mümkün olmaz.
Time Quantum : 2
Ortalama bekleme suresi : (9 + 10 + 11 + 9 + 8) / 5 = 9,4
T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
P P1
Kuyruktaki Isler
Multi Level
Bu ornek icin 3 kuyruklu bir sistem dusunulmustur. 1. ve 2. kuyruklar round robin
algoritmasiyla, son kuyruk FIFO algoritmasiyla calismaktadir. 1. kuyrugun zaman suresi
(Time Quantum) 2 olarak, 2. kuyrugunki ise 3 olarak belirlenmistir. Kuyruklarin oncelik sirasi
1 > 2 > 3’tur ve ust oncelikteki kuyruk bosalmadan bir alt kuyruktaki islere gecilmemektedir.
Asagidaki her tablo zamana gore proseslerin islenmesini ve kuyruktaki proseslerin durumunu
gostermektedir. Proseslerin yanindaki parantez icindeki sayilar kalan is sayisini
gostermektedir.
ZAMAN: 0
CPU
FIFO
Q=3
Q1 P1(4) ->
CPUQ2 ->
Q3 ->
Son Islenen Proses : Yok Sonraki Zamanda Islenecek Proses : P1
ZAMAN: 2
Q1 P2(3) ->
CPUQ2 P1(2) ->
Q3 ->
Son Islenen Proses : P1 Sonraki Zamanda Islenecek Proses : P2
ZAMAN: 4
Q1 P3(6) ->
CPUQ2 P2(1), P1(2) ->
Q3 ->
Son Islenen Proses : P2 Sonraki Zamanda Islenecek Proses : P3
ZAMAN: 5
Q1 P4(3), P3(5) ->
CPUQ2 P2(1), P1(2) ->
Q3 ->
Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : P3
ZAMAN: 6
Q1 P4(3) ->
CPUQ2 P3(4), P2(1), P1(2) ->
Q3 ->
Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : P4
ZAMAN: 7
Q1 P5(4), P4(2) ->
CPUQ2 P3(4), P2(1), P1(2) ->
Q3 ->
Son Islenen Proses : P4 Sonraki Zamanda Islenecek Proses : P4
ZAMAN: 8
Q1 P5(4) ->
CPUQ2 P4(1), P3(4), P2(1), P1(2) ->
Q3 ->
Son Islenen Proses : P4 Sonraki Zamanda Islenecek Proses : P5
ZAMAN: 10
Q1 ->
CPUQ2 P5(2), P4(1), P3(4), P2(1), P1(2) ->
Q3 ->
Son Islenen Proses : P5 Sonraki Zamanda Islenecek Proses : P1
ZAMAN: 12
Q1 ->
CPUQ2 P5(2), P4(1), P3(4), P2(1) ->
Q3 ->
Son Islenen Proses : P1 Sonraki Zamanda Islenecek Proses : P2
ZAMAN: 13
Q1 ->
CPUQ2 P5(2), P4(1), P3(4) ->
Q3 ->
Son Islenen Proses : P2 Sonraki Zamanda Islenecek Proses : P3
Ortalama bekleme suresi : (8 + 8 + 8 + 4 + 8) / 5 = 7,2
ZAMAN: 16
Q1 ->
CPUQ2 P5(2), P4(1) ->
Q3 P3(1) ->
Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : P4
ZAMAN: 17
Q1 ->
CPUQ2 P5(2) ->
Q3 P3(1) ->
Son Islenen Proses : P4 Sonraki Zamanda Islenecek Proses : P5
ZAMAN: 19
Q1 ->
CPUQ2 ->
Q3 P3(1) ->
Son Islenen Proses : P5 Sonraki Zamanda Islenecek Proses : P3
ZAMAN: 20
Q1 ->
CPUQ2 ->
Q3 ->
Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : Yok

More Related Content

İşletim Sistemi Bellek Yönetimi

  • 1. ÖZET Bellek Yöne-mi, Proses-Thread, Fifo, Round- Robin, ahabe?n Akca - 132132178 Ahmet Yesevi Üniversitesi – Bilg. Müh. Lisans ÖDEV İşle-m Sistemleri
  • 2. CEVAPLAR 1. Soru Linux Bellek Yöne-mi: ❖ Sayfa (page) adı verilen, mimari ve bellek boyuna göre 4-64 KB boyunda birimler bazında kullanılır . ❖ MMU (memory management unit) adlı işlemci birimi yardımıyla oluşturulan sanal adresleme ile: ▪ Varolandan daha büyük bir bellek alanı kullanılabilir. ▪ Belleğe sığandan daha fazla uygulama çalışerılabilir. ▪ Her uygulamanın kendine ait bir sanal adres alanı olur ❖ Uygulamanın erişmek istediği sanal adres gerçek bellekte yoksa : ▪ İşlemci bir sayfa hatası (page fault) verir. ▪ İşle-m sistemi kontrolü alır, gerekirse bellekte boş yer açıp, istenen sayfayı takas alanında n yükler. ▪ Uygulama kaldığı yerden devam eder ❖ Gerçek bellek dolmaya başladığında işle-m sistemi az erişilen sayfaları takas alanına taşır. ❖ Sayfa hataları büyük yavaşlamaya neden olduğundan, en aza indirgenmeye çalışılır. Linux, disk yüzeyini RAM belleğin bir uzanesıymış gibi kullanan ve böylelikle fiziksel belleğin görünürdeki miktarını ariran sanal bellek desteğine sahip-r. Çekirdek bellekteki kullanılmayan bloklarda bulunan bilgileri, disk yüzeyine yazar ve bellek başka işler için serbest kalmış olur. Bu bölümler gerek-ği zaman bunlar belleğe tekrar alınırlar. Bu olaylar kullanıcıdan bağımsız bir şekilde gerçekleşir. Linux alenda çalışan programlar geniş bir bellek alanı görürken, aslında bazı bilgilerin hemen yanı başlarında olduğundan habersizlerdir. Elbeke ki sanal bellek kullanımı RAM kullanımı kadar hızlı değildir, bu nedenle program hızlarında düşüş yaşanır. Sabit disk üzerinde sanal bellek için kullanılan bölüme takas alanı denir. Aşağıdaki komutla içinde oyuklar olmayan bir takas dosyası oluşturabilirsiniz: # dd if=/dev/zero of=/ek-takas bs=1024 count=1024 1024+0 records in 1024+0 records out # mkswap /ek-takas 1024 Takas alanı sürüm 1, uzunluk = 1044480 bayt olarak ayarlanıyor Bazı kaynaklarda, sahip olunan RAM miktarının iki kae kadar bir takas alanı ayırmanız belir-lebilir. Bu tamamen geçersiz bir kuraldır. Bunun doğru bir şekilde nasıl yapılacağı aşağıda listelenmiş-r. 1. Yaklaşık bellek ihtiyacınızı belirleyin. Bu genellikle bir seferde çalıştıracağınız programların ihtiyaç duyacağı toplam RAM miktarıdır. Yani bir seferde en fazla ne kadar belleğe ihtiyacınız olduğunu bulun. Bunu aynı anda çalıştırmak istediğiniz programları çalıştırarak öğrenebilirsiniz.
  • 3. Aklınızdan çıkarmayın ki; sistemde birden fazla kullanıcı aynı anda yer alacaksa, hepsi ayrı ayrı bellek tüketeceklerdir. Bununla beraber, iki kişi aynı anda aynı programı kullanıyorsa; aynı veri ve kütüphaneleri kullanıyor olacaklarından bellek tüketimi iki kat olmayacaktır. 2. Bellek ihtiyaçlarını değerlendirmek için free ve ps komutları oldukça uygundur. 3. Birinci adımda anlatılan değerlendirmeler için bir parça yanılma payı ekleyin. Büyük ihtimalle kullanmak istediğiniz bazı programları bu hesaplama sırasında unutabilirsiniz, bazılarının gereksinimlerini yanlış hesaplayabilirsiniz veya ileride daha fazla alan ihtiyacı duyabilirsiniz. Birkaç MB disk alanını fazladan ayırmak her zaman iyi olur. Çok küçük bir takas alanı yapmaktansa, biraz büyük bir alan yaratmak her zaman daha iyidir. Ama bunu da fazla abartıp bütün diski takas alanı olarak ayırmayın. Unutmayın ki kullanılmayan alan boşa gitmiş sayılır. Daha sonradan da takas alanına ekleme yapılabileceğini göz önünde bulundurun. Tam sayılarla uğraşmak daha kolay olacağından ihtiyaç duyulan alan hesaplamasını yuvarlayabilir, bir MB büyük alabilirsiniz. 4. Yukarıdaki karşılaştırmalar ve hesaplamalar sonucu şu an ne kadarlık bir belleğe ihtiyaç duyabileceğinizi biliyor olmalısınız. Yerleştireceğiniz takas alanını hesaplamak için, toplam ihtiyaç duyulan alandan fiziksel belleği çıkarın. Kalan sonuç takas alanının boyutunu belirtir. Bazı Unix sürümlerinde bu alanı RAM'in bir yansıması gibi yerleştirmeniz gerekeceğinden, ikinci basamakta hesaplanan alan sizin ihtiyacınızı gösterecek ve çıkartma işlemine gerek kalmayacaktır. 5. ayet hesaplarınız sonucu ortaya çıkan takas alanı, fiziksel belleğinizin bir kaç katıysa, yeni bir RAM eklemenin zamanı gelmiş demektir. Aksi taktirde performansta çok büyük bir düşüş yaşayabilirsiniz. Hiç ih-yacınız olmasa bile bir parça takas alanına sahip olmak iyi olur. Linux, takas alanını oldukça tasarruflu bir biçimde kullanır ve bu size mümkün mertebe boş bir fiziksel bellek sağlar. Takas ih-yacı olmasa bile, Linux kullanılmayan bellek sayfalarını takas alanına gönderir. Bu sayede, disk pasif halde iken takas yapılarak takasa ih-yaç duyulduğu anlarda bekleme yapılması önlenir. Windows Bellek Yöne-mi: Windows geleneksel olarak aşağıda sıraladığım bellek yönetim methodlarını kullanmaktadır. Hepsinin kullanım amaçlarına göre avantaj ve dezavantajları vardır. Bazısı büyük belleğe ihtiyaç duyabilir, bazısının algoritmasının işletilmesi, program akışı sırasında yavaşlamalara ve hatalara sebep olabilir. 
 Bu geleneksel yaklaşımların yanı sıra; Windows Vista ile 2007’li yıllarda Readyboost denen Linux’un swap alanına benzeyen bir yöntem denemiş bu alan için Flash Disk denen bellekleri kullanarak bilgisayara ram takviyesi yapmaya yarayan yöntemleri de yeni İşletim sistemlerine entegre etmiştir. ►Bölmeleme (Partitioning) : Boş bölmeye, boyu bölme boyundan küçük ya da eşit prosesler yüklenebilir. Tüm bölmeler doluysa proseslerden biri bellekten atılır – Sabit : her program ne kadar boyu küçük de olsa tam bir bölmeyi elinde tutar ⇒ iç parçalanma (internal fragmentation), Maksimum aktif proses sayısı sınırlıdır, İşletim sistemi tarafından gerçeklenmesi kolay
  • 4. – Dinamik : Bölme sayısı ve bölme boyları sabit değil. Proseslere sadece gerektiği kadar bellek atanır. Hangi boş bloğun hangi proses atanacağına işletim sistemi karar verir. En- İyi-Sığan Algoritması (Best-Fit) – Boyu istenene en yakın olan boşluk seçilir. Olası en küçük bölme bulunduğundan artan boş alan daha az kalır. Alternatif olarak İlk-Sığan Algoritması (First-fit) işletim sistemi daha hızlı çalışacaktır. ►Basit sayfalama (Paging) : Belleği küçük, eşit boylu parçalara böl. Prosesleri de aynı boyda parçalara ayır. .Eşit boylu proses parçaları: sayfa .Eşit boylu bellek parçaları: çerçeve .İşletim sistemi her proses için sayfa tablosu tutar – prosesin her sayfasının hangi çerçevede olduğu – bellek adresi = sayfa numarası ve sayfa içi ofset adresi .İşletim sistemi hangi çerçevelerin boş olduğunu tutar ►Basit segmanlama (Segmentation): Program segmanlara ayrılır. Tüm programların tüm segmanları aynı boyda olmak zorunda değil. Segman boyunun üst sınırı var .Mantıksal adresler iki bölümden oluşur -segman numarası ve segman içi ofset – segman tablosundan segmanın adresi ve boyu alınır .Segman boyları eşit olmadığından dinamik bölmelemeye benzer .Bir program birden fazla segmandan oluşabilir ►Sayfalamalı görüntü bellek (Virtual Memory) ►Segmanlamalı görüntü bellek: Program segmanlara ayrılır. Tüm programların tüm segmanları aynı boyda olmak zorunda değil. Segman boyunun üst sınırı var .Mantıksal adresler iki bölümden oluşur , segman numarası ve segman içi ofset , segman tablosundan segmanın adresi ve boyu alınır .Segman boyları eşit olmadığından dinamik bölmelemeye benzer .Bir program birden fazla segmandan oluşabilir Windows ve Linux İşle-m Sistemleri Bellek Yöne-mi Karşılaşerılması:
  • 5. 2. Soru Ölümcül Kilitlenme, bekleme durumundaki görevlerin, hazır görev durumuna geçebilmek için bir diğerinin sağlayacağı koşulu karşılıklı beklemelerine verilen addır. Görevlerin her birinin bekler olması ve çalışabilmek için bir diğerinin işletilmesinin gerekmesi durumu, görevlerin hiçbir zaman gerçekleşmeyecek bir koşulu beklemeleri sonucunu doğurur. Birden fazla proses olması durumunda proseslerin bir kaynağı ellerinde tutmaları ve bir başka kaynağı istemeleri durumunda ölümcül kilitlenme meydana gelir. Algoritmalar: 1-) P n+1 prosesini ancak ve ancak aşağıdaki koşul gerçeklendiğinde başlat: Tüm i’ler için ; Optimal değil. Tüm proseslerin maksimum kaynak gereksinimlerini birden isteyeceğini varsayar. 2-) Banker algoritması : Bu algoritmanın çözdüğü sorun, değişmez bir sermayeye sahip olup bunu müşterileri arasında bölüştüren bir bankerin iflas etmeden herkese para sağlaması olarak tanımlanır. – Sistemde sabit sayıda proses ve kaynak vardır – Sistemin durumu: Kaynakların proseslere o anki ataması ⇒ durum Kaynak ve Boş vektörlerinden ve Atanmış ve İstek matrislerinden oluşur. Windows NT ve türevleri, bellek yöne-mi için bir dinamik olarak tahsis edilen disk belleği dosyası kullanırlar. Ak-f olarak kullanılan nesnelere daha fazla RAM bırakarak bir disk belleği dosyası, bellekte daha az sıklıkla erişilen nesneler için, disk üzerinde tahsis edilir. Bu düzen, disk parçalanması, nesnelere ih-yaç duyulduğunda belleğe geri ge-rilebilir, sabit disk depolama alanından ge-rilmesi nedeniyle yavaş işlemler dezavantaj sebebidir. Ayrı bir bölüm Windows disk belleği dosyası yerleş-rmek için yapılandırılabilir; Bunu yaparken disk parçalanması sorunlarını olumsuz etkiler. Ancak; iki bölüm arasında ileri ve geri geçiş yer alan arama süresi nedeniyle bir I / O yavaşlama oluşabilir. Ancak, bu varsayılan yapmadı ana nedeni, disk belleği dosyası ayrı bir bölüm ise, sonra Windows Dur Hatası ( Mavi ekran ) olay bir bellek dökümü oluşturamazsınız. Performans açısından ideal bir çözüm, ayrı bir sabit disk birleş-rme ve I / O sorunları ortadan kaldıran birincil, disk belleği dosyası var. Linux sabit disk kurulumları sayfalama için ayrılan disk alanı, genel veriler ayrı ve sayfalama işlemleri için kesinlikle bir "takas bölümü" kullanmaktadır. 
 Bu, genel kullanım disk parçalanması nedeniyle yavaşlamayı azaler. 
 
 Windows ile birlikte kullanımda en iyi performans için, takas bölümü ve birincil disk ayrı bir sabit disk üzerine yerleş-rilmiş olmalıdır.
  • 6. – Emin durum: Ölümcül kilitlenmeye yol açmayacak en az bir atama sekansı olduğu durum (yani tüm proseslerin sonlanabileceği durum) – Bir proses bir grup kaynak için istekte bulunduğunda işle-m sistemi, 1. Kaynakların atandığını varsayarak sistem durumunu günceller. 2. Yeni durum emin bir durum mu diye kontrol eder. 3. Emin ise atamayı gerçekleş-rir. – Emin değilse atamayı yapmaz ve istekte bulunan prosesi isteklerin karşılanması uygun olana kadar bloke eder.
  • 7. 3. Soru #define _POSIX_SOURCE #include <sys⁄times.h> #include <time.h> #include <sys⁄types.h> #include <sys⁄wait.h> #include <stdio.h> #include <unistd.h> main() { int status; long i, j; struct tms t; clock_t dub; int tics_per_second; tics_per_second = sysconf(_SC_CLK_TCK); if (fork() == 0) { for (i=0, j=0; i<1000000; i++) j += i; exit(0); } if (wait(&status) == -1) perror("hata: wait()"); else if (!WIFEXITED(status)) puts("cocuk cikis hatasi"); else if ((dub = times(&t)) == -1) perror("hata: times()"); else { printf("process %f saniye once calistirildi.nn", ((double) dub)⁄tics_per_second); printf(" kullanici sistemn"); printf("anne: %f %fn", ((double) t.tms_utime)⁄tics_per_second, ((double) t.tms_stime)⁄tics_per_second); printf("cocuk: %f %fn", ((double) t.tms_cutime)⁄tics_per_second, ((double) t.tms_cstime)⁄tics_per_second); } }
  • 8. 4. Soru Tablolar Hakkinda T: Sure, P: Proses’leri sembolize etmektedir.. Tablonun P satirinda o an isletilen prosesler renklendirilmistir. Kuyruktaki isler ise dikey olarak renklendirilmistir. Alt alta 2 kirmizi ve 3 yesil renk varsa bu kuyrukta isletilecek 2 birim islik P1 prosesi ve 3 birim işlik. P3 prosesi olduğunu göstermektedir.. Kuyruktaki kalan isler de T surelerine denk gelen dikey dogrultudan gorulebilir. First In First Out : İlk Giren İlk Çıkar, önce gelen işler tamamlanıyor, yeni gelen işler ise kuyruğa ekleniyor. 
 Ortalama bekleme suresi : (0 + 3 + 4 + 9 + 10) / 5 = 5,2
 Proses Gelis Ani Hizmet Suresi Renk P1 0 4 P2 2 3 P3 4 6 P4 5 3 P5 7 4 T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P P1 P2 P3 P4 P5 Kuyruktaki Isler
  • 9. 
 Shortest Remaining Time First Ortalama bekleme suresi : (0 + 3 + 11 + 3 + 4) / 5 = 4,2 T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P P1 P2 P4 P5 P3 Kuyruktaki Isler
  • 10. Round Robin: Bir zamanlama (scheduling) algoritmasıdır. Özellikle işle-m sistemi tasarımında işlemcinin (CPU) zamanlamasında kullanılan meşhur algoritmalardan birisidir. Bu algoritmaya göre sırası gelen işlem, işlemcide işi bitmese bile belirli bir zaman biriminden sonra (-me quadrant) işlemciyi terk etmek zorundadır. Bu sayed işle-m sisteminde kıtlık (Starva-on) olma ih-mali kalmaz. Çünkü hiç bir zaman bir işlemin CPU’yu alıp diğer işlemlere sıra gelmesini engellemesi mümkün olmaz. Time Quantum : 2 Ortalama bekleme suresi : (9 + 10 + 11 + 9 + 8) / 5 = 9,4 T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P P1 Kuyruktaki Isler
  • 11. Multi Level Bu ornek icin 3 kuyruklu bir sistem dusunulmustur. 1. ve 2. kuyruklar round robin algoritmasiyla, son kuyruk FIFO algoritmasiyla calismaktadir. 1. kuyrugun zaman suresi (Time Quantum) 2 olarak, 2. kuyrugunki ise 3 olarak belirlenmistir. Kuyruklarin oncelik sirasi 1 > 2 > 3’tur ve ust oncelikteki kuyruk bosalmadan bir alt kuyruktaki islere gecilmemektedir. Asagidaki her tablo zamana gore proseslerin islenmesini ve kuyruktaki proseslerin durumunu gostermektedir. Proseslerin yanindaki parantez icindeki sayilar kalan is sayisini gostermektedir. ZAMAN: 0 CPU FIFO Q=3
  • 12. Q1 P1(4) -> CPUQ2 -> Q3 -> Son Islenen Proses : Yok Sonraki Zamanda Islenecek Proses : P1 ZAMAN: 2 Q1 P2(3) -> CPUQ2 P1(2) -> Q3 -> Son Islenen Proses : P1 Sonraki Zamanda Islenecek Proses : P2 ZAMAN: 4 Q1 P3(6) -> CPUQ2 P2(1), P1(2) -> Q3 -> Son Islenen Proses : P2 Sonraki Zamanda Islenecek Proses : P3 ZAMAN: 5 Q1 P4(3), P3(5) -> CPUQ2 P2(1), P1(2) -> Q3 -> Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : P3 ZAMAN: 6 Q1 P4(3) -> CPUQ2 P3(4), P2(1), P1(2) -> Q3 -> Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : P4
  • 13. ZAMAN: 7 Q1 P5(4), P4(2) -> CPUQ2 P3(4), P2(1), P1(2) -> Q3 -> Son Islenen Proses : P4 Sonraki Zamanda Islenecek Proses : P4 ZAMAN: 8 Q1 P5(4) -> CPUQ2 P4(1), P3(4), P2(1), P1(2) -> Q3 -> Son Islenen Proses : P4 Sonraki Zamanda Islenecek Proses : P5 ZAMAN: 10 Q1 -> CPUQ2 P5(2), P4(1), P3(4), P2(1), P1(2) -> Q3 -> Son Islenen Proses : P5 Sonraki Zamanda Islenecek Proses : P1 ZAMAN: 12 Q1 -> CPUQ2 P5(2), P4(1), P3(4), P2(1) -> Q3 -> Son Islenen Proses : P1 Sonraki Zamanda Islenecek Proses : P2 ZAMAN: 13 Q1 -> CPUQ2 P5(2), P4(1), P3(4) -> Q3 -> Son Islenen Proses : P2 Sonraki Zamanda Islenecek Proses : P3
  • 14. Ortalama bekleme suresi : (8 + 8 + 8 + 4 + 8) / 5 = 7,2 ZAMAN: 16 Q1 -> CPUQ2 P5(2), P4(1) -> Q3 P3(1) -> Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : P4 ZAMAN: 17 Q1 -> CPUQ2 P5(2) -> Q3 P3(1) -> Son Islenen Proses : P4 Sonraki Zamanda Islenecek Proses : P5 ZAMAN: 19 Q1 -> CPUQ2 -> Q3 P3(1) -> Son Islenen Proses : P5 Sonraki Zamanda Islenecek Proses : P3 ZAMAN: 20 Q1 -> CPUQ2 -> Q3 -> Son Islenen Proses : P3 Sonraki Zamanda Islenecek Proses : Yok