Paralel ve Sıralı Brute Force Algoritmasının Karşılaştırılması



Benzer belgeler
BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

PERFORMANCE COMPARISON OF KARATSUBA AND NIKHILAM MULTIPLICATION ALGORITHMS FOR DIFFERENT BIT LENGTHS

(Random-Access Memory)

Yüz Tanımaya Dayalı Uygulamalar. (Özet)

Gömülü Sistemler. (Embedded Systems)

Bilgi Teknolojisinin Temel Kavramları

Bilgisayar Mimarisi ve Organizasyonu Giriş

Mantıksal Kontrol ve Döngü Komutları

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

Sanal Bellek (Virtual Memory)

KİNETİK MODEL PARAMETRELERİNİN BELİRLENMESİNDE KULLANILAN OPTİMİZASYON TEKNİKLERİNİN KIYASLANMASI

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Bilgisayar Temel kavramlar - Donanım -Yazılım Ufuk ÇAKIOĞLU

Görev Unvanı Alan Üniversite Yıl Prof. Dr. Elek.-Eln Müh. Çukurova Üniversitesi Eylül 2014

Bilgisayar Donanımı. Temel Birimler ve Çevre Birimler. Öğr.Gör.Günay TEMÜR / KAYNAŞLI MESLEK YÜKSEOKULU

Düşünelim? Günlük hayatta bilgisayar hangi alanlarda kullanılmaktadır? Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir?

Dr. Fatih AY Tel: fatihay@fatihay.net

YZM 3102 İşletim Sistemleri


International Journal of Innovative Research in Education

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

HSancak Nesne Tabanlı Programlama I Ders Notları

Yrd. Doç. Dr. Caner ÖZCAN

Telefon Rehberi Uygulaması

Ardışık Veri Tipleri. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

VERİ YAPILARI VE PROGRAMLAMA

İşletim Sistemi. BTEP205 - İşletim Sistemleri

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Alıştırma 1: Yineleme

Yazılım Mühendisliğine Giriş 2018 GÜZ

Mobil Cihazlarda Online Görüntü İşleme Yazılımının Geliştirilmesi

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

BİLGİ TEKNOLOJİSİNİN TEMEL KAVRAMLARI. 1-Bilgisayar, donanım ve yazılım kavramları 2-Bilgisayar çeşitleri 3-Bilgisayarlar arsındaki farklılıklar

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Üst Düzey Programlama

Mobil Cihazlarda Online Görüntü İşleme Yazılımının Geliştirilmesi

Zeki Optimizasyon Teknikleri

SİSTEM İHTİYAÇLARI (Tiger Enterprise / Tiger 3 Enterprise)

ALGORİTMA VE PROGRAMLAMA I

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA II

T E M E L K AV R A M L A R. Öğr.Gör. Günay TEMÜR / Teknoloji F. / Bilgisayar Müh.

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Bilgi ve iletişim teknolojileri

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

BİLGİSAYAR KULLANMA KURSU

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Windows Mobile İşletim Sistemleri İçin Veri Giriş Yazılımı

Bölüm 10: PHP ile Veritabanı Uygulamaları

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

Özyineleme (Recursion)

YÖNETİM BİLİŞİM SİSTEMLERİ BÖLÜMÜ YENİ DERS MÜFREDATI (1) FAKÜLTESİ: İŞLETME FAKÜLTESİ / BUSINESS SCHOOL

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Dr. Fatih AY Tel: fatihay@fatihay.net

İNTERNET PROGRAMCILIĞI - II

MATLAB PARALEL HESAPLAMA ARACI İLE A* ALGORİTMASININ ROTA PLANLAMA İÇİN ANALİZİ

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

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI Bahar Yarıyılı

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

İşletim Sistemleri (Operating Systems)

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi

Kurulum (Windows)...3

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

ALGORİTMA VE PROGRAMLAMA I

Bilişim Teknolojilerine Giriş

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI

6.046J/18.401J DERS 7 Kıyım Fonksiyonu (Hashing I) Prof. Charles E. Leiserson

& WIN 32 DEN BAKIŞ AÇISI İSMAİL YALÇIN

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

Akılda kalıcı sahneler

YZM 5257 YAPAY ZEKA VE UZMAN SİSTEMLER DERS#6: GENETİK ALGORİTMALAR

ALGORİTMA VE PROGRAMLAMA I

Yazılım Mühendisliğine Giriş 2018 GÜZ

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

AES (Advanced Encryption Standard)

Dicle Üniversitesi Bilgi İşlem Online Talep Takip Sistemi

Bilgisayar Sistemlerine Genel Bakış

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

Genel Programlama II

Yrd. Doç. Dr. Caner ÖZCAN

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

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Bilgi ve İletişim Teknolojileri

William Stallings Computer Organization and Architecture 9 th Edition

Anahtar Bağımlı Bir Şifreleme Algoritması (IRON)

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

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

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

Algoritmalar ve Programlama. Algoritma

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

Transkript:

Paralel ve Sıralı Brute Force Algoritmasının Karşılaştırılması Özet: Günümüzün hızla gelişen teknolojisi olan bilgisayarlar kişisel, bilimsel, ticari, askeri gibi birçok alanda kullanılmaktadır. Araştırmacılar kullanıcıların daha kısa zamanda daha fazla işlem yapmasına olanak sağlamak için bilgisayarların hızlarını arttırmaya çalışmaktadırlar. Günümüzde bilgisayarların hızları fiziksel limitlere yaklaştığı için donanım üreticileri birden fazla işlemci içeren çok çekirdekli işlemciler üretmektedirler. Fakat günümüzde kullanılan yazılımların büyük bir kısmı sıralı olarak programlanmıştır. Bu sebeple bu yazılımlar çok işlemcili bilgisayarların kapasitesini verimli olarak kullanamamaktadır. Paralel programlama büyük problemleri küçük parçalara ayırıp çözmekte, bu sayede küçük problemler farklı işlemcilerde eşzamanlı olarak hesaplanabilmektedir. Bu araştırmanın amacı, sıralı ve paralel Brute Force Algoritmasının çalışma zamanı farklılıklarını incelemektir. Anahtar Sözcükler: Sıralı Programlama, Paralel Programlama, Algoritma, Brute Force, İşlemcik Comparison of Parallel and Sequential Brute Force Algorithm Abstract:Computers, one of today's rapidly evolving technology, are used in many areas such as personal, scientific, commercial and military. Researchers are working to increase the speed of computers to enable the users perform more processing in less time. As processors speeds is approaching the physical limits now, hardware manufacturers produce multi-core processors which includes more than one core inside. However, most of today's software is programmed in traditional sequential way. Therefore these software can not use the capacity of multi-core computers efficiently. Parallel programming solves large problems by taking into smaller pieces, so that minor problems can be calculated simultaneously in different processors. The purpose of this study is to analyze the run-time differences of sequential and parallel Brute Force algorithm. Keywords: Sequential Programming, Parallel Programming, Algorithm, Brute Force, Threads

1. Giriş Günümüzün hızla gelişen teknolojisi olan bilgisayarlar kişisel, bilimsel, ticari, askeri gibi birçok alanda kullanılmaktadır. Araştırmacılar kullanıcıların daha kısa zamanda daha fazla işlem yapmasına olanak sağlamak için bilgisayarların hızlarını arttırmaya çalışmaktadırlar. Bir bilgisayarın hızı genellikle işlemcisinin hızıyla; işlemcisinin hızı ise saniyede yapabildiği işlem sayısıyla ölçülür [1]. Moore un kuralına göre (Moore s Law) işlemcilerin hızları her iki yılda bir iki katına çıkmaktadır [2]. Peki bu artış ne kadar devam edebilir? İşlemcilerin hızı içerisinde kullanılan yarı iletkenlerin fiziksel özellikleriyle sınırlıdır ve günümüzde işlemci hızları neredeyse fiziksel limitlere dayanmıştır [3]. Donanım üreticileri bu problemi aşmak için bir chip in içerisine birden fazla işlemci yerleştirmişlerdir. Bu sayede bilgisayarlar gerçek anlamda aynı anda birkaç işlem yapabiliyorlar. Fakat günümüzde kullandığımız yazılımların birçoğu sadece tek işlemci üzerinde çalışacak şekilde programlandığı için bilgisayarların kapasitesini kullanamamaktadır [4]. Paralel programlanmış algoritmalar günümüzde sıralı algoritmalara göre çok daha iyi sonuçlar ortaya koymaktadır [5]. Bu çalışmada sıralı Brute Force (BF) algoritması paralel olarak programlanmıştır. Her iki algoritmanında çalışma zamanları process explorer [6] programıyla ölçülerek paralel programlamanın performansı araştırılmıştır. Bu algoritmalar 4 GB RAM a sahip İntel E7500 (Core 2 Duo, 2,93 GHz. ) işlemcili bir masaüstü bilgisayarında denenmiştir. Dört, beş ve altı haneli 5 er adet olmak üzere toplam 15 adet şifre sıralı ve paralel algoritmalarla çözülmüş ve process explorer programı yardımıyla çalışma zamanları kaydedilmiştir. Çalışmanın ikinci bölümünde paralel programlama ve BF algoritmaları hakkında bilgi verilmiştir. Üçüncü bölümde sıralı ve paralel olarak programlanmış algoritmalar çalıştırılarak, çalışma zamanları karşılaştırmalı olarak incelenmiştir. Son bölümde ise araştırmadan elde edilen sonuçlar ve daha sonra yapılabilecek araştırmalarla ilgili öneriler yer almaktadır. 2. Paralel Programlama ve Brute Force Yapılacak olan işlemin tek bir bilgisayarda ve tek işlemci üzerinde çalıştırılmasına Sıralı Programlama denir. Şekil 1. Sıralı Programlama Paralel programlama ise, bir problemi çözmek için birden fazla bilgisayar kaynaklarının aynı anda kullanılmasıdır. T1 T3 T1 T3 PROBLEM CPU T2 PROBLEM T2 CPU CPU Şekil 2. Paralel Programlama Şekil 2. de görüldüğü gibi paralel programlamada bir problem birden fazla işlemci kullanarak ya da çoklu çekirdek

teknolojisine sahip bir işlemci yardımıyla çözülür [7]. BF araması ya da kapsamlı aramanın, bilgisayar bilimlerinde bilinen diğer bir adı da oluştur ve test et aramasıdır. Bu arama algoritması genel bir problem çözme tekniğidir. Bu teknikte bir problemi çözmek için bütün olası ihtimaller oluşturulur ve problem deneme yanılma yoluyla çözülmeye çalışılır [8]. 2.1 Paralel Programlama Günümüzde bilgisayar donanımları, yazılımların ihtiyaçlarına cevap vermekte zorlanmaktadırlar. Yazılımlar her geçen gün daha fazla hafıza ve daha hızlı bilgisayarlara ihtiyaç duymaktadırlar. Bilgisayar hafızaları daha fazla yarıiletken kullanarak arttırılabilirken, bilgisayarların hızı fiziksel limitlere dayandığı için arttırmak neredeyse imkânsızdır. Bilgisayar donanımlarını üreten mühendisler birden çok bilgisayar işlemcisini birbirlerine paralel çalışabilecek şekilde üreterek bu sorunu aşmışlardır. Günümüzde akıllı cep telefonlarında ve tablet bilgisayarlarda bile çift/dört çekirdekli işlemciler oldukça yaygın olarak kullanılmaktadır. Bu paralel işlemci mimarisini etkin olarak kullanabilmek için yazılımların paralel olarak programlanması gerekmektedir. Sadece tek işlemci üzerinde çalışacak şekilde sıralı olarak programlanmış algoritmalar çok çekirdekli işlemci mimarisinin gücünü kullanamamaktadır. Bu sebeple sıralı bir algoritmayı paralel hale getirmek algoritmanın performansını her zaman arttırır [9]. Paralel program yazmanın temelde Görev ve Veri Paralelleştirme şeklinde 2 yöntemi vardır. Görev paralelleştirme (Task Parallelism), bir problemin çözümünde kullanılan çeşitli işleri farklı işlemcilere dağıtmaktır. Veri paralelleştirme (Data Parallelism), bir problemin çözümünde kullanılan verileri farklı işlemcilere dağıtmaktır. Görev paralelleştirmede işlemciler algoritmanın farklı kodlarını çalıştırırken, veri paralelleştirmede işlemciler neredeyse aynı kodları farklı veriler üzerinde kullanırlar[8]. 2.2 Brute Force (BF) BF algoritması en temel, basit algoritma olarak görülebilir. Bir şifreyi çözmek için olası bütün ihtimalleri deneyerek şifreyi bulmaya çalışır[10]. BF algoritması temel metot olduğu için diğer algoritmaları kıyaslarken de kullanılabilir. Bu arama algoritmasının ne kadar zaman ve hafıza harcayacağı olası muhtemel çözüm kümesi adaylarının çokluğuyla ilgilidir. Bir çok problem de de bu çözüm kümesi adayları çok devasa boyutlara ulaşabilir. Bu sebeple, BF algoritması 128 bit ve üzeri şifreler için uygun değildir [11]. BF algoritması genellikle problemin boyutu sınırlı ve az olduğu zamanlarda kullanılır. Bazı durumlarda da çözüm kümesi adaylarının makul miktarlara düşürülebileceği probleme özel sezgisel yöntemlerle de kullanıldığı olmaktadır. Brute_Force( ) { C = ilk(p); While ( C son(p) ) { if (C=sifre) return (C); C=sonraki; Şekil 3. BF Algoritması Kaba Kodu Bu algoritmayı uygulamanın 4 temel prosedürü vardır: ilki, sonraki, kontrol ve çıkış. Program ihtimalleri denemeye ilk elemandan başlar. İlk eleman C değişkenine aktarılır. Program C değişkeninin şifre olup olmadığını kontrol eder. Eğer ilk eleman şifre değilse sonraki eleman C değişkenine aktarılır ve while döngüsü tekrar çalışır. Şifre bulunasıya kadar ya da dizinin son elemanına kadar bu işlem devam eder ve ardından programdan çıkar [8].

BF algoritmasının en temel dezavantajı, gerçek problemlerin birçoğunda olası çözüm kümesi adayları setinin caydırıcı oranda geniş olmasıdır. Olasılıklar, ihtimaller arttıkça çözüm kümesi adaylarının sayısı katlanarak artmaktadır. Örneğin 29 harfin kullanıldığı 10 basamaklı bir şifrenin çözüm kümesi adaylarının sayısı 29 10 dur. Buda en az 10 15 ihtimalin denenmesi demektir. Basamak sayısı 2 artarsa (12 basamak) çözüm kümesi adaylarının sayısı 29 12 yani en az 10 18 ihtimalin denenmesi demektir. Basamak sayısı 2 artmasına rağmen çözüm kümesi adaylarının sayısı yaklaşık olarak 1000 kat artmıştır. Bu da 10 basamaklı bir şifre 1 günde çözülüyorsa, 12 basamaklı bir şifre 1000 günde çözülür demektir. Bu istenmedik duruma kombinasyonel patlama adı verilir [7]. Bu araştırmada kullanılan veri seti büyük ve küçük harfleri, sayıları ve özel karakterleri içermektedir. Hazırlanan programda, 67 farklı karakter kullanılan 5 haneli bir şifre yaklaşık olarak 1 dakikada çözülürken, 6 haneli bir şifre yaklaşık olarak 60 dakikada çözülmektedir. 7 haneli bir şifrenin teorik olarak 3 günde çözülmesi beklenmektedir. BF algoritmasının çalışma zamanı adayların hangi sırada test edileceği ile doğrudan ilgilidir. Bu araştırmada kullanılan sıralı ve paralel algoritmalar aynı veri setini aynı sırada kullanmışlardır. 3. Uygulama Bu bölümde araştırmada kullanılan sıralı ve paralel BF uygulamasının algoritmaları açıklanarak programdan elde edilen sonuçlar karşılaştırılmıştır. 3.1 Sıralı Brute Force Algoritması Şekil 4. de kaba kodu verilen BF algoritması temelde kullanılankarakerler dizisindeki bütün karakterleri belirli bir sırayla deneyerek herhangi bir şifreyi çözmeye çalışır. Algoritmada kullanılacak karakterler kullanılankarakterler adındaki bir dizide tanımlanıyor. Ardından program tek karakter olarak dizideki bütün elemanları kontrol et fonksiyonuna gönderiyor. Eğer bulunacak şifre tek karakterli değilse tahminisifreuzunluğu değişkeni bir arttırılıyor ve iki karakterli anahtarlarla şifre çözülmeye çalışılıyor. Eğer şifre çözülmezse( eşleşti değişkeni false ise) while döngüsü tekrar döner ve tahminisifreuzunlugu değişkeni bir arttırılarak 3 karakterli şifreler denenir. Şifre bulunasıya kadar tahminisifreuzunlugu bir arttırılarak şifre çözülmeye çalışılır [12]. Seri_Brute_Force() { kullanılankarakterler= {,,, ; tahminisifreuzunlugu=0; while (!eslesti) { tahminisifreuzunlugu++; anahtarkarakterler = new char[tahminisifreuzunlugu] select karakterseti[0]; kontrolet (KarakterSeti, sifre); Şekil 4. Sıralı BF Algoritması Kaba Kodu Hazırlanan brute force algoritmasında şifreyi kontrol etmek için daha etkili ve hızlı çalışan rekursif bir algoritma kullanılmıştır. Kullanılan algoritmanın kaba kodu şekil 5. de verilmiştir. Kontrol_et( ) { for (karakteruzunlugu) { if (mevcut<son) KontrolEt(mevcut++); elseif (mevcut==sifre) { eslesti = true; sonuc = mevcut; return; Şekil 5. Şifre kontrolü Algoritması Kaba Kodu

Algoritma 0 dan başlayarak dizideki bütün elemanları rekürsif olarak çağırmaktadır. Dizideki son karaktere ulaşıldığında oluşan anahtarları tek tek istenilen şifre ile karşılaştırmaktadır. Şifre bulunduğunda ise eslesti değişkeninin değeri true yapılarak döngüden çıkması sağlanmaktadır. Yukarıda ifade edildiği gibi döngülerin çalışması için kendisinden önceki döngünün bitmesi beklenmektedir. 2 haneli şifrelerin denenmesi için bilgisayar öncelikle tek haneli şifreleri kontrol etmektedir. İki yada dört çekirdekli bilgisayar da kullanılsa bu algoritmanın tasarımından dolayı bilgisayar bu yazılımı sıralı olarak, tek bir çekirdekte çalıştırmaktadır. 3.2 Paralel Brute Force Algoritması BF algoritmasının paralel hale getirmek için veri paralelleştirme yöntemi uygulanmıştır. Algoritmanın şifreyi çözmekte kullanacağı anahtar karakterler bölünmüştür. Bölüm 3.1 de anlatılan sıralı programlanmış BF Algoritmasının paralel programlanması için denenen şifreler basamak sayısına göre Thread A ve Thread B olmak üzere ikiye ayrılmıştır. Programın bir bloğu(thread A) tek haneli şifreleri(1,3,5, ) denerken, diğer program bloğu (Thread B) çift haneli (2,4,6, ) şifreleri denemektedir. Bu sayede bilgisayarın iki çekirdeği de eş zamanlı olarak çalışmaktadır. Thread A( ) { kullanılankarakterler= {,,, ; tahminisifreuzunlugu= -1 ; while (!eslesti) { tahminisifreuzunlugu+=2; anahtarkarakterler = new char[tahminisifreuzunlugu] select kullanılankarakterler[0]; kontrolet (anahtarkarakterler, sifre); Şekil 6 da verilen Thread A program bloğunun kaba kodunda tahmini şifre uzunluğu değişkeninin değeri 2 şer arttırılarak tek haneli anahtar karakterlerle şifre çözülmeye çalışılmıştır. Thread B program bloğunda Thread A dan farklı olarak tahminisifreuzunluğu nun değeri 0 olarak atanmaktadır. Thread B program bloğu da bu sayede çift haneli anahtarlarla şifreyi çözmeye çalışmaktadır. Şifre çözülünce eslesti değişkeninin değeri true olmaktadır ve threadler çalışmayı durdurmaktadır. 3.3 Verilerin Analizi Sıralı ve paralel olarak programlanmış algoritmalar aynı bilgisayar üzerinde çalıştırıldığında bazı şifrelerde sıralı programlanmış algoritmanın, bazı şifrelerde ise paralel programlanmış algoritmanın daha hızlı çalıştığı gözlenmiştir. Bellek kullanımları incelendiğinde paralel programlanmış algoritmanın yaklaşık %10 oranında daha fazla bellek harcadığı tespit edilmekle birlikte, 6 haneli şifrelerde bile 25 mb. ı geçmediği belirlenmiştir. Günümüz bilgisayarlarının hafızaları düşünülünce bu farkın hız kadar önemli olmadığı düşünülebilir. Tablo 1.de 4, 5 ve 6 haneli toplam 15 adet şifrenin sıralı ve paralel çalışma süreleri ve hızları yer almaktadır. Paralel programlanmış algoritmanın ne kadar hız kazandırdığını ya da kaybettirdiğini belirlemek için sıralı programlanmış algoritmadan elde edilen zaman paralel programlanmış algoritmadan elde edilen zamana bölünmüştür (formül 1). Tablo 1.de 4, 5 ve 6 haneli toplam 15 adet şifrenin sıralı ve paralel çalışma süreleri ve hızları yer almaktadır. Şekil 6. Thread A Fonksiyonu Kaba Kodu

Tablo 1. Sıralı ve paralel program süreleri 4 haneli şifreler 5 haneli şifreler 6 haneli şifreler Hız = Sıralı Program Süresi (sn.) Paralel Program Süresi (sn.) Hız 6T$l 1,092 1,591 0,686 pau@ 1,060 0,398 2,663 zrs3 0,982 0,655 1,499 #fhz 1,014 1,357 0,747 jys6 1,045 0,296 3,530 Ortalama 1,039 0,859 1,209 3r2!D 50,403 61,113 0,825 ck$iz 51,480 3,104 16,585 8cz1J 57,642 68,781 0,838 Li5fQ 50,013 41,387 1,208 a4!i3 55,458 1,443 38,432 Ortalama 52,999 35,166 1,507 b2!ysw 3445,531 138,498 24,878 YZ-33d 3675,882 5764,744 0,638 Rl4qs@ 3494,219 3216,748 1,086 dq1vts 3434,705 304,615 11,276 9t3Nsa 3320,918 4729,779 0,702 Ortalama 3474,251 2830,877 1,227 Sıralı Çalışma Süresi Paralel Çalışma Süresi (1) Paralel programlama BF Algoritmasını rastgele seçilen 4 haneli şifrelerde ortalama %21, 5 haneli şifrelerde ortalama %51, 6 haneli şifrelerde ise ortalama %23 oranında hızlandırmıştır. Elde edilen değerler ayrı ayrı incelendiğinde bulunacak şifrenin ilk harfi veri setinde önlerde ya da ortalarda tanımlanmışsa paralel programlamayla, sonlarda tanımlanmışsa sıralı programlamayla daha hızlı çözüldüğü görülmüştür. Sıralı programlanmış algoritma kullanıldığında program şifreyi çözesiye kadar bir döngüye girdiği için yanıt vermiyor hatasına sebep olmakta ve kullanılan arayüz üzerinde kontrolü kaybetmektedir. Paralel olarak programlanmış algoritma her iki işlemciyi de kullanmasına rağmen, threadleri kullandığı için ve döngüye giren bu threadler olduğu için yanıt vermiyor hatası oluşmamakta ve arayüz ekranı kilitlenmemektedir. 4. Sonuç ve Öneriler Günümüzde masaüstü bilgisayar, cep telefonu ve tablet bilgisayarlarda genellikle çok çekirdekli işlemciler kullanılmaktadır. Fakat hali hazırda kullandığımız yazılımların çok az bir kısmı paralel olarak programlanmıştır. Bu sebeple yazılımların büyük bir çoğunluğu bilgisayar işlemcisinin gücünü yeteri kadar kullanamamaktadır. BF algoritmasının kalitesini belirleyen iki önemli etken vardır; en kısa sürede ve en az bellek kullanarak doğru şifreyi bulmak. BF algoritmasının paralelleştirilmesi sayesinde şifreler çok daha kısa sürelerde çözülebilmektedir. Bu araştırmada paralel programlamanın şifreyi daha hızlı çözmesinin yanında veri setinde tanımlanan karakterlerin sırasının şifre çözümünde ne kadar etkili olduğu da görülmüştür. Veri setinde ilk başta tanımlanan küçük harfli alfabeler (a-z) daha çabuk çözülürken sonlarda tanımlanan sayı ve özel işaretler(0-9, #,!,-,@,$) ise daha geç çözülebilmiştir. Araştırma sonuçları incelendiğinde 4 haneli şifrelerde %20, 5 haneli şifrelerde %50 ve 6 haneli şifrelerde %22 oranında hızlanma tespit edilmiştir. Kullanılan şifreler paralel programlama yardımıyla ortalama %31 oranında daha hızlı çözülmüştür. Paralel programlamada kullanılan yük dağılımı daha

iyi yapılırsa 2 kata kadar (%100) hızlanma gerçekleştirilebilir[13]. Ayrıca paralel programlandığında algoritmanın kernel threadleri kullandığı, sıralı programlandığında ise user threadler oluştuğu tespit edilmiştir. Burada sunulan çalışmada BF algoritması paralel olarak programlanmış ve sıralı algoritmaya göre etkililiği incelenmiştir. İleride yapılacak çalışmalarda bu algoritma 4 yâda 8 çekirdek üzerinde çalışacak şekilde programlanırsa daha etkili olabilir. Ayrıca bu araştırmada kullanılan yük dağılımı dinamik hale getirilirse işlem zamanları daha tutarlı hale getirilebilir. Farklı algoritmalarında paralel olarak programlanmasının hızı arttıracağı ve donanım kaynaklarını daha verimli kullanacağı düşünülmektedir. 5. Kaynaklar [1] İşlemciler(CPU), Bilişim Teknolojisi, megep.meb.gov.tr/mte_program_modul/mod ul_pdf/481bb0009.pdf, Milli Eğitim Bakanlığı, Ankara (2012). [2] Gordon Moore, Moore s Law, Wikipedia en.wikipedia.org/wiki/moore's_law#cite_note -IntelInterview-3, (2012). [3] Jonathan Kang, online erişim: 10/12/2012, www.quora.com/why-havent- CPU-clock-speeds-increased-in-the-last-5- years, (2011). [4] Techtarget, online erişim: 10/12/2012, www.bitpipe.com/detail/res/1282247334_6 50.html, (2012) [5] Jagna, A & Bhima,, K., An improved order independent paralel thinning algorithm for image thinning, International Journal of Computer Applications, Vol. 46(3), (2012) [6] Russinovic, M., Process Explorer V15.23 http://technet.microsoft.com/trtr/sysinternals/bb896653.aspx, Microsoft, (2012) [7] Pacheco, P., An Introduction to Parallel Programming, Elsevier Press, Massachusetts, (2011). [8] Brute Force Search, online erişim: 10/12/2012,http://en.wikipedia.org/wiki/Brut e-force_search, Wikipedia, (2008). [9] Singh, D. P. & Khare, N., A Study of Different Parallel Implementations of Single Source Shortest Path Algorithms, International Journal of Computer Applications 54(10), September (2012). [10] Paar, C. & Pelzl, J., Understanding Cryptography: A Textbook for Students and Practitioners, Springer Press, p.7, (2010). [11] Rayarikar, R, Upathyay, S. and Shah, D., An Encryption Algorithm for Secure Data Transmission, International Journal of Computer Applications, Vol. 40(7), February (2012). [12] Woschitz, J., A simple Brute Force Algorithm in C#, https://janosch.woschitz.org/a-simple-bruteforce-algorithm-in-c-sharp/#bruteforcesource, Berlin, (2010). [13] Sharma, S.K. & Gupta, K., Performance Analysis of Parallel Algorithms on Multi-Core System using OpenMP, International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol 2(5), October (2012).