Di dalam dunia IT (Information Technology) pun sama, kesimpulan terhadap sesuatu yang dianalisa mungkin berbeda tetapi hal itu semua dapat diminimalisir dan dihilangkan selama apa yang menjadi pedomannya pun sama.
Dalam dunia IT dan kebutuhan yang disesuaikan, ternyata banyak sekali kejadian yang jika kita memandang untuk kemajuan teknologi dan komunikasi dapat dibuat prosedur dan aturan yang sama sehingga informasi yang dibutuhkan dari suatu kasus akan sama. Biasanya dalam dunia IT yang menjadi permasalahan adalah kasus-kasus yang sering terjadi dan untuk penyelesaiannya masih dengan prosedur yang manual. Beberapa contoh kasus yang terjadi dibeberapa tempat, seperti pengelolaan data administrasi, pengelokaan data perpustakaan (sudah banyak yang tidak manual), dan lain-lain. Untuk mengatasi beberapa contoh kasus diatas diperlukan data dan informasi yang dibutuhkan.
Beberapa definisi tentang data dari sudut pandang yang berbeda-beda:
* Menurut berbagai kamus bahasa Inggris-Indonesia, data diterjemahkan sebagai istilah yang berasal dari kata “datum” yang berarti fakta atau bahan-bahan keterangan.
* Dari sudut pandang bisnis, data bisnis (business data) adalah deskripsi organisasi tentang sesuatu(resources) dan kejadian (transactions) yang terjadi (business data is an organization’s description of things (resources)and events (transactions) that it faces).
* Data adalah deskripsi dari sesuatu dan kejadian yang kita hadapi.
* Data adalah kenyataan yang menggambarkan suatu kejadian-kejadian dan kesatuan nyata. Kejadian adalah sesuatu yang terjadi pada saat tertentu. Kesatuan nyata adalah berupa suatu objek nyata seperti tempat, benda dan orang yang betul-betul ada dan terjadi.
Beberapa definisi tentang informasi dari sumber yang berbeda-beda:
* Menurut Gordon B. Davis dalam bukunya Management Informations System : Conceptual Foundations, Structures, and Development menyebut informasi sebagai data yang telah diolah menjadi bentuk yang berguna bagi penerimanya dan nyata, berupa nilai yang dapat dipahami di dalam keputusan sekarang maupun masa depan.
* Menurut Barry E. Cushing dalam buku Accounting Information System and Business Organization, dikatakan bahwa informasi merupakan sesuatu yang menunjukkan hasil pengolahan data yang diorganisasi dan berguna kepada orang yang menerimanya.
* Menurut Robert N. Anthony dan John Dearden dalam buku Management Control Systems, menyebut informasi sebagai suatu kenyataan, data, item yang menambah pengetahuan bagi penggunanya.
* Menurut Stephen A. Moscove dan Mark G. Simkin dalam bukunya Accounting Information Systems : Concepts and Practise mengatakan informasi sebagai kenyataan atau bentuk-bentuk yang berguna yang dapat digunakan untuk pengambilan keputusan bisnis.
Dari beberapa penjelasan diatas sehingga dapat disimpulkan bahwa:
Data adalah nilai yang mendeskripsikan dari suatu objek atau kejadian.
Informasi adalah hasil dari pengolahan data dalam bentuk yang lebih berguna dan lebih berarti bagi penerimanya yang menggambarkan suatu kejadian-kejadian sehingga akan berguna untuk pengambilan keputusan.
struktur data
Dalam satu Lembaga atau Organisasi, baik yang bersifat komersial dan industrial, bahkan organisasi yang bagaimanapun bentuknya, Data dipandang sebagai suatu kekayaan yang penting dan mahal. Memang kadang-kadang sulit untuk didapat.
Komposisi data dan logika dari algoritma yang memanfaatkan data tersebut berhubungan sangat erat.
Data sederhana dapat kita himpun ke dalam suatu Struktur Data yang memuat informasi tentang hubungan antara item yang terdapat didalamnya.
Data sederhana yang kita kenal, terdiri dari berbagai jenis atau type. Untuk mengelola data yang bermacam-macam jenis tersebut secara baik, guna menghasilkan informasi, pengetahuan mengenai struktur data amatlah penting.
Struktur Data adalah koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefenisaikan terhadapnya.
Struktur data sangat penting dalam sistem komputer. Terhadap setiap variabel didalam program, secara eksplisit ataupun implisit, didefenisikan struktur data yang akan menentukan operasi yang berlaku terhadap variabel tersebut.
Struktur data yang dibicarakan ini merupakan Struktur Data Logik. Bukan penyajian data secara fisik di storage.
Pada garis besarnya, Data dapat dikatagorikan
menjadi :
1. Type Data Sederhana, atau Data Sederhana yang terdiri dari :
1. Data Sederhana Tunggal, misalnya Integer,
Real, Boolean serta Karakter.
2. Data Sederhana Majemuk, misalnya String.
Type data ini dengan berbagai cara dapat diorganisasikan menjadi berbagai Struktur Data.
B. Struktur Data, meliputi :
1. Struktur Data Sederhana, misalnya Array
dan Record.
2. Struktur Data Majemuk, terdiri atas :
@ Linear, misalnya Stack, Queue, serta
Linear Link List.
@ Non Linear, misalnya Pohon Biner (Binary
Tree), Pohon Cari Biner (Binary Search
Tree), Pohon Cari M-Way (M-Way Search
Tree), Tree, General Tree serta Graph.
Kedua katagori diatas, terutama diperuntukkan bagi data didalam storage utama (main storage). Data yang diperuntukan bagi storage tambahan mempunyai struktur data yang dikenal sebagai Organisasi File. Type organisasi file diantaranya adalah Organisasi Squential, Organisasi Relative, Organisasi Indexed Squential, dan Organisasi Multikey.
Dua buah struktur data sederhana adalah Array dan Record. Array merupakan struktur data yang terurut dan homogen, terdiri dari item yang bertipe data sama.
Sedangkan Record merupakan struktur data yang boleh terdiri atas keterangan berbagai type data. Struktur data dari tatanan yang lebih tinggi terbentuk dari Record, disini termasuk daftar linear atau linear list (terutama antrian dan tumpukan) serta Graph.
Pemakain struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan menjadi lebih sederhana.
Algoritma berkerja atas dasar data yang menunjukan fakta dari permasalahan kita dalam dunia nyata. Algoritma dan Data menunjukan hasil dari pelaksanaan program, dan mempunyai hubungan yang simbolik. Dalam hal ini semakin cocok komposisi data untuk suatu aplikasi tertentu, semakin mudah algoritma tersebut melaksanakan tugasnya.
Untuk menyederhanakan pelaksanaan algoritma, dianjurkan untuk mengatur data menjadi suatu unsur logika yang lebih tinggi dibandingkan variabel biasa. Unsur logika tersebut membentuk Struktur Data.
Dengan perkataan lain, suatu struktur data merupakan koleksi dari satuan data sederhana yang terorganisir dengan aturan tertentu.
Oleh karena itu struktur data dicirikan oleh :
1. Jenis atau type data pembentuknya.
2. Hubungan antara satuan data tersebut.
Contoh :
Sebuah program akan dirancang untuk memberi simulasi kepada kemampuan kerja komputer. Algoritma simulasi ini memerlukan data tentang waktu dari pekerjaan yang akan diproses.
Sejumlah satuan data terbentuk, masing-masing menunjukan waktu tiba dari pekerjaan, kebutuhan data oleh komputer, dan sebagainya. Kemudian program akan mencontoh proses dari pekerjaan semu yang dibentuk oleh sistem komputer untuk disimulasikan.
Program akan menjadi lebih jelas dan lebih sederhana apabila data yang menjadi bagian dari tiap-tiap pekerjaan diorganisir ke dalam suatu unsur tunggal, yakni berupa sebuah record. Kemudian akan menjadi jelas lagi apabila record seperti itu diatur membentuk suatu struktur data yang lebih tinggi tingkatannya lagi, sehingga menjadi bentuk first-in-first-out (FIFO) sesuai dengan waktu tiba pekerjaan yang diwakilinya. Struktur data seperti ini disebut Antrean (Queue).
Struktur Data tertentu seperti Array biasanya selalu tersedia bagi pemrogram didalam bahasa pemrograman tingkat tinggi yang dipakai. Namun ada pula struktur data yang tidak tersedia, seperti misalnya struktur Tumpukan (Stack). Untuk itu harus disusun sendiri oleh Pemrogram dengan menggunakan variabel bertype sederhana ataupun dari struktur data yang telah tersedia.
Sebuah Array merupakan dasar dari struktur data. Sebuah Array dapat menyatukan satuan data sederhana dan sejenis yang masing-masing mendapat nama secara kolektif dan dari indeks atau subskrip yang memberikan identifikasi terhadap posisi elemennya.
Sebuah record terbentuk dari beberapa type data sederhana dan termasuk string. Data tersebut dibentuk sebagai unsur tunggal karena mereka memberikan gambaran dari obyek permasalahan yang nyata sehari-hari. Record biasanya ditingkatkan menjadi struktur data yang lebih tinggi, melalui nilai dari salah satu satuan datanya (disebut field).
Variabel yang sederhana, Record dan juga Array, seperti kita katakan terdahulu, dapat diorganisir menjadi struktur data yang lebih tinggi. Struktur tersebut banyak yang bersifat dinamis, artinya bahwa dalam pelaksanaan program yang memakai struktur data tersebut, banyak komponen yang dapat berubah, ada komponen yang dapat dihilangkan dan dimasukkan.
Bahasa pemrograman pada umumnya, mengenal adanya variabel yang
digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai
bahasa pemrograman dengan sifat strongly typed yang artinya diharuskan
mendeklarasikan tipe data dari semua variabel, dan apabila lupa atau salah mengikuti
aturan pendeklarasian variabel, maka akan mendapatkan error pada saat proses
kompilasi.
A. Tipe Data
Java memiliki tipe data yang dapat dikategorikan menjadi dua
kelompok, yaitu tipe data primitif dan referensi.
1. Tipe Data Primitif
Delapan macam tipe data primitif dalam pemrograman Java, yaitu :
a. Integer ( Bilangan Bulat )
Integer merupakan tipe data numerik yang digunakan apabila
tidak berurusan dengan pecahan atau bilangan desimal. Tipe data
numerik yang termasuk integer adalah sebagai berikut :
Tipe Deskripsi
Byte Memiliki nilai integer dari -128 sampai +127 dan menempati
1 byte ( 8 bits ) di memori
Short Memiliki nilai integer dari -32768 sampai 32767 dan
menempati 2 bytes ( 16 bits ) di memori
Int Memiliki nilai integer dari -2147483648 sampai 2147483647
dan menempati 4 bytes ( 32 bits ) di memori
Long Memiliki nilai dari -9223372036854775808 sampai
9223372036854775807 dan menempati 8 bytes ( 64 bits ) di
memori
Bilangan integer biasanya menggunakan int, dan bukan byte,
short maupun long. Bilangan integer juga mengenal nilai positif dan
negatif ( signed number ). Tipe data byte dan short hanya digunakan
pada aplikasi khusus yang memperhatikan penggunaan memori.
Sedangkan long jarang digunakan karena jarang memerlukan bilangan
sebesar kapasitas long.
b. Floating Point ( Bilangan Pecahan )
Floating Point digunakan untuk menangani bilangan desimal
atau perhitungan yang lebih detail dibanding integer. Ada dua macam
floating point, yaitu :
Tipe Deskripsi
* Float memiliki nilai -3.4x108 sampai +3.4x108 dan menempati 4
byte di memori
* Double memiliki nilai -1.7x10308 sampai +1.7x10308
Semua bilangan pecahan atau desimal dalam Java tanpa
diakhiri huruf f akan dianggap sebagai double. Sedangkan bilangan
yang ingin dikategorikan sebagai float harus diakhiri dengan huruf F.
Misalnya : 4.22 F atau 2.314f.
Sedangkan untuk bilangan double, bisa menambah dengan
huruf D, karena secara default bilangan dengan koma atau pecahan
atau desimal akan dianggap sebagai double.
c. Char
Char adalah karakter tunggal yang didefinisikan dengan
diawali dan diakhiri dengan tanda ‘ ( petik tunggal ). Char berbeda
dengan String, karena String bukan merupakan tipe data primitif,
tetapi sudah merupakan sebuah objek. Tipe char mengikuti aturan
unicode, sehingga dapat menggunakan kode /u kemudian diikuti
bilangan dari 0 sampai 65535, tetapi yang biasa digunakan adalah
bilangan heksadesimal dari 0000 sampai FFFF.
Misalnya : ‘\u123’
Selain karakter biasa, juga terdapat karakter khusus yang
didefinisikan dengan cara mengawalinya menggunakan tanda \ seperti
pada tabel berikut :
Kode Nama Nilai Unicode
\b Backspace \u0008
\t Tab \u0009
\n Linefeed \u000a
10
\r Carriage return \u000d
\* Double quote \u0022
\’ Single quote \u0027
\\ Backslash \u005c
d. Boolean
Dalam Java dikenal tipe data boolean yang terdiri dari dua nilai
saja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi
suatu kondisi, dan sering digunakan untuk menentukan alur program.
2. Tipe Data Referensi
Kelebihan pemrograman berorientasi objek adalah dapat
mendefinisikan tipe data baru yang merupakan objek dari class tertentu.
Tipe data ini digunakan untuk mereferensikan objek atau class tertentu,
seperti String.
Latihan 2. TipeData.java
class TipeData {
public static void main(String[] args) {
// Tipe data primitif
long data1 = 546767226531;
int data2 = 2235641;
short data3 = 714;
byte data4 = 34;
float data6 = (float) 1.733; // tipe data pecahan
double data5 = 4.967; // tipe data pecahan
char data7 = 'C';
boolean data8 = true;
System.out.println("Nilai Long : "+ data1);
System.out.println("Nilai Int : "+ data2);
System.out.println("Nilai Short : "+ data3);
System.out.println("Nilai Byte : "+ data4);
System.out.println("Nilai Double : "+ data5);
System.out.println("Nilai Float : "+ data6);
System.out.println("Nilai Char : "+ data7);
System.out.println("Nilai Boolean : "+ data8);
}
}
11
B. Variabel
Variabel merupakan container yang digunakan untuk menyimpan
suatu nilai pada sebuah program dengan tipe tertentu. Untuk mendefinisikan
variabel, kita dapat menggunakan identifier untuk menamai variabel tersebut.
1. Identifier
Identifier adalah kumpulan karakter yang dapat digunakan untuk
menamai variabel, method, class, interface, dan package. Sebagaimana
bahasa pemrograman pada umumnya, Java memiliki peraturan untuk
identifier yang valid atau sah. Identifier bisa disebut valid atau sah apabila
diawali dengan :
Huruf / abjad
Karakter mata uang
Underscore ( _ )
Identifier dapat terdiri dari :
Huruf / abjad
Angka
Underscore ( _ )
Identifier tidak boleh mengandung @, spasi atau diawali dengan
angka. Selain itu, identifier tidak boleh menggunakan keyword atau katakata
yang memiliki arti atau digunakan dalam pemrograman Java. Daftar
Keyword Java :
abstract double int strictfp
boolean flse static super
break fxtends long switch
byte final native synchronized
case finally new this
catch float package throw
12
char for private throws
class goto protected transient
const if public try
continue implements return void
default import short volatile
do instanceof interface while
Selain menggunakan karakter biasa, kita juga dapat menggunakan
unicode sebagai identifier.
2. Mendeklarasikan Variabel
Sintaks dasar :
[tipe data] [nama variabel]
Menuliskan tipe data dari variabel, contoh :
int bilangan;
char karakter;
float bildesimal;
boolean status;
Setelah mendeklarasikan variabel dengan tipe data, selanjutnya
memberikan nilai variabel tersebut dengan tanda = .
bilangan = 20;
karakter = ‘k’;
bildesimal = 22.2f;
status = true;
Dapat juga mendeklarasikan dan memberikan nilai dalam satu baris.
int bilangan = 20;
char karakter = ‘k’;
float bildesimal = 22.2f;
boolean status = true;
Kita dapat membuat variabel menjadi konstanta yang tidak dapat
diubah nilainya dengan menambahkan keyword sebelum tipe data dari
variabel.
Contoh :
final int konstantainteger = 10;
final float pajak = 15.5;
13
Agar konstanta ini dapat diakses oleh class lain tanpa harus
membuat objek terlebih dahulu, maka kita dapat menambahkan modifier
public dan keyword static seperti berikut :
public static final konstantainteger = 10;
Latihan 3. Variabel.java
class Variabel {
static int a;
public static void main(String[] args) {
int x; // variabel x ini dikenal di seluruh method main()
x = 10;
a = 2; //variabel a juga dikenal di sini
System.out.println("Nilai a : " + a);
{ //awal dari blok baru
int y; // variabel ini hanya dikenal di dalam blok code ini saja
y = 5;
System.out.println("Nilai x : " + x); //variabel x dikenal di sini
System.out.println("Nilai a : " + a); //variabel a juga dikenal di sini
{ //nested blok
int z;// variabel ini hanya dikenal di dalam nested blok ini saja
z = 20;
// variabel x,y dan a dikenal di dalam nested blok ini
System.out.println("Nilai x + y + z + a : " + (x + y + z + a));
} //akhir dari nested blok
//z = 11; // variabel z tidak lagi dikenal di sini
//variabel y masih dikenal di sini karena masih dalam blok
//code tempat ia dideklarasikan
System.out.println("Nilai y : " + y);
} //akhir dari blok baru
//y = 12; // variabel y tidak dikenal di sini
//variabel x masih dikenal di sini karena masih dalam blok
//code tempat ia dideklarasikan
System.out.println("Nilai x : " + x);
}
}
14
/* Komentar berupa judul & keterangan program */
#include
using namespace std;
deklarasi data
int main()
{
perintah2 yang akan dijalankan
return 0;
}
Feb 24, 2007 - 5
PK-Slide-03
Ekspresi Sederhana
Urutan prioritas:
kedudukan *, / dan % lebih tinggi drpd + dan −
kurung dpt mendahulukan prioritas:
(1 + 2) * 4 menghasilkan 12
1 + 2 * 4 menghasilkan 9
Operator Operasi
* Perkalian
/ Pembagian
% Modulo (sisa-bagi)
+ Penambahan
− Pengurangan
Feb 24, 2007 - 6
PK-Slide-03
Output Program [1]
int main()
{
(1 + 2) * 4;
return 0;
}
Masalah dgn potongan program di atas:
kita telah menghitung ekspresi utk menimbulkan
hasil namun kita tidak melakukan apa2 dgn hasil
tersebut
Feb 24, 2007 - 7
PK-Slide-03
Output Program [2]
Seharusnya hasil perhitungan ditampilkan sbg
output program, spt
cout << “Separuh dari ” << 64 << “ adalah ” <<
(64 / 2) << “\n”;
yang menghasilkan tampilan
Separuh dari 64 adalah 32
Perhatikan penggunaan spasi kosong
cout << “Separuh dari” << 64 << “adalah” << (64
/ 2) << “\n”; Separuh dari64adalah32
Feb 24, 2007 - 8
PK-Slide-03
Nama Variabel [1]
Variabel utk menyimpan nilai harus memiliki nama
dan tipe (utk menetapkan jenis nilainya)
Nama variabel dapat dibentuk dari
huruf besar dan huruf kecil: a~z dan A~Z
angka: 0~9 dan garis-bawah: _
Nama variabel tidak boleh diawali dgn angka
Nama variabel tidak boleh sama dgn keywords
Huruf-besar & huruf-kecil dianggap tidak sama
dalam C++ (total ≠ Total ≠ TOTAL ≠ toTaL)
Feb 24, 2007 - 9
PK-Slide-03
Nama Variabel [2]
Contoh nama2 variabel yang benar
rerata // rerata nilai mahasiswa
cacah_mhs // banyak mhs dlm suatu kelas
bilBulat // berisikan bilangan bulat
Contoh nama2 variabel yang salah
10data // diawali dgn angka
nama depan // mengandung aksara spasi
int // sama dengan keyword
Feb 24, 2007 - 10
PK-Slide-03
Deklarasi Variabel
Deklarasi variabel dimaksudkan
utk menetapkan nama variabel
utk menetapkan tipe variabel (int, float, char)
utk menjelaskan kegunaan variabel
Bentuk umum deklarasi variabel
tipe nama_var; // penjelasan variabel
Contoh deklarasi variabel
int jawaban; // hasil perhitungan
Feb 24, 2007 - 11
PK-Slide-03
Tipe Integer
Tipe int mencakup bilangan bulat tanpa pecahan
atau tanpa titik desimal
Pd komputer 16-bit, tipe int mencakup rentang
32.767 (215−1) s/d −32.768(−215)
Pd komputer 32-bit, tipe int mencakup rentang
2.147.483.647 (231−1) s/d −2.147.483.648(−231)
Bentuk umum deklarasi variabel integer
int nama_var; // penjelasan variabel
Feb 24, 2007 - 12
PK-Slide-03
Pemberian Nilai [1]
Setelah variabel dideklarasikan:
int answer; // tempat menyimpan hasil
nilai dapat diberikan kepadanya:
answer = (1 + 2) * 4; // bukan kesamaan
Feb 24, 2007 - 13
PK-Slide-03
Pemberian Nilai [2]
Contoh pemberian nilai:
#include
using namespace std;
int jawab; // tempat menyimpan hasil
int main()
{
jawab = 3 * 5; // pemberian nilai hasil perkalian
cout << “Dua kali jawaban: ” << (2 * jawab) << “\n”;
return 0;
}
Feb 24, 2007 - 14
PK-Slide-03
Tipe Floating Point
Tipe ini mencakup bilangan pecahan atau bilngn
real/nyata (bilangan dgn titik desimal)
Contoh:
3.14159, 0.0, 5.0
.5 dan 12. sebaiknya 0.5 dan 12.0
1.2e34 yang berarti 1.2 1034
Bentuk umum deklarasi variabel floating point
float nama_var; // penjelasan variabel
Feb 24, 2007 - 15
PK-Slide-03
Operasi Pembagian [1]
Ada perbedaan pembagian bil bulat & pecahan
hasil pembagian bil bulat mengalami pemotongan
jk salah 1 operand bil pecahan mk pembagian dilakukan
secara pembagian bil pecahan
C++ melakukan konversi antara bil bulat & pecahan
pd pemberian nilai dgn tipe yg berbeda
Ekspresi Hasil Jenis Hasil
19/10 1 bil bulat
19/10.0 1.9 bil real
19.0/10 1.9 bil real
19.0/10.0 1.9 bil real
Feb 24, 2007 - 16
PK-Slide-03
Operasi Pembagian [2]
Contoh pembagian:
int bilBulat; // tempat menyimpan bilangan bulat
float bilPchn; // tempat menyimpan bilangan pecahan
int main()
{
bilPchn = 1.0 / 2.0; // tersimpan 0.5
bilBulat = 1 / 2; // tersimpan 0
bilPchn = 1/2 + 1/2; // tersimpan 0.0
bilPchn = 3.0 / 2.0; // tersimpan 1.5
bilBulat = bilPchn; // tersimpan 1
return 0;
}
Feb 24, 2007 - 17
PK-Slide-03
Tipe Karakter
Bentuk umum deklarasi variabel karakter
char nama_var; // penjelasan variabel
Konstanta karakter dibatasi dgn tanda-petik (')
Contoh: 'A', 'a', '!', '?', ' ', '*', ',' dan '.'
Garing-terbalik (\) menandai karakter khusus,
spt. '\n' menandai baris-baru klik
Bedakan pembatas konstanta karakter & pembatas
kontanta string, yakni tanda-kutip (“)
Feb 24, 2007 - 18
PK-Slide-03
Tipe Boolean
Variabel bertipe boolean hanya dpt memiliki salah
satu dari dua nilai: true atau false.
Bentuk umum deklarasi variabel boolean
bool nama_var; // penjelasan variabel
Contoh:
bool status; // menyala atau padam
status = true; // keadaan menyala
Tipe ini berguna utk mengolah pernyataan2 logika
1. Struktur Disk
• Disk menyediakan penyimpanan sekunder bagi sistem
komputer modern.
• Magnetic tape digunakan sebagai media penyimpanan
sekunder
o waktu aksesnya lebih lambat dari disk
saat ini dipergunakan untuk backup
untuk penyimpanan informasi yang tidak sering
sebagai media untuk mentransfer infromasi dari
satu sistem ke sistem yang lain,
untuk menyimpan sejumlah data yang terlalu
besar untuk sistem disk
• Disk drive modern dialamatkan sebagai suatu array satu
dimensi yang besar dari logical block, dimana logical
block merupakan unit terkecil dari transfer.
• Ukuran logical block biasanya adalah 512 bytes, namun
sejumlah disk dapat diformat di level rendah (low level
formatted) untuk memilih sebuah ukuran logical block
yang berbeda, misalnya 1024 bytes.
• Array satu dimensi dari logical block dipetakan ke bagian
dari disk secara sekuensial.
Sistem Operasi Lanjut 2
o Sektor 0 adalah sektor pertama dari trek pertama di
silinder paling luar (outermost cylinder).
o Pemetaan kemudian memproses secara berurutan
trek tersebut, kemudian melalui trek selanjutnya di
silinder tersebut, dan kemudian sisa silinder dari
yang paling luar sampai yang paling dalam.
• Dengan menggunakan pemetaan, secara logika nomor
logical block dapat diubah ke sebuah alamat disk yang
bergaya lama (old-style disk address) yang terdiri atas
sebuah nomor silinder, sebuah nomor trek di silinder
tersebut, dan sebuah nomor sektor di trek tersebut.
• Dalam prakteknya, hal ini sulit dilakukan karena :
o kebanyakan disk memiliki sejumlah sektor yang
rusak, tetapi pemetaan menyembunyikannya dengan
mensubstitusikan dengan sektor yang dibutuhkan
dari mana-mana di dalam disk.
o jumlah dari sektor per trek tidaklah konstan. Semakin
jauh sebuah trek dari tengah disk, semakin besar
panjangnya, dan juga semakin banyak sektor yang
dipunyainya.
• Disk modern diatur menjadi zona-zona silinder, dimana
nomor sektor per trek konstan dalam sebuah zona, tetapi
seiring kita berpindah dari zona dalam ke zona luar, dan
nomor sektor per trek bertambah.
• Trek di zona paling luar tipikalnya mempunyai 40 persen
sektor lebih banyak daripada trek di zona paling dalam.
• Nomor sektor per trek telah meningkat (seiring dengan
peningkatan teknologi disk) dan mempunyai lebih dari
100 sektor per trek di zona luar dari disk.
• Dengan analogi yang sama, nomor silinder per disk telah
meningkat, dan sejumlah ribuan silinder adalah tak biasa.
Sistem Operasi Lanjut 3
2. Penjadualan Disk
• Tanggung jawab sistem operasi adalah menggunakan
hardware dengan efisien, khususnya disk drives,
khususnya dalam hal waktu akses yang cepat dan
bandwidth disk.
• Waktu akses memiliki dua komponen utama
o Waktu pencarian (Seek Time) : waktu yang
dibutuhkan disk arm untuk menggerakkan head ke
bagian silinder disk yang mengandung sektor yang
diinginkan.
o Waktu rotasi (Rotational Latency) : waktu tambahan
yang dibutuhkan untuk menunggu rotasi atau
perputaran disk, sehingga sektor yang diinginkan
dapat dibaca oleh head.
• Pengertian Bandwidth adalah total jumlah bytes yang
ditransfer dibagi dengan total waktu antara permintaan
pertama sampai seluruh bytes selesai ditransfer.
• Untuk meningkatkan kecepatan akses dan bandwidth,
dapat dilakukan penjadualan pelayanan atas permintaan
I/O dengan urutan yang tepat.
• Jika suatu proses membutuhkan pelayanan I/O dari atau
menuju disk, maka proses tersebut akan melakukan system
call ke sistem operasi. Permintaan tersebut membawa
informasi-informasi antara lain:
o Apakah operasi input atau output.
o Alamat disk untuk proses tersebut.
o Alamat memori untuk proses tersebut
o Jumlah bytes yang akan ditransfer
• Jika disk drive beserta controller tersedia untuk proses
tersebut, maka proses akan dapat dilayani dengan segera.
• Jika ternyata disk drive dan controller tidak tersedia atau
sedang sibuk melayani proses lain, maka semua
permintaan yang memerlukan pelayanan disk tersebut
Sistem Operasi Lanjut 4
akan diletakkan pada suatu antrian penundaan permintaan
untuk disk tersebut. Sehingga jika suatu permintaan telah
dilayani, maka sistem operasi memilih permintaan
tertunda dari antrian yang selanjutnya akan dilayani.
Penjadualan FCFS
• Bentuk paling sederhana dalam penjadualan disk adalah
dengan sistem antrian (queue) atau First Come First
Served (FCFS).
• Algoritma ini secara intrinsik bersifat adil, tetapi secara
umum algoritma ini pada kenyataannya tidak memberikan
pelayanan yang paling cepat.
Penjadualan SSTF (shortest-seek-time-first)
• Algoritma SSTF memilih permintaan berdasarkan waktu
pencarian paling minimum dari posisi head saat itu.
• Penjadualan SSTF merupakan salah satu bentuk dari
penjadualan shortest-job-first (SJF), sehingga penjadualan
SSTF juga dapat mengakibatkan starvation pada saat
tertentu.
Sistem Operasi Lanjut 5
• Waktu pencarian meningkat seiring dengan jumlah
silinder yang dilewati oleh head, maka SSTF memilih
permintaan yang paling dekat posisinya di disk terhadap
posisi head saat itu.
• Metode ini menghasilkan kurang lebih sepertiga dari yang
dihasilkan penjadualan FCFS, sehingga memberikan
peningkatan performance sistem cukup signifikan.
Penjadualan SCAN
• Pergerakan disk arm dimulai dari salah satu ujung disk,
kemudian bergerak menuju ujung yang lain sambil
melayani permintaan setiap kali mengunjungi masingmasing
silinder.
• Jika telah sampai di ujung disk, maka disk arm bergerak
berlawanan arah, kemudian mulai lagi melayani
permintaan yang muncul.
• Algoritma SCAN disebut juga algoritma lift/elevator,
karena kelakuan disk arm sama seperti elevator dalam
suatu gedung.
• Kelemahan : jika banyak permintaan terletak pada salah
satu ujung disk, maka yang dilayani sesuai arah arm disk,
Sistem Operasi Lanjut 6
sehingga permintaan yang pada ujung yang berlawanan
arah belum dilayani (walaupun lebih banyak).
Penjadualan C-SCAN (Circular-SCAN)
• C-SCAN menggerakkan head dari satu ujung disk ke
ujung lainnya sambil melayani permintaan yang terdapat
selama pergerakan tersebut.
• Pada saat head tiba pada salah satu ujung, head akan
kembali ke ujung disk asal pergerakannya.
Penjadualan C-LOOK
• Merupakan versi dari C-SCAN
• Arm disk bergerak paling jauh hanya pada permintaan
terakhir pada masing-masin arah pergerakannya, dan
langsung berbalik arah tanpa harus menuju ujung disk.
Sistem Operasi Lanjut 7
Pemilihan Algoritma Penjadualan Disk
• SSTF lebih umum dan memiliki prilaku yang lazim kita
temui.
• SCAN dan C-SCAN lebih baik bagi sistem yang
menempatkan beban pekerjaan yang berat kepada disk,
karena memiliki masalah starvation yang paling sedikit.
• Dengan algoritma penjadualan yang mana pun, kinerja
sistem sangat tergantung pada jumlah dan tipe permintaan.
• Permintaan disk service dapat dipengaruhi oleh metode
peng-alokasi-an file.
• Algoritma penjadualan disk harus ditulis dalam modul
terpisah dari sistem operasi, sehingga dapat saling
mengganti dengan algoritma lain jika diperlukan.
• Baik SSTF mau pun LOOK keduanya merupakan pilihan
algoritma yang tepat.
3. Managemen Disk
Memformat Disk
• Sebuah disk magnetik yang baru sebenarnya hanyalah
sebuah slate kosong yang berupa piringan magnetik untuk
menyimpan sesuatu.
Sistem Operasi Lanjut 8
• Proses low-level formatting/ physical formatting, yaitu
membagi disk menjadi beberapa sektor dan mengisinya
dengan struktur data tertentu (biasanya header, area data,
dan trailer) agar dapat dibaca dan ditulis oleh disk
controller.
• Salah satu informasi yang dibutuhkan oleh disk controller
adalah error-correcting code (ECC), karena jika terdapat
satu atau dua bit data yang corrupt, controller dapat
mengidentifikasi bit mana yang berubah dan mengoreksi
nya. Proses ini otomatis dilakukan oleh controller setiap
membaca atau menulis pada disk.
• Low-level formatting berfungsi agar pihak manufaktur
dapat mengetes disk dan menginisialisasi mapping dari
number logic blok ke pendeteksi sektor kosong.
• Semakin besar ukuran sektor yang diformat, semakin
sedikit sektor yang dapat diisi pada masing-masing track
dan semakin sedikit header dan trailer yang ditulis pada
setiap track, sehingga ruang yang dapat digunakan untuk
data semakin besar.
• Agar disk dapat menggunakan suatu berkas (file systems),
sistem operasi membutuhkan untuk menyimpan struktur
datanya pada disk.
o Langkah pertama adalah membagi disk menjadi
beberapa silinder (partition), sehingga sistem operasi
dapat memperlakukannya sebagai disk yang terpisah.
o Langkah kedua adalah logical formatting,(membuat
sistem berkas), dimana sistem operasi menyimpan
struktur data yang telah diinisialisasi ke disk.
Boot Block
• Ketika pertama kali menjalankan komputer, dibutuhkan
program yang sudan diinisialisasi, yaitu bootstrap.
Sistem Operasi Lanjut 9
• Yang diinisialisasi adalah segala aspek sistem, (CPU
register, device controller dan isi main memory),
kemudian menjalankan sistem operasi.
• Bootstrap mencari kernel sistem operasi di disk,
memanggil ke memori dan menggunakan alamat yang
diinisialisasi untuk mulai menjalankan sistem operasi.
• Umumnya bootstrap disimpan di Read-Only Memory
(ROM), karena tidak membutuhkan inisialisasi dan berada
pada lokasi yang tetap dimana prosesor dapat
mengeksekusi ketika komputer baru dinyalakan/di-reset.
• Jika kode bootstrap diubah maka chip ROM juga diubah.
• Untuk mengatasinya, sistem menyimpan bootstrap loader
di ROM yang berfungsi memasukkan seluruh program
bootstrap dari disk.
• Boot blocks adalah suatu partisi untuk menyimpan seluruh
program bootstrap.
• Boot disk atau system disk adalah disk yang memiliki
partisi boot.
Bad Blocks
• Bad blocks adalah beberapa sektor yang rusak pada suatu
disk.
• Pada disk sederhana, bad blocks diatasi secara manual,
dan pada disk yang lebih kompleks seperti disk SCSI, bad
blocks diatasi dengan sector sparing atau forwarding,
yaitu controller dapat mengganti sektor yang rusak
dengan sebuah sektor yang terpisah.
• Alternatif lainnya adalah mengganti sektor tersebut
dengan cara sector slipping.
• Mengganti blok yang rusak bukan sepenuhnya merupakan
proses yang otomatis, karena data-data yang tersimpan
sebelumnya akan terhapus.
SUMBER : http://ijobaraya.wordpress.com/2009/07/27/definisi-data-dan-informasi/
http://www.google.co.id/#hl=id&q=tipe+data&meta=&fp=54c237fbe64fad8,,
BABII VARIABEL DAN TIPE DATA
http://www.google.co.id/#hl=id&q=deklarasidata&meta=&fp=54c237fbe64fad8
http://www.google.co.id/#hl=id&q=pemetaan+ke+storage&meta=& fp=54c237fbe64fad8
http://www.mandalawangi89.co.cc/2009/08/struktur-data.html
Tidak ada komentar:
Posting Komentar