KUDA: GPU Hızlandırılmış Ayrık Yarış Durumu Denetleyici

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "KUDA: GPU Hızlandırılmış Ayrık Yarış Durumu Denetleyici"

Transkript

1 KUDA: GPU Hızlandırılmış Ayrık Yarış Durumu Denetleyici Ü. Can Bekar 1, Tayfun Elmas 2, Semih Okur 3, Serdar Taşıran 1 1. Bilgisayar Mühendisliği Bölümü Koç Üniversitesi {ucbekar, 2. Bilgisayar Mühendisliği Bölümü University of California, Berkeley, USA 3. Bilgisayar Mühendisliği Bölümü University of Illinois at Urbana-Champaign, USA Özetçe Bu bildiride özgün bir çalışma zamanı doğrulama çerçevesini sunuyoruz. Yaklaşımımızdaki ana amaç, geleneksel yarış durumu denetleyicilerindeki işletim yüklerini ayırıp, bilgisayarlarımızda bulunan donanımsal olanakları kullanarak, halihazırdaki çalışma zamanına koşut çalışan, koşutlu doğrulama yapmaktır. Bu yüzden çerçevemizi çok çekirdekli işlemcilere (CPU) ve grafik işlemcisine (GPU) sahip kişisel bilgisayarlara herhangi bir donanım eklemesi gerekmeksizin gerçekleştirdik. Çalışmamızdaki ana yenilik, koşutzamanlı bir programın güvenilirlik özelliklerinin grafik işlemcideki iş parçacıklarında denetlenmesinin ilk olarak öne sürülmesi ve bunun için gerekli tekniklerin ve algoritmaların tasarlanmasıdır. Daha önce bu denetlemenin tamamı merkezi işlem ünitesi üzerinde gerçekleşmekteydi, ve denetleyicinin iş parçacıklarının denetlenen programın iş parçacıklarıyla aynı işlemci üzerinde koşması programın başarımını önemli ölçüde düşürmekteydi. Denetleyicilerdeki işletim yükünü ikiye ayırıyoruz: (i) gözlemleme ve (ii) denetleme yükleri. Detaylı inceleyeceğimiz bu yazılım çerçevesi, ayırdığımız iki işletim yükünü farklı işlemcilere paylaştırmaktadır. Sonuç olarak, denetlenen koşutzamanlı programın başarımı, yalnızca gözlemleme ve bu gözlemin öteki işlemciye aktarımından kaynaklanan işletim yüklerinden dolayı etkilenir. Bazı ek donanım destekleriyle gözlemleme yükünü hafifleten benzer çalışmalar da literatürde bulunmaktadır. Sunacağımız çerçevenin ön ürünü olan KUDA birimlerimizle yaptığımız deneylerimiz, farklı işlemcideki iş parçalarında koşut zamanda yarış durumlarını (data race) denetlemek, denetlenen koşutzamanlı program ile çok yakın zamanlı (birkaç milisaniye mertebesinde gecikmeyle) çalıştığını göstermektedir. Bu sonuç ile, çerçevemizin yarış durumlarını denetlemekten de öte, hatadan geri dönmek için kullanılabilmesinin mümkün olduğunu anlıyoruz. KUDA da henüz yarış durumlarına odaklandık, ancak ileride koşut zamanlı programların diğer koşut zaman hataları ve bellek hataları gibi farklı güvenilirlik özelliklerini de denetlemesini sağlayabiliriz. Çerçevemizde merkezi işlem ünitesinde çalışan koşut zamanlı programın gözlenmesi ile iş parçacıklarından toplanan çalışma izi bloklamayan bir veri yapısında biriktirilip grafik işlemcisine aktaran bir iş parçası çalıştırıp, çok sayıda görüntü işlemcisi çekirdeği kullanan koşut zamanlı denetleme birimlerimizde denetliyoruz. KUDA, koşutzamanlı çalışan 2 popüler denektaşı takımlarındaki tüm uygulamalarda yaşanmakta olan başarım kaybını (yalnızca bir denektaşı programı hariç tutulması kaydıyla) en az 3 kat azaltmaktadır. 1. Giriş yıl öncesine kadar belirli kullanım alanlarının dışında pek rastlanamayan koşutzamanlı programlar, donanım bazlı teknolojik ilerlemelerin fiziksel sınırlara ulaşması ve bilişim sektörünün süregelen taleplerini zorlamaya başlamasından kaynaklanan başarım problemlerine cevaben kısa sürede yaygınlaşmıştır. Günümüzde koşutzamanlı (concurrent) programlar artık her alanda karşımıza çıkmaktadır. Fakat koşutzamanlı programların uzun süre kısıtlı alanlarda (örneğin işletim sistemi çekirdekleri) kullanılıp uygulama programları pazarına çıkmamasının çok geçerli bir sebebi vardı. Koşutzamanlı çalışmaya özgü hatalardan arınmış koşutzamanlı programlar yazmak zordu. Bu hatalardan en çok karşımıza çıkanı yarış durumlarıdır (data race). Bazı çok özel durumlar hariç, genelde bütün yarış durumları, programlayıcının niyeti dışında oluşur. Bir programın iş parçacıkları (thread), çalıştığı işletim sisteminin zaman planı uygulayıcısının (scheduler) farklı çalışma zamanlarında farklı sıralamalar uygulamasından ötürü koşutzamanlı hatalar, sıralı programlardaki hataların aksine, tekrar ettirilip sebebi bulunsa dahi ayıklanması oldukça güç hatalardır. Koşutzamanlı programların güvenilirliğini doğrulamanın bir yolu yarış durumlarını dinamik denetlemektir. Dinamik denetleyiciler yalnızca çalışma zamanında oluşan hataları denetleyebilir. Yarış durumu, çalışma zamanında iki veya daha çok iş parçacığının tek bir bellek konumuna, en az bir yazma işlemi yapmaları ve bu işlemlerin sırasının hata oluşmayacak şekilde zamanlanmamış olmasından dolayı oluşur. Günümüzde yaygın olarak kullanılan, ticari dinamik yarış durumu denetleyicilerinin çalışmakta olan koşutzamanlı programların başarımına etkisinin 300 kat yavaşlamalara kadar erişmesi beklenmedik bir durum değildir. Bizim yaklaşımımızdaki ana amaç, geleneksel yarış durumu denetleyicilerindeki işletim yüklerini ikiye ayırıp, ana işlemcide çalışan programı gözlemlerken bilgisayarlarımızda bulunan grafik işlemcisinde (GPU veya GİB) yarış durumlarını denetlemektir. Bu amacın temelinde iki hedefimiz vardı: (i) denetlenen programın iş parçacıklarının başarımını asgari etkilemesi ve (ii) denetleme birimlerimizin denetlenen programla eş hızlarda çalışması, yani aradaki oluşan farkın tahammül edilebilir olması. İlk hedefimizin temelinde, öne sürdüğümüz yaklaşımımızın modern denetleyicilere nazaran daha verimli bir çerçeve olduğunu özel donanım desteği kullanmadan olduğunu göstermek; ikinci hedefin temelinde ise, çerçevemizin sadece yarış durumlarını denetlemekten de öte, hatadan geri dönme için kullanılabilmesinin mümkün olduğunu göstermiş olmaktır. Eğer ikinci hedefimiz hiç olmasaydı, toplanacak olan çalışma izinin birikmesine izin verip, program sonlandıktan sonra grafik işlemcisine

2 yollayabilirdik; yani ikinci hedefimizi tutturmak için yapmamız gereken bu çalışma izinin birikmesini beklemeden işleme alabilmektir. Çerçevemizde denetlenen program ve denetleme programları farklı işlemci ve iş parçalarında çalışmaktadır. İki program birbiriyle paylaşımlı bellek ve mesajlaşma ile haberleşmektedir. Denetlenecek program sunduğumuz programlama arayüzünü kullanarak dinamik olarak çerçevemize özel gözlemleme fonksiyonlarını çağırır. Bunun için program kodu Pin gibi araçlar kullanılarak çalışma sırasında dinamik olarak değiştirilir. Gözlemleme fonksiyonlarımız içinde çalışma izlerini oluşturan olayların iletişimini sağlayan fonksiyonlar bulunur. Dolayısıyla gözlemleme fonksiyonlarıyla donatılan iş parçacıkları aynı zamanda gözlemlenecek olayları bloklamayan (nonblocking) veri yapısına koymakla yükümlüdür. İşlenenecek olayların birikimini asgariye indirebilmek için bu çalışma izlerini bloklara bölüp, çerçeve dediğimiz sabit uzunluktaki parçalarda denetleme yapıyoruz. Bu çerçeveler sırayla grafik işlemcisine aktarılıp olabildiğince koşutlu olarak denetleyici birimlerde, birbirlerinden bağımsız olarak kullanılır. Çerçevelerin birbirlerinden bağımsız olarak denetlenmesi, denetlememizin doğruluğunun (tüm hataları yakalayabilmesi) çerçevelerin uzunluğuyla ters orantılı olarak etkilenmesi riskini doğurmaktadır. Ancak denemelerimizde kullandığımız uzunluktaki çerçevelerde denetleme doğruluğunun düşmediği görülmektedir. Böylece modern yarış denetleyicilerin aksine, denetleme ve gözlemleme işletim yüklerinin ayrık ve koşutlu olması, denetlenen programın başarımının artarken denetimin hatalara hassasiyetinden feragat edilmesine ihtiyaç duyulmadığı anlamına gelmektedir. Modern denetleme programları, geleneksel olanlara nazaran, oldukça karmaşık olabilir, ancak bu işlem yükü başka bir işlemciye yüklendiğinden denetlenen programın başarımı daha fazla etkilenmemiş olur. Bu konuda yapılabilecek önemli bir gözlem, gözlemleme ve iletişim işletim yüklerinin özel donanım desteğiyle beraber göz ardı edilebilir mertebelere indirilebileceğidir [1]. Gösterge olması açısından geleneksel Eraser [2] ile modern Goldilocks [3] algoritmalarını çerçevemize uyarladık. Şaşırtıcı olarak, şimdiye dek kullanıcıların sıralı olarak (sequential) olarak çalıştırdığı bu algoritmaların grafik işlemcilerde çalıştırılan koşutzamanlı varyasyonları eskiden olduğundan daha basit bir hal aldı. Bunun sebebi çerçevelerin birbirinden bağımsız olması, dolayısıyla her denetleyicinin birbiriyle haberleşmeye veya eşzamanlı çalışmasına ihtiyaç duymamasıydı. Her denetleyici birim işlediği çerçeveye ayırdığı belleği çerçeveyi denetledikten sonra geri kullandığından bellek işletimine ve karmaşık veri yapılarının paylaşılmasına gerek kalmamıştır. Bu çerçeveyi Kuda adını verdiğimiz bir araçla gerçekleştirdik. Kuda aracı açık kaynaklı olup bağlantısında herkesin kullanımına açıktır. Koşutzamanlı programları dinamik olarak gözlemek için Pin [4] kütüphanesini kullanıyoruz, gözleme fonksiyonlarımız birer Pin aracı olarak gerçekleştirilmiştir. Denetleme birimlerimiz ise CUDA [5] kütüphanesiyle NVIDIA CUDA-destekli grafik işlemcilerde çalışmaktadır. Deneylerimizde denetlediğimiz koşutzamanlı program olarak PARSEC [6] ve SPLASH-2 [7] denektaşı program takımlarını kullandık. Denetleyici olarak Eraser ve Goldilocks yarış durumu tespit algoritmalarını seçtik, çünkü Eraser denetleyicisi basit ancak kesin (precise) olmayan, Goldilocks ise tam aksine kesinlik sunan ancak karmaşık olan bir denetleyicidir. Deneylerimizde iki ayrı yaklaşımı daha karşılaştırdık: (i) geleneksel yolla, yani denetlenen programla aynı merkezi işlemcide ve iş parçacıklarında çalışan Eraser denetleyicisi ve (ii) çerçevemiz kapsamında farklı işlemcide çalışan Goldilocks denetleyicisi. 2. Çalışma zamanı gözlemlemedeki zorluklar Bu bölümün amacı çalışma zamanında durum denetleyicilerinin tasarımındaki, özellikle koşutzamandan (concurrency) kaynaklanan başlıca zorlukları göstermektir. Bu zorlukları en kolay şekilde gösterebilmek için öncelikle meşhur ve basit bir yarış durumu denetleyicisini tanıtacağız Eraser yarış durumu denetleyici algoritması Eraser yaygın kullanılan bir kilit kümesi (lockset) tabanlı dinamik yarış durumu denetleme algoritmasıdır. Bu bölümde anlatımı basitleştirmek için kilit kümelerinin elemanlarını okuma ve yazma diye ayırt etmeyeceğiz. Yarış durumu, iki veya daha çok iş parçacığının (thread) tek bir bellek konumuna, en az bir yazma işlemi olmak üzere ulaşmaları ve bu işlemlerin sırasının hata oluşmayacak şekilde zamanlanmamış olmasından dolayı oluşur. Eraser ise bu durumu denetleyebilmek için program süresince paylaşılan her değişken x için ortak bir kilit zorlamaktadır. Eraser algoritması çalışma zamanında paylaşılan her x değişkeninin korunuyor gözüktüğü tüm kilitleri LS(x) adında kilit kümesi ve ayrıca her t iş parçacığının o an içinde tutmakta olduğu kilitler için de LH(t) kilit kümesini tutar. Yani LH(t) kümeleri yalnızca t iş parçacığının bir kilidi açması veya kapamasıyla güncellenir. Algoritma, x değişkenini korumakta olan kilitlerin varlığını, herhangi bir t iş parçacığının x e erişiminde LH(t) LS(x) işleminin sonucunu LS(x) e eşitleyerek tutar. LS(x) x e ilk erişimden önce tanımsızdır ve denetlenmekte olan koşutzamanlı programın bir iş parçacığı x e ilk erişim yaptığında evrensel kilit kümesine eşit olacak şekilde ilklenir. LS(x) i boş kümeye eşitleyen bir erişim sonrasında yarış durumu tespit edilmiş olur Çalışma zamanı gözlemlemenin işletim yükleri Eraser algoritmasının uygulanmasında (i) çalışma izini oluşturan olayları, kaynak kodu veya makina kodu gözlem araçlarıyla gözlemlemek ve (ii) bu gözlemden toplanan olayların kilit kümesi veri yapılarını güncellemesini yapmak ve bu yapıları bazı özelliklere uyduğunu devamlı kontrol etmek gerekir (örneğin, LS(x) kümesi boş küme mi?). (i) işi iki şekilde uygulanabilmektedir, (a) olay oluştuğunda derhal Eraser fonksiyonlarının çağırılması ve ya (b) olayların oluştukça, daha sonra denetlenmek üzere geçici olarak bağlı listeye kaydedilmesi. Denetleyici uygulamaların başarımını etkileyen iki ana işletim yükünden bahsedebiliriz: (i) Gözlemleme yükü, yani çalışma olay takibi ve (b) ye özel bu olayların bağlı listeye kaydının toplam yükü. Eraser algoritmasında, her paylaşımlı bellek olayları (shared memory operation) ve eşzamanlı olaylarını gözlemlemek gerekir. Olayların sayısı ve turu arttıkça gözlemleme yükü artar, dolayısıyla olayların frekansı arttıkça olağan çalışmanın aksamasına ve olayların kendi başlarına az zaman almasına rağmen başarım kaybına sebep olur. 5. bölümdeki deneylerimizin sonuçları gösteriyor ki başlı başına

3 koşutzamanlı programı gözlemleme (denetleme yükü yokken) işletim yükü 1.6 dan 7.1 e kadar ek yük bindirebilmektedir. (ii) Denetleme yükü, yani algoritma bazlı veri yapılarının güncellenip kontrol edilmesinin toplam yükü. Çalışma zamanı denetleme algoritmaları genellikle çalışma izinin tutulması/işlenmesi için denetlenen programın iş parçacıkları arasında paylaşılan bazı veri yapıları kullanır. Eraser algoritmasında kullanılan yapı kilit kümeleriydi. Diğer algoritmalar ise: bir değişkene erişen son iş parçasına imleç tutabilir ve buna ek olarak her iş parçası tarafından kullanılmak üzere her kilit için sanal saat vektörü (vector clock) de tutabilir. Bu veri yapılarına yapılacak koşutzamanlı erişimler ve işlemler oldukça yüksek frekansta olabilir, dolayısıyla eniyilenmemiş bir veri yapısı farklı denektaşı programlarında oldukça fazla başarım farkına yol açabilir. Eraser için düşünürsek, denetleme yapacak iş parçalarının kilit kümelerine erişmesi için öteki iş parçacıklarıyla paylaşılmakta olan kilit veya kilitleri açması gerekir. Bu da uzun kritik bölümlere (bölünmeden çalışması gereken olaylar dizisi) sebebiyet verir ve programın başarımını ciddi şekilde düşürür. Sonuç olarak, Eraser gibi basit ve hafif çalışma yüküne sahip bir yarış durumu denetleme algoritması bile oldukça düşük çalışma hızı ve bellek boyutu başarımlarina sahiptir. Düşük başarıma sebep olacak yazılım çerçeveleri de hiçbir zaman son tüketicinin kullanacağı programlara uygulanamaz. Yarış durumlarının en belirgin özelliği eğer denetlenmezler ise tekrar açığa çıkması için aynı program, aynı ortamda milyonlarca defa tekrar calistirilsa dahi tekrar gozlemlenmeyebilir. Bu da bilgisayarlarının başındaki kullanıcılara sebepsizce kapanan programlar olarak yansımaktadır. Biz, denetlemeden kaynaklanan işletim yükünü düşürebilmek için, öncelikle denetleyici algoritmaların iş yükünü denetlenen programın iş parçacıklarından ayırıp başka iş parçacıklarında, hatta başka işlemcilerdeki iş parçacıklarına yüklüyoruz. Çerçevemizde işlemci olarak grafik işlemcisine ait yüzlerce çekirdeği kullanmaktayız. Bu orijinal düşünceye sahip çerçevemizi gerçekleştirirken grafik işlemcisinde çalışacak olan denetleme algoritmalarının kaynak kodunun şaşırtıcı olarak geleneksel uyarlamalarına göre oldukça basitleştiğini gördük. Son yıllarda yarış durumu denetleyicilerinin işletim yükünü düşürmek için çok sayıda oldukça başarılı girişimler oldu. Bu girişimler sanal makinelerde basarım adına kullanılan ara dillerini tam zamanında (just-in-time) derlenmeden önce denetlemekten [8,9], merkezi işlem ünitesinin basarım sayaçlarını gözlemleme için kullanmaya [10] ve çekirdek program çağrılarının örneklenmesine kadar [11] değişiklik ve orijinallik göstermektedir. Kazanılan basarım, denetlenen programlarda %1 yavaşlama gibi değerlere varabilmektedir. Ancak bu çalışmaların sonucunda yaşanan duyarlılık kayıpları, Şekil 1: Çerçevemizin bileşenleri yanlış ret hataları göz ardı edilmektedir. Koşutzamanlı programların gözetleme işletim yükünü düşürmek için de çok sayıda başarılı girişimler oldu, özelleştirilmiş donanım desteği kullanılarak, dinamik denetleme aracı kullanmaya gerek olmadan, yüksek başarımlı çalışma izi toplama yaklaşımını örnek verebiliriz [12]. Bizim çerçevemizde, henüz yaygın olmayan donanım destekleri kullanmamayı hedefledik. İleride işletim yükünü eniyilemek için böyle bir araştırma yönü düşünülebilir. 3. Yaklaşımımız 1: Genel Sistem Önceki bolümde anlatılan zorluklara binaen ana amacımız çalışma zamanı denetleme çerçevesi oluştururken denetlenecek programın başarımını asgari etkilenmesidir. Çerçevemizdeki anahtar tasarım ve orijinallik, denetleme algoritmasını fiziksel olarak ayrık bir işlemcide koşutzamanlı olarak çalıştırmamızdır. Kuda projesi kapsamında, denetleme algoritması yarış durumlarını denetler, ayrık işlemci ise grafik işlemcisidir. Merkezi işlemci biriminde koşmakta olan uygulama iş parçacıklarına yalnızca (kendi olaylarını) gözlemleme ve bu gözlemleri paylaşımlı bir veri yapısına iletme yüklerini ayrıca yüklüyoruz. Bu görevlerin nasıl paylaşıldığının detayını Şekil 1 de görebilirsiniz. Bu bölümde çalışma izinin kaydını, paylaşımlı veri yapısını ve grafik işlemcisiyle iletişiminde kullandığımız tekniklerimizi anlatacağız. Bir sonraki bolum ise yalnızca grafik işlemcisindeki çekirdek (kernel) programa odaklanacak Çalışma izinin gözlemlenmesi Çalışma izini gözlemlerken kullanacağımız tekniği seçerken, gerçekleşen olayların olabildiğince hızlı ve etkin bir şekilde veri yapısında dizilmesine önem verdik. Çalışma izinin çerçevelere bölünmesi ve veri yapısının dönüşsel bağlı liste kullanarak tutmamızın sebebi bir uçtan boş çerçevelerin doldurularak öteki uçtan grafik işlemcisine çerçeve yollanabilmesi, dolayısıyla çalışma izinin son derece etkin şekilde kullanılmasıydı. Deneylerimiz sonucunda çerçevenin tuttuğu olay sayısı, diğer bir deyişle çerçeve boyutu (FRAMESIZE), 1024 olay olarak eniyilenmiştir. Grafik işlemcisindeki denetleyici programın iş parçacıkları her çerçeveyi ayrı bir girdi olarak algılar ve çerçevelerin birbirlerinden bağımsız olarak işler. Denetleyici iş parçacıklarının farklı çerçeveleri denetlerken belleklerinde tuttuğu tek bilgi sonraki çerçevelerde aynı değişkenleri denetlememek için- denetlediği yarış durumlarına sebep olan değişkenlerdir. Çerçevenin denetlenmesi bitince, eski çerçevenin üstüne yeni çerçeve kopyalanır ve aynı iş parçacıkları tekrar denetlemeye başlar.

4 Çalışma izinin çerçevelere bölünmesi ve birbirinden bağımsız denetlenmesi tabiatıyla, teorik olarak bazı yarış durumlarının kaçırılmasına sebep olur. Bu çerçevede eğer yarış durumuna sebep olan olaylar birbirinden 1024 olaydan fazla ayrılmış ise yarış durumlarını denetleyemiyoruz. Ancak çerçeve boyutunun büyütülmesi ve bundan doğacak başarım kaybı ile daha güvenilir (sound) yarış durumu denetleyebiliriz. e 1 cerceve Kafa 2 i AtomicGetAndIncrement(cerceve.boyutu) 3 i F ramesize 4 cerceve = Kuyruk 5 cerceve cerceve.next 6 i AtomicGetAndIncrement(cerceve.boyutu) 7 8 cerceve[i] e Kafa 9 i = F ramesize 1 Kafa Kafa.next 1 2 Kafa 6= Kuyruk 3 cerceve Kuyruk cerceve 4 cerceve 5 Kuyruk 6 cerceve.boyutu 0 7 Kuyruk cerceve.next Kod parçası 1 Çerçevemiz bu mühendislik tercihini kullanıcının ayarlayabilmesine olanak sağlamaktadır. Bu bildiri kapsamında henüz çerçeveleme tekniğinden dolayı kaçırılan yarış durumlarının analizini yapmadık, yapılan çalışmalarımız yalnızca çerçevemizin başarım artırımı kapsamında elverişliliğini göstermek adınaydı. Keza, konu üzerinde çalışan araştırmacıların çalışmalarında sunulan deneyler gösteriyor ki, koşut zamandan kaynaklanan hataların çoğu az sayıdaki iş parçasının çalışmalarının çok kısa bir parçasında oluşmaktadır [13]. Şekil 2 de çalışma izinin dönüşsel bağlı listede nasıl tutulduğunu görebilirsiniz. Bu bağlı listede her FRAMESIZE adetinde olayın farklı çerçevede tutulabildiği sabit sayıda çerçeve vardır. Aşağıda anlatıldığı gibi, dönüşsel bağlı liste veri yapısı çalışma izinin hızlı ve etkin biçimde kullanılmasını sağlar. Kod parçası 1 de olayların çerçevelere doldurulması (OlayKaydı) ve dolu çerçevelerin işlenmesini Şekil 2: Çerçeve listesinde kullanılan veri yapısı detayları (ÇerçeveDenetle) anlatan yalancı kodları gösteriyor. OlayKaydı denetlenen programın iş parçacıkları tarafından, ÇerçeveDenetle işe bu iş için yaratılmış ayrı bir iş parçacığı tarafından, merkezi işlemcide yürütülür. Çerçeve listesi bloklamayan algoritmalar ve birkaç bölünmez yönerge (instruction) ile kullanılır; yani iş parçacıklarının erişmesi veya çalışma izinin grafik işlemcisine yollanması için özellikle kilit açmalarına gerek yoktur. Listenin kullanımı boyunca iki adet veri imleci (pointer) tutuyoruz: Kafa ve Kuyruk imleçleri. Dönüşsel bağlı listede çalıştıklarından dolayı Kafa ve Kuyruk değerleri her türlü (liste için ayrılan) bellek değerlerine denk gelebilir; Kafa ve Kuyruk aynı yönde ilerletilir. Şekil 2 de Kafa nın sağından Kuyruk a kadar, boş çerçeveler vardır (beyaz renkli). Kafa nın bulunduğu çerçeve işe o anda doldurulmakta, Kuyruk ise boşaltılacak olan çerçeveyi temsil eder. Gri çerçeveler dolmuştur ve GİB e (Grafik İşlem Birimi) gönderilmek için Kuyruk un Kafa ya yetişmesini beklerler. Çerçeve listesi ilk oluşturulduğunda Kafa ve Kuyruk aynı çerçeveyi gösterir. Çerçeve tamamen dolduğunda Kafa bir sonraki boş çerçeveye ilerletilir, çerçeve GİB e gönderildiğinde Kuyruk bir sonraki dolu (veya dolmakta olan) çerçeveye ilerletilir. Kafa ve Kuyruk çerçeve okumaları sırasında oluşacak yarış durumlarını önlemek için Kafa ve Kuyruk imleçlerini bölünmez yönergelerle kullanıyoruz Olayların Kaydedilmesi (Kod parçası 1: OlayKaydı) Her çerçeve sabit bir boyuta sahiptir ve bu sayıda olay tutmaktadır. Bir uygulama iş parçası olay kaydetmek istediğinde, listeyi Kafa dan başlayarak tarar (1-7 numaralı satırlar). Bölünmesiz (atomic) yönergelerle olmak üzere, çerçevedeki olay sayısını okunur ve bu sayı bir arttırılır (2-6 numaralı satırlar). Eğer okunan olay sayısı çerçeve boyutundan (FRAMESIZE) küçükse, kayıt edilecek olay çerçevenin o indeksine kaydedilir (8. satır). Eğer o sayı çerçeve boyutuna eşit veya büyükse (eğer büyükse Kafa ilerletilemeden birden fazla iş parçacığı aynı ve dolu çerçeveye yazmak istemiş demektir), kayıt için çalışan iş parçacığı bir sonraki çerçeveye bakar (3-7 numaralı satırlar). İş parçası Kafa çerçevesinin son indeksine olay kaydetmiş ise Kafa yı ilerletir (9. satır). Eğer bir iş parçacığı bir sonraki çerçeveye kayıt için çalışırken bu çerçevenin Kuyruk çerçevesi olduğunu görürse, tekrar Kafa'dan taramaya başlar (1. satır). Bu duruma aç kalma (starvation) durumu diyoruz. Deneylerimizde 64 adet çerçeveyle oluşturulan listede hiçbir aç kalma durumu gözlemlemedik, bu da çerçevelerin denetiminin, olay kaydı hızından ortalama olarak daha hızlı olduğunu gösteriyor Çerçeve İşlenmesi (Kod parçası 1: ÇerçeveDenetle) Çerçeveleri Kuyruk tan kopyalayıp grafik işlemcisine yollamak için oluşturulan bir iş parçası olduğundan

5 bahsetmiştik. Kuyruk imleci önceki bölümde bahsedildiği gibi, çerçeve listesinde ilk dolmuş olan çerçeveyi gösterir. Yani grafik işlemcisine gönderilecek ilk çerçeve Kuyruk çerçevesidir (Şekil 2 de en sağdaki çerçeve). Bunu etkin şekilde yapması için, iş parçası, denetlenen program sonlanmadığı (sonlandıysa bile Kuyruk un Kafa yı yakalamadığı) sürece dönen bir döngü içindedir. Her döngüde ilk olarak Kafa ve Kuyruk un farklı çerçeveye bakmasını (listede dolu çerçeve oluşmasını) bekler (2. satır). Bu durum oluştuğunda, Kuyruk çerçevesi GİB e yollanır. (3. satır). Bölüm 4.1 de 4-5 ve 8-9 numaralı satırların detayını ve GİB deki çalışan denetleme algoritmasını Kod parçası 2 de bulabilirsiniz. GİB deki çekirdek program asenkron olduğu için, iş parçası bu süre içinde gönderilen çerçeveyi boşaltır (6. satır) ve Kuyruk u bir ilerletir (7. satır). Çekirdek programlar sonlanıncaya kadar bekleyip (8. satır), denetleme sonuçlarını (Kuda kapsamında yarış durumlarını) GİB (Grafik İşlem Birimi) belleğinden MİB (Merkezi İşlem Birimi) belleğine kopyalar (9. satır). Çerçevemiz, yapılanışı değiştirilerek, yarış durumlarının görüldüğü anda veya denetlenen programın sonlanması durumunda hata bildirimi yapabilir. 4. Yaklaşımımız 2: Çerçevelerin GİB de denetlenmesi 3. bölümde çerçevemizin MİB de koşan parçalarına odaklandık, bu bölümde ise GİB de çalışan çekirdek programları ve koşutzamanlı yarış zamanı denetim algoritmalarına odaklanacağız. Öncelikle kısaca GİB programlama konseptini ve bu alanda karşılaşılan zorlukları anlatacağız. Ardından Eraser ve Goldilocks algoritmalarının bu konsepte nasıl uydurduğumuzu anlatacağız CUDA kullanarak GİB programlama CUDA modeli programlamacıya, C programlama dilinin bir uzantısı olan CUDA programlarını derleyen bir derleyici ve C programlarından çağırılabilecek uygulama programlama arabirimi sağlamaktadır. Ayrıca fiziksel katmanının yazılım katmanından ayrı, etkin bir şekilde yürütülmesini sağlar, böylece aynı CUDA programı farklı CUDA grafik işlemcilerinde sorunsuzca çalışabilir. GİB de koşacak her kod parçası, C/C++ dilinde yazılmış ve MİB de koşan bir programdan çağrılan bir çekirdek program çağrısı aracılığıyla koşturulur. Yani çerçevemizde kullandığımız denetleme algoritmaları birer CUDA çekirdek programı olarak yazılmıştır ve bu programlar da Kod parçası 1 deki ÇerçeveDenetle fonksiyonu içinden çağırılır. MİB ve GİB iş parçacıkları fiziksel olarak izoledir, eşzamanlama yalnızca bir iş parçacığının çekirdek programları çağırıp, denetlenecek çerçeveyi iletmesi ve ardından fark edilen yarış durumlarını MİB e kopyalaması sırasında olur, bunun dışında iki işlemci asenkron çalışmaktadır. Denetlenen program ise hiç bir şekilde GİB deki çekirdek programlar ile eşzamanlama ihtiyacı duymaz. Asenkron çalışabilmek için denetlenecek çerçevenin GİB e kopyalanabilmesi gerekir, bunun için de program başlatılmadan önce GİB de özel bellek konumu ayrılmaktadır. Çekirdek programlarda oluşan ara sonuçları ve sonuçları da tutabilmek için ayrıca fazladan bellek ayrılır. Bu bellek konumlarını gösteren imleçler çekirdek program çağrılarında GİB e parametre olarak iletilir. MİB de koşan, çerçeve iletişimi ve çekirdek program çağrılarından sorumlu olan iş parçacığı aşağıdaki adımları izlerken CUDA uygulama programlama arabirimi çağrılarını kullanır: Denetlenecek çerçevenin GİB e kopyalanması Çekirdek programların gerekli parametreler ile çağrılması (SIMD (tek program-çoklu veri) stili ile çalışmaktadır) Çekirdek programların sonucunu MİB e kopyalamak için eşzamanlama GİB programlamadaki zorluk, işlenecek verilerin yukarıda da anlatıldığı gibi MİB den aktarılması ve verilerin geri alımı sırasındaki eşzamanlamadan ötürü kaybedilen başarımın koşutzamandan dolayı telafi edilebilir olup olmamasıdır. Denetleme algoritmalarımızda her iş parçası kendine düşen olayda geçen değişken üzerinde yarış durumu denetimi yapmaktadır. Yani kilit kümeleri gibi denetleme veri yapıları her iş parçasına yerel olarak, paylaşımsız yaratılıp kullanılır. Bu da çekirdek programların birbiriyle asenkron çalışmasını sağlar. Çekirdek programları bağlantısından inceleyebilirsiniz. Ancak GİB programlamadaki tek zorluk zaman değildir; oldukça kısıtlı olabilen bellek boyutları, çekirdek programların paylaştığı çerçeve sadece okunduğundan geniş paylaşımlı belleğe konulabilmektedir. Ancak denetleme sırasında kullanılacak denetleme veri yapıları için de önceden yer ayırmak gerektiğinden, bu veri yapılarını sınırlandırdık. Eraser ve Goldilocks programlarında bu veri yapılarını bloom filtreleri ile gösteriyoruz. Bloom filtre veri yapıları, bellek konumu kümelerini sabit boyuttaki bit kümelerinde tutabilir. Tek bir denetleme için gereken veriler sınırlı sayıda, yerel olarak ve geçici şekilde kullanıldığından dinamik şekilde yaratılan diğer objelerin bellek boyutunu zorlaması söz konusu olmamaktadır. 5. Deneyin Değerlendirilmesi Çerçevemizin elverişliliğini göstermek için iki hedefi tutturduğumuzu doğrulamamız gerekiyordu: Gözlemleme ve denetleme yüklerini iki ayrı işlemci birimine ayırmak, eklenen çalışma izi tutma ve çalışma izinin iletişimi yüklerine rağmen, denetleyici programları hızlandırabilir. GİB de kosan denetleyici programın MİB de kosan denetlenen program ile çok yakın zamanlı (birkaç milisaniye mertebesinde gecikmeyle) çalışabilir. Başka bir deyişle, program sonlandıktan kısa bir süre içinde denetleyici program da sonlanabilir. Çerçevemizin bu hedeflere ulaştığını gösterebilmek için ön ürün olarak KUDA yi yarattık ve iki koşutzamanlı çalışan denektaşı takımıyla sınadık. Toparlamak gerekirse, KUDA da iki ana parça bulunmaktadır: 1. Koşutzamanlı program iş parçacıklarının olaylarının işletimini çerçevelerle sağlayan ve bu çerçevelerin GİB de yarış durumlarını denetleyen çekirdek programdan oluşan işletim içi bağlamalı program. Biz çekirdek programlarını yazmak ve çağırmak için CUDA 4.0 kütüphanesini [5] kullanıyoruz. Deneylerimizde GİB belleği olarak genel paylaşımlı bellek modelini kullansak bile, çerçevemizi sabit veya doku bellek modellerini kullanacak şekilde eniyilememiz mümkün. Çünkü denetlenen çerçevelerin yüzlerce iş parçacığı tarafından yalnızca okunması buna imkan kılıyor. 2. Denetlenecek olan koşutzamanlı programdaki paylaşımlı bellek okuma/yazma, iş parçacığı yaratma/birleştirme ve iş parçacığı eş zamanlama

6 Benchmark Description Lines #Threads #Events #Frames PARSEC blackscholes (L) Black-Scholes partial di erential equations M 224K bodytrack (L) tracking human body with multiple cameras M 2.6M canneal (L) cache-aware simulated annealing M 449K dedup (M) data stream compression M 1.9M fluidanimate (L) simulating incompressible fluid M 2.3M raytrace (S) optimized ray tracing >6K 9 332M 316K streamcluster (S) online clustering problem M 166K swaptions (L) monte carlo simulation M 2.6M x264 (M) H.264/AVC video encoder M 1.4M SPLASH-2 barnes Barnes-Hut for N-body problem M 2.9M cholesky blocked sparse cholesky factorization M 254K fmm adaptive fast multipole for N-body problem M 1.5M fft complex 1D FFT M 556K lu blocked LU decomposition M 1M ocean large-scale ocean simulation M 510M radix integer radix sort M 287K raytrace optimized ray tracing M 316K water-nsquared water simulation w/out spatial data structure M 7.2M water-spatial water simulation with spatial data structure M 701K Tablo 1: Denektaşları, açıklamaları, iş parçacık sayıları ve ortalama olay/çerçeve sayıları Table gibi 1. Description POSİX iş parçacık of our standardına benchmarks, (pthreads and number of events and frames generated Her çerçevede 128 GIB iş parçacığı çağırılır. at a typical kütüphanesi) run. dahil Forçağrıların the PARSEC ve genel olayların benchmarks the Her çerçevede input size 128 is sıralı given olay dizisi in parantheses yollanır (her iş dinamik olarak gözlemlenmesini sağlayan bir Pin ((S):simsmall, (M):simmedium, (L):simlarge), parçacığına and for bir the çerçeve SPLASH-2 düşüyor) benchmarks aracı [4]. we used the default inputs except that some values are taken from 6. Sonuçlar Table 1 of [1] Deney Düzeneği Tablo 2 deki deney sonuçları gösteriyor ki koşutzamanlı bir aprototypetoolcalledkuda and applied Kuda programın onpin aaracıyla collection boş gözlemleme of multithreaded fonksiyonlarının Denektaşları benchmarks. Kuda consists of two parts: çağrılması dahi 1.6 ile 7.1 kat arasında başarım kaybına sebep Deneylerimizde KUDA yı 2 denektaşı takımıyla sınadık, olmaktadır. PARSEÇ 1. Adynamiclibrarycontainingthecorefunctionalityincludingtheroutines [6] ve SPLASH-2 [7]. Bu denektaşları C/C++ Kendi yaklaşımımız ile geleneksel yaklaşımlar arasındaki dilinde, pthread modelini kullanarak koşutzamanlı çalışan başarım farkını karşılaştırabilmek için Eraser algoritmasının programlardır. for recording Ortalama bir events, çalışmada bu managing denektaşları birkaç event frames, yanında saat andvektörü running tabanlı the iki modern race detection yarış durumu yüz milyon olay, dolayısıyla yüz binlerce çerçeve yaratılmakta denetleyicisini, DJIT+ [14] ve Fasttrack [15], Pin aracıyla kernels on the GPU. We use the CUDA 4.0 library [8] to write and call kernels ve her dolu çerçeve de grafik işlemcisinde denetlenmektedir. çalışacak şekilde C/C++ dilinde geliştirdik. Bu geliştirilen Daha detaylı for analyzing bilgi için Tablo frames 1 e bakınız. and to manage the destek GPUprogramlar resources orijinal (e.g., bildirilerdeki transferring kadar eniyilenmemiş data olmakla beraber, göreceli başarımları hakkında fikir to/from Donanım the GPU device memory). While verebilmektedir. our experiments are performed using the global memory, our system can use constant and texture memory. The fact that event frames are only read by the kernel enables us to make use of the constant and texture memory, which are cached for fast read-only access. 2. APin[6]tooltodynamicallyinstrumentx86binariesinordertocallbackthe routines in our dynamic library on certain events (shared memory read/write, thread creation/join, and inter-thread synchronization). Our Pin tool supports multithreaded programs written using the pthreads library (for thread creation and join, and synchronization primitives including mutex and readers/writer locks). Deneylerimizi HP xw9300 model iş istasyonunda, Ubuntu Linux bit çekirdekli işletim sisteminde gerçekleştirdik. MİB olarak çift çekirdekli, 2600 MHz saat frekanslı, 128 KB L1, 1 MB L2 on bellekli, 400 MHz de çalışan 8 GB bellekli AMD Opteron dur. GİB olarak ise Fermi uyumlu GeForce GTX 465 ekran kartını kullandık. Bu grafik işlemcisinde 1.21 GHz saat frekanslı, 1.23 GB bellekli 352 adet CUDA çekirdeği bulunmaktadır. Bu da iki işlemci arasında 1.4 GB/sn., grafik işlemcisi içinde ise 71.3 GB/sn. bellek bant genişliğine denk gelmektedir Yapılanış Farklı yapılanışlarda gözlemlediğimiz yüzlerce denektaşı koşusunda şu değerlerin KUDA nın başarımını en üst noktaya çıkardığı kanaatine vardık: 5.1 Çerçeve Experiments boyutu (FRAMESIZE): 1024 olay Çerçeve sayısı: 8192 çerçeve MİB deki bellek izdüşümü: 8192 çerçeve * 1024 olay * 8 bayt (her olay) = 64 MB Yaptığımız destekleyici deneylerde DJIT+ ve Fasttrack denetleyicilerinin başarımı Eraser denetleyicisinin başarımından oldukça düşüktü. Dolayısıyla Eraser denetleyicisi, geleneksel yarış durumu denetleyicileri içinde en basiti olmakla beraber göreceli olarak daha hızlı çalışan bir denetleyicidir. Ancak Eraser denetleyicisinin en az 31.4 kat başarım kaybına yol açtığını unutmamak gerekir. Sonuç olarak, geleneksel yarış durumu denetleyicilerinin birkaç yüz kat başarım yavaşlattıklarını gözlemledik. Diğer denetleyicilerin avantajı ise Eraser algoritmasına göre daha güvenilir çalışmalarıdır. Örneğin Fasttrack denetleyicisinde, Eraser denetleyicisinin aksine yanlış kabul hatası (false positive error) oluşmaz. Goldilocks ve Fasttrack yarış durumu denetleyicileri eksiksizdir, ne yanlış kabul ne de yanlış ret hatası verir. KUDA da geliştirdiğimiz denetleyici çekirdek programları iki tanedir: Eraser ve Goldilocks algoritmaları. Deneylerimizde Eraser çekirdek programıyla koşan KUDA, Goldilocks gibi karmaşık bir denetleyici programıyla koşan Benchmarks. We applied our tool Kuda on a collection of multithreaded programs from PARSEC [2] and SPLASH-2 [11] benchmark suites. The names, brief descriptions, sizes (lines of code) of these programs are listed in Table 1. The table also gives, for each benchmark, the number of threads, events, and frames generated in a representative execution of the benchmark. Notice that, in a typical execution, our benchmarks generate a few hundreds of millions of events and hundreds of thousands of frames, each of which is checked on the GPU. KUDA dan yalnızca biraz daha yüksek başarıma sahiptir. KUDA nın iki farklı versiyonunda da denetleme programları,

7 13 Benchmark Uninstr. Only Instrumented Eraser on CPU Only with Events Goldilocks on GPU Runtime Runtime Slowdown Runtime Slowdown Runtime Slowdown Runtime Slowdown PARSEC blackscholes X X X X bodytrack X X X X canneal X X X X dedup X X X X fluidanimate X X X X raytrace X >30min >123.7X X X streamcluster X X X X swaptions X X X X x X X X X SPLASH-2 barnes X X X X cholesky X X X X fmm X X X X fft X X X X lu X X X X ocean X X X X radix X X X X raytrace X >30min >122.2X X X water-nsquared X X X X water-spatial X X X X Tablo 2: Deneylerimizin sonuçları. Yürütüm süreleri saniye cinsindendir. Table 2. Results from our experiments. Running times are given in seconds. denetlenen programın sonlanmasından ortalama 2.5 milisaniye sonra sonlanmaktadır. Tekrar hatırlatmak gerekir ki, KUDA da sabit sayıda çerçeve vardır (8192), çerçeveler kullanıldıkça yeni çerçeve yaratılması yerine eski çerçeveler geri kullanılır. Bu durum ve iki işlemcinin asenkron şekilde yalnızca 2.5 milisaniye farkla programın sonuna gelmelerinden, iki ayrı çalışma zamanının birbirine çok yakın olduğunu, kısacası GİB in MİB den arkada kalmadığını gösteriyor. Tablo 2 deki sonuçlar açıkça gösteriyor ki, koşutzamanlı bir programın güvenilirlik özelliklerinin grafik işlemcideki iş parçacıklarında denetlenmesi, geleneksel çalışma zamanı doğrulama tekniklerinin başarımını çarpıcı olarak arttırmaktadır. MİB de yarış durumu denetleme ile GİB de bizim çerçevemizle yarış durumu denetleme arasında en kötü 3.3, en iyi 14.7 kat başarım artımı gözlemledik. Denektaşlarından yalnızca streamcluster programının MİB de yarış durumu denetlemek GİB de denetlemekten daha hızlı oldu, bunun nedeni ise denektaşının yüzbinlerce bariyer eşzamanlama mekanizması kullanmasıdır. Raytrace denektaşlarının ise MİB deki yarış durumu denetlemeleri yarım saatten daha fazla sürdüğünden dolayı yarıda kaldı; ancak bu denektaşlarının sonlanmasına izin verseydik kat hızlanma gözlemlemiş oluyorduk. Son olarak, Only with Events ile Goldilocks on GPU sütunlarındaki oldukça düşük farka dikkat etmeliyiz. Bu farktaki düşüklük bize, programın gözlemleme, olay kaydı, çerçeve listesinin GİB e gönderilmesinin çerçevemizdeki zamanın çoğunu aldığını göstermiş olmaktadır. Aradaki başarım oranı en fazla blackscholes denektaşındadır, o da yalnızca 5.2 Results 1.4 tur. Olayların (yazılımsal) kaydının bu kadar yavaş olmasına rağmen GİB de koşan denetleyicinin ön ürün olmasına rağmen yalnızca %40 yavaşlamaya sebep olması, ilerideki araştırmalarımız için son derece cesaretlendiricidir. Araştırmamıza dair daha detaylı bilgiyi İngilizce teknik raporumuzda [16] bulabilirsiniz. 7. Kaynakça Hardware. We performed our experiments on a HP xw9300 Workstation running Ubuntu Linux bit kernel. Our machine has two (single-core) AMD Opteron processors with 2600 MHz clock frequency, 128 KB L1 cache, 1 MB L2 cache, and 8 GB memory (400 MHz). We used a GeForce GTX 465 GPU card with Fermi chipset. Our card provides 352 cores (11 processors with 32 cores each) with 1.21GHz clock rate, 1.23 GB of memory space with 1.4 GB/sec host-to-device memory bandwidth and 71.3 GB/sec in-device memory bandwidth. Configuration parameters. For the experiments, we chose the following parameters that gave the best results in terms of runtime and memory overhead. We selected the event frame size (FrameSize) tobe1024 events. We initialize the cyclic list in Fig. 2 with 2048 frames. Thus, our system requires only 2048 frames * 1024 events (each frame) * 8 bytes (each event) = 16 MBytes of memory space to store the events for the CPU. We run 128 GPU threads over each event frame. In order to get the maximum benefit from the GPU device s concurrent computing functionality, we collect and send to the GPU 128 consecutive event frames at a time. In this way we aim to utilize the high parallelism on the GPU to analyze multiple frames simultaneously. [1] Poletti Francesco, Poggiali Antonio ve Paul Marchal, Flexible hardware/software support for message passing on a distributed shared memory architecture, DATE, Washington, DC, USA, 2005, s [2] Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro ve Thomas Anderson, Eraser: a dynamic data race detector for multithreaded programs, ACM Trans. Comput. Syst., vol. 15, no. 4, s , [3] Tayfun Elmas, Shaz Qadeer ve Serdar Tasiran, Goldilocks: a race ve transaction-aware java runtime, PLDI, 2007, s [4] Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi ve Kim Hazelwood, Pin: building customized program analysis tools with dynamic instrumentation, PLDI, 2005, s [5] NVIDIA Corporation, NVIDIA CUDA Programming Guide v4.0, NVIDIA Corporation, [6] Christian Bienia, Sanjeev Kumar, Jaswinder Pal Singh ve Kai Li, The parsec benchmark suite: Characterization ve architectural implications, Tech. Rep. TR , Princeton University, Ocak [7] Steven Cameron Woo, Moriyoshi Ohara, Evan Torrie, Jaswinder Pal Singh ve Anoop Gupta, The splash-2 programs: characterization and methodological considerations, ISCA, 1995, s [8] Christoph von Praun ve Thomas R. Gross, Object race detection, OOPSLA, New York, NY, USA, 2001, s [9] Yuan Yu, Tom Rodeheffer ve Wei Chen, Racetrack: efficient detection of data race conditions via adaptive tracking, SOSP, 2005, s [10] Tianwei Sheng, Neil Vachharajani, Stephane Eranian, Robert Hundt, Wenguang Chen ve Weimin Zheng, Racez: a lightweight and noninvasive race detection tool Table 2 gives the runtime measurements for several configurations we run for each benchmark. The column Uninstr. lists the running time of the benchmark without any instrumentation. For other columns, we report on both the running time of the program and the slowdown in the execution over the uninstrumented runtime. The running times for all columns are given in seconds. Whencomputingthe slowdown for the columns Eraser on CPU, Only with Events and Goldilocks on GPU, we subtract the instrumentation cost (i.e., Only Instrumented - Uninstr. ) from the runtime before dividing it to the running time of Uninstr.

8 for production applications, Proceedings of the 33rd International Conference on Software Engineering, New York, NY, USA, 2011, ICSE '11, s , ACM. [11] John Erickson, Madanlal Musuvathi, Sebastian Burckhardt ve Kirk Olynyk, Effective data-race detection for the kernel, Proceedings of the 9th USENIX conference on Operating systems design and implementation, Berkeley, CA, USA, 2010, OSDI'10, s. 1-16, USENIX Association. [12] Shimin Chen, Phillip B. Gibbons, Michael Kozuch ve Todd C. Mowry, Log-based architectures: using multicore to help software behave correctly, SIGOPS Oper. Syst. Rev., vol. 45, s , Şubat [13] Madanlal Musuvathi, Shaz Qadeer, Thomas Ball, Gerard Basler, Piramanayagam Arumuga Nainar ve Iulian Neamtiu, Finding and reproducing heisenbugs in concurrent programs, OSDI, 2008, s [14] Eli Pozniansky ve Assaf Schuster, Multirace: Efficient on-the-fly data race detection in multithreaded c++ programs, Concurr. Comput. : Pract. Exper., vol. 19, no. 3, s , [15] Cormac Flanagan ve Stephen N. Freund, Fasttrack: efficient and precise dynamic race detection, PLDI, 2009, s [16] Tayfun Elmas, Semih Okur ve Serdar Tasiran, Rethinking runtime verification on hundreds of cores: Challenges and opportunities, Tech. Rep. UCB/EECS , EECS Department, University of California, Berkeley, Jun 2011.

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş Süreçler ve İş Parçacıkları(Thread) İşletim Sistemlerine Giriş - Ders03 1 Süreç -Tüm modern bilgisayarlarda bir çok iş aynı anda yapılabilir. *kullanıcı programları çalışır *disk

Detaylı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; 1. Performans: İşletim sistemi, makine

Detaylı

İşletim Sistemi. BTEP205 - İşletim Sistemleri

İşletim Sistemi. BTEP205 - İşletim Sistemleri İşletim Sistemi 2 İşletim sistemi (Operating System-OS), bilgisayar kullanıcısı ile bilgisayarı oluşturan donanım arasındaki iletişimi sağlayan ve uygulama programlarını çalıştırmaktan sorumlu olan sistem

Detaylı

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Bilgisayar Bileşenleri Bilgisayarın Fonksiyonu Instruction Cycle Kesmeler (Interrupt lar) Bus

Detaylı

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine İŞLETİM SİSTEMLERİNE GİRİŞ - 2 Kaynakların Paylaşımı (Resource Sharing) Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine sunar. Bir işletim sisteminde paylaşılan kaynaklar

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş İşletim Sistemleri ve Donanım İşletim Sistemlerine Giriş/ Ders01 1 İşletim Sistemi? Yazılım olmadan bir bilgisayar METAL yığınıdır. Yazılım bilgiyi saklayabilir, işleyebilir

Detaylı

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition Bölüm 4: İş Parçacıkları 14.1 Silberschatz, Galvin and Gagne 2009 Bölüm 4: İş Parçacıkları Genel Bakış Çoklu İş Parçacığı Modelleri İş Parçacığı Kütüphaneleri İş Parçacıkları ile İlgili Meseleler İşletim

Detaylı

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri DONANIM 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri DONANIM SİSTEM BİRİMİ ÇEVREBİRİMLERİ Ana Kart (Mainboard) Monitör İşlemci

Detaylı

Multicore/Multithread Programlama

Multicore/Multithread Programlama Multicore/Multithread Programlama Onur Tolga Şehitoğlu Bilgisayar Mühendisliği 7 Şubat 2008 Başlıklar 1 Gereksinimi Dal ile Süreç Çok İşlemci ve Dal Modelleri Neden Çoklu Dal Programlama? 2 Çok İşlemci/Çok

Detaylı

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ İçerik Mikroişlemci Sistem Mimarisi Mikroişlemcinin yürüttüğü işlemler Mikroişlemci Yol (Bus) Yapısı Mikroişlemci İç Veri İşlemleri Çevresel Cihazlarca Yürütülen İşlemler

Detaylı

PR362009 24 Kasım 2009 Yazılım, PC-tabanlı kontrol Sayfa 1 / 5

PR362009 24 Kasım 2009 Yazılım, PC-tabanlı kontrol Sayfa 1 / 5 Yazılım, PC-tabanlı kontrol Sayfa 1 / 5 IT standartları otomasyonu geliştiriyor: Microsoft Visual Studio entegrasyonlu TwinCAT programlama ortamı TwinCAT 3 extended Automation Beckhoff, otomasyon dünyasını

Detaylı

İşlem Yönetimi (Process Management)

İşlem Yönetimi (Process Management) İşlem Yönetimi (Process Management) 2 Bir işletim sisteminde, temel kavramlardan bir tanesi işlemdir. İş, görev ve süreç kelimeleri de işlem ile eşanlamlı olarak kullanılabilir. Bir işlem temel olarak

Detaylı

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2 İş Sıralamanın Amaçları İŞ SIRALAMA İşleri zaman içinde işlemciye yerleştirmek Sistem hedeflerine uygun olarak: İşlemci verimi Cevap süresi (response time) Debi (throughput) 23 İş Sıralama İş Sıralama

Detaylı

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition Bölüm 5: İşlemci Zamanlaması 5.1 Silberschatz, Galvin and Gagne 2009 Temel Kavramlar Çoklu programlama sayesinde CPU kullanımının optimize edilmesi CPU I/O İşlem Döngüsü Bir işlemin çalıştırılması birbirlerini

Detaylı

Proses. Prosesler 2. İşletim Sistemleri

Proses. Prosesler 2. İşletim Sistemleri 2 PROSESLER Proses Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkinbirdenfazlaprosesolabilir. Görev

Detaylı

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara REALTIME LINUX 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Genel Kamu Lisansının 2 ya da daha sonraki

Detaylı

Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı

Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı Aylin Kantarcı Ege Üniversitesi Akademik Bilişim 2015 Eskişehir, 2015 GİRİŞ CISC işlemciler Geriye uyumluluk Karmaşık

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Prosesler Bilgisayar İşletim Sistemleri BLG 312 Prosesler ve Proses Yönetimi bilgisayar sisteminde birden fazla iş aynı anda etkin olabilir kullanıcı programı diskten okuma işlemi yazıcıdan çıkış alma

Detaylı

Sanal Makineler ve Linux Konteynerlerin Performans Karşılaştırması

Sanal Makineler ve Linux Konteynerlerin Performans Karşılaştırması Sanal Makineler ve Linux Konteynerlerin Performans Karşılaştırması Emre Can YILMAZ 1, Recai OKTAŞ 2 1 Ondokuz Mayıs Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı, Samsun

Detaylı

Bilgisayarım My Computer

Bilgisayarım My Computer My Computer Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı 12-13 Mar. 2012 Öğr. Gör. Murat KEÇECİOĞLU Bilgisayarım (my computer) simgesine sağ tıklar ve özellikler (properties) seçeneğini seçeriz.

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş Girdi/Çıktı (I/O) İşletim Sistemlerine Giriş - Ders11 1 Girdi/Çıktı (I/O) İşletim sisteminin temel fonksiyonlarından biride bilgisayardaki tüm I/O aygıtlarını kontrol etmesidir.

Detaylı

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi 1 BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Donanım performans kriterleri Eş zamanlı çalışma Güç tüketimi Yazılım performans kriterleri

Detaylı

İŞ SIRALAMA. İş Sıralama 6. İşletim Sistemleri

İŞ SIRALAMA. İş Sıralama 6. İşletim Sistemleri 6 İŞ SIRALAMA İş Sıralama Çok programlı ortamlarda birden fazla proses belirli bir anda bellekte bulunur Çok programlı ortamlarda prosesler: işlemciyi kullanır bekler giriş çıkış bekler bir olayın olmasını

Detaylı

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir. Handel Kavramı: Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir. Alanın yaratıldığı bölge Windows'un kendi

Detaylı

Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği

Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği Gürol Erdoğan 1, Mustafa Yıldız 1, Mehmet Erdem Türsem 2, Selahattin Kuru 1 1 Enformatik Uygulama ve Araştırma Merkezi, Işık Üniversitesi, İstanbul

Detaylı

Donanımlar Hafta 1 Donanım

Donanımlar Hafta 1 Donanım Donanımlar Hafta 1 Donanım Donanım Birimleri Ana Donanım Birimleri (Anakart, CPU, RAM, Ekran Kartı, Sabit Disk gibi aygıtlar, ) Ek Donanım Birimleri (Yazıcı, Tarayıcı, CD-ROM, Ses Kartı, vb ) Anakart (motherboard,

Detaylı

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü İşletim Sistemleri Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Bu dersin sunumları, Abraham Silberschatz, Greg Gagne, Peter B. Galvin, Operating System Concepts 9/e, Wiley,

Detaylı

Görüntü Bağdaştırıcıları

Görüntü Bağdaştırıcıları Görüntü Bağdaştırıcıları Görüntü Bağdaştırıcıları (Ekran Kartları) Ekrandaki Görüntü Nasıl Oluşur? Monitörünüze yeteri kadar yakından bakarsanız görüntünün çok küçük noktalardan oluştuğunu görürsünüz.

Detaylı

Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme

Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme Kasım Sinan YILDIRIM AKADEMİK BİLİŞİM 2010 10-12 Şubat 2010 Muğla Üniversitesi, Muğla Ege Üniversitesi Bilgisayar Mühendisliği Bölümü İzmir,

Detaylı

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama BİL 542 Paralel Hesaplama Dersi Projesi MPJ Express Java Paralel Programlama Recep Ali YILMAZ 131419106 Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Yüksek Lisans Programı

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Giriş Bilgisayar İşletim Sistemleri BLG 312 İplikler geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü vardır bazı durumlarda, aynı adres uzayında birden fazla akış kontrolü

Detaylı

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği İŞLETİM SİSTEMLERİNE GİRİŞ Von Neumann Mimarisi Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği mimariyi temel almaktadır. Merkezi İşlem Birimi Aritmetik ve Mantık Birimi Kontrol

Detaylı

Bölüm 2 : ANAHTARLAMA : DEVRE ANAHTARLAMA. MESAJ ANAHTARLAMA. PAKET ANAHTARLAMA.

Bölüm 2 : ANAHTARLAMA : DEVRE ANAHTARLAMA. MESAJ ANAHTARLAMA. PAKET ANAHTARLAMA. Bölüm 2 : ANAHTARLAMA : DEVRE ANAHTARLAMA. MESAJ ANAHTARLAMA. PAKET ANAHTARLAMA. Türkçe (İngilizce) karşılıklar Devre Anahtarlama (circuit switching) Mesaj Anahtarlama (message switching) Paket Anahtarlama

Detaylı

OMNET++ 4.2.2. Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

OMNET++ 4.2.2. Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Bölümü OMNET++ 4.2.2 Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları OMNET++ OMNET++ (Objective Modular Network Testbed in C++), nesneye yönelik (objectoriented)

Detaylı

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari

Detaylı

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması Sistem Programlama Sistem programlama bilgisayar mühendisliğinin bir alanı olup karmaşık sistemlerin ve bu sistemlerin parçalarının ile ilgilenir. İşletim Sistemlerinin Programlaması Giriş/Cıkış( I/O)

Detaylı

DGridSim Gerçek Zamanlı Veri Grid Simülatörü. Yazılım Tasarımı Dokümanı v 1.0.1 01.08.2011. Mustafa Atanak Sefai Tandoğan Doç. Dr.

DGridSim Gerçek Zamanlı Veri Grid Simülatörü. Yazılım Tasarımı Dokümanı v 1.0.1 01.08.2011. Mustafa Atanak Sefai Tandoğan Doç. Dr. DGridSim Gerçek Zamanlı Veri Grid Simülatörü Yazılım Tasarımı Dokümanı v 1.0.1 01.08.2011 Mustafa Atanak Sefai Tandoğan Doç. Dr. Atakan Doğan 1. Sistem Mimarisi DGridSim katmanlı bir yapı göz önünde bulundurularak

Detaylı

İşletim Sistemlerine Genel Bakış

İşletim Sistemlerine Genel Bakış İşletim Sistemlerine Genel Bakış 1.1 Silberschatz, Galvin and Gagne 2009 İşletim Sistemi Nedir? Bilgisayar donanımı ile bilgisayar kullanıcısı arasında bir ara katman olarak aracılık etmek İşletim sisteminin

Detaylı

PARALEL GÖRÜNTÜ FİLTRELEME İÇİN ÇOK ÇEKİRDEKLİ BİLGİSAYAR ÜZERİNDE BAŞARIM ANALİZİ

PARALEL GÖRÜNTÜ FİLTRELEME İÇİN ÇOK ÇEKİRDEKLİ BİLGİSAYAR ÜZERİNDE BAŞARIM ANALİZİ İleri Teknoloji Bilimleri Dergisi Cilt 2, Sayı 1, 76-83, 2013 Journal of Advanced Technology Sciences Vol 2, No 1, 76-83, 2013 PARALEL GÖRÜNTÜ FİLTRELEME İÇİN ÇOK ÇEKİRDEKLİ BİLGİSAYAR ÜZERİNDE BAŞARIM

Detaylı

Web Tabanlı Kontrol Uygulamalarında İnternet Katmanının Sistem Performansına Etkisinin İncelenmesi

Web Tabanlı Kontrol Uygulamalarında İnternet Katmanının Sistem Performansına Etkisinin İncelenmesi Akademik Bilişim 07 - IX. Akademik Bilişim Konferansı Bildirileri 31 Ocak - 2 Şubat 2007 Dumlupınar Üniversitesi, Kütahya Web Tabanlı Kontrol Uygulamalarında İnternet Katmanının Sistem Performansına Etkisinin

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Bilgisayar İşletim Sistemleri BLG 312 İşletim Sistemlerine Giriş Bilgisayar Sistemi uygulama programları derleyici editör komut yorumlayıcı işletim sistemi makina dilinde programlar mikroprogram (ROM da)

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş Bellek Yönetimi (Memory Management) İşletim Sistemlerine Giriş - Ders08 1 Bellek Yönetimi Bellek önemli bir kaynaktır ve dikkatli yönetilmelidir. İşletim sistemlerinde bellek

Detaylı

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition Bölüm 8: Ana Bellek 8.1 Silberschatz, Galvin and Gagne 2009 Bölüm 8: Ana Bellek Arka Plan Bilgisi Yer Değiştirme (Swapping) Bitişik Bellek Yerleşimi (Contiguous Memory Allocation) Sayfalama (Paging) Sayfa

Detaylı

(Random-Access Memory)

(Random-Access Memory) BELLEK (Memory) Ardışıl devreler bellek elemanının varlığı üzerine kuruludur Bir flip-flop sadece bir bitlik bir bilgi tutabilir Bir saklayıcı (register) bir sözcük (word) tutabilir (genellikle 32-64 bit)

Detaylı

Paralel Programlama Ortamları

Paralel Programlama Ortamları Paralel Programlama Ortamları Elis Soylu ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ esoylu@ogu.edu.tr Paralel Programlama Ortamları Paralel Programlama Tanımı İş Parçacığı Tabanlı Yöntemler Java Thread ile Paralel

Detaylı

Eskişehir Osmangazi Üniversitesi, Fen Edebiyat Fakültesi Matematik- Bilgisayar Bölümü, Eskişehir 2

Eskişehir Osmangazi Üniversitesi, Fen Edebiyat Fakültesi Matematik- Bilgisayar Bölümü, Eskişehir 2 Paralel Programlama Ortamları Elis Soylu 1, M. Akçay 2 1 Eskişehir Osmangazi Üniversitesi, Fen Edebiyat Fakültesi Matematik- Bilgisayar Bölümü, Eskişehir 2 Dumlupınar Üniversitesi, Mühendislik Fakültesi,

Detaylı

Sanal Bellek (Virtual Memory)

Sanal Bellek (Virtual Memory) Sanal Bellek (Virtual Memory) Bellek yönetim tekniklerinde belleğin zaman içinde parçalanması ve işlemlerin boyutunun fiziksel belleğin boyutuyla sınırlı olması sorunları vardır. Ana belleğin yetersiz

Detaylı

Bilgisayarım My Computer. Elbistan Meslek Yüksek Okulu 2013 2014 Bahar Yarıyılı

Bilgisayarım My Computer. Elbistan Meslek Yüksek Okulu 2013 2014 Bahar Yarıyılı Bilgisayarım My Computer Elbistan Meslek Yüksek Okulu 2013 2014 Bahar Yarıyılı Öğr.Gör. Murat KEÇECİOĞLU 11-12 Mar. 2014 Bilgisayarım (my computer) simgesine sağ tıklar ve özellikler (properties) seçeneğini

Detaylı

O P C S T A N D A R D I

O P C S T A N D A R D I O P C S T A N D A R D I ASP OTOMASYON LTD. Sadık ŞENOL İsmail YAKIN 12/08/2008 OPC Standardı İnsan gücüne dayalı üretimden otomasyona dayalı, daha kontrollü bir üretime geçiş endüstride üretim hızını ve

Detaylı

Windows Eski Sürümleri Bellek Yapısı

Windows Eski Sürümleri Bellek Yapısı Windows Eski Sürümleri Bellek Yapısı -Intel 8086/8088 mimarili işlemciler//640k RAM -Segment Modeli(Segmented Model) -Her segment 64K uzunluğunda -Intel 80286,640K dan daha fazla RAM i destekledi -Windows

Detaylı

Dicle Üniversitesi Bilgi İşlem Online Talep Takip Sistemi

Dicle Üniversitesi Bilgi İşlem Online Talep Takip Sistemi Dicle Üniversitesi Bilgi İşlem Online Talep Takip Sistemi Cengiz Coşkun 1, Abdullah Baykal 2 1 Dicle Üniversitesi Bilgi İşlem Daire Başkanlığı, Diyarbakır 2 Dicle Üniversitesi Fen Fakültesi, Matematik

Detaylı

Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları

Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları Güven Fidan AGMLAB Bilişim Teknolojileri 18/10/11 GRID ÇALIŞTAYI 2007 1 MapReduce Nedir? Büyük data kümelerini işlemek ve oluşturmak

Detaylı

Ağ Yönetiminin Fonksiyonel Mimarisi

Ağ Yönetiminin Fonksiyonel Mimarisi Bölüm 7 Ağ Yönetimi Ağ Yönetiminin Fonksiyonel Mimarisi a) Performans (Performance) Yönetimi b) Sistem Ayarları (Configuration) Yönetimi c) Hesap (Account) t)yönetimi i d) Hata (Fault) Yönetimi e) Güvenlik

Detaylı

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği İŞLETİM SİSTEMLERİNE GİRİŞ Von Neumann Mimarisi Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği mimariyi temel almaktadır. Merkezi İşlem Birimi Aritmetik ve Mantık Birimi Kontrol

Detaylı

Ders - 1. BİL 221 Bilgisayar Yapısı GİRİŞ. Ders Hakkında. Ders İzlencesi

Ders - 1. BİL 221 Bilgisayar Yapısı GİRİŞ. Ders Hakkında. Ders İzlencesi Ders - 1 BİL 221 Bilgisayar Yapısı GİRİŞ Ders Hakkında Ders İzlencesi Bilgisayar Sınıfları Kişisel Bilgisayarlar$ Genel amaçlı, çok çeşitli yazılımlar$ Performans - maliyet ödünleşmesi hedeflenir$ Sunucular$

Detaylı

5. PROGRAMLA DİLLERİ. 5.1 Giriş

5. PROGRAMLA DİLLERİ. 5.1 Giriş 5. PROGRAMLA DİLLERİ 8.1 Giriş 8.2 Yazılım Geliştirme Süreci 8.3 Yazılım Geliştirme Sürecinde Programlama Dilinin Önemi 8.4 Programlama Dillerinin Tarihçesi 8.5 Programlama Dillerinin Sınıflandırılması

Detaylı

Bilgisayar en yavaş parçası kadar hızlıdır!

Bilgisayar en yavaş parçası kadar hızlıdır! Donanım Bilgisayar en yavaş parçası kadar hızlıdır! Merkezi İşlem Birimi Kavramı (CPU) Bilgisayar içerisinde meydana gelen her türlü aritmetiksel, mantıksal ve karşılaştırma işlemlerinden sorumlu olan

Detaylı

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER BLM401 Dr.Refik SAMET 1 GİRİŞ (1/3) Güvenlik, verilerin veya bilgilerin saklanması, kullanılması ve taşınması esnasında bilgilerin

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Kullanıcıdan aldığı veri ya da bilgilerle kullanıcının isteği doğrultusunda işlem ve karşılaştırmalar yapabilen, veri ya da bilgileri sabit disk,

Detaylı

Öğr.Gör. Gökhan TURAN www.gokhanturan.com.tr. Gölhisar Meslek Yüksekokulu

Öğr.Gör. Gökhan TURAN www.gokhanturan.com.tr. Gölhisar Meslek Yüksekokulu Öğr.Gör. Gökhan TURAN www.gokhanturan.com.tr Gölhisar Meslek Yüksekokulu Bilgisayarın Yapısı Donanım (Hardware): Bir bilgisayara genel olarak bakıldığında; Kasa, Ekran, Klavye, Fare, Yazıcı, Hoparlör,

Detaylı

Bilgisayar Donanım 2010 BİLGİSAYAR

Bilgisayar Donanım 2010 BİLGİSAYAR BİLGİSAYAR CPU, bellek ve diğer sistem bileşenlerinin bir baskı devre (pcb) üzerine yerleştirildiği platforma Anakart adı verilmektedir. Anakart üzerinde CPU, bellek, genişleme yuvaları, BIOS, çipsetler,

Detaylı

Copyright 2012 EMC Corporation. All rights reserved.

Copyright 2012 EMC Corporation. All rights reserved. 1 Yeni Nesil Bütünleşik Veri Depolama Çözümleri Göksel Okay Kıdemli Sistem Mühendisi 2 Yeni Nesil VNX 04.09.13 3 Yeni VNX ile Performans Sınırlarını Zorlayın Sanal Ortamlar için Görülmemiş Yüksek Performans

Detaylı

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü İşletim Sistemleri Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Bu dersin sunumları, Abraham Silberschatz, Greg Gagne, Peter B. Galvin, Operating System Concepts 9/e, Wiley,

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

Java, Python ve Ruby Dillerinin Performans Karşılaştırması Java, Python ve Ruby Dillerinin Performans Karşılaştırması Çanakkale Onsekiz Mart Üniversitesi Mustafa ŞAHİN Akademik Bilişim 2007 1 Dillerin seçim nedeni Java, Pyton ve Ruby Programlama dillerinin popülerliği

Detaylı

PROCESS YARATIMI (TEKRAR):

PROCESS YARATIMI (TEKRAR): PROCESS YARATIMI (TEKRAR): Gecen haftaki dersten hatırlayabileceğiniz üzere, bir process başka bir process yaratabilmesi için UNIX sistemlerinde fork() sistem çağrısı kullaılıyordu. Başka bir process yaratan

Detaylı

Akılda kalıcı sahneler

Akılda kalıcı sahneler Akılda kalıcı sahneler Autodesk 3ds Max Design 2012 yazılımı yeni render araçlarını sunar, geliştirilmiş iteratif iş akışı ve verimlilik sağlayan geliştirilmiş grafik çekirdeği. Bu sürüm ile, Autodesk

Detaylı

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri Öğretim Teknolojileri Destek Ofisi Instructional Technologies Support Office Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri Semboller, Ses Ekleme, Video Ekleme Orta Doğu Teknik Üniversitesi

Detaylı

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları Alparslan Fişne afisne@aselsan.com.tr 1/46 1 İçerik Giriş Demodülasyon Algoritmaları Optimizasyon JNI Kullanımı Sonuçlar

Detaylı

Cambridge LMS e başlama- Öğrenciler

Cambridge LMS e başlama- Öğrenciler Cambridge LMS e başlama- Öğrenciler 1. Başlamadan önce LMS i kullanamaya başlamadan önce bilgisayarınızın minimum sistem gereklerine sahip olup olmadığını ve İnternet bağlantınızın kabul edilebilir bir

Detaylı

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

VERİ YAPILARI VE PROGRAMLAMA (BTP104) VERİ YAPILARI VE PROGRAMLAMA (BTP104) Yazar: Doç.Dr. İ. Hakkı CEDİMOĞLU S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir.

Detaylı

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001 Dağıtık Sistemler CS5001 Th. Letschert Çeviri: Turgay Akbaş TH Mittelhessen Gießen University of Applied Sciences Biçimsel model nedir Biçimsel model matematiksel olarak tanımlanmış olan bir modeldir.

Detaylı

Büyük Ölçekli bir Gömülü Yazılımın Geliştirme ve Otomatik Test Deneyimi

Büyük Ölçekli bir Gömülü Yazılımın Geliştirme ve Otomatik Test Deneyimi Büyük Ölçekli bir Gömülü Yazılımın Geliştirme ve Otomatik Test Deneyimi Eda Gürler 1 Murat Yılmaz 2 1, 2 Radar Elektronik Harp ve İstihbarat Sistemleri (REHİS) Grubu, ASELSAN A.Ş. Ankara 1 tverdi@aselsan.com.tr,

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş Data Hiyerarşisi Files (Dosyalar) ve Streams (Kaynaklar)

Detaylı

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi OpenCV ile Performans Analizi S.Ü Bil.Müh. 2. Sınıf Öğrencisi Faruk GÜNER farukguner@outlook.com.tr S.Ü Bil.Müh. 2. Sınıf Öğrencisi Mesut PİŞKİN mesutpiskin@outlook.com S.Ü Öğr. Gör. Dr. Mustafa Nevzat

Detaylı

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir. Kesmeler çağırılma kaynaklarına göre 3 kısma ayrılırlar: Yazılım kesmeleri Donanım

Detaylı

Cambridge LMS e Başlama- Öğrenciler

Cambridge LMS e Başlama- Öğrenciler Cambridge LMS e Başlama- Öğrenciler 1. Başlamadan önce LMS i kullanamaya başlamadan önce bilgisayarınızın minimum sistem gereklerine sahip olup olmadığını ve internet bağlantınızın kabul edilebilir bir

Detaylı

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü BİLGİSAYAR MİMARİSİ Bilgisayar Bileşenleri Ve Programların Yürütülmesi Özer Çelik Matematik-Bilgisayar Bölümü Program Kavramı Bilgisayardan istenilen işlerin gerçekleştirilebilmesi için gereken işlem dizisi

Detaylı

Kursad MANGALOGLU Sales Specialist Power Systems Systems & Technology Group IBM Turkey

Kursad MANGALOGLU Sales Specialist Power Systems Systems & Technology Group IBM Turkey Kursad MANGALOGLU Sales Specialist Power Systems Systems & Technology Group IBM Turkey AJANDA Günümüz IT Trendleri Power Systems nedir? Neden Power Systems Sanallaştırma Teknolojisi? İNSANOĞLUNUN TEKNOLOJİ

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 1 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlamaya C ile Programlamaya Yazılım: Bilgisayarın işlemler yapması ve karar vermesi

Detaylı

Java ve Linux. Bora Güngören Portakal Teknoloji bora@portakalteknoloji.com Akademik Bilişim 2006 09.02.2006

Java ve Linux. Bora Güngören Portakal Teknoloji bora@portakalteknoloji.com Akademik Bilişim 2006 09.02.2006 Java ve Linux Bora Güngören Portakal Teknoloji bora@portakalteknoloji.com Akademik Bilişim 2006 09.02.2006 Sunum Planı Java Çalışma Ortamı POSIX uyumu ve Linux Java Toplum Süreci (JCP) Açık kaynak kodlu

Detaylı

BLGM423 Gömülü Sistem Tasarımı

BLGM423 Gömülü Sistem Tasarımı 1 BLGM423 Gömülü Sistem Tasarımı İkinci Çalışma Sayısal giriş ucunun çeşitli konum ve hareketlerini algılama Bu çalışmada tipik bir anahtara bağlanmış olarak kullanılan sayısal giriş ucundaki konum ve

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Archive Player Divar Series. Kullanım kılavuzu

Archive Player Divar Series. Kullanım kılavuzu Archive Player Divar Series tr Kullanım kılavuzu Archive Player İçindekiler tr 3 İçindekiler 1 Giriş 4 2 Çalışma 5 2.1 Programın başlatılması 5 2.2 Ana pencere tanıtımı 6 2.3 Açma düğmesi 6 2.4 Kamera

Detaylı

Matrislerde Gauss Jordan Yöntemi ve Eşelon Matris Biçimlerinin Performans Ölçümü

Matrislerde Gauss Jordan Yöntemi ve Eşelon Matris Biçimlerinin Performans Ölçümü Matrislerde Gauss Jordan Yöntemi ve Eşelon Matris Biçimlerinin Performans Ölçümü Ahmet Çelik 1, Zekeriya Katılmış 2 1,2 Dumlupınar Üniversitesi, Bilgisayar Teknolojileri ve Programlama Bölümü, Kütahya

Detaylı

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 Ders- 8 Dosya Sistemleri ve Dizinler Yrd. Doç. Dr. Burcu Can Buğlalılar Bilgisayar Mühendisliği Bölümü Bilgisayar Katmanları İçerik Dosya, dosya sistemi ve dizin

Detaylı

YAZILIM KAVRAMINA BİR BAKIŞ. Gürcan Banger Elektrik Yük. Müh. ESOGÜ - 9 Nisan 2007

YAZILIM KAVRAMINA BİR BAKIŞ. Gürcan Banger Elektrik Yük. Müh. ESOGÜ - 9 Nisan 2007 YAZILIM KAVRAMINA BİR BAKIŞ Gürcan Banger Elektrik Yük. Müh. ESOGÜ - 9 Nisan 2007 YAZILIM ve DONANIM Bilgisayar kavramı, donanım ve yazılım olmak üzere iki ana bileşenden oluşuyor. Elektronik, mekanik

Detaylı

Büyük Ölçekli Paralel Nükleer Kabuk Modeli Hesaplamaları

Büyük Ölçekli Paralel Nükleer Kabuk Modeli Hesaplamaları Büyük Ölçekli Paralel Nükleer Kabuk Modeli Hesaplamaları Yrd. Doç. Dr. Erdal DİKMEN Süleyman Demirel Üniversitesi Fizik Bölümü Araştırma Grubu: Sündüz Korkmaz (Doktora) Oğuz Öztürk (Yüksek Lisans) Hilal

Detaylı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı JSON Korsanlığı Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı İnternetin gün geçtikçe hayatımızdaki önemi arttı ve web siteleri milyonlarca insan tarafından girilen yerler haline geldi. Artık çevremizden

Detaylı

Sistem Yapılanması ve Tanıtım

Sistem Yapılanması ve Tanıtım Sistem Yapılanması ve Tanıtım İstanbul Teknik Üniversitesi Bilişim Enstitüsü Yüksek Başarımlı Hesaplama Laboratuvarı yayınıdır. Laboratuvar kullanıcılarının eğitimleri için düzenlenmiştir. İzin alınmaksızın

Detaylı

YAZILIM MÜHENDİSLİĞİ - 1

YAZILIM MÜHENDİSLİĞİ - 1 YAZILIM MÜHENDİSLİĞİ - 1 BÖLÜM 6: TEST (TESTING) Bölüm Kapsamında İncelencek Konular: Kalite ve Kalite Güvencesi Non-execution-based testing (her şeyi test etme) Execution-based testing (kodu test etme)

Detaylı

Optik Filtrelerde Performans Analizi Performance Analysis of the Optical Filters

Optik Filtrelerde Performans Analizi Performance Analysis of the Optical Filters Optik Filtrelerde Performans Analizi Performance Analysis of the Optical Filters Gizem Pekküçük, İbrahim Uzar, N. Özlem Ünverdi Elektronik ve Haberleşme Mühendisliği Bölümü Yıldız Teknik Üniversitesi gizem.pekkucuk@gmail.com,

Detaylı

PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ

PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ Derya Birant, Alp Kut Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği Bölümü İÇERİK Giriş PLC nedir? PLC lerin Uygulama

Detaylı

C Dersi Bölüm 1. Bilgisayar Donanımı

C Dersi Bölüm 1. Bilgisayar Donanımı C Dersi Bölüm 1 M Bodur 1 Bilgisayar Donanımı Bilgisayarın yapısını ve çalışma prensiplerini bilmemiz Bir bilgisayar programından neler bekleyebileceğimizi anlamamızı sağlar. Bigisayar dört temel birimden

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya

Detaylı

Dijital (Sayısal) Fotogrametri

Dijital (Sayısal) Fotogrametri Dijital (Sayısal) Fotogrametri Dijital fotogrametri, cisimlere ait iki boyutlu görüntü ortamından üç boyutlu bilgi sağlayan, sayısal resim veya görüntü ile çalışan fotogrametri bilimidir. Girdi olarak

Detaylı

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi 1 BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü 2 Giriş Superscalar mimaride integer ve floating-point aritmetik komutlar, şartlı atlama komutları

Detaylı

Merkezi İşlem Birimi Kavramı (CPU)

Merkezi İşlem Birimi Kavramı (CPU) Donanım Merkezi İşlem Birimi Kavramı (CPU) Bilgisayar içerisinde meydana gelen her türlü aritmetiksel, mantıksal ve karşılaştırma işlemlerinden sorumlu olan elektronik bir aygıttır. Başlıca üç bölümden

Detaylı