I/O Unit


Definisi dan Persyaratan Kontrol I/O

Sebuah sistem kontrol I/O bertujuan untuk memberikan bantuan kepada user untuk memungkinkan mereka mengakses berkas, tanpa memperhatikan detail dari karakteristik dan waktu penyimpanan. Kontrol I/O menyangkut manajemen berkas dan peralatan manajemen yang merupakan bagian dari sistem operasi.d

Tugas dari Sistem Kontrol I/O adalah :

1) Memelihara directori dari berkas dan lokasi informasi

2) Menentukan jalan bagi aliran data antara main memory dan alat penyimpanan sekunder

3) Mengkoordinasi komunimasi antara CPU dan alat penyimpanan sekunder

4) Menyiapkan berkas penggunaan input atau output telah selesai

Bus adalah sekelompok kawat atau sebuah jalur fisik yang berfungsi menghubungkan register-register dengan unit-unit fungsional yang berhubungan dengan tiap-tiap modul. Informasi saling dipertukarkan di antara modul dengan melalui bus.

Interface Aplikasi I/O

Ketika suatu aplikasi ingin membuka data yang ada dalam suatu disk, sebenarnya aplikasi tersebut harus dapat membedakan jenis disk apa yang akan diaksesnya. Untuk mempermudah pengaksesan, sistem operasi melakukan standarisasi cara pengaksesan pada peralatan I/O. Pendekatan inilah yang dinamakan interface aplikasi I/O.

Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail peralatan-peralatan I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini, maka akan lebih mudah untuk membuat fungsi-fungsi standar (interface) untuk mengaksesnya. Lalu kemudian adanya device driver pada masing-masing peralatan I/O, berfungsi untuk enkapsulasi perbedaan-perbedaan yang ada dari masing-masing anggota kelas-kelas yang umum tadi. Device driver mengenkapsulasi tiap -tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum tadi (interface standar). Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem I/O pada kernel. Karena hal ini, subsistem I/O dapat bersifat independen dari hardware.

Karena subsistem I/O independen dari hardware maka hal ini akan sangat menguntungkan dari segi pengembangan hardware. Tidak perlu menunggu vendor sistem operasi untuk mengeluarkan support code untuk hardware-hardware baru yang akan dikeluarkan oleh vendor hardware.

Pengaksesan I/O terdiri dari dua cara yaitu :
1. Memory mapped I/O
Dimana pirabti I/O dihubungkan sebagai lokasi memory virtual dimana port I/O tergantung pada memori utama

Karakteristik memory mapped I/O antara lain :
• Port I/O dihubungkan ke bus alamat
• Piranti input sebagai bagian memory yang memberikan data ke bus data. Piranti output ssebagai bagian memori yang memiliki data tersimpan di dalamnya.

2. I/O mapped I/O
Piranti I/O dihubungkan sebagai lokasi terpisah dengan lokasi memori, dimana port I/O tidak tergantung pada memori utama.

karakteristik I/O mapped I/O :

· Port I/O tidak tergantung memori utama

· Transfer informasi dilakukan di bawah kendali sinyal control yang menggunakan instruksi INPUT dan OUTPUT

· Operasi I/O tergantung sinyal kendali dari CPU

· Intruksi I/O mengaktifkan baris kendali read/write pada port I/O, sedangkan instruksi memori akan mengaktifkan baris kendali read/write pada memori

· Ruang memory dan ruang alamat I/O menyatu, sehingga dapat memiliki alamat yang sama.

Kelebihan dan kekurangan :

· I/O mapped I/O lebih cepat dan efisien, karena lokasi I/O terpisah dengan lokasi memori

· I/O mapped I/O mempunyai keterbatasan jumlah intruksi yang dapat digunakan untuk operasi I/O

Sumber : saefudin.staff.jak-stik.ac.id/files/sistem-berkas[7].doc

: http://ayienyen.blogspot.com/2010/01/pengaksesan-io-terdiri-dari-dua-cara.html

CPU (Central Prosesing Unit)


CPU (Central Processing Unit)

Central Processing Unit jika diterjemahkan dalam bahasa Indonesia berarti Unit Pengolah Pusat. Di dalam CPU terdapat berbagai macam perangkat keras yang diperlukan untuk menjalankan komputer. Nah untuk mengetahui perangkat keras apa saja yang biasanya terdapat pada CPU, silahkan baca artikel ini selanjutnya.

Macam macam isi dari cpu

Harddisk

Harddisk drive (HDD) alat ini merupakan tempat menyimpan data pada CPU. Jika hardisk dibuka, maka di dalamnya terlihat piringan logam sebagai tempat menulis data. Kecepatan putarannya bervariasi. Ada yang 5400 putaran per menit bahkan ada yang sampai 7200 putaran per menit. Kemampuan sebuah hardisk biasanya ditentukan oleh banyaknya data yang bisa disimpan. Besarnya bervariasi, ada yang 1,2 Gigabyte (GB) hingga 80 GB. Satu GB sama dengan 1000 Megabyte, sedangkan 1 Megabyte sama dengan 1000 Kilobyte. Sangat besar kan ? Kita bisa menyimpan semua data kita pada hardisk ini.

Floppy Disk Drive

Floppy disk drive adalah alat untuk membaca atau menulis pada sebuah disket. Beberapa tahun lalu, masih banyak orang yang menggunakan floppy disk berukuran 5 1/4 inchi (disket besar), yang menyimpan data sebanyak 700 Kilobyte. Saat ini disket besar sudah digantikan dengan disket kecil yang berukuran (3 1/2 inchi) dengan kapasitas menyimpan data sebesar 1,4 Megabyte.

Cara kerja floppy disk hampir sama dengan harddisk. Plat bundar berisi data dalam disket akan diputar oleh motor dalam floopy disk drive. Sebuah magnet akan membaca atau menulis data pada disket itu.

CD-ROM drive

Fungsinya adalah untuk membaca data dari sebuah Compact Disc (CD). ROM adalah singkatan dari Read Only Memory yang artinya penyimpan data yang hanya bisa dibaca. Jadi CD-ROM hanya bisa digunakan untuk membaca data, tidak dapat digunakan untuk menyimpan data. Namun saat ini, ada alat serupa yang dapat digunakan untuk menulis / menyimpan data ke sebuah CD. Namanya CD-RW (CD Read and Write atau CD baca dan tulis).

Cara kerja CD-ROM maupun CD-RW sama dengan cara kerja harddisk atau floppy disk drive. Bedanya, bagian yang diputar adalah kepingan CD. Alat pembacanya juga bukan head magnet tetapi sinar laser yang berkekuatan kecil.

Prosesor

Nah, inilah Brain (otaknya) komputer. Prosesor berfungsi untuk memproses semua perhitungan yang harus dilakukan oleh komputer. Kekuatan prosesor diukur dari frekuensinya, seperti 550 MHz (Mega Hertz) sampai saat ini sudah ada yang mencapai 1,4 GHz (Giga Hertz).

Jika komputer dihidupkan, maka prosesor akan langsung bekerja dan cepat naik suhunya. Oleh karena itu setiap prosesor saat ini sudah dilengkapi dengan besi penyalur panas (heat sink) dan kipas pendingin. Saat ini prosesor yang banyak digunakan adalah Intel, AMD dan IBM.

Memori

Memori dikenal juga dengan sebutan RAM (Random Acces Memory). Gunanya adalah untuk penyimpanan data sementara sewaktu digunakan oleh prosesor. Jika komputer di matikan, maka data di RAM akan hilang. Kecepatan membaca data RAM ini lebih cepat jika dibandingkan dengan Harddisk.

Kartu Grafis (VGA Card)

Kartu VGA (Video Graphic Adapter) berguna untuk menerjemahkan output (keluaran) komputer ke monitor. Untuk menggambar / design graphic ataupun untuk bermain game, kita perlu VGA yang tinggi kekuatannya. Saat ini ada VGA dengan memori 16, 32 hingga 128 Megabyte. Jenisnya yang terkenal adalah GeForce buatan perusahaan Nvidia.

Kartu Suara (Soundcard)

Perangkat ini berguna untuk mengeluarkan suara. Kalau kita sedang mendengar musik ataupun bermain game, perangkat ini sangat bermanfaat. Suaranya bisa stereo, surround (berputar) bahkan suara 3 dimensi, sehingga kita seolah-olah berada ditempat kejadian. Tetapi perangkat ini kurang lengkap jika tidak ada speaker. Karena itu kita perlu menghubungkan speaker dengan soundcard yang telah terpasang dengan sebuah kabel yang disambung langsung ke soundcard. game

Motherboard

Motherboard atau disebut juga dengan Papan Induk berfungsi untuk tempat semua alat utama CPU yang telah disebutkan di atas. Bentuk motherboard seperti sebuah papan sirkuit elektronik.

Motherboard merupakan tempat berlalu lalangnya data. Motherboard menghubungkan semua peralatan komputer dan membuatnya bekerja sama sehingga komputer berjalan dengan lancar.

Sumber: http://intrik.wordpress.com/2007/04/29/cpu-central-processing-unit/

Pengertian Variabel memori, Array, dan Argumentasi


Variabel Memori

Variabel merupakan komponen penting pada pemrograman, Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat dirubah selama eksekusi program berlangsung.
Jika suatu variable diisi dengan nilai di luar jangkauannya maka nilai yang akan disimpan akan diubah sesuai dengan jangkauannya. Misalnya, bila suatu variable bertipe integer diberi nilai 75000, yang tersimpan pada variable tersebut berupa 9494. Sebab nilai positif terbesar pada tipe integer yaitu 32767. Hal ini bekerja sebagaimana speedometer pada kendaraan bermotor. Pada spedometer, apabila nilai maksimumnya terlampaui akan dimulai dari nilai terendahnya, yakni nol

Komponen sebenarnya juga ditampung dalam variable seperti yang anda
maksud, jadi dalam contoh ada 2 set variable, variable adsMain & dsMain
Dan variable VDataset & VDataSource. Yang membedakan kedua set variable
ini adalah untuk variable adsMain dan dsMain, dia akan menempati memori
lebih banyak karena berisi instance dari kelas tersebut. Sedangkan pada
variable VDataset & VDatasource, hanya berisi Alamat yang menunjuk ke
Alamat dari instance kelas diatas tadi. Jadi akan menempati memori lebih
sedikit. Tapi memang kedua variable ini pastinya menempati Alamat memori
yang berbeda.

ARRAY

Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.

VARIABEL ARRAY

nama_variabel[indeks]

ketentuan nama variabel arrray sama dengan nama variabel biasa.

indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU : tipe nama_variabel[indeks];

Contoh : float bil[10];

Deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :

float bil[11]

INISIALISASI ARRAY 1 DIMENSI

Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.

int bil[2] = {4,1,8}

bil[0] = 4

bil[1] = 1

bil[2] = 8

Mengenal Algoritma Binary Search


Binary Search adalah salah satu algoritma pencarian yang tercepat. Kecepatan algoritma ini hanya bisa dikalahkan oleh teknik hashing, yang tidak akan dibahas di sini. Untuk mencari jutaan data, Binary Search hanya butuh O(log N) kali pembandingan (sekitar 20 kali), sedangkan Linier Search butuh O(N) pembandingan (sekitar 500.000 kali). Tapi yang harus dicatat di sini, data yang dicari harus sudah terurut!

Algoritma iteratif (contohnya yang menggunakan perputaran FOR, WHILE, dsb) pada umumnya dapat dengan mudah diubah ke dalam algoritma rekursif (memanggil dirinya sendiri). Keistimewaan algoritma iteratif adalah sederhana, cepat, dan menggunakan sedikit memori. Sedangkan pada kasus seperti menelusuri pohon, algoritma rekursif jelas lebih baik karena lebih mudah difahami.

Pada prinsipnya, Binary Search adalah membandingkan Key (angka yang dicari) dengan angka yang berada tepat di tengah-tengah deretan angka yang sudah terurut. Jika sama, maka itulah yang dicari. Tapi jika tidak sama, maka deretan data dipecah menjadi dua blok: Blok bawah (kecil) dan blok atas (kecil). Lalu proses diulangi terhadap blok bawah atau blok atas, tergantung besarnya Key apakah lebih kecil ataukah lebih besar daripada data yang berada di tengah-tengah tadi.

Pencarian diawali dengan memeriksa nilai yang ada pada posisi tengah list; oleh karena nilai-nilainya terurut, kita mengetahui apakah nilai terletak sebelum atau sesudah nilai yang di tengah tersebut, dan pencarian selanjutnya dilakukan terhadap setengah bagian dengan cara yang sama. Berikut ini adalah pseudocode sederhana yang menentukan indeks (posisi) dari nilai yang diberikan dalam sebuah list berurut, a berada antara left dan right :

function binarySearch(a, value, left, right)
    if right < left
        return not found
    mid := floor((right-left)/2)+left
    if a[mid] = value
        return mid
    if value < a[mid]
        return binarySearch(a, value, left, mid-1)
    else
        return binarySearch(a, value, mid+1, right)

Karena pemanggilan fungsi di atas adalah rekursif ekor, fungsi tersebut dapat dituliskan sebagai sebuah pengulangan (loop), hasilnya adalah algoritma in-place:

function binarySearch(a, value, left, right)
    while left ≤ right
        mid := floor((right-left)/2)+left
        if a[mid] = value
            return mid
        if value < a[mid]
            right := mid-1
        else
            left  := mid+1
    return not found

Pada kedua kasus, algoritma akan berakhir karena paa setiap pemanggilan rekursif atau pengulangan, jangkauan indeks right dikurang left akan selalu mengecil, dan akhirnya pasti akan menjadi negatif.

Pencarian biner adalah sebuah algoritma logaritmik dan bekerja dalam waktu O(log n). Secara khusus, 1 + log2N pengulangan yang diperlukan untuk menghasilkan jawaban. Hal ini dianggap lebih cepat dibandingkan sebuah pencarian linear. Pencarian biner dapat diimplementasikan dengan rekursi atauiterasi, seperti yang terlihat di atas, walaupun pada kebanyakan bahasa pemrograman akan lebih elegan bila dinyatakan secara rekursif.

Mengenal Linked List



Linked list adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan larik (array), kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array yang sangat besar(misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari seratus data, maka hal itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah salah satu struktur data yang mampu menutupi kelemahan tersebut.

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer.

Bentuk Umum :

Infotype sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

Next address dari elemen berikutnya (suksesor)

Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi :

Sebelum digunakan harus dideklarasikan terlebih dahulu :

Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :

Beberapa Definisi :

  1. List l adalah list kosong, jika First(L) = Nil
  2. Elemen terakhir dikenali, dengan salah satu cara adalah karena

Next(Last) = Nil

Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nil Null

Single Linked List

Pada gambar di atas tampak bahwa sebuah data terletak pada sebuah lokasi memori area. Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List (NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya Linked List pada titik akhirnya akan menunjuk ke NULL).

Pembuatan Single Linked List dapat menggunakan 2 metode:

  • LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
  • FIFO (First In First Out), aplikasinya : Queue (Antrean)

Double Linked List

Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada single linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan tersebut, dapat menggunakan metode double linked list. Linked list ini dikenal dengan nama Linked list berpointer Ganda atau Double Linked List.