﻿
{"id":5092,"date":"2016-10-08T09:24:41","date_gmt":"2016-10-08T09:24:41","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=5092"},"modified":"2016-10-08T09:24:41","modified_gmt":"2016-10-08T09:24:41","slug":"storage-kavrami-nedir","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/storage-kavrami-nedir\/","title":{"rendered":"Storage Kavram\u0131 Nedir?"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu g\u00fcne kadar sizlere yazd\u0131\u011f\u0131m makalelerde, \u00e7ekti\u011fim g\u00f6rsel derslerde veyahut birebir verdi\u011fim derslerde s\u00fcrekli Stack yahut Heap gibi bellek kavramlar\u0131ndan bahsettim. Ne yaz\u0131k ki bu kavramlar \u00fczerinde geni\u015f bir anlat\u0131m veya di\u011fer bellek yerlerine at\u0131fta bulunma gibi bir yeltenmede bulunmad\u0131m. Bu makalemizde belle\u011fin bir tek Stack ve Heap k\u0131s\u0131mlar\u0131ndan ibaret olmad\u0131\u011f\u0131n\u0131 anlayacak di\u011fer k\u0131s\u0131mlarla birlikte t\u00fcm bellek anatomisine hakim olaca\u011f\u0131z. Storage, nesnelerin bellekteki yerini ifade etti\u011fimiz kavramd\u0131r. Hadi gelin \u015fimdi belle\u011fimiz hangi b\u00f6l\u00fcmlerden olu\u015fmaktaym\u0131\u015f detayl\u0131ca inceleyelim&#8230;<\/p>\n<h2><span style=\"color: #0000ff;\">Stack B\u00f6lgesi<\/span><\/h2>\n<p>Stack b\u00f6lgesi, de\u011fi\u015fkenlerimizin t\u00fcr\u00fcne g\u00f6re i\u015flem ger\u00e7ekle\u015ftiren bir yap\u0131ya sahiptir. E\u011fer elimizdeki de\u011fi\u015fken bir <em>De\u011fer Tipli(Value Type)<\/em> de\u011fi\u015fken ise de\u011fi\u015fkenin ad\u0131n\u0131 ve de\u011ferini tutmaktad\u0131r. Yok e\u011fer de\u011fi\u015fkenimiz Referans <em>Tipli(Reference Type)<\/em> de\u011fi\u015fken ise de\u011fi\u015fkenin sadece referans\u0131n\u0131 tutmakta, e\u011fer o referans\u0131n varsa i\u015faret etti\u011fi bir nesne Heap b\u00f6lgesinde tutulmaktad\u0131r.<\/p>\n<h2><span style=\"color: #0000ff;\">Heap\u00a0B\u00f6lgesi<\/span><\/h2>\n<p>C# programlama dilinde olu\u015fturdu\u011fumuz nesneler bu alanda tutulmaktad\u0131r. Bu alandaki nesnelere Stack b\u00f6lgesindeki referans arac\u0131l\u0131\u011f\u0131yla eri\u015febilmekteyiz. &#8220;new&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fcyle Heap b\u00f6lgesinde nesne \u00fcretebilmekteyiz. Stack b\u00f6lgesi, sadece referans yahut de\u011fer tipli de\u011fi\u015fkenleri tuttu\u011fundan dolay\u0131 Heap b\u00f6lgesine nazaran daha h\u0131zl\u0131 \u00e7al\u0131\u015fmaktad\u0131r.<\/p>\n<h2><span style=\"color: #0000ff;\">Register\u00a0B\u00f6lgesi<\/span><\/h2>\n<p>Stack ve Heap b\u00f6lgelerine nazaran olduk\u00e7a h\u0131zl\u0131 olan Register b\u00f6lgesine mikroi\u015flemci di\u011fer alanlara nazaran kat be kat daha h\u0131zl\u0131 eri\u015febilmektedir. De\u011fi\u015fkenlerin de\u011feri belle\u011fe de\u011fil Register b\u00f6lgesine g\u00f6nderilip haliyle ilgili de\u011fi\u015fken \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 zaman de\u011feri i\u00e7in her defas\u0131nda belle\u011fe gidilmez, direkt olarak Register b\u00f6lgesinden de\u011feri al\u0131nabilir. Buda bize performans ve maliyet a\u00e7\u0131s\u0131ndan olumlu neticeler do\u011furmaktad\u0131r.<\/p>\n<p>Hatta\u00a0<a href=\"http:\/\/www.gencayyildiz.com\/blog\/cta-volatile-anahtar-sozcugu\/\" target=\"_blank\">C#\u2019ta volatile Anahtar S\u00f6zc\u00fc\u011f\u00fc<\/a>\u00a0ba\u015fl\u0131kl\u0131 yaz\u0131mda Data Register b\u00f6lgesinin bu art\u0131s\u0131ndan dolay\u0131 do\u011fabilecek olas\u0131 hatay\u0131 ortadan kald\u0131rmak i\u00e7in volatile anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fc kullanmaktay\u0131z. Nihayetinde bir de\u011fi\u015fkenin de\u011feri direkt olarak belle\u011fe yans\u0131t\u0131l\u0131r lakin Register alan\u0131nda eski de\u011fer tutuluyor olabilir. Tabi o de\u011fi\u015fkeni \u00e7a\u011f\u0131rd\u0131\u011f\u0131m\u0131zda Register&#8217;da ki eski de\u011ferine ula\u015fmam\u0131z mikrosaniyelik i\u015f gerektirdi\u011fi i\u00e7in d\u00fc\u015f\u00fck ihtimaldir ama\u00a0asenkron bir yakla\u015f\u0131m sergiliyorsak bu ihtimal g\u00fc\u00e7lenmektedir. \u0130\u015fte b\u00f6yle bir durumda derleyici ve mikroi\u015flemcinin insaf\u0131na kalmaktansa olas\u0131 hatalara mahal vermemek i\u00e7in mikroi\u015flemcinin ilgili de\u011fi\u015fkenin de\u011ferini Register&#8217;dan de\u011fil bellekten okumas\u0131n\u0131 isteriz.<\/p>\n<h2><span style=\"color: #0000ff;\">Static\u00a0B\u00f6lge<\/span><\/h2>\n<p>Programlama s\u00fcrecinde kullanaca\u011f\u0131m\u0131z elemanlarda nesnelere ihtiyac\u0131m\u0131z yoksa ilgili eleman\u0131 static olarak i\u015faretliyorduk. Haliyle bu elemanlar s\u0131n\u0131f isimleri \u00fczerinden eri\u015filebilir yap\u0131lar haline geliyordu. Bir eleman static olarak ayarlan\u0131yorsa ve nesne olmadan \u00e7al\u0131\u015ft\u0131r\u0131l\u0131yorsa bir yerde fiziksel olarak bu eleman tutulmal\u0131d\u0131r. \u0130\u015fte o alan Static b\u00f6lgesidir. Bellekte herhangi bir sabit b\u00f6lgedir diyebiliriz.<\/p>\n<p>Bir nesne olu\u015fturup, nesne \u00fczerinden bir metodu \u00e7al\u0131\u015ft\u0131rabiliriz. Lakin o nesneyle i\u015fimiz bitti\u011fi yahut fiziksel olarak sildi\u011fimiz vakit nesnenin ya\u015fam d\u00f6ng\u00fcs\u00fc program\u0131n \u00e7al\u0131\u015fma s\u00fcrecinin belirli bir par\u00e7as\u0131n\u0131 te\u015fkil etmektedir. Ama metodumuzu static olarak belirlersek Static b\u00f6lgede tutulaca\u011f\u0131 i\u00e7in bu metod program\u0131n t\u00fcm \u00e7al\u0131\u015fma s\u00fcrecinde fiziksel olarak bulunacakt\u0131r.<\/p>\n<h2><span style=\"color: #0000ff;\">Constant\u00a0B\u00f6lge<\/span><\/h2>\n<p>C#&#8217;ta\u00a0const anahtar s\u00f6zc\u00fc\u011f\u00fcyle olu\u015fturdu\u011fumuz sabit de\u011fi\u015fkenlerin tutuldu\u011fu alan Constant alan\u0131d\u0131r. Bu de\u011fi\u015fkenler sadece okunabilir olduklar\u0131ndan dolay\u0131 de\u011ferleri de\u011fi\u015ftirilemez. Ee do\u011fal olarak <em>ROM(Read Only Memory)<\/em>&#8216;de tutulurlar.<\/p>\n<h2><span style=\"color: #0000ff;\">RAM Olmayan\u00a0B\u00f6lge<\/span><\/h2>\n<p>Bildi\u011finiz HardDisk, Flash Bellek vs. gibi bellek t\u00fcrleridir.<\/p>\n<p>Bellek kavramlar\u0131n\u0131 teorik olarak bilmek, yap\u0131lar\u0131n nerede ne ama\u00e7la \u00fcretildi\u011fini daha geni\u015f kapsaml\u0131 kavrayabilmeye yaramaktad\u0131r. Ayriyetten her zaman s\u00f6yledi\u011fim gibi;<\/p>\n<blockquote><p><strong><span style=\"color: #808080;\">Programlamada teorik bilgi, pratik bilgiyi destekler&#8230;<\/span><\/strong><\/p><\/blockquote>\n<p>O y\u00fczden yapt\u0131\u011f\u0131n\u0131z ve yapaca\u011f\u0131n\u0131z \u00e7al\u0131\u015fmalarda teorik bilgi sizin esas klavuzunuz olacakt\u0131r.<\/p>\n<p>Bol bol faydalanman\u0131z dile\u011fiyle&#8230;<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>&nbsp;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu g\u00fcne kadar sizlere yazd\u0131\u011f\u0131m makalelerde, \u00e7ekti\u011fim g\u00f6rsel derslerde veyahut birebir verdi\u011fim derslerde s\u00fcrekli Stack yahut Heap gibi bellek kavramlar\u0131ndan bahsettim. Ne yaz\u0131k ki bu kavramlar \u00fczerinde geni\u015f bir anlat\u0131m veya di\u011fer bellek&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,11,600,12,338,720],"tags":[1475,1485,1484,1478,1250,1480,1474,1489,1488,1487,1479,1261,1482,1481,1486,1477,1476,1060,1483,1472,1473,1260,1393],"class_list":["post-5092","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net","category-asp-net-mvc","category-asp-net-mvc-5","category-c-sharp-c","category-c-5-0","category-c-6-0","tag-bellegin-anatomisi","tag-constant","tag-constant-bolge","tag-deger-tipli","tag-heap","tag-heap-bolgesi","tag-nesnelerin-bellekteki-yeri","tag-ram","tag-ram-olmayan-bolge","tag-read-only-memory","tag-referans-tipli","tag-reference-type","tag-register","tag-register-bolgesi","tag-rom","tag-stack","tag-stack-bolgesi","tag-static","tag-static-bolge","tag-storage","tag-storage-kavrami","tag-value-type","tag-volatile"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=5092"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5092\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=5092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=5092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=5092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}