9 Ekim 2016 Pazar

RAID ÇEŞİTLERİ

Raid Nedir?

    Eskiden bilgisayarlardaki depolama alanı Megabyte(MB) ile ölçülürken, yakın geçmişte Gigabyte(GB) ile ölçülmeye başlanmış ve şu an Terabytle(TB) ile ölçülür olmuştur. Alan arttıkça “nasıl olsa depolamak için çok yer var” diyerek çoğumuz yedek almıyoruz ve diskimize zarar gelince bazen saatlerce hatta günlerce kurtarmaya çalışıyoruz, bazen ise kurtarılamayacak durumda oluyor ve bütün verileri kaybediyoruz. Bir de bunu ev kullanıcıları için değil de iş yerleri için düşünelim. Verileri kaybetmek çok büyük bir sorun olur.
    İşte burada devreye Raid giriyor; Veri kaybını engellemek için yeni bir disk takıyorsunuz. Taktığınız bu disk ile ister performans elde edebilirsiniz isterseniz de veri kaybını engellemek için güvenlik oluşturabilirsiniz.

Raid Çeşitleri Nelerdir?

Raid 0 
   Raid 0 sadece performans için üretilmiş teknolojidir.En az 2 disk ile oluşturulur.Raid kart üzerine gelen tüm datalar disk sayısına bölünerek aynı anda hepsine birden yazılır.

Raid 1 
    Raid 1’de yapı çok farklıdır.Yine en az 2 disk ile oluşturulan bu yapıda Raid kartına gelen tüm data iki diskete aynı şekilde yazılır.Bu işleme Mirroring’te denilir.Bir disk göçtüğünde diğer disk problem olmamış gibi işlemlere devam eder.Kapasite anlamında da tekdisk kapasitesi elde edilir.

Raid 2 
    Günümüzde kullanılmayan bir Raid türüdür.En az 14 disk ile yapılır.10 disk datalar için tutulurken kalan 4 disk ECC (error correction control) benzeri Hamming kod’ları tutar.Günümüzde Raid kartları üzerinde ECC bulundurdukları için Raid 2 yapısı kullanılmamaktadır.

Raid 3 
    Bu yapı en az 3 disk ile oluşturulur.Veriler parite diski hariç tüm disklere dağıtılır.Bu yapıda tekbir parite diski bulunduğu için erişim hızı çok yüksektir.Raid 3’te günümüzde kullanılmayan teknolojidir.
Raid 4
    Raid 3 ile neredeyse aynıdır.Aradaki tek fark Raid 4 yapıda veriler disklere sektör sektör yazılır.Her data disklere sıra ile yazıldığı için yazma işlemi sırasında okuma işlemi de yapılabilmektedir.

Raid 5
    Günümüzde en yaygın ve en popüler yapı Raid 5’tir. En az 3 disk ile oluşturulur.Parite bilgisi tüm disklere dağıtılır.Yani tüm disklerde hem veri hem parite bilgisi bulunur.

Raid 6
    Raid 6 en az 4 disk ile yapılır.Bu yapıda Raid 5 gibi dağıtılmış pariteler kullanır.Raid 5’ten farkı ise iki ayrı parite diski kullanması ve 2 diski tolere edebilmesidir.Okuma hızı oldukça iyidir.

Raid 10
    Raid nesting denilen bir yapı ile farklı 2 raid 1’in Raid 0 yapısı altında birleştirilmesi ile oluşturulur.En az 4 disk ile oluşturulan bu yapı Performans olarakta yüksek seviyededir.

Raid 15
    Raid 15 en az 6 disk ile yapılır.2 raid 5 yapısının Raid 1 ile birleştirilmesi ile elde edilir.En güvenli yapıdır.Yüksek güvenli dataların saklanmasında kullanılır.

Raid 50
    En az 6 adet disk ile oluşturulan bir yapıdır.2 tane Raid 5’in Raid 0 ile birleştirilmesi ile yapılır.Hem performanslı hemde güvenlidir.

Raid 51
    Raid 50 ile çok benzerdir.2 adet Raid1 yapıyı Raid 1 ile birleştirerek üretilir.En güvenli yapıdır.

Raid 60
    En az 8 disk ile elde edilen bu yapı, 2 adet Raid 6 yapıyı Raid 0 yapısı altında birleştirilir.Burada yüksek seviye güvenlik elde edilir.Toplamda 8 disk’in 6 diski tolere edilir.Güvenlik en üst seviyede iken mali anlamda en pahalı yapıdır.

Raid 0+1
    İşte Raid teknolojisinde performans anlamında en üst seviyede bulunan Raid yapısı budur.Disk sayısı ne kadar fazla ise performans o derecede artar.En az 4 disk ile oluşturulabilir.2 adet Raid 0 yapısını Raid 1 altında toplayarak yapılan bu yapı gelen tüm dataları parçalayıp tüm disklere dağıtarak okuma yazma yaptığından performans olarak hiçbir yapı performans anlamında bu yapının yanına yaklaşamaz.

USB 1.1 2.0 3.0 3.1 ARASINDAKİ FARKLAR

-USB 1.1 ve USB 2.0 Arasında ki Farklar    
  •  USB 1.1 ve USB 2.0 portları fiziksel olarak aynıdır. 
  •  USB 1.1 standardı, veri iletişim hızını 12 Mbit/saniye ile sınırlar. 
  •  USB 2.0'da veri iletişim hızı 480 Mbit/saniye'dir. Arada büyük fark vardır. 
  •  USB portunu kullanan USB 1.1'nin hız kısıtlamasından dolayı yüksek performansta çalışan aygıtlar üretilemiyordu; USB 2.0 ile bu sınır ortadan kalktı. Örneğin, artık yüksek hızda CD/DVD yazıcılar USB 2.0 standartını kullanır.
  •  Bir ürünün USB 2.0 standarında çalışması için hem kendisinin USB 2.0 kontrolcüsüne sahip olması; hem de anakartın USB 2.0 destekli olması gerekir.
  • USB 1.1 olan aygıtı USB 2.0 destekli sisteme taktığınızda hızı yine USB 1.1 standardı ile sınırlıdır. 
  • USB 2.0 olan aygıtı USB 1.1 destekli sisteme taktığınızda hızı USB 1.1 standardınını hızı ile limitlenir.
USB 1.1















USB 2.0


-USB 2.0 ve USB 3.0 Arasında ki Farklar 

  • USB 2.0 Bellek 480 Mbit/sn bant genişliğine sahipken USB 3.0 Bellek 4,80 Gbit/sn bant genişliğine sahiptir.
  • 2.0 ve 3.0 kavramı alacağınız flash belleğin bir bilgisayara olan dosya alım veya aktarım hızıdır.
  • USB Bellek 3.0, 2.0’a göre oldukça yüksek düzeyde bir aktarım hızına sahiptir.
  • Belleğin kullanıldığı bilgisayar veya donanım birimi aktarım hızı ne ise o hızda olur.
  • Yani aldığınız USB Bellek 3.0 ancak bilgisayarınız 2.0 destekliyorsa aktarım hızı 2.0 düzeyinde olacaktır.
  • 3.0 Belleklerin USB girişi genellikle MAVİ renklidir.


GÜNCEL SATILAN İŞLEMCİLERİN SOKETLERİ

     Soket, işlemcinin anakarta takıldığı yuvaya verilen isimdir.

Intel İşlemci Soket Yapıları


  •  LGA 1150 SOKETİ


  • LGA 1151 SOKETİ

  • LGA 1155 SOKETİ



  • LGA 2011 SOKETİ



  • LGA 2011V3 SOKETİ


Amd İşlemci Soket Yapıları


  • Soket FM1



  • Soket FM2


  • Soket FM2+


  • Soket AM3


  • Soket AM3+


















4 Ekim 2016 Salı

IF VE FOR KULLANIMI

If kullanımı

    if yapısı tek başına, else deyimi ile birlikte, else if deyimi ile birlikte veya her ikisi ile birlikte kullanılabilir.
if (ifade) işlem-satırı; /* if kalıbının tek başına kullanımı */
    Eğer if ile başlayan satırda if deyiminden sonra yer alan parantezler içindeki ifade doğru ise (ifade sonucu 0'dan farklı ise) aynı satırda if kalıbından sonra yer alan işlem satırı çalışır. Eğer ifade yanlış ise (ifade sonucu 0'a eşit ise) if kalıbından sonra yer alan işlem satırı devre dışı kalır. Yani, program o işlem satırı hiç yazılmamış gibi bir sonraki işlem satırından çalışmaya devam eder.
/* if kalıbının else deyimi ile birlikte kullanımı */
if (ifade) işlem-satırı;
else işlem-satırı;
    Eğer if satırında yer alan ifadenin sonucu doğru ise, program if satırındaki işlem satırının gereğini yerine getirir, else satırına hiçbir işlem yapmaz. Eğer if satırında yer alan ifade yanlış ise, program if satırını dikkate almaz, else satırındaki işlem satırının gereğini yerine getirir. Program iki satırdan sadece bir tanesini dikkate almak zorundadır.
    Sadece if satırlarından oluşan bir programda bütün if satırları da işlem görebilir, hiçbir if satırı da görmeyebilir. Elde edilecek sonuç tamamen if satırlarında tanımlanan ifadelerin doğruluğuna bağlıdır ve birbirinden bağımsızdır. if ve else gruplarından oluşan işlem satırlarında ise if ya da else işlem satırlarından birisi mutlaka çalışacaktır. Çünkü biri diğerinin alternatifidir ve birbirine bağlıdır. Program if satırının ifadesinin sonucunun doğru olduğunu belirleyip ilgili işlem satırını çalıştırdığında, artık else ile ilgili işlem satırına işlem yapma şansı yoktur.
/* if kalıbının else if ve else deyimi ile birlikte kullanımı */
if(ifade) işlem-satırı
else if(ifade) işlem-satırı
else if(ifade) işlem-satırı
.
else if(ifade) işlem-satırı
else işlem-satırı
    if-else-if kalıbında, bir if satırı, istediğiniz sayıda else if satırı ve isteğe bağlı olarak tanımlanan bir else satırı bulunur. Yani, else satırının tanımlanması şart değildir.
Program, en başta yer alan if satırı ile if-else-if kalıbını değerlendirmeye başlar. İlk doğru ifadenin bulunduğu if veya else if satırı ile karşılaştığında ilgili işlem satırını çalıştırır. Kalıbın geri kalan tüm satırlarını değerlendirmeye almadan geçer. Eğer if ve else if satırlarında yer alan ifadelerden hiç biri doğru bir sonuç vermezse, else satırında yer alan işlem satırını çalıştırır. else satırı da mevcut değilse, program if-else-if kalıbının hiç bir satırını çalıştırmadan bir sonraki satırdan çalışmasına devam eder. if-else-if kalıbında sadece tek bir satır işlem görür.
    if-else-if kalıbının aynı sayıda if satırı ile sağlanan seçenek sistemine göre bir avantajı vardır. if satırları ile sağlanan seçenek sisteminde program doğru sonuç veren bir ifadenin bulunduğu bir if satırını çalıştırdıktan sonra, diğer if satırlarını da değerlendirmek zorundadır.

 İç İçe if ve else deyimleri


C dilinde, bir if veya else deyimine bağlı olarak çalıştırılan işlem satırında yeni bir if deyimi yer alabilir. Yine bir if veya else deyimine bağlı olarak çalıştırılan kod bloğu içinde yer alan işlem satırlarından birisinde yeni bir if deyimi yer alabilir. Başka bir ifade ile, bir if deyimi başka bir if veya else deyiminin içinde kullanılabilir. İçte kalan if deyimi dıştaki if deyimine ait ifadenin doğru olması halinde programın çalıştırdığı tek bir satır olabileceği gibi, dıştaki if deyimine ait bir kod bloğunun işlem satırlarından biri de olabilir.


if(ifade1)     Deyim1; else if (ifade2)     Deyim2; else if (ifade3)     Deyim3; .... .... else     Deyim_n; Deyim_n+1;

For Döngüsü


  For döngüsünde bir başlangıç noktası ve bitiş noktası vardır.Tabii başlangıçtan bitime gidebilmek için bir artırım tekniği kullanılır.Örneğin bir i değerini 1 den başlatıp 5 e kadar götürmek için önce ilk değer 1 verilir,son değer beş verilir ve sayıları artır diyerek 5 e kadar saydırabiliriz.
Sonsuz döngü bu açıklamanın dışındadır.
Şimdi anlattıklarımızı kodlara dökelim.

for(i=1;i<5;i++)


    Burada 1'den 4 e sayıları içeren bir döngü oluşturduk. 
i++ tanımının anlamı i=i+1 dir,yani önce i değerini kullan sonra bir artırarak bitime kadar devam et demektir. 
    Daha iyi açıklayabilmek için örnek bir kod yazalım:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
for(i=0;i<5;i++)
printf("%d\n",i);
system("pause");
return 0;
}

3 Ekim 2016 Pazartesi

OPERATÖRLER

1.Aritmetik Operatörler

    Matematiksel ifadeleri günlük hayattaki biçimde bilgisayarda yazamadığımız için belli bir kurallar uymamız gerekir.  Kullandığımız matematiksel işlemler ve anlamları şöyledir:
  • + , - , * , /   :      toplama, çıkarma, çarpma,  bölme
  • %                :      tamsayı bölme sonucundaki kalanı verir (modulus)
  • 7. / 2   ---> 3.5   (nokta sayının gerçel yorumlanmasını sağlar)
  • 7 / 2    ---> 3      (sayılar int kabul edilip sonuçta int tipine dönüştürülür)
  • 7 % 2  ---> 1
  • 2 % 7  ---> 2
  • 2 / 7    ---> 0
Matematiksel ifadeler hesaplanırken izlenen adımlar:
1.Önce parantez içindeki ifadeler hesaplanır. İçiçe parantezler var ise hesaplamaya en içteki parantezden başlanır.
2.ilk önce * , /  ve % işlemleri daha sonra + ve - işlemleri yapılır.
3.Öncelik sırası aynı olan işlemlerde hesaplama soldan sağa doğru yapılır.              
     5./2*3   -->  7.5

 2 .Karşılaştırma Operatörleri:

 Sonucu Doğru  veya Yanlış olan ifadelerdir.  Sonuç sıfır ise yanlış aksi halde doğru kabul edilir. İki değer arasındaki ilişkiyi test etmek için kullanılır.

         
İşleç        Anlamı
  •  >       büyük
  •  >=     büyük - eşit
  •  ==     eşit
  •  <       küçük
  •  <=     küçük - eşit
  •  !=      eşit değil
                      

        
x=8,  y=5 için
  •          x > y    Doğru 
  •          x < y    Yanlış
  •          x !=y    Doğru


3.Mantıksal Operatörler:

    İki mantıksal ifade arasındaki ilişki üzerindeki ilişkide kullanılır. 
  •     !      --->     DEĞİL  (NOT)
  •     &&   --->     VE         (AND)
  •     ||     --->     VEYA   (OR)
  •     (X>0) && (X>Y)  --->   X 0'DAN BÜYÜK VE X Y'DEN BÜYÜK    
  •     (X>0) || (Y>0)   --->    X 0'DAN BÜYÜK VEYA Y 0'DAN BÜYÜK 

SCANF VE KULLANIMI

SCANF

    Programlarımızda sıklıkla kullanıcıdan bir bilgi almaya gereksinim duyarız. İşte bu işlemi gerçekleştirmek için scanf fonksiyonu kullanılır. Standart scanf fonksiyonu ile girdi elde edilir. Fonksiyonun prototip bildirimi stdio.h başlık dosyasında yer alır :

int scanf (char *format, ...);
    Scanf fonksiyonu, standart girdi biriminden girilen karakterleri okuyarak, parametre değişkeni olarak aktarılan nesnelere yazar. Karakterleri yorumlama işlemini de format parametresi olarak geçilen ifadeye göre gerçekleştirir. Geri dönüş değeri, başarılı olarak aktarılan karakter sayısını ifade eder. Fonksiyonun tüm parametreleri göstericidir. Format belirten ilk parametrenin dışındaki parametreler, alınan bilgilerin aktarılacağı göstericilerdir. Format belirten ifadede kullanılan dönüşüm belirteçleri ile bu göstericiler sırasıyla eşleştirilir ve her göstericiye değerin ne şekilde yorumlanarak atanacağı belirlenir. Örneğin kullanıcının klavyeden gireceği bir tamsayı değerini bir nesneye atamak istersek şöyle bir ifade yazmalıyız : 

int deger;
scanf("%d",&deger); 

//... 

int a, b; 
scanf("%d%d",&a,&b);
   
    Görüldüğü üzere, ikinci parametre olarak "deger" isimli nesnenin adresi geçilmiştir. Kullanıcının klavyeden gireceği tamsayı değeri, bu adrese yazılacaktır. İkinci örnekte ise klavyeden iki bilgi alınmıştır. Bu bilgiler de biçimlendirme ifadesine göre tamsayı olarak yorumlanır. Biçimlendirme ifadesinde özel olarak belli karakterler kullanarak tek satırda bilgi alımını da sağlayabiliriz. Örneğin klavyeden noktalı virgül ile ayrılmış üç tane tamsayı değeri almak istediğimizi düşünelim. Yani kullanıcı bir satırda gireceği tüm bilgileri yazacak ve bunları birer noktalı virgül ile ayıracak. Bu durumda scanf fonksiyonunu şu şekilde çağırmalıyız :

int a, b, c; 
scanf("%d;%d;%d",&a,&b,&c);

//... 

int gun,yil;
char ay[20];
scanf("%d %s %d";&gun,ay,&yil);

   
     Kullanıcı "34;56;21" şeklinde bir ifade girdiğinde bu değerler sırasıyla a, b ve c nesnelerine atanacaktır. Biçimlendirme ifadesinde noktalı virgül kullanmazsak, bu durumda kullanıcının bu değerleri teker teker girmesi ve her defasında "enter" tuşuna basması gerekir. Eğer boşluklarla ayrılmış bir ifadeyi tek satırda alarak nesnelerimize aktarmak istiyorsak biçimlendirme ifadesindeki dönüşüm karakterleri arasına boşluk karakteri eklemeliyiz.

    Yukarıda ikinci örnekte klavyeden aralarına boşluklar ile bırakılmış bir tarih bilgisinin okunmasını sağladık. Örneğin kullanıcı "1 Ocak 2005" gibi bir tarih bilgisini girip "enter" tuşuna bastığında bu bilgiler sırasıyla gun, ay ve yil nesnelerine aktarılacaktır. (Dizi isimleri adres belirttiği için ay dizisinin adı doğrudan yazılmıştır.) scanf fonksiyonu girdi biriminden kaç değer okuyacağını biçimlendirme ifadesinde kullanılan dönüşüm karakteri sayısına göre belirler. Bu sayı ile alınan değerleri saklamak üzere fonksiyona aktardığımız adreslerin sayısının tutması önemlidir. scanf fonksiyonu ile aldığımız bilgilerin sayısını kontrol etmek için fonksiyonun geri dönüş değerini kullanabiliriz. Bu şekilde kullanıcının bilgileri istediğimiz şekilde girmesini de sağlayabiliriz. Tarih bilgisi almak için yazdığımız yukarıdaki ifadede scanf fonksiyonunun bulunduğu satırı bir if ifadesi içerisine alıp geri dönüş değerinin 3 olup olmadığını kontrol ederiz, eğer girilen bilgi sayısı 3’e eşit değilse kullanıcıya bir bilgi mesajı vererek kullanıcıyı bilgiyi doğru girmeye zorlayabiliriz.

VERİ TİPLERİ VE KULLANIMI

Veri Tipleri

    Gerçek sayıların yazdırılmasında, noktadan sonra yazılacak basamak sayısı vb durumların ifade edilmesi için ve tamsayıların aynı hizada yazdırılması için nokta operatörü veya rakamlar kullanılır. Aynı şekilde karakter katarlarının sağa ya da sola dayalı yazdırılması için veya bir karakter katarındaki karakterlerin kaç tanesinin yazdırılacağını belirtmek için de yine nokta, eksi gibi operatörlerin ve rakamların çeşitli kombinasyonları kullanılır.
   Biçimlendirme ifadelerini örnekler üzerinde inceleyelim :


//ÖRNEK 1 :

int a = 1, b = 10, c = 100;
printf("%d\n",a);              // 1
printf("%d\n",b);              // 10
printf("%d\n",c);              // 100

//ÖRNEK 2 :
int a = 1, b = 10, c = 100;
printf("%3d\n",a);            //    1
printf("%3d\n",b);            //   10
printf("%3d\n",c);            // 100

//ÖRNEK 3 :
int a = 1, b = 10, c = 100;
printf("%.3d\n",a);           // 001
printf("%.3d\n",b);           // 010
printf("%.3d\n",c);           // 100
//ÖRNEK 4 :
double a = 1.0, b = 10.0, c = 100.0;
printf("%f\n",a);              // 1.000000
printf("%f\n",b);              // 10.000000
printf("%f\n",c);              // 100.000000

//ÖRNEK 5:
double a = 1.0, b = 10.0, c = 100.0;
printf("%.3f\n",a);              // 1.000
printf("%.3f\n",b);              // 10.000
printf("%.3f\n",c);              // 100.000

//ÖRNEK 6:
double a = 1.0, b = 10.0, c = 100.0;
printf("%7.3f\n",a);              //    1.000
printf("%7.3f\n",b);              //   10.000
printf("%7.3f\n",c);              // 100.000

    Tamsayı ifadeleri yazdırırken "%d" ifadesinde d’nin önüne koyduğumuz rakam, sayının kaç basamaklık bir bölgeye yazılacağını ifade eder. Yukarıda ikinci örnekte "%3d" yazarak tamsayı değişkenlerin değerlerinin üç basamaklık bir bölgeye yazılmasını sağladık. Üçüncü örnekte basamak ifade eden rakamın önüne bir de nokta ekledik ve biçimlendirme ifadesini "%.3d" şeklinde yazdık. Çıktımızda tamsayı değişkenlerin değerleri üç basamaklık bir bölgeye yazıldı ve boş kalan yerlere sıfır yazıldı. Gerçek sayıları yazdırırken eğer sadece "%f" biçiminde bir ifade kullanılırsa, yani ifadede herhangi bir rakam belirtilmezse çıktımızda basamak duyarlılığı altı olarak alınacaktır. (Varsayılan olarak noktadan sonra altı basamak yazılır) Eğer biçimlendirme ifadesini "%.3f" biçiminde yazarsak noktadan sonra üç basamak yazılacaktır. Bu ifadede, noktadan önce bir de rakam belirtirsek, örneğin yukarıdaki altıncı örnekte olduğu gibi "%7.3f" şeklinde bir ifade kullanırsak, hem noktadan sonra üç basamak yazılır hem de değerler yedi basamaklık bir alana yazılarak hizalanır. İlave olarak burada "%07.3f" şeklinde bir ifade yazarsak, yine değerler üç basamak duyarlıklı olarak yedi basamaklık bir alana yazılacak, ancak bu defa boş kalan basamaklar yerine bir de sıfır yazılacaktır. (001.000 gibi)