<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yıldırım -- İşadamı &#187; gezegen_arch</title>
	<atom:link href="http://yildirim.isadamlari.org/tag/gezegen_arch/feed" rel="self" type="application/rss+xml" />
	<link>http://yildirim.isadamlari.org</link>
	<description>M. Salih YILDIRIM'ın Kişisel Karalamacı</description>
	<lastBuildDate>Sun, 21 Feb 2010 15:12:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pic18F serisi, ks0108 glcd ve analog touch panel ile basit çizim uygulamam</title>
		<link>http://yildirim.isadamlari.org/2009/pic18f-serisi-ks0108-glcd-ve-analog-touch-panel-ile-basit-cizim-uygulamam.html</link>
		<comments>http://yildirim.isadamlari.org/2009/pic18f-serisi-ks0108-glcd-ve-analog-touch-panel-ile-basit-cizim-uygulamam.html#comments</comments>
		<pubDate>Thu, 17 Sep 2009 00:24:13 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[Pic]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[çizim uygulaması]]></category>
		<category><![CDATA[drawing application]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[pic18f]]></category>
		<category><![CDATA[touch panel]]></category>
		<category><![CDATA[touch screen]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=386</guid>
		<description><![CDATA[
Pic18F serisi, ks0108 glcd ve analog touch panel ile basit çizim programı from Mehmet Salih Yildirim on Vimeo.
]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6608867&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=6608867&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/6608867">Pic18F serisi, ks0108 glcd ve analog touch panel ile basit çizim programı</a> from <a href="http://vimeo.com/user2308695">Mehmet Salih Yildirim</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/pic18f-serisi-ks0108-glcd-ve-analog-touch-panel-ile-basit-cizim-uygulamam.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Qmail&#8217;i, smtp 587. porttan çalışacak şekilde ayarlamak</title>
		<link>http://yildirim.isadamlari.org/2009/qmaili-smtp-587-porttan-calisacak-sekilde-ayarlamak.html</link>
		<comments>http://yildirim.isadamlari.org/2009/qmaili-smtp-587-porttan-calisacak-sekilde-ayarlamak.html#comments</comments>
		<pubDate>Sun, 02 Aug 2009 23:07:44 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[tweet]]></category>
		<category><![CDATA[587. port]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[ISP]]></category>
		<category><![CDATA[qmail]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[stream         protocol]]></category>
		<category><![CDATA[submission]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=377</guid>
		<description><![CDATA[Ttnet&#8217;in spam sayısını düşürmek için yaptığı bir uygulama olan 25. porttan smtp mail göndermeyi engellemek aslında son yıllarda bir çok isp nin başvurduğu bir yöntem olmakla beraber sunucu tarafında bazı ayarlamalar gerektirmekte. Ben de kendi sunucumda mail gönderme sorunu yaşayınca yaptığım araştırmalar sonucu bulduğum en kolay çözümü paylaşmak istedim.
1. Yeni bir dosya oluşturup içeriğini düzenleyelim.

vim [...]]]></description>
			<content:encoded><![CDATA[<p>Ttnet&#8217;in spam sayısını düşürmek için yaptığı bir uygulama olan 25. porttan smtp mail göndermeyi engellemek aslında son yıllarda bir çok isp nin başvurduğu bir yöntem olmakla beraber sunucu tarafında bazı ayarlamalar gerektirmekte. Ben de kendi sunucumda mail gönderme sorunu yaşayınca yaptığım araştırmalar sonucu bulduğum en kolay çözümü paylaşmak istedim.</p>
<p>1. Yeni bir dosya oluşturup içeriğini düzenleyelim.</p>
<pre lang="bash">
vim /etc/xinetd.d/smtp_additional
</pre>
<p>Daha sonra içeriğini aşağıdaki gibi dolduralım.</p>
<pre lang="bash">
service smtp submission
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        disable         = no
        user            = root
        instances       = UNLIMITED
        env             = SMTPAUTH=1
        server          = /var/qmail/bin/tcp-env
        server_args     = -Rt0  /var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}
</pre>
<p>Bundan sonra xinetd&#8217;yi yeniden başlatmak kalıyor.</p>
<pre lang="bash">
killall -HUP xinetd
</pre>
<p>Not: Client tarafında smtp portunu 587 olarak değiştirmeyi unutmayın.</p>
<p>Kolay Gelsin.</p>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/qmaili-smtp-587-porttan-calisacak-sekilde-ayarlamak.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>İşletim Sistemleri Ek.1 &#8211; İşlem Senkronizasyonu</title>
		<link>http://yildirim.isadamlari.org/2009/isletim-sistemleri-ek-1-islem-senkronizasyonu.html</link>
		<comments>http://yildirim.isadamlari.org/2009/isletim-sistemleri-ek-1-islem-senkronizasyonu.html#comments</comments>
		<pubDate>Thu, 09 Jul 2009 14:34:18 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[gezegen]]></category>
		<category><![CDATA[İşletim Sistemleri]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[critical section]]></category>
		<category><![CDATA[deadlock]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mutex]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[semafor]]></category>
		<category><![CDATA[semaphore]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=346</guid>
		<description><![CDATA[Process Management (işlem yönetimi) kısmını anlatmayı bitirdikten sonra biraz daha detaylı bilgi vermek istedim. Buraya kadar anlattıklarım genel bilgilerdi, fakat bu yazı biraz daha derin bilgiler içermektedir. Meraklı olanlar veya işlemlerin nasıl çalıştırıldığı hakkında detaylı bilgi almak isteyenler bu yazıyı okuyabilirler.
Bu yazıdan sonra terimleri Türkçeleştirmemeye karar verdiğimi de belirtmek isterim. Bu yüzden her ingilizce terimi [...]]]></description>
			<content:encoded><![CDATA[<p>Process Management (işlem yönetimi) kısmını anlatmayı bitirdikten sonra biraz daha detaylı bilgi vermek istedim. Buraya kadar anlattıklarım genel bilgilerdi, fakat bu yazı biraz daha derin bilgiler içermektedir. Meraklı olanlar veya işlemlerin nasıl çalıştırıldığı hakkında detaylı bilgi almak isteyenler bu yazıyı okuyabilirler.</p>
<p>Bu yazıdan sonra terimleri Türkçeleştirmemeye karar verdiğimi de belirtmek isterim. Bu yüzden her ingilizce terimi içeren bir sözlük yazıya dahil edilecektir.</p>
<p><span style="font-weight: bold;">Sözlük:</span></p>
<ul>
<li><span style="font-weight: bold;">Utilization:</span> İşlemcinin, işlem yaptığı süre, bu sürenin yüksek olması, donanımdan maksimum verim alındığını gösterir.</li>
<li><span style="font-weight: bold;">Throughput:</span> Birim zamanda bitirilen işlem sayısıdır. Örnek: iş/saniye</li>
<li><span style="font-weight: bold;">Service Time:</span> Servis süresi, bir cihazın, gelen isteği çözümlemesi için geçen süre.</li>
<li><span style="font-weight: bold;">Queueing Time:</span> Kuyruk süresi, alınacak hizmet için kuyrukta beklenen süre.</li>
<li><span style="font-weight: bold;">Response Time:</span> Yanıt süresi, kullanıcı işlemine sistemin verdiği tepki süresidir.</li>
</ul>
<p><span style="font-weight: bold;">Üretici ve Tüketici Problemine Derinlemesine Bakış:</span></p>
<p>Daha önce üretici ve tüketici probleminden (producer and consumer problem) bahsetmiştim. Bu bölümde daha detaylı kodlar vererek derinlemesine inceleyip, işlemler arası senkronizasyonu anlamaya çalışacağız.</p>
<p>Üretici, veri üreten uygulamaya verilen isimdir. Bu uygulamanın görevi belli veri türünde veri üretmektir. Kullanılan veri yapılarını tanımlayalım.</p>
<pre lang="c">#define BUFFER_SIZE 10

typedef struct {
	DATA 	data;
} item;

item	buffer[BUFFER_SIZE];
int	in=0;		//Yeni girdinin buffer'daki lokasyonu
int	out=0;		//Tüketilecek verinin buffer'daki lokasyonu
int	counter=0;	//Buffer'da kaç odanın kulllanıldığı</pre>
<p><strong>Üretici:</strong><br />
Üretici işlem, tüketici işlemin tüketmesi için işlem üretir. Ancak burada önemli olan bounded (sınırlı) buffer&#8217;ı aşmayacak kadar veri üretmektir. Kodunu inceleyelim.</p>
<pre lang="c">item    NextProduced;

while (TRUE)
{
    while (counter == BUFFER_SIZE);
    buffer[in] = Nextproduced;
    in = (in+1) % BUFFER_SIZE;
    counter++;    //Bu kısma birazdan değineceğiz, bu satır çok önemli...
}</pre>
<p><strong>Tüketici:</strong></p>
<pre lang="c">item    NextConsumed;

while (TRUE)
{
    while (counter == 0);
    NextConsumed = buffer[out];
    out = (out + 1) % BUFFER_SIZE;
    counter--;
}</pre>
<p><img class="alignnone size-full wp-image-363" title="buffer" src="http://yildirim.isadamlari.org/wp-content/uploads//2009/07/buffer.png" alt="buffer" width="537" height="204" /></p>
<p>Burada producer kodundaki &#8216;counter++;&#8217; kodu çok önemli. Bu kodun assembly karşılığını yazacak olursak:</p>
<pre lang="asm">MOV AX, Counter
INC AX
MOV Counter, AX</pre>
<p>şeklinde olacaktır. Bu durumda eğer üretici işlemi çalışırken, preemption mekanizması devreye girerse ve &#8220;MOV Counter, AX&#8221; işlemi çalışmadan Context switching gerçekleşirse, ve context switch olduktan sonra producer işlemi çalışırsa, bu durumda counter değeri bir eksik olarak hesaplanacaktır.  Bu da buffer overflow&#8217;a (buffer taşması) neden olabilir. Tehlikeli bir durumdur.</p>
<p>Bu durumda critical section&#8217;dan (kritik bölge) bahsedebiliriz.</p>
<p><strong>Critical Section:</strong> Kodun herhangi bir yerinde context switching olup olmamasına göre işlemin sonucu değişebiliyorsa, ve bu işlemin sonucu önemliyse, bu bölgede context switching olmaması istenir. Bu bölgeye <strong>critical section</strong> denir. Bu bölgede aynı anda bir kod parçası çalışabilir. Başka bir kod parçası çalışamaz.</p>
<p>Bir critical section aşağıdaki bölgelerden oluşur.</p>
<ul>
<li><strong>Entry Section:</strong> Kodun critical section&#8217;a girmek için istekte bulunduğu bölümdür.</li>
<li><strong>Critical Section:</strong> Aynı anda yalnızca bir kod parçasının çalıştığı bölgedir.</li>
<li><strong>Exit Section:</strong> Critical Section&#8217;dan çıkış yapılan bölümdür. Buradan sonra ayrılmış alanları diğer işlemler kullanabilir.</li>
<li><strong>Remainder Section: </strong> Critical Section&#8217;dan sonraki kod parçalarıdır.</li>
<p><strong>Critical Section Şu Üç Özelliği Sağlamalıdır:</strong></p>
<li><strong>Mutual Exclusion (MUTEX):</strong> Birden fazla işlen critical section&#8217;da aynı anda çalıştırılmamalıdır.</li>
<li><strong>Progress:</strong> Eğer critical section&#8217;da hiç bir işlem yoksa ve bunların hiç birisi remainder section da değilse, hangi işlemin critical section&#8217;a gireceğine sınırlı sürede karar verilmelidir.</li>
<li><strong>Bounded Wait:</strong> Critical Section&#8217;a girmek isteyen bütün işlemler eninde sonunda critical section&#8217;a girmelidir.</li>
</ul>
<p><strong>Critical Section Kod Örneği:</strong></p>
<pre lang="c">do
{
	while (turn !=i );
	/*CRITICAL SECTION*/
	turn = j;
	/* REMAINDER SECTION */
} while (TRUE);</pre>
<p>NOT: Buradaki kod parçalarıda &#8220;i&#8221; çalışmakta olan process&#8217;i, &#8220;j&#8221; ise sırada bekleyen process&#8217;i ifade eder.</p>
<ul>
<li> <strong>ALGORITMA 1:</strong></li>
</ul>
<pre lang="c">do
{
	while (turn !=i );
	/*CRITICAL SECTION*/
	turn = j;
	/* REMAINDER SECTION */
} while (TRUE);</pre>
<p>Bu kod parçasında çalışan process, çalışmasını bitirdikten sonra diğer process&#8217;in critical section a girebilmesi için turn değişkenine, diğer process&#8217;in id&#8217;sini atar. Bu durumda 2 den fazla process&#8217;in aynı critical section&#8217;a giremeyecek olması bir yana, diğer taraftan &#8220;progress ve bounded wait&#8221; özellikleri sağlanmaz. Çünkü 1. process, sırayı 2. process&#8217;e devreder ama sıra 2. process&#8217;dan önce tekrar 1. process&#8217;e gelebilir.</p>
<ul>
<li> <strong>ALGORITMA 2:</strong>Bu algoritmada her process&#8217;e ait birer bayrak (flag) vardır. Bu flag critical section&#8217;da olup olmadığını gösterir. Critical Section&#8217;a girmek için diğer process&#8217;lerin flag leri kontrol edilmelidir.</li>
</ul>
<p><strong>Paylaşılan Değişkenler:</strong></p>
<pre lang="c">boolean flag[2]=false;</pre>
<p>Şimdi algoritmaya bakalım.</p>
<pre lang="c">do
{
        flag[i] = TRUE;
        while (flag[j]);
        /* CRITICAL SECTION */
        flag[i] = FALSE;
        /* REMAINDER SECTION */
} while (TRUE);</pre>
<p>Bu algoriyı inceleyecek olursak, iki process &#8216;de critical section da değilken, process lerden bir tanesi critical section&#8217;a girmek isterse ilk önce flag değişkeni TRUE olacaktır. Tam bu sırada context switching gerçekleşir ve 2. process de critical section&#8217;a girmek üzere flag değişkenini TRUE yaparsa, bu durumda 1. koşul sağlanmaz ve DEADLOCK oluşur. DEADLOCK kavramını bu yazının ilerleyen bölümlerinde açıklayacağız ama kısaca bahsetmek gerekirse, bu örnekte bir paylaşılan alandaki veriyi birden fazla process&#8217;in beklemesi ve hiç birisinin alamaması durumu olarak karşımıza çıkar.</p>
<ul>
<li><strong>ALGORITMA 3: </strong> Bu algoritmada, her bir process critical section&#8217;a girmek için istek flag&#8217;ini işaretler daha sonra diğer process&#8217;in critical section&#8217;a girmesi için flag&#8217;i değiştirir. Algoritması ile daha iyi anlaşılacaktır.</li>
</ul>
<p><strong>Paylaşılan Değişkenler:</strong></p>
<pre lang="c">boolean flag[2];
flag[0]=FALSE;
flag[1]=FALSE;</pre>
<p><strong>Kod:</strong></p>
<pre lang="c">do
{
        flag[i]=TRUE;
        turn = j;
        while (flag[j] &amp;&amp; turn == j);
        /* CRITICAL SECTION */
        flag[i] = FALSE;
        /* REMAINDER SECTION */
} while (TRUE);</pre>
<p>Bu algoritmayı incelediğimizde deadlock oluşmadığını görüyoruz. Ancak 1. şartı da sağlamıyor. Çünkü, bir process&#8217;in critical section&#8217;a girebilmesinin şartı, diğer process&#8217;in &#8220;ENTER SECTION&#8221;a gelmesini gerektiriyor. Bu da zaman kaybı anlamına geliyor.</p>
<p><strong>BU SORUNLARIN ÇÖZÜMLERİ:</strong></p>
<p>Bu sorunların çözümü donanımsal olarak mümkün olabiliyor. Bu çözümler bazı özelliklerin sağlanmasını gerektirir.<br />
Bu özellikler:</p>
<ul>
<li>bölünemez instruction&#8217;lar (assembly kod satırları)</li>
<li>atomik load, store ve test instruction&#8217;ları, eğer store ve test işlemi eşzamanlı olursa, test işlemi, bir register (yazmaç) ın eski değerini de, yeni değerini de alabilir.</li>
<li>İki farklı atomik instruction, eğer eşzamanlı çalıştırılsa bile sıralı çalışıyor gibi davranmalıdır.</li>
</ul>
<p><strong>Donanımsal Çözümler:</strong></p>
<ul>
<li><strong>Kesmeleri İptal Etmek (Disabling Interrupts): </strong> Bu yöntemde critical section&#8217;a girildiğinde donanımsal kesmeler iptal edilir, işlemci context switching yapmak için kesme kullandığından, kesmeler geçici bir süreliğine iptal edilirse, context switching gerçekleşmez. Böylece yukarda belirtilen sorunlar oluşmaz. Ancak bunun başka bir sorunu vardır. Bu da, critical section&#8217;a giren process kendi isteği ile critical section&#8217;dan ayrılmazsa preemption yapılamaması olarak kendini gösterir. Bu durumda tüm yönetim işletim sisteminin elinden alınır ve eğer critical section&#8217;daki işlem bir şekilde critical section&#8217;dan çıkmazsa tüm bilgisayar yanıt vermeyi durdurur.</li>
<li><strong><br />
Atomik Test and Set:</strong> Eğer bir mutex&#8217;in değeri atomik olarak test edilip değer atanırsa, ve sadece bu işlem atomik olursa, bunun için işlemcide özel instruction bulunursa, bu işlem sırasında context switching olmaz. Daha önceki örneklerde bu işlemin en az 3 instruction ile yapıldığını gördük ve bu işlemler sırasında context switching olabiliyordu.</li>
</ul>
<h2>Semaphore (Semafor):</h2>
<p>Semaforlar, mutex&#8217;den daha karmaşık yapıları modellemek için kullanılırlar. Djikstra tarafından geliştirilmiştir. Bir critical section&#8217;a sadece istenen process&#8217;lerin erişebilmesini garanti eden atomik yapıda fonksiyonlardan ve korunan değişkenden oluşur. Semaforlar binary (ikili) veya counting (sayaç) semaphore olarak ikiye ayrılır. Binary semaphore, mutex&#8217;e çok benzerken, counting semaphore bir critical section&#8217;a belli sayıya kadar process&#8217;in ulaşmasını sağlayan yapıdır.</p>
<p><strong>Race Condition:</strong> Birden fazla process aynı critical section&#8217;a erişemk istiyorsa ve bu process&#8217;lerin sırası önemliyle, bir process&#8217;in bu alana önce ulaşması race condition&#8217;a neden olabilir. Daha önce bahsettiğimiz enter section&#8217;daki context switching, race condition&#8217;a örnektir.</p>
<pre lang="c">P(Semaphore s)                      // Kaynağı Almak
{
  wait until s &gt; 0, then s := s-1;
  /* Test işlemi ve değerin azaltılması işlemi, RACE CONDITION oluşmaması için atomik yapıda olmalıdır. */
}

V(Semaphore s)  // Kaynağı Serbest Bırakmak
{
  s := s+1;   /* Atomik Olmalıdır. */
}

Init(Semaphore s, Integer v)
{
  s := v;
}</pre>
<p>Burada kaynak ayırmak için s değerinin 0&#8242;dan büyük olması gerekir. Eğer 0&#8242;a eşitse, Busy Wait (Meşgul Bekleme) yapar. Bu durumda bir döngü sürekli çalışır ancak bir iş yapmaz. Sadece Critical Section&#8217;a giriş için onay bekler. Eğer Aynı anda birden fazla process&#8217;in bir critical section&#8217;a erişebilmesi isteniyorsa bu durumda Counting Semaphore kullanılır. Bu semaphore da &#8220;Init&#8221; fonksiyonuna en fazla kaç process&#8217;in aynı anda çalışması isteniyorsa o sayı argüman olarak verilebilir. Atomik olduğu için DeadLock ları engellemek daha kolaydır. Ayrıca birden fazla process&#8217;in aynı critical section&#8217;a girebilmesi gibi bir esneklik sağlar. Tabii bu durumda race condition oluşabilir. Race condition sonucu etkilemiyorsa tercih edilmelidir.</p>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/isletim-sistemleri-ek-1-islem-senkronizasyonu.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>İşletim Sistemleri 01.3 &#8211; İşlemler</title>
		<link>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-3-islemler.html</link>
		<comments>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-3-islemler.html#comments</comments>
		<pubDate>Wed, 01 Jul 2009 22:39:40 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[İşletim Sistemleri]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[işletim sistemi]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[os]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-2-islemler.html</guid>
		<description><![CDATA[Önceki Yazılara Buradan ulaşabilirsiniz.
İşlem Hiyerarşisi:
İşlemler belirli bir hiyerarşi içinde çalışırlar. Bazı işlemler alt işlemler oluşturarak bunların da çalışmasını sağlarlar. Böylelikle bir uygulamaya ait farklı görevler üstlenen işlemler eşzamanlı olarak çalışabilirler.

Resimde görüldüğü üzere, bazı işlemler başka işlemlerin ebeveyni olarak konumlanmış durumdalar.
Özellikleri:

Ebeveyn işlem, çocuk işlem ile eşzamanlı çalışabilir yada çocuk işlemin bitmesini bekleyip daha sonra kaldığı yerden [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;">Önceki Yazılara <a href="http://yildirim.isadamlari.org/tag/operating-systems" target="_blank">Buradan</a> ulaşabilirsiniz.</span></p>
<p>İşlem Hiyerarşisi:</p>
<p>İşlemler belirli bir hiyerarşi içinde çalışırlar. Bazı işlemler alt işlemler oluşturarak bunların da çalışmasını sağlarlar. Böylelikle bir uygulamaya ait farklı görevler üstlenen işlemler eşzamanlı olarak çalışabilirler.<br />
<img style="max-width: 800px;" src="http://yildirim.isadamlari.org/wp-content/uploads//2009/07/process_hierarchy.jpg" alt="" width="421" height="373" /></p>
<p>Resimde görüldüğü üzere, bazı işlemler başka işlemlerin ebeveyni olarak konumlanmış durumdalar.</p>
<p><span style="font-weight: bold;">Özellikleri:</span></p>
<ul>
<li>Ebeveyn işlem, çocuk işlem ile eşzamanlı çalışabilir yada çocuk işlemin bitmesini bekleyip daha sonra kaldığı yerden çalışmaya devam edebilir.</li>
<li>Çocuk işlem, ebeveyn işlemin tüm değişkenlerini veya bir kısmını kullanabilir.</li>
<li>Ebeveyn işlemin sonlanması, çocuk işlemlerin sonlanmasına neden olur.</li>
<li>Çocuk işlemler, ebeveyn çalıştığı sürece çalışabilir veya aralıklarla çalışabilir.</li>
</ul>
<p><span style="font-weight: bold;">Türleri:</span></p>
<ul>
<li>Bağımsız: Çocuk işlemler, diğer işlemleri etkilemeden çalıştırılabilir ve sonlandırılabilirler, Sonucu kesindir, başka işlemlerin çalışması sonucunun değişmesine neden olmaz.</li>
<li>İşbirlikçi: Çocuk işlemler, birbirleri ile ortak çalışırlar, çalışma sıraları değiştiğinde sonuç değişebilir. Uygulamanın çıktısı her zaman aynı olmayabilir. Sonuç dış etmenlere de bağlıdır.</li>
</ul>
<p><span style="font-weight: bold;">İşlemler Arası İletişim:</span></p>
<p>İşlemlerin birbirleri ile iletişim kurmasıdır. 2 temel iletişim metodu vardır.<span style="font-weight: bold;"><br />
</span></p>
<ul>
<li><span style="font-weight: bold;">Bellek Paylaşımı (Shared memory):</span> Bu yöntemde veri iletimi yoktur. Birden fazla işlem aynı paylaşılan bellek bölgesini kullanarak değişkenler üzerinden iletişim kurarlar.</li>
<li><span style="font-weight: bold;">Mesaj Gönderme Arayüzü (Message Passing Interface):</span> Bu yöntemde veri iletimi vardır. Bir işlem veriyi &#8220;send&#8221; metodu ile gönderirken, diğer işlem veriyi &#8220;receive&#8221; metodu ile alır.</li>
</ul>
<p><span style="font-weight: bold;">Mesaj Gönderme Arayüzü, Uygulama Yöntemleri:</span></p>
<ul>
<li>Direkt veya Dolaylı iletişim</li>
<li>Simetrik veya Asimetrik iletişim</li>
<li>Arabellek (Buffer) Mekanizması</li>
<li>Sabit Boyutlu veya değişken boyutlu mesajlar</li>
</ul>
<p><span style="font-weight: bold;">Direkt İletişim:</span><br />
Bu yöntemde bir işlem, göndereceği veriyi direkt olarak bir işleme gönderir. Bu yöntemde gönderici ve alıcı isimleri bilinmelidir. Mekanizma aşağıdaki gibidir.</p>
<pre lang="c">send(tuketici_islem, veri);
receive(uretici_islem, veri);</pre>
<p><span style="font-weight: bold;">Üretici/Tüketici Problemi:</span> Standart bir problemdir. Bir işlem veri üretir, diğer işlem üretilen veriyi tüketir. Direkt iletişime uyarlanmış şekli şöyledir.</p>
<p><span style="font-weight: bold;">Üretici:</span></p>
<pre lang="c">repeat
    uret item;
    send (tuketici, message);
until false</pre>
<p><span style="font-weight: bold;">Tüketici:</span></p>
<pre lang="c">repeat
    receive (uretici, message);
    tuket item;
until false</pre>
<p><span style="font-weight: bold;">Özellikleri:</span></p>
<ul>
<li>Bağlantı otomatik olarak sağlanır.</li>
<li>Yalnızca 2 işlem iletişimde bulunabilir.</li>
<li>2 işlem için 1 bağlantı gerekir.</li>
<li>Genellikle tek yönlüdür.</li>
<li>Tuketici, iletişim sırasında üreticinin kimliğine ihtiyaç duymayabilir.</li>
<li>Her iki işlemin kimliği bilinmelidir, kodun bakımı zordur.</li>
</ul>
<p><span style="font-weight: bold;">Dolaylı İletişim:</span><br />
Bu iletişim yönteminde, işlemler posta kutusu denen yapı yardımı ile iletişim kurarlar. İşlem aşağıdaki gibidir.</p>
<pre lang="c">open (posta_kutusu_adi);
send (posta_kutusu_adi, message);
receive (posta_kutusu_adi, message);</pre>
<ul>
<li>Ancak eğer bir posta kutusu varsa iletişim sağlanabilir. İşlemler arası iletişimin kurulabilmesi için öncelikle posta kutusu ile iletişim kurulmalıdır.</li>
<li>İkiden fazla işlem aynı posta kutusunu kullanabilir.</li>
<li>Birden fazla alıcı olduğunda işler karışabilir. Posta kutusuna mesa gelince kimin alacağı belirlenemeyebilir.</li>
</ul>
<p><span style="font-weight: bold;">Simetrik İletişim:</span><br />
Bu iletişim metodunda üretici ve tüketici eşit hızlarda çalışır, çoğu zaman ara belleğe gerek yoktur.</p>
<p><span style="font-weight: bold;">Asimetrik İletişim:</span><br />
Bu iletişim metodunda üretici ve tüketici farklı hızlarda çalışırlar. Ara belleğe ihtiyaç duyulur.</p>
<p><span style="font-weight: bold;">Ara Bellek:</span></p>
<ul>
<li>Sıfır: Üretici, tüketicinin veriyi almasını bekler.</li>
<li>Sınırlı Ara Bellek: Eğer ara bellekte n taneden fazla mesaj varsa üretici bekler.</li>
<li>Sınırsız Ara Bellek: Üretici hiç bir zaman tüketiciyi beklemez.</li>
</ul>
<p><span style="font-weight: bold;">RPC (Remote Procedure Call, uzak prosedür çağrısı):</span><br />
Ağ üzerinden bağlı bilgisayarlardaki uygulamaların birbirleri ile iletişim kurmaları için bir soyutlmadır.</p>
<p><span style="font-weight: bold;">Gelecek Bölüm:</span></p>
<ul>
<li>Bellek Yönetimi</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-3-islemler.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>İşletim Sistemleri 01.2 &#8211; İşlemler ve Zamanlayıcı</title>
		<link>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-2-islemler-ve-zamanlayici.html</link>
		<comments>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-2-islemler-ve-zamanlayici.html#comments</comments>
		<pubDate>Mon, 29 Jun 2009 21:53:21 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[İşletim Sistemleri]]></category>
		<category><![CDATA[döküman]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[işletim sistemi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[minix]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=326</guid>
		<description><![CDATA[Tekrar merhaba, bu yazımızda sırasıyla:

Context Switching (İçerik Değiştirme)
Zamanlayıcı Çeşitleri
Zamanlama Algoritmaları

kavramlarına değineceğiz.
Context Switching (İçerik Değiştirme):
Preemption: Genel amaçlı modern işletim sistemlerinde bulunan bir yapı olan preemption mekanizması, bir işlemci üzerinde bir işleme t kadar bir zaman aralığı verilmesini sağlar. Eğer bir işlem t sürede tamamlanır ve &#8220;çalışıyor&#8221; durumundan &#8220;sonlandırıldı&#8221; durumuna geçerse, herhangi bir sorun olmaz, &#8220;hazır&#8221; kuyruğunda [...]]]></description>
			<content:encoded><![CDATA[<p>Tekrar merhaba, bu yazımızda sırasıyla:</p>
<ul>
<li>Context Switching (İçerik Değiştirme)</li>
<li>Zamanlayıcı Çeşitleri</li>
<li>Zamanlama Algoritmaları</li>
</ul>
<p>kavramlarına değineceğiz.</p>
<p><span style="font-weight: bold;">Context Switching (İçerik Değiştirme):</span></p>
<p><span style="font-weight: bold;">Preemption:</span> Genel amaçlı modern işletim sistemlerinde bulunan bir yapı olan preemption mekanizması, bir işlemci üzerinde bir işleme t kadar bir zaman aralığı verilmesini sağlar. Eğer bir işlem t sürede tamamlanır ve &#8220;çalışıyor&#8221; durumundan &#8220;sonlandırıldı&#8221; durumuna geçerse, herhangi bir sorun olmaz, &#8220;hazır&#8221; kuyruğunda bekleyen sıradaki uygulama &#8220;çalışıyor&#8221; durumuna geçer. Fakat bir işlem t zaman aralığında sonlanmazsa &#8220;preemption&#8221; mekanizması devreye girer ve bu işlemi işlemciden (&#8220;çalışıyor&#8221; durumundan) alarak &#8220;hazır&#8221; kuyruğuna gönderir.</p>
<p>Context Swtichin (İçerik değiştirme) ise t zaman aralığında bitmemiş işlemin &#8220;hazır&#8221; kuyruğuna gönderilmesi sırasında gerçekleşen tüm olayları kapsar. Bu işlem sırasında gerçekleşen olaylar ise şu şekildedir.</p>
<ul>
<li>Çalışan işleme ait PCB (Process Control Block, İşlem Kontrol Bloğu) veri yapısı belleğe yazılır.</li>
<li>Zamanlayıcının belirli algoritmalara dayanarak seçtiği yeni işleme ait PCB işlemciye gönderilir.</li>
<li>İşlemci PCB verilerine göre durumunu değiştirir. (Registerlar, program counter vs)</li>
<li>İşlemi çalıştırır.</li>
<li>t kadar süre geçtikten sonra durumunu belleğe gönderir, yeni işlemin gelmesini bekler.</li>
</ul>
<p>Burada görüldüğü üzere bir işlem sonlanmadan, diğer bir işleme geçiş yapılmaktadır. Bu olaya Context Switching denir.</p>
<p>Context Switching&#8217;in yararları:</p>
<ul>
<li>Çok işlemli işletim sistemlerinin tasarımını sağlar. Aynı anda birden fazla uygulama çalıştırılabilir.</li>
<li>Çok kullanıcılı işletim sistemlerinin tasarımını sağlar. Birden fazla kullanıcı sisteme bağlanabilir.</li>
<li>Bir işlem çalışırken, diğer işlemlerin de devam etmesini sağlar.</li>
<li>Herhangi bir uygulama çalışırken işletim sistemi de çalışmakta olduğundan işletim sistemi kontrolü sürekli elinde tutar.</li>
<li>Deadlock (daha sonra ayrıntılı olarak ele alınacaktır, bir uygulamanın kilitlenmesi olarak düşünebilirsiniz.) durumunda, sadece deadlock olmuş uygulamanın sonlandırılmasını sağlar.</li>
</ul>
<p><span style="font-weight: bold;">Zamanlayıcı ve Çeşitleri:</span></p>
<p>Sıradaki işlemlerden hangisinin işlemcide çalıştırılacağını belirleyen mekanizmadır. Bu işlemi gerçekleştirmek için farklı algoritmalar kullanabilir.<br />
<br style="font-weight: bold;" /><span style="font-weight: bold;">Uzun Dönemli Zamanlayıcı (Long Term Scheduler):</span></p>
<ul>
<li>İşlemleri iş kuyruğundan seçer.</li>
<li>Seçilen işlemleri çalıştırılmak üzere belleğe yükler.</li>
<li>Hazır kuyruğunu günceller.</li>
<li>Çokluprogramlamanın derecesini kontrol eder. (Ana bellekte kaç adet işlem olacağı)</li>
<li>Kısa dönemli zamanlayıcıdan daha seyrek çalışır.</li>
<li>Seçtiği işlemlerin işlemci kullanımı ve girdi/çıktı miktarı arasında bir oran oluşturmaya çalışır. Örnek olarak sürekli g/ç yapan işlemleri seçmez bunun yerine 1 adet g/ç, 1 adet hesaplama yapan işlem çalıştırır.</li>
<li>Bazı işletim sistemlerinde bulunmayabilir.</li>
</ul>
<p><span style="font-weight: bold;">Kısa Dönemli Zamanlayıcı (Short Term Scheduler):</span></p>
<ul>
<li>İşlemleri &#8220;hazır&#8221; kuyruğundan seçer.</li>
<li>İşlemciyi seçilen işlem için hazır duruma getirir (kaynak ayırır.)</li>
<li>İşlemi, işlemciye gönderir.</li>
<li>Çok kısa aralıklarla tekrar tekrar çalışır. (bir kaç milisaniyede bir)</li>
<li>Çok hızlı karar vermek zorundadır.</li>
</ul>
<p><span style="font-weight: bold;">İyi Bir Zamanlayıcının Özellikleri:<br />
</span></p>
<ul>
<li>Adalet: Her bir işlem, işlemciyi adil bir şekilde paylaşmalıdır.</li>
<li>Verimlilik: İşlemci yükü %100&#8242;e yakın olmalıdır, unutmayın ki kullanılmayan işlemcinin kimseye yararı yoktur.</li>
<li>Tepki Zamanı: İnteraktif kullanıcılar yaptıkları işlemlerin etkilerini çok kısa sürede görebilmelidirler. Kimse yazı yazmaya başladıktan belirli bir süre sonra ekranda harflerin belirmesinden hoşnut olmaz.</li>
<li>Geri Dönüş Süresi: Bir işlemin çıktı verene kadar geçen süresini minimuma indirmelidir.</li>
<li>Çıkış: 1 saat içinde yapılan işlem sayısını maksimize etmelidir.</li>
</ul>
<p><span style="font-weight: bold;">Zamanlama Türleri:</span></p>
<p>1. Preemptive:</p>
<ul>
<li>Süren bir işlemi kısa zaman aralıklarında çalıştırır, çalışmadığı zamanlarda işlemci&#8217;de çalışacağı zamanı bekler.</li>
<li>İşlemcideki kayıp zaman non-preemptive&#8217;e göre fazladır.</li>
<li>Interrupt (bir olayın sonucuna bağlı olarak), trap (hata veya exception&#8217;a bağlı olarak), Supervisor Call (kernel&#8217;den özel bir çağrıya bağlı olarak) nedeniyle işlem, duraklatılabilir.</li>
</ul>
<p>2. Non-Preemptive</p>
<ul>
<li>İşlem sonlanana kadar işletim sistemi işleme müdahale etmez.</li>
</ul>
<p><span style="font-weight: bold;">Zamanlama Algoritmaları:</span></p>
<ul>
<li>İlk Giren İlk Çıkar: Bu algoritmada işlemlerin işlemciye geliş sırasına göre işlemci bunları çalıştırır. En basit zamanlama algoritmasıdır. Uygulaması kolay olduğundan ve bazı sistemlerde gelen olaya göre sıralı tepki verilmesi gerektiğinde kullanılır. Ortalama bekleme süresi uzundur.  Günümüz kullanım alanı genellikle gömülü sistemlerdedir. Preemptive değildir.</li>
<li>Son Giren İlk Çıkar: Bu algoritmada, ilk örneğin tersidir. Son gelen işi ilk sıraya alır. Pek fazla kullanım alanı yoktur. Preemptive değildir.</li>
<li>En Kısa İşlem Önceliği: Bu algoritmada sıradaki en kısa iş en önce yapılır. Böylece birim sayıda yapılan işlem sayısı artırılarak tepki zamanı düşürülmeye çalışılır. Genelde toplu işlemlerin yapılmasında kullanılır. (Bankadaki haftalık hesapların arkaplanda yapılması gibi) Preemptive değildir.</li>
<li>En Uzun İşlem Önceliği: Burada en uzun işlem ilk önce yapılarak işlemcideki iş yükünün sürekli yüksek olması amaçlanır. Böylece işlemciden daha çok verim alınabilir. Yüksek performanslı bilgisayarlarda sıkça kullanılmaktadır. Preemptive bir algoritmadır.</li>
<li>En Az İşlem Zamanı Kalan İşlem Önceliği: Bu algoritma en kısa işlem önceliği algoritmasının preemptive halidir. Bir işlemin ne kadar süre daha çalıştırılacağını belirleyip kalan zamanı en az olan işlemi çalıştırır. Günümüzde genel amaçlı bazı bilgisayarlarda kullanılmaktadır. Amacı tepki zamanını azaltmaktır. Preemptive bir algoritmadır.</li>
<li>Round Robin: En adil algoritmadır. Tüm işlemlerin önceliği aynıdır ve eşit zaman aralıklarında çalışırlar. Süresi dolan işlem preemtive edilir. bir sonraki işlem çalışır. Hazır kuyruğu olarak dairesel kuyruk veri yapısını kullanır. Preemptive bir algoritmadır.</li>
<li>Çok Kademeli Geri Beslemeli Zamanlama: Bu algoritma günümüzde genel amaçlı bilgisayarlarda en fazla kullanılan algoritmadır. Bu algoritmada Context Switch&#8217;den kaybedilen zamanı azaltmak için çalışan işlemlerden geri besleme alınır ve zaman aralığı artırılabilir. Ayrılan zamanı arttırmak CPU yükünü yüksek tutacağı gibi boş geçen zamanı düşürür bu da performans artışı sağlar. Tabii ki diğer taraftan starvation (bir işlemin yeterli kaynağı bulamaması durumunda kilitlenmesi) ihtimaline karşı önlem alınır ve belirli bir zaman periyodundan sonra context switching gerçekleşir.</li>
</ul>
<p><span style="font-weight: bold;">Gelecek Bölüm:</span></p>
<ul>
<li>İşlem akrabalıkları</li>
<li>İşlemler arası iletişim</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-2-islemler-ve-zamanlayici.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>İşletim Sistemleri 01.1 &#8211; İşlemler ve Zamanlayıcı</title>
		<link>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-1-islemler-ve-zamanlayici.html</link>
		<comments>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-1-islemler-ve-zamanlayici.html#comments</comments>
		<pubDate>Sun, 28 Jun 2009 22:19:57 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[İşletim Sistemleri]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[işletim]]></category>
		<category><![CDATA[işletim sistemi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[minix]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=319</guid>
		<description><![CDATA[İşlem (Proccess) Nedir?
İşlem bir uygulamanın çalışmakta olan (aktif olan) durumuna verilen isimdir.  Bir işlem tarafından tutulan özellikler aşağıdakilerdir.

Donanım durumu
bellek durumu ve adresleri
işlemci
ilerleme durumu

İşlemlerle çalışmak

kaynak paylaştırma (mantıksal (dosyalar) ve fiziksel (bellek, işlemci vs))
hesaplamaların hızlanması (paralel programlamanın avantajlarının kullanımı)
güvenliğin artması

gibi özellikler sağlar.
Bir İşlemin Durumları:


Yeni: İşlemin henuz yeni oluşturulduğu durumdur.
Çalışıyor: işlemi oluşturan kodların çalıştırıldığı durumdur. Bu durumdaki işlem [...]]]></description>
			<content:encoded><![CDATA[<p><strong>İşlem (Proccess) Nedir?</strong></p>
<p>İşlem bir uygulamanın çalışmakta olan (aktif olan) durumuna verilen isimdir.  Bir işlem tarafından tutulan özellikler aşağıdakilerdir.</p>
<ul>
<li>Donanım durumu</li>
<li>bellek durumu ve adresleri</li>
<li>işlemci</li>
<li>ilerleme durumu</li>
</ul>
<p>İşlemlerle çalışmak</p>
<ul>
<li>kaynak paylaştırma (mantıksal (dosyalar) ve fiziksel (bellek, işlemci vs))</li>
<li>hesaplamaların hızlanması (paralel programlamanın avantajlarının kullanımı)</li>
<li>güvenliğin artması</li>
</ul>
<p>gibi özellikler sağlar.</p>
<p><strong>Bir İşlemin Durumları:</strong></p>
<p><img class="alignnone size-full wp-image-320" title="scheduler" src="http://yildirim.isadamlari.org/wp-content/uploads//2009/06/scheduler.png" alt="scheduler" width="420" height="167" /></p>
<ul>
<li><strong>Yeni:</strong> İşlemin henuz yeni oluşturulduğu durumdur.</li>
<li><strong>Çalışıyor: </strong>işlemi oluşturan kodların çalıştırıldığı durumdur. Bu durumdaki işlem işlemcide tutulur.</li>
<li><strong>Bekliyor:</strong> Bir olay veya girdi/çıktı işlemi için işlemin beklediği durumdur.</li>
<li><strong>Hazır:</strong> Bir işlem için gereken tüm kaynakların ayrıldığı, işlemcide çalıştırılması için işlemin beklediği durumdur.</li>
<li><strong>Sonlandırıldı:</strong> İşlemin bittiği durumdur.</li>
</ul>
<p><strong>PCB (Process Control Block, İşlem Kontrol Bloğu):</strong></p>
<p>Her bir işlem ile ilgili bilgi içeren veri yapısıdır. İçerdiği bilgiler şunlardır:</p>
<ul>
<li>PC (Program Counter, programın çalışması sırasında çalışmanın hangi aşamada olduğunu saklar.)</li>
<li>Bellek yönetim bilgileri</li>
<li>Kullanılan Zaman</li>
<li>İşlem Numarası</li>
<li>Girdi/Çıktı durumu</li>
<li>Zamanlayıcı verileri, öncelik</li>
<li>İşlem Durumu (bekliyor, çalışıyor vs)</li>
</ul>
<p><strong>Zamanlama (Scheduling):</strong></p>
<p>Zamanlayıcının görevi aktif çalışan bir işlemi, işlemciden alıp yerine başka bir işlem atamaktır. Bu işleme <em>Context Switching (CS)</em> denir. CS yapılırken önceki işleme ait PCB alınıp belleğe yazılır ve yeni işlemin PCB&#8217;si işlemciye gönderilir.</p>
<p><strong>Zamanlayıcı Kuyrukları:</strong></p>
<p>Zamanlayıcı yapısında iki adet kuyruk vardır. Bunlardan bir tanesi Hazır kuyruğu, diğeri ise girdi/çıktı kuyruğudur. Hazır kuyruğunda işlemciye gönderilecek, kaynak tahsis edilmiş işlemler beklerken, girdi/çıktı kuyruğunda işlemcide çalışmış ancak bir kaynağa erişmesi gereken ve henuz kaynak tahsil edilmemiş işlemler beklerler. Bu listeler tekli bağlı liste olabileceği gibi çiftli bağlı liste de olabilir.</p>
<p>Gelecek Bölüm:</p>
<ul>
<li>Zamanlayıcı (Devam)</li>
<li>İşlemleri Zamanlama</li>
<li>İşlemler Arası İletişim</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/isletim-sistemleri-01-1-islemler-ve-zamanlayici.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>İşletim Sistemleri 00.1 &#8211; İşletim Sistemi Nedir?</title>
		<link>http://yildirim.isadamlari.org/2009/isletim-sistemleri-00-1-isletim-sistemi-nedir.html</link>
		<comments>http://yildirim.isadamlari.org/2009/isletim-sistemleri-00-1-isletim-sistemi-nedir.html#comments</comments>
		<pubDate>Sun, 28 Jun 2009 14:12:46 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[İşletim Sistemleri]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[işletim sistemi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[minix]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[türkçe]]></category>
		<category><![CDATA[windows bsd]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=315</guid>
		<description><![CDATA[İşletim sistemleri teorisi ile ilgili yazmaya başladığım bu yazı dizisinin öncelikle içeriğinden bahsedip sonra genel olarak işletim sisteminin ne olduğuna değineceğiz. Çok fazla derine inmeden anlatacağım konular, genel bilgi sahibi olmak isteyenlerin işine yarayacaktır. Tabii ki daha ayrıntılı bilgi almak isteyenlere Andrew S. Tanenbaum&#8217;un &#8220;Modern Operating Systems&#8221; kitabını edinmelerini öneririm.
Başlıklar:

İşlem Yönetimi
Ana Bellek Yönetimi
Dosya Yönetimi
Girdi/Çıktı Yönetimi
İkincil [...]]]></description>
			<content:encoded><![CDATA[<p>İşletim sistemleri teorisi ile ilgili yazmaya başladığım bu yazı dizisinin öncelikle içeriğinden bahsedip sonra genel olarak işletim sisteminin ne olduğuna değineceğiz. Çok fazla derine inmeden anlatacağım konular, genel bilgi sahibi olmak isteyenlerin işine yarayacaktır. Tabii ki daha ayrıntılı bilgi almak isteyenlere Andrew S. Tanenbaum&#8217;un &#8220;Modern Operating Systems&#8221; kitabını edinmelerini öneririm.</p>
<p><strong>Başlıklar:</strong></p>
<ul>
<li>İşlem Yönetimi</li>
<li>Ana Bellek Yönetimi</li>
<li>Dosya Yönetimi</li>
<li>Girdi/Çıktı Yönetimi</li>
<li>İkincil Bellek Yönetimi</li>
<li>Ağ</li>
</ul>
<p><strong>İşletim Sistemi Nedir?</strong></p>
<p>İşletim Sistemi (İS) gerçekleşen olayları düzenleyen ve yöneten, bilgisayarın kaynaklarını uygulamalara dağıtan, kullanıcı ve donanım arasında bir arayüzdür. İS bilgisayarda çalışan uygulamalar için ev sahipliği görevini üstlenir. Bu görevin bir parçası olarak programların  donanımla ilgili işlemlerini yürütür. Böylece programcı donanım ile ilgilenmeden, donanım bağımsız uygulamalar yazabilir. Bu sayede farklı bilgisayarlarda aynı işletim sistemi çalıştığı müddetçe aynı uygulama da çalışabilir. Nerdeyse her bilgisayar, robotlar, beyaz eşyalar, dvd playerlar, mp3 playerlar birer işletim sistemi sayesinde işlemlerini yürütürler.</p>
<p>İşletim sistemleri, uygulama yazılımlarına ve kullanıcılara bir takım hizmetler sunarlar. Uygulamalar bu hizmetlere API (Application Programming Interfaces, uygulama geliştirme arayüzü) ve System Call (Sistem çağrısı) ile ulaşırlar. Bu yöntemle uygulama almak istediği hizmeti ve parametrelerini işletim sistemine gönderir ve cevabı bekler. Burada gerçekleşen işlemler programcıyı ilgilendirmez. Daha sonra işletim sistemi, verilen hizmeti tamamlayıp sonucunu uygulama programına gönderir.</p>
<p>Kullanıcılar işletim sistemleri ile birden fazla şekilde etkileşim içinde bulunabilirler. Bu etkileşim CLI (Command Line Interface, komut satırı arayüzü) veya GUI (Graphical User Interface, grafiksel kullanıcı arayüzü) olabilir. Kullanıcı arayüzü genelde ufak ve masaüstü sistemler için geliştirilmiş işletim sistemlerinde işletim sisteminin bir parçasıyken, Unix gibi geniş ölçekli, çok kullanıcılı işletim sistemlerinde işletim sisteminin üstünde çalışan bir uygulamadır (kurulum aşamasından önce işletim sistemine paket olarak dahil edilmesi bu gerçeği değiştirmez.).</p>
<p><strong>Gelecek Bölüm:</strong></p>
<ul>
<li>İşlem Nedir?</li>
<li>Zamanlayıcı Nedir?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/isletim-sistemleri-00-1-isletim-sistemi-nedir.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Virus Uyarısı</title>
		<link>http://yildirim.isadamlari.org/2009/virus-uyarisi.html</link>
		<comments>http://yildirim.isadamlari.org/2009/virus-uyarisi.html#comments</comments>
		<pubDate>Tue, 31 Mar 2009 12:41:24 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[downanup]]></category>
		<category><![CDATA[gezegen]]></category>
		<category><![CDATA[gezegen_arch]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/?p=290</guid>
		<description><![CDATA[

Daha detaylı bilgileri ve symantec için virus tanım dosyalarını burdan indirebilirsiniz.

Değerli İş Ortağımız,
 
Yarın aktive olması muhtemel yeni bir tehlike ile ilgili uyarı ve önlemleri sıraladığımız aşağıdaki mesajı müşterilerilerinizi ile de paylaşmanızı rica ediyoruz.
 
Symantec Güvenlik Merkezleri ( Symantec Security Response Centers ) http://www.symantec.com/security_response/ 1 Nisan’da aktive olması muhtemel yeni bir tür ‘’Downanup worm’’ konusunda [...]]]></description>
			<content:encoded><![CDATA[<div class="moz-text-html" lang="tr"><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1" /> </o:shapelayout></xml><![endif]--></p>
<div class="Section1">
<p class="MsoNormal">Daha detaylı bilgileri ve symantec için virus tanım dosyalarını <a href="http://yildirim.isadamlari.org/files/downanup.tar.gz">burdan</a> indirebilirsiniz.</p>
<p class="MsoNormal">
<p class="MsoNormal"><span lang="EN">Değerli İş Ortağımız,</span></p>
<p class="MsoNormal"><span style="color: #1f497d;" lang="EN"> </span></p>
<p class="MsoNormal"><span lang="EN">Yarın aktive olması muhtemel yeni bir tehlike ile ilgili uyarı ve önlemleri sıraladığımız aşağıdaki mesajı müşterilerilerinizi ile de paylaşmanızı rica ediyoruz.</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span  lang="EN">Symantec Güvenlik Merkezleri<span style="color: #1f497d;"> </span>( Symantec Security Response Centers )</span><span style="color: #1f497d;" lang="EN"> </span><span lang="EN"><a href="http://www.symantec.com/security_response/">http://www.symantec.com/security_response/</a> </span><span lang="EN">1 Nisan’da aktive olması muhtemel yeni bir tür</span><span style="color: #1f497d;" lang="EN"> </span><span class="MsoHyperlink">‘’</span><span class="MsoHyperlink"><span lang="EN"><a href="http://www.symantec.com/security_response/writeup.jsp?docid=2008-112203-2408-99&amp;tabid=1">Downanup worm</a>’’</span></span><span lang="EN"> konusunda  gerekli araştırmaları yapmaktadırlar. Bu tehlike karşısında aşağıdaki önlemlerin alınmasını öneriyoruz :</span></p>
<p class="MsoNormal">
<p class="MsoListParagraph" style="margin-left: 36pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: Symbol;" lang="EN"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span></span><!--[endif]--><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">Microsoft Güvenlik bildirgesinde bulunan güncellemenin yapılması</span><span lang="EN"> <a href="http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx">http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx</a></span></p>
<p class="MsoListParagraph" style="margin-left: 36pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: Symbol;" lang="EN"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal;  line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span></span><!--[endif]--><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">Kullanıcıların virüsün kurumsal ağlara bulaşmasını engellemek adına ağ parolalarının güçlü olduğundan emin olmaları önerilmektedir. Konuyla</span><span lang="EN"> </span><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">ilgili detaylı bilgiye </span><span lang="EN"><a href="http://technet.microsoft.com/en-us/library/cc512606.aspx">http://technet.microsoft.com/en-us/library/cc512606.aspx</a><span style="color: #1f497d;"> </span></span><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">altından ulaşılabilir.</span></p>
<p class="MsoListParagraph" style="margin-left: 36pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: Symbol;" lang="EN"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span></span><!--[endif]--><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">SEP 11 en son versiyon çalıştırılarak SEP’in Antivirüs / Antispyware ile beraber diğer bileşenlerinin<span style="color: #1f497d;"> </span>de &#8211; Network Threat Protection ve</span><strong><span style="color: red;" lang="EN"> </span></strong><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">Proactive Threat Protection &#8211; yüklenmesi önerilmektedir.</span><span lang="EN"> </span><span  font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><a href="http://www.symantec.com/business/endpoint-protection">http://www.symantec.com/business/endpoint-protection</a></span></p>
<p class="MsoListParagraph" style="margin-left: 36pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: Symbol;" lang="EN"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal;  line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span></span><!--[endif]--><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">SEP 11 ‘de application ve device control özellikleri kullanılması halinde ekte bulunan <strong><em><span style="text-decoration: underline;">downup-warm.dot</span></em></strong> dosyasının SEP policy manager kullanılarak sistemlere yüklenmesi önerilmektedir.</span></p>
<p class="MsoListParagraph" style="margin-left: 36pt; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: Symbol;" lang="EN"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal;  line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span></span><!--[endif]--><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">Deepsight ‘dan alınan raporlar ekte bulunmaktadır.</span></p>
<p class="MsoNormal"><span style="color: #1f497d;" lang="EN"> </span><span  lang="EN">Bu yeni virüs ile ilgili daha fazla bilgi için aşağıdaki link’leri ziyaret edebilirsiniz</span><span lang="EN">. </span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0.0001pt;"><span  lang="EN-US"> </span></p>
<p class="MsoListParagraph" style="margin-right: 0cm; margin-left: 36pt; margin-bottom: 0.0001pt;"><span style="color: #1f497d;" lang="EN-US"><a href="http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/the_downadup_codex_ed1.pdf">http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/the_downadup_codex_ed1.pdf</a> </span></p>
<p class="MsoListParagraph" style="margin-right: 0cm; margin-left: 36pt; margin-bottom: 0.0001pt;"><span class="MsoHyperlink"><span lang="EN-US"><a href="http://www.symantec.com/security_response/writeup.jsp?docid=2008-112203-2408-99&amp;tabid=1">http://www.symantec.com/security_response/writeup.jsp?docid=2008-112203-2408-99&amp;tabid=1</a> </span></span></p>
<p class="MsoListParagraph" style="margin-left: 36pt;"><span style="font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN">Symantec konuyla ilgili araştırmaları sürdürerek gerektiğinde konuyla ilgili güncel bilgi yayınlayacaktır.</span></p>
<p class="MsoNormal"><span  lang="EN"> Saygılarımızla,</span></p>
<p class="MsoNormal"><span  lang="EN"> </span></p>
<p class="MsoNormal"><span  lang="EN"> <span style="color: #1f497d;"> </span>Symantec Türkiye Ekibi</span></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/virus-uyarisi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Planet Arch</title>
		<link>http://yildirim.isadamlari.org/2009/hello-planet-arch.html</link>
		<comments>http://yildirim.isadamlari.org/2009/hello-planet-arch.html#comments</comments>
		<pubDate>Mon, 16 Mar 2009 19:07:19 +0000</pubDate>
		<dc:creator>yildirim</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[gezegen_arch]]></category>

		<guid isPermaLink="false">http://yildirim.isadamlari.org/2009/hello-planet-arch.html</guid>
		<description><![CDATA[#!/usr/bin/env sh
echo &#8220;Hello Planet Arch&#8221;
]]></description>
			<content:encoded><![CDATA[<p>#!/usr/bin/env sh</p>
<p>echo &#8220;Hello Planet Arch&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://yildirim.isadamlari.org/2009/hello-planet-arch.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
