Senin, 22 November 2010

Jaringan Komputer

JARINGAN KOMPUTER

Sistem yang terdiri atas dua atau lebih komputer dan perangkat jaringan lainnya menggunakan protocol komunikasi melaluimedia transmisi yang bekerja bersama-sama untuk mencapai suatu tujuan yang sama.

Tujuan dari jaringan komputer adalah:

Membagi sumber daya: contohnya berbagi pemakaian printer, CPU, memori, harddisk

Komunikasi: contohnya surat elektronik, instant messaging, chatting

Akses informasi: contohnya web browsing

Agar dapat mencapai tujuan yang sama, setiap bagian dari jaringan komputer meminta dan memberikan layanan (service). Pihak yang meminta/menerima layanan disebut klien (client) dan yang memberikan/mengirim layanan disebut pelayan (server). Arsitektur ini disebut dengan sistem client-server, dan digunakan pada hampir seluruh aplikasi jaringan komputer.

[sunting]Klasifikasi

Ø Berdasarkan skala :

Local Area Network (LAN): suatu jaringan komputer yang menghubungkan suatu komputer dengan komputer lain dengan jarak yang terbatas.

Metropolitant Area Network (MAN): prinsip sama dengan LAN, hanya saja jaraknya lebih luas, yaitu 10-50 km.

Wide Area Network (WAN) : jaraknya antar kota, negara, dan benua. ini sama dengan internet.

Ø Berdasarkan fungsi :

Pada dasarnya setiap jaringan komputer ada yang berfungsi sebagai client dan juga server. Tetapi ada jaringan yang memiliki komputer yang khusus didedikasikan sebagai server sedangkan yang lain sebagai client. Ada juga yang tidak memiliki komputer yang khusus berfungsi sebagai server saja. Karena itu berdasarkan fungsinya maka ada dua jenis jaringan computer :

1> Client-server

Client-server yaitu jaringan komputer dengan komputer yang didedikasikan khusus sebagai server. Sebuah service/layanan bisa diberikan oleh sebuah komputer atau lebih. Contohnya adalah sebuah domain seperti www.detik.com yang dilayani oleh banyak komputer web server. Atau bisa juga banyak service/layanan yang diberikan oleh satu komputer. Contohnya adalah server jtk.polban.ac.id yang merupakan satu komputer dengan multi service yaitu mail server, web server, file server, database server dan lainnya.

2> Peer-to-peer

Yaitu jaringan komputer dimana setiap host dapat menjadi server dan juga menjadi client secara bersamaan. Contohnya dalam file sharing antar komputer di Jaringan Windows Network Neighbourhood ada 5 komputer (kita beri nama A,B,C,D dan E) yang memberi hak akses terhadap file yang dimilikinya. Pada satu saat A mengakses file share dari B bernama data_nilai.xls dan juga memberi akses file soal_uas.doc kepada C. Saat A mengakses file dari B maka A berfungsi sebagai client dan saat A memberi akses file kepada C maka A berfungsi sebagai server. Kedua fungsi itu dilakukan oleh A secara bersamaan maka jaringan seperti ini dinamakan peer to peer.

Berdasarkan topologi jaringan, jaringan komputer dapat dibedakan atas:

Topologi bus

Topologi bintang

Topologi cincin

Topologi mesh

Topologi pohon

Topologi linier

Ø Berdasarkan kriterianya, jaringan komputer dibedakan menjadi 4 yaitu :

1. Berdasarkan distribusi sumber informasi/data

  1. Jaringan terpusat

Jaringan ini terdiri dari komputer klient dan server yang mana komputer klient yang berfungsi sebagai perantara untuk mengakses sumber informasi/data yang berasal dari satu komputer server

  1. Jaringan terdistribusi

Merupakan perpaduan beberapa jaringan terpusat sehingga terdapat beberapa komputer server yang saling berhubungan dengan klient membentuk sistem jaringan tertentu.

2. Berdasarkan jangkauan geografis dibedakan menjadi:

  1. Jaringan LAN

Merupakan jaringan yang menghubungkan 2 komputer atau lebih dalam cakupan seperti laboratorium, kantor, serta dalam 1 warnet.

  1. Jaringan MAN

Merupakan jaringan yang mencakup satu kota besar beserta daerah setempat. Contohnya jaringan telepon lokal, sistem telepon seluler, serta jaringan relay beberapa ISP internet.

Jaringan WAN, merupakan jaringan dengan cakupan seluruh dunia. Contohnya jaringan PT Telkom, PT. Indosat, serta jaringan GSM Seluler seperti Satelindo, Telkomsel, dan masih banyak lagi.

3. Berdasarkan peranan dan hubungan tiap komputer dalam memproses data.

  1. Jaringan Client-Server

Pada jaringan ini terdapat 1 atau beberapa komputer server dan komputer client. Komputer yang akan menjadi komputer server maupun menjadi komputer client dan diubah-ubah melalui software jaringan pada protokolnya. Komputer client sebagai perantara untuk dapat mengakses data pada komputer server sedangkan komputer server menyediakan informasi yang diperlukan oleh komputer client.

  1. Jaringan Peer-to-peer

Pada jaringan ini tidak ada komputer client maupun komputer server karena semua komputer dapat melakukan pengiriman maupun penerimaan informasi sehingga semua komputer berfungsi sebagai client sekaligus sebagai server.

4. Berdasarkan media transmisi data

  1. Jaringan Berkabel (Wired Network)

Pada jaringan ini, untuk menghubungkan satu komputer dengan komputer lain diperlukan penghubung berupa kabel jaringan. Kabel jaringan berfungsi dalam mengirim informasi dalam bentuk sinyal listrik antar komputer jaringan.

  1. Jaringan Nirkabel(WI-FI)

Merupakan jaringan dengan medium berupa gelombang elektromagnetik. Pada jaringan ini tidak diperlukan kabel untuk menghubungkan antar komputer karena menggunakan gelombang elektromagnetik yang akan mengirimkan sinyal informasi antar komputer jaringan.

Distribute System

DISTRIBUE SYSTEM

Sistem terdistribusi merupakan sebuah sistem yang melibatkan lebih dari satu komputer dalam suatu infrastruktur jaringan baik local, internet bahkan wireless. Sebuah sistem terdistribusi, tidak hanya melakukan komunikasi antara satu proses pada satu komputer dengan proses pada komputer yang lain, namun juga perlu mempertimbangkan ketersediaan infrastruktur jaringan yang memadai dan juga dukungan standarisasi sistem yang terbuka. Model client/server menjadi suatu model yang tidak dapat dilepaskan dari sistem terdistribusi ini, karena model client/server ini sangat memungkinkan koordinasi antara satu proses dengan proses yang lain agar pemakaian resources dalam system terdistribusi dapat lebih baik. Oleh karena menggunakan model client/server, maka dukungan middleware yang bersifat terbuka menjadi suatu kebutuhan yang harus dipenuhi.

InternetWorking

INTERNETWORKING

Internetworking melibatkan jaringan menghubungkan dua atau lebih komputer melalui gateway menggunakan teknologi routing umum. Hasilnya adalah sebuah internetwork disebut (sering disingkat menjadi internet).

Contoh paling menonjol adalah internetworking Internet (dikapitalisasi), sebuah jaringan banyak jaringan berdasarkan teknologi hardware, tetapi disatukan oleh standar protokol internetworking, Internet Protocol Suite (TCP / IP).

Elemen-elemen jaringan yang digunakan untuk menghubungkan jaringan individu yang dikenal sebagai router, tapi pada awalnya disebut gateway, sebuah istilah yang usang dalam konteks ini, karena kebingungan dengan perangkat fungsional lain dengan menggunakan nama yang sama.

Interkoneksi jaringan dengan jembatan (link perangkat layer) yang terkadang salah disebut sebagai "internetworking", tapi sistem yang dihasilkan hanyalah sebuah subnetwork, lebih besar tunggal, dan tidak ada protokol internetworking (misalnya IP) dibutuhkan untuk melintasi itu. Namun, jaringan komputer dapat dikonversi menjadi suatu internetwork dengan membagi jaringan menjadi segmen-segmen dan kemudian menambahkan router antara segmen.

Istilah asli untuk sebuah internetwork adalah catenet. Internetworking dimulai sebagai sebuah cara untuk menghubungkan jenis teknologi jaringan yang berbeda-beda, tetapi menjadi luas melalui kebutuhan berkembang untuk menghubungkan dua atau lebih jaringan area lokal melalui semacam jaringan area luas. Definisi sekarang termasuk koneksi jenis lain jaringan komputer seperti jaringan wilayah pribadi.

protokol, seperti Protokol Internet dirancang untuk memberikan yaitu (tidak bisa diandalkan, tidak dijamin) layanan paket di jaringan. Arsitektur menghindari elemen-elemen jaringan antara mempertahankan negara bagian jaringan. Sebaliknya, fungsi ini diserahkan kepada titik akhir dari setiap sesi komunikasi yang. Untuk mentransfer data terpercaya, aplikasi harus menggunakan suatu Transportasi LayerTransmission tepat Control Protocol (TCP), yang memberikan aliran yang handal. Beberapa aplikasi menggunakan protokol, transportasi sederhana sambungan-kurang, User Datagram Protocol (UDP), untuk tugas-tugas yang tidak memerlukan pengiriman data yang handal atau yang membutuhkan layanan real-time, seperti video streaming.

Peer-To-Peer

PEER-TO-PEER

Peer-to-peer komputer atau jaringan adalah arsitektur aplikasi terdistribusi yang partisi tugas atau beban kerja antara rekan-rekan. Peer sama-sama istimewa, peserta equipotent dalam aplikasi. Mereka dikatakan membentuk jaringan peer-to-peer node.

Peer membuat sebagian dari sumber daya mereka, seperti kekuatan pemrosesan, penyimpanan disk atau bandwidth jaringan, langsung tersedia untuk peserta jaringan lain, tanpa memerlukan koordinasi pemerintah pusat dengan server atau host yang stabil. Peer-to-peer keduanya pemasok dan konsumen sumber daya, kontras dengan tradisional client-server model dimana hanya server pasokan, dan klien konsumsi.

Untuk peer-to-peer aplikasi struktur peer-to-peer dipopulerkan oleh sistem file sharing seperti Napster. Paradigma komputasi peer-to-peer telah mengilhami struktur baru dan filsafat di daerah lain interaksi manusia. Dalam konteks sosial, peer-to-peer sebagai aplikasi terdistribusi yang mengacu pada egaliter jejaring sosial yang saat ini muncul di seluruh masyarakat , dimungkinkan oleh internet teknologi pada umumnya. Dan Jaringan dengan tipe ini diorganisasikan kedalam workgroup.

Di Internet, peer-to-peer (disebut sebagai P2P) adalah jenis jaringan internet transien yang memungkinkan sekelompok pengguna komputer dengan program jaringan yang sama dapat terhubung dengan masing-masing secara langsung mengakses file dan lain dari satu sama lain hard drive . Napster dan Gnutella adalah contoh dari jenis peer-to peer software. produsen utama dari konten, termasuk perusahaan rekaman, telah menunjukkan keprihatinan mereka tentang apa yang mereka anggap ilegal berbagi konten berhak cipta dengan menuntut beberapa pengguna P2P.

Sementara itu, perusahaan sedang melihat keuntungan menggunakan P2P sebagai cara bagi karyawan untuk berbagi file tanpa biaya yang terlibat dalam menjaga server terpusat dan sebagai cara bagi bisnis untuk pertukaran informasi dengan satu sama lain secara langsung.

Bagaimana Kerja P2P Di Internet?

Pengguna harus terlebih dahulu men-download dan mengeksekusi peer-to-peer networking program. (Gnutellanet saat ini salah satu yang paling populer dari program P2P desentralisasi karena memungkinkan pengguna untuk bertukar semua jenis file.) Setelah meluncurkan program ini, pengguna memasukkan Alamat IP dari komputer lain milik jaringan. (Biasanya, halaman Web di mana pengguna mendapatkan download akan daftar beberapa alamat IP sebagai tempat untuk memulai). Setelah komputer menemukan seorang anggota jaringan on-line, maka akan terhubung ke pengguna koneksi yang (yang telah mendapatkan alamat IP mereka dari pengguna koneksi lain dan seterusnya).

Pengguna dapat memilih bagaimana koneksi banyak anggota untuk mencari pada satu waktu dan menentukan file mana mereka ingin berbagi atau melindungi password.

Internet

INTERNET

Internet berasal dari kata Interconnection Networking yang mempunyai arti hubungan komputer dengan berbagai tipe yang membentuk sistem jaringan yang mencakup seluruh dunia (jaringan komputer global) dengan melalui jalur telekomunikasi seperti telepon, radio link, satelit dan lainnya.

Dalam mengatur integrasi dan komunikasi jaringan komputer ini digunakan protokol yaitu TCP/IP. TCP (Transmission Control Protocol) bertugas memastikan bahwa semua hubungan bekerja dengan benar, sedangkan IP (Internet Protocol) yang mentransmisikan data dari satu komputer ke komputer lain. TPC/IP secara umum berfungsi memilih rute terbaik transmisi data, memilih rute alternatif jika suatu rute tidak dapat di gunakan, mengatur dan mengirimkan paket-paket pengiriman data.

Untuk dapat ikut serta menggunakan fasilitas Internet, biasanya Anda harus berlangganan ke salah satu ISP (Internet Service Provider) yang ada di kota Anda. ISP ini biasanya disebut penyelenggara jasa internet ataupun Anda dapat menggunakan fasilitas dari Telkom yakni Telkomnet Instan.

Dengan memanfaatkan internet, pemakaian komputer di seluruh dunia dimungkinkan untuk saling berkomunikasi dan pemakaian bersama informasi dengan cara saling kirim e-mail, menghubungkan ke komputer lain, mengirim dan menerima file, membahas topik tertentu pada newsgroup dan lain-lain.

Internet dapat digolongkan menjadi beberapa group jaringan, antara lain:

• Backbone: Jaringan besar yang menghubungkan antar jaringan lainnya. Contoh :

NSFNET yang merupakan jaringan backbone dunia di Amerika, EBONE yang

merupakan jaringan backbone di Eropa, dan lainnya.

• Jaringan regional, contoh: jaringan antar kampus.

• Jaringan yang bersifat komersial dimana menyediakan koneksi menuju backbone

kepada pelanggannya.

• Jaringan lokal, contoh: jaringan dalam sebuah kampus.

Jumat, 22 Oktober 2010

PGA

PGA

PGA kependekan dari Pin Grid Array, adalah tipe koneksi (pada prosesor) yang secara fisik berupa deretan pin yang tersusun teratur sedemikian rupa, yang didesainkan pada prosesor untuk dipasangkan pada soket yang ada pada motherboard. Soket yang dimaksud adalah soket yang kompatibel dengannya, dengan kata lain soket yang menjadi pasangannya. Pin-pin tersebut berupa deretan semacam ‘jarum pendek dan tumpul atau semacam kawat pendek terbuat dari logam’.

pin grid array (PGA) mampu memberikan hingga beberapa ratus koneksi ke satu chip. Sambungan ke perangkat yang dibuat dengan cara array pin bawah paket. array dapat dibentuk sebagai baris beberapa paralel pin pada dua sisi berlawanan dari paket atau sekitar keempat sisi, tergantung pada ukuran dan kompleksitas dari IC.

AMR

AMR

Adaptive Multi-Rate (AMR) digunakan dalam pidato coding dan audio melibatkan kompresi data . kompresi data Audio memungkinkan untuk penyimpanan lebih lanjut tentang file suara.". AMT" adalah ekstensi nama file yang populer untuk AMR.Banyak ponsel digunakan AMR untuk penyimpanan rekaman pidato.

AMR ini terutama terkait dengan Global System for Mobile Communications ( GSM ). GSM, sistem circuit-switched, berasal di Eropa pada tahun 1980 dan digunakan di banyak negara Eropa.Beberapa perusahaan seluler di Amerika Serikat dan negara-negara non-Eropa lainnya juga menggunakan teknologi GSM.

Speech coding menggunakan sirkuit pidato codec , atau codec suara, yang digital mengubah pidato. Musik dapat dikodekan dan diterjemahkan dalam codec suara, namun kualitas musik yang dihasilkan biasanya sangat miskin. Codec pembicaraan atau suara khusus dibuat untuk menganalisis suara manusia bukan untuk menawarkan kualitas suara dalam bentuk audio lainnya seperti musik.

AMR digunakan dalam teknologi selular dikatakan untuk memberikan kualitas tertinggi kejelasan berbicara untuk remote ponselkomunikasi dengan biaya serendah mungkin. AMR dianggap sebagai codec pidato yang sangat mudah beradaptasi bagi banyak saluran radio yang berbeda. The AMR dapat menyesuaikan diri dengan memberikan bit tambahan untuk membantu memperbaiki kesalahan ketika kondisi saluran yang buruk, sementara masih hanya memberikan jumlah minimum bit selama kondisi saluran yang baik. Kualitas ini berarti bahwa AMR memiliki bit yang tersedia untuk pidato coding dari pidato lainnya codec .

AMR bukan codec suara pertama digunakan untuk GSM, tetapi keempat. The Full-Rate Enhanced (EFR) codec dan dua lainnya codec pidato berbeda dari AMR karena mereka tidak dapat menyesuaikan tingkat mereka bit yang diproduksi. AMR dikatakan menawarkan kualitas suara terbaik dari empat codec pidato. telepon Seluler produsen terus mengembangkan teknologi codec AMR oleh berjuang untuk terdengar kualitas suara alam yang paling mungkin. Ini produsen sering melakukan tes konsumen untuk menguji untuk terdengar suara jelas transmisi pada telepon selular.

LGA

LGA

LGA kependekan dari Land Grid Array, Tidak seperti prosesor tipe PGA, prosesor tipe LGA tidak memiliki pin sama sekali, tetapi memiliki tempat landasan untuk sentuhan atau koneksi dengan pin-pin berupa tonjolan-tonjolan yang ada pada soket di motherboard.
PGA kependekan dari Pin Grid Array, adalah tipe koneksi (pada prosesor) yang secara fisik berupa deretan pin yang tersusun teratur sedemikian rupa, yang didesainkan pada prosesor untuk dipasangkan pada soket yang ada pada motherboard.
AM2 artinya : untuk prosesor AMD dengan jumlah pin 940.

LGA digunakan sebagai antarmuka fisik untuk mikroprosesor dari Intel Pentium 4 (Prescott), Intel Xeon , Intel Core 2 , Intel Core ( Bloomfield dan Lynnfield ) dan AMD Opteron keluarga.Berbeda dengan pin grid array (PGA) antarmuka ditemukan pada kebanyakan AMD dan lebih tua Intel prosesor, tidak ada pin pada chip, di tempat pin yang bantalan dari tembaga berlapis emas gundul yang menyentuh pin pada motherboard .

Sementara LGA soket telah digunakan sejak awal tahun 1996 oleh MIPS R10000 dan HPPA-8000 prosesor, antarmuka tidak mendapatkan digunakan secara luas sampai mereka memperkenalkan platform Intel LGA dimulai dengan 5x0 dan 6x0 urutan Pentium 4 (Prescott)pada tahun 2004. Semua Pentium D dan Core 2 prosesor desktop saat ini menggunakan soket LGA. Pada Q1 2006 Intel beralih platform server Xeon untuk LGA dimulai dengan-series model 5000. AMD memperkenalkan platform server mereka LGA dimulai dengan 2000-seri Opteron pada tahun 2006 Q2. AMD menawarkan Athlon 64 FX-74 pada soket 1207FX melalui-L1N64 ASUS motherboard SLI WS sebagai solusi LGA hanya desktop di pasar desktop dari AMD saat ini.

Yang umum paling desktop Intel LGA socket dijuluki LGA 775 (Socket T) sedangkan varian server dijuluki LGA 771 (Socket J). Namun, baruIntel Core i7 dan i7 Extreme keluarga menggunakan LGA 1366 (Socket B) socket. Pada September 2009, baru Core i5 700 seri dan Core i7800 seri - CODEC Lynnfield - menggunakan LGA 1156 (Socket H) Intel seharusnya memutuskan untuk beralih ke soket LGA karena memberikan titik kontak yang lebih besar, memungkinkan, misalnya, frekuensi clock yang lebih tinggi. Setup LGA menyediakan pin kepadatan lebih tinggi, sehingga kontak lebih banyak kekuatan dan dengan demikian menyediakan lebih stabil kekuatan untuk chip.kemasan LGA juga memiliki manfaat tersier menempatkan pin pada motherboard, jika istirahat pin, motherboard sering lebih murah untuk menggantikan dari chip CPU (dibandingkan dengan chip PGA / setup socket).

Server AMD socket LGA ditunjuk Socket F (LGA 1207) Sama halnya dengan Intel, AMD memutuskan untuk menggunakan soket LGA karena memungkinkan kepadatan pin yang lebih tinggi. Ukuran diperlukan pin 1207-PGA hanya akan terlalu besar dan akan mengkonsumsi terlalu banyak ruang di motherboard.

BUS PCI

BUS PCI

Sejarah bus PCI

Sesudah bus ISA, masih ada bus lain yang diperkenalkan di pasar, yakniEISA ( Extended ISA), Micro Channel Bus, Local Bus,dan Video ElectronicsStandards Association (VESA) Local Bus. Semua bus ini gagal di pasar karenaberbagai sebab. Hal ini mendorong intel untuk membuat bus baru yang dirasamampu mengatasi berbagai kendala, intel menyebut bus baru ini dengan PCI,akronim dari Peripheral Component Interconnect. Berbasis pada Local Bus (yangcepat), Intel menyisipkan bus lain (baru) antara CPU dengan bus I/O hinggaidentik dengan jembatan. Teknologi IC tidak harus sederhana karenapeningkatan teknologi dalam bidang IC akan dapat mengatasinya, serta dalamproduksi massal akan dapat menekan harga.

Pada perkembangannya, PCI diadopsi menjadi standart industri dan dibawah administrasi PCI Special Interest group ( PCI-SIG). Oleh PCI-SIG, definisiPCI diperluas menjadi konektor standar interface bus (slot) ekspansi.

Interface bus PCI adalah 64 bit dalam paket 32 bit ( bandingkan denganISA, 16 bit). Untuk bisa memahami maksudnya diperlukan sedikit aritmatika. BusPCI berjalan pada 33 MHz dan mentransfer data 32 bit setiap pulsa clock. Namunpada pulsa 33 MHz ini adalah 30 nanodetik, sehingga jika digunakan padakomputer 486 memory yang berkecepatan 70 nanodetik 9 pada memory jenisFPM, Fast page Mode) atau 50 nanodetik ( pada EDO, Extended Data Out) makasaat CPU akan mengambil data dari RAM, CPU harus “menunggu” setidaknyatiga pulsa clock untuk mendapatkan data tersebut. Dengan mentransfer datasetiap pulsa clock, bus PCI akan sama dengan interface 32 bit yang manakomponen sistemtersebut mentransfer dalam jalur 64 bit.

PCI (kepanjangan dari bahasa Inggris: Peripheral Component

Interconnect) adalahbu s yang didesain untuk menangani beberapa perangkat

keras. Standar bus PCI ini dikembangkan oleh konsorsium PCI Special InterestGroup yang dibentuk oleh Intel Corporation dan beberapa perusahaan lainnya,pada tahun 1992. Tujuan dibentuknya bus ini adalah untuk menggantikanBus

ISA/EISA yang sebelumnya digunakan dalam komputer IBM PC atau

kompatibelnya.

Peripheral Component Interconnect (PCI) merupakan bus yang tidaktergantung prosesor dan berbandwidth yang dapat berfungsi sebagai busmezzanine atau bus peripheral. Dibandingkan dengan spesifikasi bus lainnya, PCImemberikan sistem yang lebih baik bagi subsistem I/O berkecepatan tinggi(misalnya, graphic display adapter, network interface controller, disk controller,dll). Standar yang berlaku saat ini mengizinkan penggunaan sampai 64 salurandata pada kecepatan 33 MHz, bagi kelajuan transfer 264 Mbyte/detik, atau 2,112Gbps. Namun bukan hanya kecepatannya saja yang tinggi yang membuat PCImenarik. PCI khusus dirancang untuk memenuhi kebutuhan I/O sistem yangmodern secara ekonomi; PCI hanya memerlukan keping yang lebih sedikit untukmengimplementasikan dan mendukung bus lainnya yang dihubungkan ke bus PCI.

Intel mulai menerapkan PCI pada tahun 1990 untuk sistem berbasisPentiumnya. Segera Intel menerbitkan semua patent bagi domain publik danmempromosikan pembuatan himpunan industri, PCI SIG, untuk pembuatan lebihlanjut dan memelihara kompatiblitas spesifikasi PCI. Hasilnya adalah bahwa PCIsecara luas diterima dan penggunaannya pada komputer pribadi, workstation,dan sistem server terus meningkat. Versi saat ini, PCI 2.0, diterbitkan 1993.Karena spesifikasinya berada di dalam domain publik dan didukung oleh industrimicroprosesor dan peripheral secara luas, PCI yang dibuat oleh vendor yangberlainan tetap kompatibel.

PCI dirancang untuk mendukung bermacam-macam konfigurasi berbasismicroprosesor, baik sistem microprosesor, baik sistem micoprosesor tunggalmaupun banyak. Karena itu, PCI memberikan sejumlah fungsi untuk kebutuhanumum. PCI memanfaatkan timing snkron dan pola arbitrasi tersentralisasi.

Kombinasi pengontrol DRAM dan bridge dengan bus PCI memberkancoupling yang erat dengan prosesor dan kemampuan pengiriman databerkecepatan tinggi. Bridge berfungsi sebagai suatu buffer data sehinggakecepatan bus PCI berbeda dengan kemampuan I/O prosesor. Di dalam sebuahsistem multiprosesor, sebuah konfigurasi PCI atau lebih dapat dihubungkan olehbridge dengan bus sistem prosesor. Bus sistem hanya mendukug unitprosesor/cache memori utama, dan bridge PCI. Fungsi bridge ysng menjaga agarPCI tidak tergantung pada kecepatan prosesor memberikan kemampuan untukmenerima dan mengirim data secara cepat.

Komputer lama menggunakan slot ISA, yang merupakan bus yang lamban.Sejak kemunculan-nya sekitar tahun 1992, bus PCI masih digunakan sampaisekarang, hingga keluar versi terbarunya yaitu PCI Express (add-on).

BUS ISA

BUS ISA

Bus ISA (Industry Standard Architecture) adalah sebuah arsitektur bus dengan bus data selebar 8-bit yang diperkenalkan dalam IBM PC5150 pada tanggal 12 Agustus 1981. Bus ISA diperbarui dengan menambahkan bus data selebar menjadi 16-bit pada IBM PC/AT pada tahun1984, sehingga jenis bus ISA yang beredar pun terbagi menjadi dua bagian, yakni ISA 16-bit dan ISA 8-bit. ISA merupakan bus dasar dan paling umum digunakan dalam komputer IBM PC hingga tahun 1995, sebelum akhirnya digantikan oleh bus PCI yang diluncurkan pada tahun1992.

ISA 8-bit.

Bus ISA 8-bit merupakan varian dari bus ISA, dengan bus data selebar 8-bit, yang digunakan dalam IBM PC 5150 (model PC awal). Bus ini telah ditinggalkan pada sistem-sistem modern ke atas tapi sistem-sistem Intel 286/386 masih memilikinya. Kecepatan bus ini adalah 4.77 MHz (sama seperti halnya prosesor Intel 8088 dalam IBM PC), sebelum ditingkatkan menjadi 8.33 MHz pada IBM PC/AT. Karena memiliki bandwidth 8-bit, maka transfer rate maksimum yang dimilikinya hanyalah 4.77 Mbyte/detik atau 8.33 Mbyte/detik. Meskipun memiliki transfer rate yang lamban, bus ini termasuk mencukupi kebutuhan saat itu, karena bus-bus I/O semacam serial port, parallel port, kontrolir floppy disk, kontrolir keyboard dan lainnya sangat lambat. Slot ini memiliki 62 konektor.

Meski desainnya sederhana, IBM tidak langsung mempublikasikan spesifikasinya saat diluncurkan tahun 1981, tapi harus menunggu hingga tahun 1987, sehingga para manufaktur perangkat pendukung agak kerepotan membuat perangkat berbasis ISA 8-bit.

ISA 16-bit

Bus ISA 16-bit adalah sebuah bus ISA yang memiliki bandwidth 16-bit, sehingga mengizinkan transfer rate dua kali lebih cepat dibandingkan dengan ISA 8-bit pada kecepatan yang sama. Bus ini diperkenalkan pada tahun 1984, ketika IBM merilis IBM PC/AT dengan mikroprosesor Intel 80286 di dalamnya. Mengapa IBM meningkatkan ISA menjadi 16 bit adalah karena Intel 80286 memiliki bus data yang memiliki lebar 16-bit, sehingga komunikasi antara prosesor, memori, dan motherboard harus dilakukan dalam ordinal 16-bit. Meski prosesor ini dapat diinstalasikan di atas motherboard yang memiliki bus I/O dengan bandwidth 8-bit, hal ini dapat menyababkan terjadinya bottleneck pada bus sistem yang bersangkutan.

Daripada membuat bus I/O yang baru, IBM ternyata hanya merombak sedikit saja dari desain ISA 8-bit yang lama, yakni dengan menambahkan konektor ekstensi 16-bit (yang menambahkan 36 konektor, sehingga menjadi 98 konektor), yang pertama kali diluncurkan pada Agustus tahun 1984, tahun yang sama saat IBM PC/AT diluncurkan. Ini juga menjadi sebab mengapa ISA 16-bit disebut sebagai AT-bus. Hal ini memang membuat interferensi dengan beberapa kartu ISA 8-bit, sehingga IBM pun meninggalkan desain ini, ke sebuah desain di mana dua slot tersebut digabung menjadi satu slot.

Rabu, 26 Mei 2010

TekomC...!!!!!

Kampus : PKN & STIMIK LPKIA
Nama : Surya Permana
NRP : 6309348
Prodi : M.I
Jurusan : Teknik Informatika

Struct

Structs


Overview
(http://www.fredosaurus.com/notes-cpp/index.html)
In addition to the simple data types (int, char, double, ...) there are composite data types
which combine more than one data element. Arrays store elements of the same type,
which are accessed by subscript, eg, a[i]. Structs (also called records, or classes) group
elements which don't need to all be the same type, and are accessed by field (member)
name, eg, r.name.
Struct Declaration defines a new Type
The most common struct declaration in C++ is to define a new type. This example
represents information about products.
struct Product {
char mfg_id[4]; // 4 char code for the manufacturer.
char prod_id[8]; // 8-char code for the product
int price; // price of the product in dollars.
int qty_on_hand; // quantity on hand in inventory
};
This defines a new type, Product. The order of the fields is generally not important. Don't
forget the semicolon after the right brace. The convention is to capitalize the first letter in
any new type name.
Declaring struct variables
The new struct type can now be used to declare variables. For example,
Product widget;
Accessing the fields of a struct
Access the fields of a struct by using the "." operator followed by the name of the field.
widget.price = 200;
widget.qty_on_hand = 17;
strcpy(widget.mfg_id, "IBM");
strcpy(widget.prod_id, "Thingee");
Like database records
Structs are like database records - a row in a table, where the field names are like the
column names.
Problem - Points
Suppose we have the following problem. We want to read a set of (x, y) coordinates and
a name, then sort them in order increasing distance from the origin (0, 0). This is the kind
of data you might have if we digitized a map with the origin at some central point (eg,
London) and the coordinates of other cities.
Global Declaration
Types are usually used in more than one function, and are therefore global or defined in
an include file.
// Define a struct to hold each point.
struct Point {
float x; // x coordinate
float y; // y coordinate
char name[20]; // name of the point
};
Local Declarations
Point pts[1000]; // array to hold up to 1000 points.
int n = 0; // number of points in the array.
Reading the input
To read structs, you need to read each of the fields.
while (cin >> pts[n].name >> pts[n].x >> pts[n].y) {
n++;
}
Utility function to compute distance to origin
float dist(Point p) {
// Compute the distance from the origin
return sqrt(p.x*p.x + p.y*p.y);
}
Sorting an array of Points
Here's a simple bubble sort function that stops when there are no more exchanges. It sorts
Points by their distance from the origin by calling on the function defined above.
void bubbleSort(Point pt[], int size) {
bool doMore = true;
while (doMore) {
doMore = false; // Assume no more passes unless exchange made.
for (int i=0; i dist(pt[i+1])) {
// Exchange elements
Point temp = pt[i]; pt[i] = pt[i+1]; pt[i+1] = temp;
doMore = true; // Exchange requires another pass.
}
}
}
}
Problem - Product info
Let's use the Product struct, read into an array of Products, and sort by increasing price.
Global Declaration
Typically types are used in more than one function, and are therefore global or defined in
an include file.
struct Product {
char mfg_id[4]; // 4 char code for the manufacturer.
char prod_id[8]; // 8-char code for the product
int price; // price of the product in dollars.
int qty_on_hand; // quantity on hand in inventory
};
Local Declarations
Product prods[1000]; // array to hold up to 1000 products
int n = 0; // number of products in the array.
Reading the input
while (cin >> prods[n].mfg_id >> prods[n].prod_id
>> prods[n].price >> prods[n].qty_on_hand) {
n++;
}
Sorting the array of products
Here's a simple bubble sort function that stops when there are no more exchanges. This is
a fairly inefficient sort, and it's used here just as an example. Notice we can't compare the
entire struct, only individual fields.
void bubbleSort2(Product pd[], int size) {
bool doMore;
do {
doMore = false; // assume this is last pass over array
for (int i=0; i pd[i+1].price) {
// exchange elements
Product temp = pd[i]; pd[i] = pd[i+1]; pd[i+1] = temp;
doMore = true; // after exchange, must look again
}
}
} while (doMore);
}
Struct Operations
Assume the following declaration
//--- Define a new struct type
struct Point {
int x;
int y;
};
//--- Declare some variables of type Point.
Point p1;
Point p2;
Point* paddr; // declare pointer to a Point struct
Member (field) selection - dot operator
The "." (dot) operator is used to select a member of a struct. This operator can be applied
to any expression that yields a struct (function call, subscription, etc).
int h = p1.x;
p2.y = p1.y;
Member (field) selection - arrow operator
When using a pointer to a struct, the "->" (arrow) operator is typically used as a more
readable way to both dereference the pointer and select a member. See -> operator.
// The following are equivalent.
int h = paddr->x // using arrow notation.
int h = (*paddr).x; // using deref plus dot.
Assignment
A struct variable can be assigned to/from.
p1 = p2;
Parameter
A struct can be passed to a function either as a value or a reference parameter. Large
structs are sometimes passed as reference parameters to avoid the cost of the copy, even
tho the value is not going to be changed.
Returned by function
A struct may be returned by a function.
Comparison - NO
The comparison operators do not work on structs. To compare structs, compare
individual fields.
if (p1.x==p2.x && p1.y==p2.y) . . .
It is not possible to write p1==p2.
There are good reasons to forbid comparison.
• What would a greater than comparison even mean on a Point for example.
• A bit-by-bit equal comparison is not feasible in general because there may be
padding or unfilled elements (eg in a C-string).
A subelement of array or another struct
A struct value can be used inside of another struct or as an element type in an array.
Arithmetic operators - NO
By default none of the arithmetic operators work on structs.
I/O - NO
The I/O operators >> and << do not work for structs; you must read/write the fields
individually.
Solutions
You may redefine operators so that they do work with your structs. When providing
functions and overloaded operators for your struct, use the class keyword instead -- it's
what programmers expect.

Struct

Structs


Overview
(http://www.fredosaurus.com/notes-cpp/index.html)
In addition to the simple data types (int, char, double, ...) there are composite data types
which combine more than one data element. Arrays store elements of the same type,
which are accessed by subscript, eg, a[i]. Structs (also called records, or classes) group
elements which don't need to all be the same type, and are accessed by field (member)
name, eg, r.name.
Struct Declaration defines a new Type
The most common struct declaration in C++ is to define a new type. This example
represents information about products.
struct Product {
char mfg_id[4]; // 4 char code for the manufacturer.
char prod_id[8]; // 8-char code for the product
int price; // price of the product in dollars.
int qty_on_hand; // quantity on hand in inventory
};
This defines a new type, Product. The order of the fields is generally not important. Don't
forget the semicolon after the right brace. The convention is to capitalize the first letter in
any new type name.
Declaring struct variables
The new struct type can now be used to declare variables. For example,
Product widget;
Accessing the fields of a struct
Access the fields of a struct by using the "." operator followed by the name of the field.
widget.price = 200;
widget.qty_on_hand = 17;
strcpy(widget.mfg_id, "IBM");
strcpy(widget.prod_id, "Thingee");
Like database records
Structs are like database records - a row in a table, where the field names are like the
column names.
Problem - Points
Suppose we have the following problem. We want to read a set of (x, y) coordinates and
a name, then sort them in order increasing distance from the origin (0, 0). This is the kind
of data you might have if we digitized a map with the origin at some central point (eg,
London) and the coordinates of other cities.
Global Declaration
Types are usually used in more than one function, and are therefore global or defined in
an include file.
// Define a struct to hold each point.
struct Point {
float x; // x coordinate
float y; // y coordinate
char name[20]; // name of the point
};
Local Declarations
Point pts[1000]; // array to hold up to 1000 points.
int n = 0; // number of points in the array.
Reading the input
To read structs, you need to read each of the fields.
while (cin >> pts[n].name >> pts[n].x >> pts[n].y) {
n++;
}
Utility function to compute distance to origin
float dist(Point p) {
// Compute the distance from the origin
return sqrt(p.x*p.x + p.y*p.y);
}
Sorting an array of Points
Here's a simple bubble sort function that stops when there are no more exchanges. It sorts
Points by their distance from the origin by calling on the function defined above.
void bubbleSort(Point pt[], int size) {
bool doMore = true;
while (doMore) {
doMore = false; // Assume no more passes unless exchange made.
for (int i=0; iif (dist(pt[i]) > dist(pt[i+1])) {
// Exchange elements
Point temp = pt[i]; pt[i] = pt[i+1]; pt[i+1] = temp;
doMore = true; // Exchange requires another pass.
}
}
}
}
Problem - Product info
Let's use the Product struct, read into an array of Products, and sort by increasing price.
Global Declaration
Typically types are used in more than one function, and are therefore global or defined in
an include file.
struct Product {
char mfg_id[4]; // 4 char code for the manufacturer.
char prod_id[8]; // 8-char code for the product
int price; // price of the product in dollars.
int qty_on_hand; // quantity on hand in inventory
};
Local Declarations
Product prods[1000]; // array to hold up to 1000 products
int n = 0; // number of products in the array.
Reading the input
while (cin >> prods[n].mfg_id >> prods[n].prod_id
>> prods[n].price >> prods[n].qty_on_hand) {
n++;
}
Sorting the array of products
Here's a simple bubble sort function that stops when there are no more exchanges. This is
a fairly inefficient sort, and it's used here just as an example. Notice we can't compare the
entire struct, only individual fields.
void bubbleSort2(Product pd[], int size) {
bool doMore;
do {
doMore = false; // assume this is last pass over array
for (int i=0; iif (pd[i].price > pd[i+1].price) {
// exchange elements
Product temp = pd[i]; pd[i] = pd[i+1]; pd[i+1] = temp;
doMore = true; // after exchange, must look again
}
}
} while (doMore);
}
Struct Operations
Assume the following declaration
//--- Define a new struct type
struct Point {
int x;
int y;
};
//--- Declare some variables of type Point.
Point p1;
Point p2;
Point* paddr; // declare pointer to a Point struct
Member (field) selection - dot operator
The "." (dot) operator is used to select a member of a struct. This operator can be applied
to any expression that yields a struct (function call, subscription, etc).
int h = p1.x;
p2.y = p1.y;
Member (field) selection - arrow operator
When using a pointer to a struct, the "->" (arrow) operator is typically used as a more
readable way to both dereference the pointer and select a member. See -> operator.
// The following are equivalent.
int h = paddr->x // using arrow notation.
int h = (*paddr).x; // using deref plus dot.
Assignment
A struct variable can be assigned to/from.
p1 = p2;
Parameter
A struct can be passed to a function either as a value or a reference parameter. Large
structs are sometimes passed as reference parameters to avoid the cost of the copy, even
tho the value is not going to be changed.
Returned by function
A struct may be returned by a function.
Comparison - NO
The comparison operators do not work on structs. To compare structs, compare
individual fields.
if (p1.x==p2.x && p1.y==p2.y) . . .
It is not possible to write p1==p2.
There are good reasons to forbid comparison.
• What would a greater than comparison even mean on a Point for example.
• A bit-by-bit equal comparison is not feasible in general because there may be
padding or unfilled elements (eg in a C-string).
A subelement of array or another struct
A struct value can be used inside of another struct or as an element type in an array.
Arithmetic operators - NO
By default none of the arithmetic operators work on structs.
I/O - NO
The I/O operators >> and << do not work for structs; you must read/write the fields
individually.
Solutions
You may redefine operators so that they do work with your structs. When providing
functions and overloaded operators for your struct, use the class keyword instead -- it's
what programmers expect.

Class

Classes (I)


A class is an expanded concept of a data structure: instead of holding only data, it can hold
both data and functions.
An object is an instantiation of a class. In terms of variables, a class would be the type, and an
object would be the variable.
Classes are generally declared using the keyword class, with the following format:
class class_name {
access_specifier_1:
member1;
access_specifier_2:
member2;
...
} object_names;
Where class_name is a valid identifier for the class, object_names is an optional list of
names for objects of this class. The body of the declaration can contain members, that can be
either data or function declarations, and optionally access specifiers.
All is very similar to the declaration on data structures, except that we can now include also
functions and members, but also this new thing called access specifier. An access specifier is
one of the following three keywords: private, public or protected. These specifiers
modify the access rights that the members following them acquire:
• private members of a class are accessible only from within other members of the
same class or from their friends.
• protected members are accessible from members of their same class and from their
friends, but also from members of their derived classes.
• Finally, public members are accessible from anywhere where the object is visible.
By default, all members of a class declared with the class keyword have private access for all
its members. Therefore, any member that is declared before one other class specifier
automatically has private access. For example:
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area (void);
} rect;
Declares a class (i.e., a type) called CRectangle and an object (i.e., a variable) of this class
called rect. This class contains four members: two data members of type int (member x
and member y) with private access (because private is the default access level) and two
member functions with public access: set_values() and area(), of which for now we have
only included their declaration, not their definition.
Notice the difference between the class name and the object name: In the previous example,
CRectangle was the class name (i.e., the type), whereas rect was an object of type
CRectangle. It is the same relationship int and a have in the following declaration:
int a;
where int is the type name (the class) and a is the variable name (the object).
After the previous declarations of CRectangle and rect, we can refer within the body of the
program to any of the public members of the object rect as if they were normal functions or
normal variables, just by putting the object's name followed by a dot (.) and then the name
of the member. All very similar to what we did with plain data structures before. For example:
rect.set_values (3,4);
myarea = rect.area();
The only members of rect that we cannot access from the body of our program outside the
class are x and y, since they have private access and they can only be referred from within
other members of that same class.
Here is the complete example of class CRectangle:
// classes example
#include
using namespace std;
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area () {return (x*y);}
};
void CRectangle::set_values (int a,
int b) {
x = a;
y = b;
}
int main () {
CRectangle rect;
rect.set_values (3,4);
cout << "area: " << rect.area();
return 0;
}
area: 12
The most important new thing in this code is the operator of scope (::, two colons) included
in the definition of set_values(). It is used to define a member of a class from outside the
class declaration itself.
You may notice that the definition of the member function area() has been included directly
within the definition of the CRectangle class given its extreme simplicity, whereas
set_values() has only its prototype declared within the class, but its definition is outside it.
In this outside declaration, we must use the operator of scope (::) to specify that we are
defining a function that is a member of the class CRectangle and not a regular global
function.
The scope operator (::) specifies the class to which the member being declared belongs,
granting exactly the same scope properties as if this function definition was directly included
within the class definition. For example, in the function set_values() of the previous code,
we have been able to use the variables x and y, which are private members of class
CRectangle, which means they are only accessible from other members of their class.
The only difference between defining a class member function completely within its class and
to include only the prototype and later its definition, is that in the first case the function will
automatically be considered an inline member function by the compiler, while in the second it
will be a normal (not-inline) class member function, which in fact supposes no difference in
behavior.
Members x and y have private access (remember that if nothing else is said, all members of a
class defined with keyword class have private access). By declaring them private we deny
access to them from anywhere outside the class. This makes sense, since we have already
defined a member function to set values for those members within the object: the member
function set_values(). Therefore, the rest of the program does not need to have direct
access to them. Perhaps in a so simple example as this, it is difficult to see an utility in
protecting those two variables, but in greater projects it may be very important that values
cannot be modified in an unexpected way (unexpected from the point of view of the object).
One of the greater advantages of a class is that, as any other type, we can declare several
objects of it. For example, following with the previous example of class CRectangle, we could
have declared the object rectb in addition to the object rect:
// example: one class, two objects
#include
using namespace std;
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area () {return (x*y);}
};
void CRectangle::set_values (int a,
int b) {
x = a;
y = b;
}
int main () {
CRectangle rect, rectb;
rect.set_values (3,4);
rectb.set_values (5,6);
cout << "rect area: " <<
rect.area() << endl;
cout << "rectb area: " <<
rectb.area() << endl;
return 0;
}
rect area: 12
rectb area: 30
In this concrete case, the class (type of the objects) to which we are talking about is
CRectangle, of which there are two instances or objects: rect and rectb. Each one of
them has its own member variables and member functions.
Notice that the call to rect.area() does not give the same result as the call to
rectb.area(). This is because each object of class CRectangle has its own variables x and
y, as they, in some way, have also their own function members set_value() and area()
that each uses its object's own variables to operate.
That is the basic concept of object-oriented programming: Data and functions are both
members of the object. We no longer use sets of global variables that we pass from one
function to another as parameters, but instead we handle objects that have their own data
and functions embedded as members. Notice that we have not had to give any parameters in
any of the calls to rect.area or rectb.area. Those member functions directly used the
data members of their respective objects rect and rectb.
Constructors and destructors
Objects generally need to initialize variables or assign dynamic memory during their process of
creation to become operative and to avoid returning unexpected values during their execution.
For example, what would happen if in the previous example we called the member function
area() before having called function set_values()? Probably we would have gotten an
undetermined result since the members x and y would have never been assigned a value.
In order to avoid that, a class can include a special function called constructor, which is
automatically called whenever a new object of this class is created. This constructor function
must have the same name as the class, and cannot have any return type; not even void.
We are going to implement CRectangle including a constructor:
// example: class constructor
#include
using namespace std;
class CRectangle {
int width, height;
public:
CRectangle (int,int);
int area () {return
(width*height);}
};
CRectangle::CRectangle (int a, int
b) {
width = a;
height = b;
}
int main () {
CRectangle rect (3,4);
CRectangle rectb (5,6);
cout << "rect area: " <<
rect.area() << endl;
cout << "rectb area: " <<
rect area: 12
rectb area: 30
rectb.area() << endl;
return 0;
}
As you can see, the result of this example is identical to the previous one. But now we have
removed the member function set_values(), and have included instead a constructor that
performs a similar action: it initializes the values of x and y with the parameters that are
passed to it.
Notice how these arguments are passed to the constructor at the moment at which the objects
of this class are created:
CRectangle rect (3,4);
CRectangle rectb (5,6);
Constructors cannot be called explicitly as if they were regular member functions. They are
only executed when a new object of that class is created.
You can also see how neither the constructor prototype declaration (within the class) nor the
latter constructor definition include a return value; not even void.
The destructor fulfills the opposite functionality. It is automatically called when an object is
destroyed, either because its scope of existence has finished (for example, if it was defined as
a local object within a function and the function ends) or because it is an object dynamically
assigned and it is released using the operator delete.
The destructor must have the same name as the class, but preceded with a tilde sign (~) and
it must also return no value.
The use of destructors is especially suitable when an object assigns dynamic memory during
its lifetime and at the moment of being destroyed we want to release the memory that the
object was allocated.
// example on constructors and
destructors
#include
using namespace std;
class CRectangle {
int *width, *height;
public:
CRectangle (int,int);
~CRectangle ();
int area () {return (*width *
*height);}
};
CRectangle::CRectangle (int a, int
b) {
width = new int;
height = new int;
*width = a;
*height = b;
}
rect area: 12
rectb area: 30
CRectangle::~CRectangle () {
delete width;
delete height;
}
int main () {
CRectangle rect (3,4), rectb
(5,6);
cout << "rect area: " <<
rect.area() << endl;
cout << "rectb area: " <<
rectb.area() << endl;
return 0;
}