10 Nisan 2010 Cumartesi

Anakart nedir?

Anakart (İngilizce: mainboard veya motherboard), bilgisayarın birincil ve en merkezi baskı devresidir.

Tipik bir anakart, bilgisayarın işlemci ve bellek slotları, ses kartı, grafik kartı, ethernet kartı gibi aygıtlar için genişleme yuvaları, parçaların birbirleri arasında iletişimini üstlenen kuzey ve güney köprülerinin tümünü üzerinde barındırır. Bununla birlikte, bazı komponentler anakart ile bütünleşik (onboard) olabilir. Bu duruma ses ve ethernet kartlari için çok sık, grafik kartı için biraz daha az, CPU ve RAM için ise pek nadiren rastlanır, ve bu sistemler genellikle çok küçük yapıda sistemler veya notebooklardır.

Anakart üzerinde bulunan yuvalar
1. ISA (Industry Standart Architecture): Standart endüstri mimarisi. Genelde anakartların güç kaynağına en uzak noktalarında bulunan siyah, uzun kart yuvalarıdır. Yaklaşık on yedi yıldır kullanılan ve eski bir mimari olan ISA, yeni nesil birçok anakartta bulunmamaktadır. ISA standartına sahip kartların bulunması da hızlı ve sonsuz PCI modellerin tercih edilmesi sebebiyle gün geçtikçe zorlaşmaktadır. 1984 yılında 8 bit’lik ISA standardı, 16 bit’lik veri iletim değerine çıkarılmıştır.

2. PCI (Peripheral Component Interconnet): Çevresel Bileşen Bağlantısı. 1993 yılında Intel tarafından geliştirilen PCI da, ISA gibi standart bir kart yuvasıdır. ISA slotların hemen yanında ve beyaz renklidirler. PCI slotlar teoride 64 bit’lik bir değerde veri transferine olanak sağlarlar. Ama uygulamada oluşan uyumluluk problemleri sebebiyle 32 bit’lik veri yolu olarak kullanılırlar. Veri taşıma hızları 33 ya da 66 MHz’dir. 32 bit’te 33 MHz’lik bir PCI veriyolunun taşıma kapasitesi 133 Mb/sn’dir. PCI yuvaları da ISA gibi plug&play (tak ve çalıştır özelliği) desteğine sahiptir. Günümüzde ses kartları, modemler, tv kartları vs. bilgisayar veriyolunu ve slotlarını kullanırlar.

3. AGP (Advantage Graphics Port): Gelişmiş Grafik Portu. Sadece ekran kartları için tasarlanmış özel bir veri yolu mimarisidir. Grafik uygulamalarının gitgide artması, işlemci ile ekran kartları arasındaki iletişimin giderek daha hızlı olması gerekliliğini doğurmuş ve AGP veriyolunun tasarlanmasına yol açmıştır. AGP 32 bit genişliğindedir ve 66 MHz frekans hızına sahiptir. Bu değerler 266 Mb/sn’lik veri transfer hızına erişmesine olanak tanır. Ayrıca özel bir sinyalleşme metodu ile bu hız 2 hatta 4 katına çıkabilir. 2

AGP(2 kat hızlı) standardında veri akış hızı 533 Mb/sn’dir. 4
AGP(4 kat hızlı) portu ise 1 Gb/sn hıza erişebilir.

4. Portlar: Kasanın arkasında bulunan fare, klavye, yazıcı, tarayıcı gibi bileşenlerin bağlandığı girişlerdir. Bunları seri ve paralel portlar, PS/2 klavye ve fare portları ile USB portu olarak sıralayabiliriz. Seri port, diğer bir deyişle “com portu” harici modemlerin bağlanmasında kullanıldığı gibi fare girişinin yapılmasında da görev alabilir. Paralel port yazıcı ya da tarayıcı gibi bileşenlerin bağlanmasında görev alırken, PS/2 klavye ve fare portları da isminden anlaşılacağı üzere klavye ve fare bağlantıları için kullanılır. Bunların dışında anakart üzerine entegre olan ekran kartı, ses kartı gibi bileşenlerin bağlantıları da birer porttur. Ayrıca CD-ROM sürücüler ve sabit diskler IDE portunu kullanarak anakart üzerine bağlanırlar.

C 'de "Merhaba dünya" yazdırımı

int main( void )

{

printf( "Merhaba dünya!\n" );

return 0;

}



C proğramlama dili

C programlama dili (C), 1970'lerin başında Ken Thompson ve Dennis Ritchie tarafındanUNIX işletim sistemi için geliştirilmiş bir programlama dilidir. C, günümüzde neredeyse tüm işletim sistemlerinde kullanılan, dünyanın en çok kullanılan sistem programlama dilidir. Ancak, uygulama programları yazmak için de çok sık kullanılır. Yine çok kullanılan programlama dillerinden olan C++ da C'den türemiş bir dildir.

Özellikleri

C oldukça minimalist bir dildir ve diğer pek çok programlama dilinden daha düşük düzeylidir. Çoğu zaman, C'nin düşük düzeyli bir dil olduğu ya da bir yüksek seviye assembler olduğu söylenir. Her ne kadar bazan bir yüksek düzeyli dil olduğu söylense de, gerçekte C, yalnızca assembly dillerinden daha yüksek düzeylidir.

C'nin assembly'ye göre iki önemli avantajı vardır: İlk olarak, C kaynak kodunu okuması daha kolaydır, ve özellikle uzun programlar için, yazması da çok daha zahmetsizdir. İkinci olarak, bir assembly programı genellikle yalnızca tek bir makina çeşidi üzerinde çalışabilirken, C programları (bir C derleyicisi ve gerekli kütüphaneler varsa) başka sistemlerde de çalışmak için derlenebilirler. Öte yandan, bir C programının performansı derleyicinin makina kodunu eniyileme başarısına bağlıdır, ki bu da programcının denetimi dışındadır. Assembly programlarının performansı ise doğrudan programcı tarafından belirlenir, çünkü bir assembly programı aslında bir makina dilinin insanlar tarafından daha kolay okunabilir biçimidir. Bu yüzden, bazı programların (örneğin işletim sistemlerinin) yüksek performans gerektiren bölümleri assembly ile yazılırlar. Yine de, özellikle modern mimariye sahip işlemciler için, C derleyicilerinin eniyileyerek ürettiği assembly, elle yazılmış assembly'den hızlıdır.

Benzer avantajlar ve dezavantajlar C'yi yüksek düzeyli dillerden ayırır: bir C programının verimliliği daha iyi kontrol edilebilir, ancak C programlarını yazmak ve okumak daha zordur.

Yine de dikkat edilmelidir ki, C en az yüksek düzeyli diller kadar dir, çünkü günümüzde çoğu bilgisayar sisteminde bir C derleyicisi vardır; aslında, yüksek düzeyli dillerin pek çoğunun derleyicileri, kütüphaneleri ve yorumlayıcıları C ile yazılmışlardır.

C'nin önemli özelliklerinden biri de bilgisayar belleğinin kullanımının programcı tarafından ayarlanmasıdır. Standart C otomatik bellek kullanımını sağlamak için hiçbir araç içermez, ve dizi sınırları (İng. array bounds) kontrol edilmez. Ancak, C'den türemiş olan Java ve gibi diller otomatik bellek yönetimine izin verirler. Her ne kadar C'nin bellek yönetimini programcıya vermesi programın performansının ayarlanmasında programcıya daha çok olanak verse de, bu, programcılık hatalarının artmasına da neden olur. Bu tür hatalar, bilgisayar güvenliğini düşürmeleri ile ün kazanmışlardır. Bu bellek yönetimi hatalarının önüne geçilebilmesi için pek çok araç üretilmiştir (örneğin dizi limitlerini kontrol eden ve otomatik çöp toplama garbage collection yapan kütüphaneler, gibi otomatik kaynak kodu kontrolü yapan programlar).

C'nin bazı özellikleri aşağıda sıralanmıştır:

  • Çok basit bir temel dil (çekirdek dil). Elzem olmayan işlevler bir standart kütüphaneler kümesi tarafından sağlanır.

  • Prosedürel programlamaya verilen özel önem. Yapısal programlama da kolaylaştırılmıştır.

  • C önişlemcisi: Makro tanımlamak ve kaynak kodu dosyalarını birleştirmek için kullanılır.

  • İşaretçiler aracılığı ile bilgisayar belleğine doğrudan erişim (anlamsal açıdan yanlış işlemler derleyici tarafından engellenmezler)

  • Parametreler fonksiyonlara referansları ile değil, değerleri ile geçirilirler

  • Dilin Tarihi

    Dilin erken tarihi

    C'nin ilk gelişme safhaları 1969 ile 1973 arasında AT&T Bell Laboratuvarları'nda gerçekleşti. Ritchie'ye göre, en yaratıcı devre 1972 idi. Dilin pek çok özelliği "B" adlı bir dilden türediği için, yeni dile "C" adı verildi. "B" adının kökeni konusunda ise söylentiler değişik: Ken Thompson B'nin BCPL programlama dilinden türediğini söylemektedir, ancak Thompson eşi Bonnie'nin onuruna adını Bon koyduğu bir programlama dili de geliştirmiştir.

    1973'e kadar C yeterince güçlü bir hale gelmiş ve ilk başta PDP-11/20 assembly dili ile yazılan UNIX'in çekirdeğinin büyük kısmı C ile yeniden yazılmıştı. Böylece UNIX, çekirdeği bir assembly dili ile yazılmayan ilk işletim sistemlerinden biri olmuştu.

    K&R C

    1978'de Ritchie ve Brian Kernighan The C Programming Language (C Programlama Dili) kitabının ilk baskısını yaptılar. C programcıları tarafından "K&R" olarak bilinen bu kitap, C dilinin gayriresmi standardı olarak kullanıldı. C'nin bu versiyonu bugün "K&R C" olarak adlandırılır. Bu kitabın ikinci baskısı ise aşağıda anlatılan ANSI C standardını içerir.

    K&R dilde şu değişiklikleri yaptı:

  • struct veri tipleri eklendi

  • long int veri tipi eklendi

  • unsigned int veri tipi eklendi

  • =+ operatörü += olarak değiştirildi (çünkü =+ C'nin leksikal ayrıştırıcısının kafasını karıştırıyordu)

    K&R C genellikle tüm C derleyicilerinin desteklemek zorunda olduğu dilin en temel kısmı olarak kabul edilir. Uzun yıllar boyunca, ANSI C'nin kabul edilişinden sonra bile, yüksek taşınabilirlik (portability) istendiğinde, K&R C, C programcıları tarafından "ortak payda" olarak kabul edilmiştir çünkü bazı derleyiciler henüz ASCI C'yi desteklemek üzere güncellenmemişlerdi ve zaten iyi yazılmış bir K&R C programı aynı zamanda ASCI C'yi de destekler.

    K&R C'nin yayımlanmasını izleyen yıllar içine dile AT&T'nin derleyicilerinin ve bazı başka bilgisayar üreticileri tarafından desteklenen kimi "gayriresmi" özellikler eklendi. Bunların içinde aşağıdaki özellikler de vardı:

  • void fonksiyonlar ve void
  • veri tipi

  • struct ya da union veri tipi döndüren fonksiyonlar

  • her bir struct'ın alan adları için ayrı bir ad alanı

  • struct veri tipleri için atama

  • bir nesneyi yazmaya karşı korumalı yapmak için const anahtar sözcüğü

  • standart bir C kütüphanesi

  • enumeration'lar

  • single-precision float tipi

    ANSI C ve ISO C

    1970'lerin sonunda C, en çok kullanılan mikrobilgisayar dili olarak BASIC'in önüne geçmeye başladı. 1980'lerde ise, IBM PC ile kullanılmak üzere benimsenmesiyle birlikte popülaritesi iyice artmaya başladı. Aynı zamanda, Bell Laboratuvarları'nda Bjarne Stroustrup ve iş arkadaşları C'ye nesneye yönelim eklemek üzere çalışmaya başlamışlardı. C bugün UNIX dünyasında en çok kullanılan dil olarak kalırken, Stroustrup'un geliştirip C++ adını verdiği dil Microsoft Windows işletim sisteminde en önemli dil oldu.

    1983'te Amerikan Ulusal Standartlar Enstitüsü (ANSI) bir C standardı oluşturmak için bir kurul oluşturdu. Uzun ve yorucu bir çalışmadan sonra, bu kurul standardı 1989'da tamamladı ve standart ANSI X3.159-1989 "Programming Language C (C Programlama Dili)" olarak yayımlandı. Dilin bu versiyonu genellikle ANSI C olarak adlandırılır. 1990'da bu standart, küçük değişikliklerle Uluslararası Standartlar Örgütü (ISO) tarafından da benimsenip ISO/IEC 9899:1990 olarak yayımlandı.

    ANSI C'yi oluşturmanın amaçlarıdan biri K&R C'yi içeren ve dile sonradan katılan "gayriresmi" özellikleri de dile katan bir standart oluşturmaktı. Standart kurulu ayrıca dile (C++'tan alınan) fonksiyon prototiplerini ve daha yetenekli bir önişlemciyi de standarda ekledi.

    Bugün artık ANSI C neredeyse tüm derleyiciler tarafından desteklenmektedir. Günümüzde yazılmakta olan C programlarının çoğunluğu ANSI C stardarına uygun olarak yazılmaktadır. Yalnızca standart C kullanılarak yazılmış bir program, standarda uyumlu her derleyici ile doğru bir biçimde derlenip çalıştırılabilir. Ancak, standart olmayan kütüphaneler kullanılarak yazılmış programlar belli bir platform ya da derleyici gerektirebilirler.

    C99

    ANSI standartlaştırma işleminden sonra C dili uzun bir süre oldukça sabit kaldı, ancak C++ gelişmeyi sürdürdü. Buna bağlı olarak, 1990'ların sonunda ISO standardı güncellendi ve 1999'da ISO 9899:1999 olarak yayımlandı. 2000 yılının Mart'ında ise, "C99" olarak bilinen bu standart ANSI tarafından da benimsendi.

    C99'un yeni özellikleri şöyle özetlenebilir:

  • inline fonksiyonlar

  • C++'da olduğu gibi artık değişkenler programın herhangi bir yerinde tanımlanabilirler

  • long long int, boolean, complex gibi yeni veri tipleri

  • değişken uzunluğa sahip diziler

  • C++'dan alınan, // ile başlayan tek satırlık program içi açıklamalar

  • snprintf() gibi yeni kütüphane fonksiyonları

  • stdint.h gibi yeni başlık dosyaları

    C99'u bugün GCC ve bazı başka derleyiciler desteklemekteyken, Microsoft ve Borland derleyicilerine C99 desteği eklemekte isteksiz davranmaktadırlar.