<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>tolpp.com</title>
    <description>tolpp.com; algoritmalara, veri yapılarına, bilgisayarla çözülebilecek problemlere yer verilen bir blogdur.
</description>
    <link>http://tolpp.com/</link>
    <atom:link href="http://tolpp.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 25 Jan 2018 12:31:00 +0000</pubDate>
    <lastBuildDate>Thu, 25 Jan 2018 12:31:00 +0000</lastBuildDate>
    <generator>Jekyll v3.6.2</generator>
    
      <item>
        <title>C# – CSharp delegasyonlar (delegeler [delegates]) – 2</title>
        <description>&lt;p&gt;Merhaba,&lt;/p&gt;

&lt;p&gt;3 yıl önce delegeler hakkında bir şeyler &lt;a href=&quot;/csharp-delegasyonlar-delegeler-delegates-1/&quot;&gt;yazmıştım&lt;/a&gt;. X bilişim firması çalışanı bir kişi pek açıklayıcı bulmamış o yazıyı.&lt;/p&gt;

&lt;p&gt;Neyse, daha açıklayıcı bir örnekle ve gündelik kullanıma daha yakın şekilde yeniden delegete’lerden bahsedecek olursak ;&lt;/p&gt;

&lt;p&gt;Özetle &lt;strong&gt;Delegeler&lt;/strong&gt;, belli bir olay sonrasında çalıştırılması gereken metodların olay yeri tarafından bilinmeksizin çalıştırılmasını sağlayan yapılardır. En temel örnek olarak &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.eventhandler&quot;&gt;System.EventHandler&lt;/a&gt; gösterilebilir. Windows Forms içerisinde kullanılan default tüm click, load eventlarının handle edilmesi için bu delegate kullanılır.&lt;/p&gt;

&lt;p&gt;Benzeri şekilde kendi delegemizi oluşturacak olursak;
&lt;script src=&quot;https://gist.github.com/tolpp/b89aa394a10959ccd366.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Yukarıda UserEventHandler isminde, kullanıcı işlemleri için kullanılacak bir delegate yaratılmıştır. Bu tanımlama class seviyesinde, doğrudan namespace içerisinde yapılmıştır.&lt;/p&gt;

&lt;p&gt;UserContext içerisinde kullanıcının yaratılma işlemi sırasında sırayla çağrılması gereken metodlar UserCreated isimli UserEventHandler isimli delegate içerisinde atılmıştır.&lt;/p&gt;

&lt;p&gt;Bu sayede, CreateUser metodu içerisinde UserCreated delegate’i bir kez çağrılarak SaveUserToDatabase, SendRegisterationSmsToUser ve NotifyManager metodları da aynı anda çağrılmış olur. Bu durum için delegate kullanımının en büyük artısı, kullanıcı yaratımından sonra hangi işlemlerin yapılacağı kısmı ile CreateUser metodunun ilgilenmemesidir. Delegate sayesinde CreateUser metodu ile diğer işlemleri birbirinden ayırmış olduk (bkz. &lt;a href=&quot;http://en.wikipedia.org/wiki/Loose_coupling&quot;&gt;loose coupling&lt;/a&gt;)&lt;/p&gt;
</description>
        <pubDate>Tue, 16 Sep 2014 15:55:00 +0000</pubDate>
        <link>http://tolpp.com/c-csharp-delegasyonlar-delegeler-delegates-2/</link>
        <guid isPermaLink="true">http://tolpp.com/c-csharp-delegasyonlar-delegeler-delegates-2/</guid>
        
        <category>.net</category>
        
        <category>csharp</category>
        
        <category>delegate</category>
        
        
        <category>.Net</category>
        
      </item>
    
      <item>
        <title>Scala “By-Name Parameter”(=&gt;) kullanımı</title>
        <description>&lt;p&gt;Scala’da foksiyon içerisinde fonksiyon yaratılabiliyor, bu fonksiyonlar bir referansa atanabiliyor ve parametre olarak başka bir fonksiyona gönderilebiliyor. Bu işlemi kitaplarda “function values” ya da “pass-by-name” olarak bulmanız mümkün.&lt;/p&gt;

&lt;p&gt;Bu da kod içerisindeki metodun farklı şekillerde kullanılabilmesini sağlıyor. Örneğin verilen bir liste üzerinde toplama işlemi yapan bir metod kolay bir şekilde tek sayılar üzerinde toplama işlemi yapan hale getirilebiliyor.&lt;/p&gt;

&lt;p&gt;Bir örnekle :
&lt;script src=&quot;https://gist.github.com/tolpp/6d2913979650da688359.js&quot;&gt;&lt;/script&gt;
Peki, yukarıda ne oldu?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;sumList(myList:List[Int], realVal:Int =&amp;gt; Int)metodu birinci parametre olarak toplanacak sayıların tutulduğu integer listesini aldı. İkinci parametre olaraksa realVal ismindeki, dışarıdan tek parametreli Int değeri alan ve geriye Int değer döndüren bir kod bloğu verildi. Bu sayede realVal’ı bundan sonra realVal(a) şeklinde kullanabiliyor olduk.&lt;/li&gt;
  &lt;li&gt;Eğer parametre realVal : (Int,Int)  =&amp;gt; String olarak tanımlanmış olsaydı, vereceğimiz kod bloğu iki parametre alan ve String döndüren bir kod bloğu olmalıydı.&lt;/li&gt;
  &lt;li&gt;7. ve 9. satırlarda doğrudan çağırıldığı yere kod bloğu yerleştirildi.&lt;/li&gt;
  &lt;li&gt;8. ve 10. satırlarda ise, aynı görevi yapacak fonksiyonlar doğrudan parametre olarak yollandı.&lt;/li&gt;
  &lt;li&gt;11. satır hatalıdır. Çünkü çağırılacak fonksiyonun ismi bekleniyor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yukarıdaki kodun konsol çıktısı aşağıdaki gibi olur :
&lt;script src=&quot;https://gist.github.com/tolpp/da8cafcdbcf96b022682.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Bu sayede, tek bir toplama metodu ile birden fazla işi yapan toplama metoduna sahip olmuş olduk. Scala’nın sahip olduğu metodları incelerseniz, dışarıdan kod bloğu verebildiğiniz pek çok metod olduğunu görebilirsiniz.&lt;/p&gt;
</description>
        <pubDate>Mon, 11 Feb 2013 07:06:00 +0000</pubDate>
        <link>http://tolpp.com/scala-by-name-parameter-kullanimi/</link>
        <guid isPermaLink="true">http://tolpp.com/scala-by-name-parameter-kullanimi/</guid>
        
        <category>scala</category>
        
        
        <category>Scala</category>
        
      </item>
    
      <item>
        <title>Quick Sort (Hızlı Sıralama)</title>
        <description>&lt;p&gt;&lt;img class=&quot;alignright size-full wp-image-68&quot; title=&quot;Sorting_quicksort_anim&quot; alt=&quot;&quot; src=&quot;/assets/images/2011/04/Sorting_quicksort_anim.gif&quot; width=&quot;220&quot; height=&quot;168&quot; /&gt;
Quick sort (hızlı sıralama) sıralama algoritması, parçala ve çözümle (divide and conquer) mantığıyla çalışan, best-case &lt;strong&gt;O(nlogn)&lt;/strong&gt;, worst-case &lt;strong&gt;O(n^2)&lt;/strong&gt; zaman karmaşıklığı ile en çok kullanılan sıralama algoritmalarındandır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algoritmayı şu üç adımla inceleyebiliriz.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Liste içerisinden pivot olacak bir eleman seçilir.&lt;/li&gt;
  &lt;li&gt;Pivot değerden küçük olanlar pivottan önce, büyük olanlar pivottan sonra olacak şekilde elemanlar liste içerisinde yer değiştirilir.&lt;/li&gt;
  &lt;li&gt;Pivotun öncesindeki ve sonrasındaki değerler ayrı bir liste kabul edilip quick sort algoritması bu listeler için yeniden çalıştırılır.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pseudocode :&lt;/strong&gt;
&lt;script src=&quot;https://gist.github.com/tolpp/676593ce32b36974fb27.js&quot;&gt;&lt;/script&gt;
&lt;strong&gt;Java :&lt;/strong&gt;
&lt;script src=&quot;https://gist.github.com/tolpp/bcf7908f41f09ea258b2.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 04 Oct 2012 00:44:00 +0000</pubDate>
        <link>http://tolpp.com/quick-sort-hizli-siralama/</link>
        <guid isPermaLink="true">http://tolpp.com/quick-sort-hizli-siralama/</guid>
        
        <category>quicksort</category>
        
        
        <category>Algoritmalar</category>
        
      </item>
    
      <item>
        <title>Sieve of Eratosthenes (Eratosthenes'in Eleği)</title>
        <description>&lt;p&gt;Eratosthenes’in Eleği ya da diğer adıyla Eratosthenes’in Kalburu asal sayıların bulunması için kullanılan eski ve temel yöntemlerden biri.&lt;/p&gt;

&lt;p&gt;Algoritma gerçekten bir elek mantığıyla çalışıyor. &lt;strong&gt;N&lt;/strong&gt; sayısına kadar tüm asalları bulmak istediğimizde, en küçük asaldan başlayarak bu asalların tüm katları &lt;strong&gt;asal değil&lt;/strong&gt; olarak işaretleniyor. &lt;strong&gt;N&lt;/strong&gt; sayısına kadar tüm dizi dolaşıldığında &lt;strong&gt;asal değil&lt;/strong&gt; olarak işaretlenmeyen tüm sayılar da asal oluyor.&lt;/p&gt;

&lt;p&gt;Algoritmanın daha iyi anlaşılabilmesi ve görsel için : &lt;a href=&quot;http://tr.wikipedia.org/wiki/Eratosten_kalburu&quot;&gt; (Vikipedi) Eratosten kalburu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pseudocode :&lt;/strong&gt;
&lt;script src=&quot;https://gist.github.com/tolpp/246f9813c71d92bfd124.js&quot;&gt;&lt;/script&gt;
&lt;strong&gt;Java :&lt;/strong&gt;
&lt;script src=&quot;https://gist.github.com/tolpp/cef616c3668714091ca2.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;!--Bu yazı &lt;a href=&quot;http://tolpp.com/ogrenme-notlari/&quot;&gt;öğrenme notları&lt;/a&gt;‘nın bir parçasıdır. --&gt;
</description>
        <pubDate>Thu, 27 Sep 2012 14:31:00 +0000</pubDate>
        <link>http://tolpp.com/sieve-of-eratosthenes-eratosthenesin-elegi/</link>
        <guid isPermaLink="true">http://tolpp.com/sieve-of-eratosthenes-eratosthenesin-elegi/</guid>
        
        <category>algoritmalar</category>
        
        <category>algorithm analysis</category>
        
        
        <category>Algoritmalar</category>
        
      </item>
    
      <item>
        <title>Consecutive Integer Checking Algorithm ile GCD hesabı</title>
        <description>&lt;p&gt;Consecutive Integer Checking Algorithm (Ardışık Tamsayı Kontrol Algoritması) EBOB hesabı için kullanılabilecek diğer algoritmalardan.&lt;/p&gt;

&lt;!--&lt;a href=&quot;http://tolpp.com/category/ders/algorithm-analysis/&quot;&gt;Algorithm Analysis&lt;/a&gt; dersinde işlenenleri &lt;a href=&quot;http://tolpp.com/ogrenme-notlari/&quot;&gt;notlar şeklinde alacağım&lt;/a&gt; demiştim. Ancak bildiğim ve sıkıcı algoritmalar üzerinde bu kadar durmayı düşünmüyordum. Ama yine de,--&gt;

&lt;p&gt;Algoritmanın çalışma mantığı şu :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;m&lt;/strong&gt; ve &lt;strong&gt;n&lt;/strong&gt; şeklinde EBOB değeri bulunacak iki tamsayımız olsun. Bunlardan küçük olan değer &lt;strong&gt;t&lt;/strong&gt; olarak seçilir. Her iki sayı da &lt;strong&gt;t&lt;/strong&gt;‘ye bölünür. Eğer kalan 0 ise EBOB değeri &lt;strong&gt;t&lt;/strong&gt;‘dir. Değilse &lt;strong&gt;t&lt;/strong&gt; değeri sürekli bir azaltılarak bölme işlemi yinelenir. Yani ;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;t&lt;/strong&gt; ‘ye &lt;em&gt;min&lt;/em&gt;{&lt;strong&gt;m&lt;/strong&gt;, &lt;strong&gt;n&lt;/strong&gt;} değerini ata.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;m&lt;/strong&gt;‘yi &lt;strong&gt;t&lt;/strong&gt;‘ye böl. Kalan 0 ise 3. adıma değilse 4.adıma geç.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;n&lt;/strong&gt;‘yi &lt;strong&gt;t&lt;/strong&gt;‘ye böl. Kalan 0 ise EBOB değeri olarak &lt;strong&gt;t&lt;/strong&gt;‘yi döndür.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;t’&lt;/strong&gt;yi bir azalt ve 2.adıma dön.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pseudocode:
&lt;script src=&quot;https://gist.github.com/tolpp/e897f60cf28734f51231.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Java :
&lt;script src=&quot;https://gist.github.com/tolpp/a55487fcc7aaa3ae44b6.js&quot;&gt;&lt;/script&gt;
&lt;!--Bu yazı [öğrenme notları](/ogrenme-notlari/)'nın bir parçasıdır.--&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 26 Sep 2012 01:55:00 +0000</pubDate>
        <link>http://tolpp.com/consecutive-integer-checking-algorithm-ile-gcd-hesabi/</link>
        <guid isPermaLink="true">http://tolpp.com/consecutive-integer-checking-algorithm-ile-gcd-hesabi/</guid>
        
        <category>algorithms</category>
        
        
        <category>Algoritmalar</category>
        
      </item>
    
      <item>
        <title>Euclid Algoritması (Euclid's algorithm)</title>
        <description>&lt;p&gt;Euclid Algoritması en büyük ortak böleni (EBOB)[GCD (Greatest Common Divisor )] bulmak için kullanılabilecek en etkin algoritmalardan biridir. &lt;script type=&quot;math/tex&quot;&gt;O((logn)^2)&lt;/script&gt; zaman karmaşıklığına sahiptir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ebob(m, n) = ebob(n, m mod n)&lt;/strong&gt; ‘i doğrulayacak şekilde çalışır.&lt;/p&gt;

&lt;p&gt;Pseudocode ile :
&lt;script src=&quot;https://gist.github.com/tolpp/994ed969e13695675cde.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Java kodu :
&lt;script src=&quot;https://gist.github.com/tolpp/90c3aa4649705ac43475.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;!--Bu yazı [öğrenme notları]()--&gt;
</description>
        <pubDate>Wed, 26 Sep 2012 01:28:00 +0000</pubDate>
        <link>http://tolpp.com/euclid-algoritmasi-euclids-algorithm/</link>
        <guid isPermaLink="true">http://tolpp.com/euclid-algoritmasi-euclids-algorithm/</guid>
        
        <category>gcd</category>
        
        <category>euclid</category>
        
        
        <category>Algoritmalar</category>
        
      </item>
    
      <item>
        <title>Solr “Undefined field text” hatası</title>
        <description>&lt;p&gt;org.apache.solr.common.SolrException: undefined field text şeklinde bir hata alıyorsanız muhtemelen schema.xml içerisinde tanımlanmamış bir “text” fieldını solrconfig.xml içerisinde kullanmanızdan kaynaklanıyordur.&lt;/p&gt;

&lt;p&gt;Yeni başlayan çoğu insan gibi ben de Solr ile beraber gelen example üzerinden gitmiştim. Kendi yapıma uygun şekilde schema.xml dosyası içerisinde tüm değişiklikleri tamamladım.”text” isimli bir field’a ihtiyacım olmadığından da schema.xml içerisinden kaldırdım.  Ancak solrconfig.xml içerisinde default search field olarak text atandığından bulunamayan “text ” field’ı için exception yemeye başladım.&lt;/p&gt;

&lt;p&gt;Siz de example üzerinde değişiklik yapmşsanız soruna şu iki şey sebebiyet veriyor olabilir :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;solrconfig.xml içerisinde&amp;lt;str name=”qf”&amp;gt; vb.  tagler içerisinde value olarak text kullanılması.&lt;/li&gt;
  &lt;li&gt;schema.xml içerisinde copyField vb. olarak text kullanılması.
Yani işin özü yaratmamış olduğunuz text field’ını herhangi bir yerde kullanmamanız gerekiyor.&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Thu, 26 Jul 2012 01:55:00 +0000</pubDate>
        <link>http://tolpp.com/solr-undefined-field-text-hatasi/</link>
        <guid isPermaLink="true">http://tolpp.com/solr-undefined-field-text-hatasi/</guid>
        
        <category>solr</category>
        
        <category>apache</category>
        
        
        <category>Tools</category>
        
      </item>
    
      <item>
        <title>Java Configurations Dosyası ve Properties</title>
        <description>&lt;p&gt;Konfigurasyon dosyaları, sonradan düzenlenebilir çeşitli ayar verilerine ve pek değişmeyeceği düşünülen bağlantı verilerine sonradan kolayca erişilebilip kod üzerinde oynamaksızın programın işleyişini değiştirmek amacıyla kullanabileceğimiz dosya yapılarıdır. Buradaki verilere java.util.Properties sınıfını kullanarak ulaşılabilir.&lt;/p&gt;

&lt;p&gt;Kolay bir örnek dosya aşağıdaki gibidir.
&lt;script src=&quot;https://gist.github.com/tolpp/8d1d3548df9f91cbbdbe.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;İşlem sonrasında config.properties dosyasının içeriği de aşağıdaki gibi olacaktır :&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;dbpassword=password
database=default
dbuser=root
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Thu, 21 Jun 2012 23:30:00 +0000</pubDate>
        <link>http://tolpp.com/java-configurations-dosyasi-ve-properties/</link>
        <guid isPermaLink="true">http://tolpp.com/java-configurations-dosyasi-ve-properties/</guid>
        
        <category>java</category>
        
        
        <category>Java</category>
        
      </item>
    
      <item>
        <title>System Calls (Sistem Çağrıları)</title>
        <description>&lt;p&gt;Sistem çağrıları  OS tarafından servisler için sağlanan arayüzdür.  Doğrudan donanıma erişenler gibi düşük seviye görevler (tasks) assembly dilinde instructionlar içerdiği halde genellikle C, C++ dilleriyle yazılmışlardır. System call’lar sayesinde yazılımcı doğrudan donanıma müdahale etmez. Donanım üzerinde gerçekleştireceği işlemi system call kullanarak gerçekleştirir. Bu sayede olası sistem haatalarından kaçınılmış olur.&lt;/p&gt;

&lt;p&gt;System call’ların da, sistemden sisteme değişiyor olması yazılımcının işini zorlaştırır. Bu değişiklik, bir OS için yazılan programın başka bir OS üzerinde çalışamamasına sebep olur. Bu yüzden programcılar, doğrudan sistem call’lar yerine application program interface(API) kullanmayı tercih ederler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neden API kullanılır?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;API'ler programın her sistem üzerinde çalışabilmesini sağlar.&lt;/li&gt;
	&lt;li&gt;API kullanımı, her sistemin system call'larını ezbere bilmeyi gerektirmez.&lt;/li&gt;
	&lt;li&gt;Birden fazla sistem işlemini kısa fonksiyonlarla yapabilmeyi sağlar. Programcı API fonksiyonunun içeriğiyle ilgilenmez. Fonksiyonun parametrelerini ve dönüş değerini bilmesi yeterlidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;API’lerin programlamayı oldukça kolaylaştırdığı doğrudur. Ancak daha spesifik işlemler için system call’ları kullanmak gerekebilir.&lt;/p&gt;
&lt;h3&gt;System Call Tipleri&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Process Control (Süreç Kontrolü)&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;bitirme, iptal etme&lt;/li&gt;
	&lt;li&gt;yükleme, çalıştırma&lt;/li&gt;
	&lt;li&gt;create process(süreç yaratma), terminate process(süreç sonlandırma)&lt;/li&gt;
	&lt;li&gt;process attributelerini getirme, process'e attribute atama&lt;/li&gt;
	&lt;li&gt;belli bir süre bekleme&lt;/li&gt;
	&lt;li&gt;bekleme event'ı, sinyal event'ı&lt;/li&gt;
	&lt;li&gt;memory bölgesini allocate, free işlemleri&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;File Management (Dosya Yönetimi)&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;dosya yaratma, dosya silme&lt;/li&gt;
	&lt;li&gt;açma, kapama&lt;/li&gt;
	&lt;li&gt;okuma, yazma, konumunu değiştirme(reposition)&lt;/li&gt;
	&lt;li&gt;dosya attributelerini getirme, atama&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Device Management (Aygıt Yönetimi)&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;request device, release device&lt;/li&gt;
	&lt;li&gt;okuma, yazma, reposition&lt;/li&gt;
	&lt;li&gt;device attributelerini getirme, atama&lt;/li&gt;
	&lt;li&gt;mantıksal olarak aygıtları ilişkilendirmek, ayırmak&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Information Maintenance (Bilgilendirme Hizmeti)&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;zamanı veya tarihi getirme, atama&lt;/li&gt;
	&lt;li&gt;sistem verisini getirme, atama&lt;/li&gt;
	&lt;li&gt;process, dosya veya device attributelerinin getirilmesi, atanması&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Communications (İletişim)&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;iletişim bağlantısının yaratılması, silinmesi&lt;/li&gt;
	&lt;li&gt;mesaj alma, gönderme&lt;/li&gt;
	&lt;li&gt;durum bilgisinin transferi&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Protection (Koruma)&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;dosyaların yazma, okuma, çalıştırma izinleri&lt;/li&gt;
	&lt;li&gt;kullanıcıların system call'lar üzerindeki yetkileri&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Kaynak : Operating System Concepts ~ Eight Edition (s55-s60)&lt;/em&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 31 Mar 2012 02:51:00 +0000</pubDate>
        <link>http://tolpp.com/system-calls-sistem-cagrilari/</link>
        <guid isPermaLink="true">http://tolpp.com/system-calls-sistem-cagrilari/</guid>
        
        <category>os</category>
        
        <category>operating system</category>
        
        <category>işletim sistemi</category>
        
        
        <category>Operating Systems</category>
        
      </item>
    
      <item>
        <title>OS Services (İşletim Sistemi Servisleri)</title>
        <description>&lt;p&gt;Bir OS, programların çalışması için uygun bir çevre sağlar. Bunun için de OS çeşitli servislere ihtiyaç duyar. Bazı özelleşmiş servisler işletim sisteminden işletim sistemine farklılık gösterebilir. Ancak genel hatlarıyla bir işletim sisteminin sağladığı servisler şöyledir :&lt;a href=&quot;/assets/images/2012/01/os-scheme.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;alignright size-medium wp-image-286&quot; title=&quot;os-scheme&quot; src=&quot;/assets/images/2012/01/os-scheme-300x247.png&quot; alt=&quot;OS scheme with services&quot; width=&quot;300&quot; height=&quot;247&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Interface :&lt;/strong&gt; Kullanıcıların işletim sistemine ne yapmak istedikleri arayüzdür. Neredeyse tüm işletim sistemleri user interface(UI) içerir. Bazı UI türleri :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;em&gt;Command-line interface (CLI) :&lt;/em&gt; Komutların yazı olarak girildiği UI türüdür. Günümüzde neredeyse tüm işletim sistemleri tarafından kullanılır. Örneğin windows için run -&amp;gt; cmd diyerek ulaşılabilir. Linux’ta terminal veya console olarak görülebilir.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Batch interface :&lt;/em&gt; Yapılacak işlemlerin daha önceden dosyalara kaydedildiği UI türü. İşletim sistemine dışarıdan içi komut dolu dosya verilir ve işletim sistemi bu komutları işler.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Graphical User Interface (GUI) :&lt;/em&gt; En çok kullanılan arayüz şeklidir. Arayüz kullanıcıya pencereler şeklinde gösterilir. Menüleri seçmek, pencerelerde dolaşmak, komutlar vermek için fare gibi nokta belirleyen aygıtlar kullanılır. Klavye ise text girişi vb için kullanılır. Windows, Mac OS X, bazı Linux sürümleri (KDE, Gnome … kullanan) GUI kullanır.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Program Execution :&lt;/strong&gt; Sistem programları belleğe yükleyebilmeli ve yüklediği bu programları çalıştırabilmelidir. Ayrıca bu programlar normal veya normal olmayan yollardan (ör : Hata vererek) sonlanabilmelidir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I/O Operations :&lt;/strong&gt; Çalışan bir program bir aygıttan veya bir dosyadan girdi/çıktı yapmak isteyebilir. I/O işleminin etkin ve güvenli bir şekilde yapılabilmesi için işlem doğrudan kullanıcı tarafından yapılmamalıdır. Bu da işletim sistemlerin I/O desteği vermesini gerekli kılar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File-System Manupilation :&lt;/strong&gt; Bir program dosyaları okumak, yazmak; klasörler içerisinde dolaşmak veya dosyaları, klasörlerı oluşturmak, silmek, adlandırmak, isimlerine göre arama yapmak, bilgileri görüntülemek isteyebilir. Bazı programlar dosyayı sahiplenerek dosya, klasör yönetimi hakkına sahip olabilir. Çoğu OS çeşitli file system sunar. Bu seçim kişinin kişisel seçimine veya bazı özelliklere ve performansa bağlı olarak yapılabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communications :&lt;/strong&gt; Sistemdeki bir process bir başka process ile iletişime geçmek isteyebilir. Bu iki process aynı bilgisayarda veya ağ üzerindeki farklı bilgisayarlarda olabilir. Processler arasındaki iletişim &lt;em&gt;shared memory&lt;/em&gt; veya &lt;em&gt;message passing&lt;/em&gt; yöntemlerinden biri ile gerçekleştirilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error detection :&lt;/strong&gt; OS, oluşabilecek hataların sürekli farkında olmalıdır. Her tür hata için OS doğruluğu ve tutarlılığı sağlamak için uygun işlemi yapmalıdır. Oluşabilecek bazı örnek hatalar :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;CPU ve Bellek hataları : Belleğe erişememe, gücün kesilmesi…&lt;/li&gt;
  &lt;li&gt;I/O Aygıtı hataları : bellek aygıtı üzerindeki parity hataları, ağ üzerindeki bağlantının kesilmesi, yazıcıya kağıt sıkışması…&lt;/li&gt;
  &lt;li&gt;User Program Hataları : Aritmetik taşmalar, kendine ait olmayan bir bellek bölgesine erişmeye çalışmak, çok fazla CPU kullanımı …&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Resource Allocation :&lt;/strong&gt; Birçok kullanıcı veya birçok görevin (task/job) aynı anda çalıştığı sistemlerde, her biri için kaynaklar ayrılmalıdır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accounting :&lt;/strong&gt; Hangi kullanıcının ne kadar kaynak kullandığı, hangi kaynakları kullandığı gibi bilgilerin tutulması işlemidir. Bilgisayarın yeniden konfigüre edilmesi; donanımının, yazılımının güncellenmesi için gerekli olabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protection and Security :&lt;/strong&gt; Çok sayıda process eş zamanlı işletilirken, bir process’in diğer process işleyişine veya bir process’in işletim sisteminin işleyişine karışamıyor olması gereklidir. Bu yüzden bir process, başka bir process’in bellek bölgesine erişemez.&lt;/p&gt;

&lt;address&gt;Kaynak : Operating System Concepts ~ Eigthth Edition (s50,s51)&lt;/address&gt;
</description>
        <pubDate>Sat, 31 Mar 2012 02:51:00 +0000</pubDate>
        <link>http://tolpp.com/os-services-isletim-sistemi-servisleri/</link>
        <guid isPermaLink="true">http://tolpp.com/os-services-isletim-sistemi-servisleri/</guid>
        
        <category>os</category>
        
        <category>operating system</category>
        
        <category>işletim sistemi</category>
        
        
        <category>Operating Systems</category>
        
      </item>
    
  </channel>
</rss>
