Selasa, 03 Januari 2012

Algoritma Optimal

Algoritma ini adalah algoritma yang paling optimal sesuai namanya. Prinsip dari algoritma ini adalah mengganti halaman yang tidak akan terpakai lagi dalam waktu lama, sehingga efisiensi pergantian halaman meningkat (page fault yang terjadi berkurang) dan terbebas dari anomali Belady. Strategi ini akan menghasilkan jumlah page-fault paling sedikit. Algoritma ini memiliki page fault rate paling rendah di antara semua algoritma di semua kasus. Akan tetapi, optimal belum berarti sempurna karena algoritma ini ternyata sangat sulit untuk diterapkan. Sistem tidak dapat mengetahui halaman-halaman mana saja yang akan digunakan berikutnya. Pendekatan ini dapat dilakukan dengan simulasi. Tapi simulasi hanya spesifik untuk suatu program. Bila yang terbaik tak dimungkinkan, maka yang perlu dilakukan adalah berusaha mendekatinya. Algoritma penggantian page diusahakan kinerjanya mendekati optimal. Tiap algoritma penggantian page mengumpulkan dan memakai informasi untuk menentukan page yang diganti sehingga mendekati optimal.

Algoritma FIFO ( First In First Out )

Algoritma ini adalah algoritma yang paling sederhana. Prinsip dari algoritma ini adalah seperti prinsip antrian (antrian tak berprioritas), halaman yang masuk lebih dulu maka akan keluar lebih dulu juga. Algoritma ini menggunakan struktur data stack. Apabila tidak ada frame kosong saat terjadi page fault, maka korban yang dipilih adalah frame yang berada di stack paling bawah, yaitu halaman yang berada paling lama berada di memori. Dengan hanya informasi mengenai lama berada di memori, maka algoritma ini dapat memindahkan page yang sering digunakan. Boleh jadi page itu berada terus di memori karena selalu digunakan. Page itu karena mengikuti pola antrian berdasar lamanya berada di memori menjadi elemen terdepan, diganti, dan segera harus masuk kembali ke memori sehingga terjadi page fault kembali.

Analisis Algoritma Penggantian Page Acak

Apasih Algoritma Penggantian Page Acak itu, dan kapan terjadinya ?

Algoritma penggantian page acak ialah page yang dikeluarkan untuk memberi tempat yang baru ditentukan secara acak tanpa kriteria tertentu.

Dalam penggunaannya algoritma page acak ini tidak memekai informasi apapun dalam menentukan page yang diganti. semua page dimemori utama mempunyai bobot yang sama untuk dipakai.

Dengan menggunakan algoritma ini dapat memilih sembarang page.

Kekurangan dari algoritma page acak ini sendiri ialah bisa menimbulakan rate terjadinya page error yang seringa akan terjadi.

Analisis Algoritma Penggantian Page LRU

Algoritma Penggantian Page LRU

LRU sendiri merupakan kepanjangan dari Least Recently Used

Algoritma Penggantian Page LRU merupakan algoritma penggantian isi chache, yaitu apabila chache penuh dan diperlukan penyimpanan entri baru, maka entri yang paling jarang digunakan akan dihapus dan diganti dengan entri baru.

Ada beberapa cara untuk mengimplementasikan algoritma LRU, tetapi yang cukup terkenal ada 2 yaitu, Counter dan Stack.

1. Dengan cara Counter
Cara ini dilakukan dengan menggunakan counter atau logical clock. Setiap halaman memiliki nilai yang pada awalnya diinisialisasi dengan 0. Ketika mengakses ke suatu halaman baru, nilai pada clock dihalaman tersebut bertambah 1.

2. Dengan cara Stack
Cara ini dilakukan dengan menggunakan stack yang menandakan halaman-halaman yang berada dimemori. setiap kali suatu halaman diakses, akan diletakan dibagian paling atas stack. Apabila ada halaman yang perlu diganti, maka halaman yang berada dibagian paling bawah stack akan diganti sehingga setiap kali halam baru akan diakses tidak perlu mencari kembali halaman yang akan diganti.

Penjelasan tentang Algoritma Banker, Algoritma Safty & Algoritma Ostrich

Apa sih Algoritma Banker, Algoritma Safty & Algoritma Ostrich itu . . . ?

Ketiga kata-kata diatas merupakan beberapa algoritma yang sering dipakai dalam penanganan Deadlock.

Deadlock . . . .?
Apa sih Deadlock itu . . . . ?

Sebelum saya membahas mengenai ketiga algoritma tersebut, saya akan membahas terlebih dahulu apa sih yang dinamakan Deadlock itu.

Deadlock ialah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Deadlock terjadi karena beberapa proses itu saling menunggu dan tidak terjadi kemajuan dalam stiap prosesnya (proses berbenturan).

Penjelasan yang lebih mudah tentang Deadlock ialah dimana ketika kita sedang menggunkan PC ataupun laptop trus tiba-tiba kondisi monitor menjadi NG-bleng ataupun Ng-heng.

Nah masalah Deadlock itu dapat diatasi dengan ketiga algiritma diatas (Algoritma Banker, Algoritma Safty & Algoritma Ostrich).

Penjelasan dari masing-masing algoritma tersebut,

1). Algoritma Banker
Algoritma Banker merupakan bentuk penjadualan yang dilakukan prosesor untuk mencegah terjadinya deadlock. yang dilalukan algoritma banker jika terjadinya deadlock ialah dengan memutuskan apakah menyetujui atau menunda permintaan suatu proses. misalkan pada suatu proses pasti akan meminta beberapa memory dan register pada system untuk dapat melakukan proses. maka pencegahannya prosesor akan menyediakan memory dan register yang akan dibutuhkan, juga akan menetapkan batas max yang akan diberikan .

2). Algoritma Safty
Algoritma Safety merupakan suatu bentuk algoritma yang mana selalu menginginkan kondisi system dalam keadaan aman. karena pencegahan yang dilakuka oleh algoritma safety ialah dengan menanyakan suatu proses apakah proses sudah dalam keadaan selesai atau belum dengan membandingkan waktu proses dan lamanya eksekusi proses dan melihat apakah kondisi system dalam keadaan aman atau deadlock.

3). Algoritma Ostrich
Dalam algoritma ostrich ini dijelaskan bahwa untuk menangani deadlock ialah dengan berpura-pura bahwa tidak ada masalah apapun. hal ini seakan-akan melakukan hal yang patal, tetapi sistem operasi unix menanggulangi deadlock dengan cara ini dengan tidak mendeteksi deadlock dan membiarkannya secara otomatis mematikan program, sehingga seakan-akan tidak terjadi apapun. jadi jika terjadi deadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses harus menunggu pada waktu tertentu dan mencoba lagi.

Senin, 12 Desember 2011

Aplikasi DDBMS Menggunakan MY SQL atau Basis Data Terdistribusi


Sistem terdistribusi dalam basis data disimpan pada beberapa komputer. Komputer pada sistem terdistribusi berkomunikasi satu sama lain melalui media komunikasi seperti jaringan berkecepatan tinggi atau telpon. Mereka tidak berbagi memori atau disk. Komputer pada sistem terdistribusi bisa berfariasi dalam hal ukuran dan fungsi serta berkisar dari sistem workstation hingga mainframe.
            Komputer pada sistem terdistribusi bisa disebut situs atau node tergantung pada konteknya. Istilah situs digunakan untuk menyatakan distribusi fisik sistem. Sebuah sistem basis data terdistribusi berisi sekumpulan situs dimana tiap-tiap situs dapat berpartisipasi dalam pengeksekusian transaksi-transaksi yang mengakses pada satu atau beberapa situs.
Basis data terdistribusi sering terpisah secara geografis, diatur terpisah dan mempunyai interkoneksi yang lambat. Sistem basis data terdistribusi memiliki transaksi lokal dan global. Transaksi lokal adalah transaksi yang mengakses data hanya dari situs dimana transaksi dilakukan. Kemudian transaksi global adalah transaksi yang mengakses data pada situs yang berbeda dari situs transaksi dilakukan atau pada beberapa situs berbeda.Arsitektur yang dilakukan adalah sistem basis data terdistribusi karena


  • Data bersama, aturan suatu lingkungan dimana pengguna pada satu situs bisa mengakses data pada situs lainnya.
  • Otonomi, masing-masing situs dapat mempertahankan kontrol terhadap data yang disimpan terhadap data.
  • Ketersedian, jika satu situs gagal pada suatu sistem terdistribusi, maka situs lainnya melanjutkan operasi. Apalagi jika datanya disimpan pada beberapa situs, Sebuah transaksi yang memerlukan data tertentu bisa mencarinya pada sembarang situs lain. Oleh karena itu kegagalan satu situs tidak mengakibatkan sistem berhenti.

    kali ini saya akan meriview aplikasi DDBMS dengan menggunakan MY SQL
    Keistimewaan MySQL
    MySQL memiliki beberapa keistimewaan, antara lain :
    Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi.
    Open Source.MySQL didistribusikan secara open source, dibawah lisensi GPL sehingga dapat digunakan secara cuma-cuma.
    'Multiuser'. MySQL dapat digunakan oleh beberapa user dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.
    'Performance tuning'. MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.
    Jenis Kolom. MySQL memiliki tipe kolom yang sangat kompleks, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain.
    Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query).
    Keamanan. MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan izin akses userdengan sistem perizinan yang mendetail serta sandi terenkripsi.
    Skalabilitas dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.
    Konektivitas. MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).
    Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya.
    Antar Muka. MySQL memiliki interface (antar muka) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).
    Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online.
    Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle

    Contoh Kasus dan implementasi MY sql
    Contoh Basis Data terdistribusi Pada SI Kependudukan

    Misalkan sebuah daerah terdiri atas empat desa masing-masing desa memiliki komputer yang menangani data kependudukan pada desa. Masing-masing computer merupakan sebuah lokasi  kemudian ada satu lokasi yang menangani tentang data kependudukan semua desa. Masing-masing desa menangani skema kependudukan:


    skema – kependudukan = (nomor_ktp, alamat, nama_desa)
    Lokasi yang mempunyai tentang menangani skema-desa:
       Skema – desa = (jumlah_penduduk, nama_desa, kota)

    Contoh untuk menggambarkan perbedaan antara dua tipe kependudukan, lokal dan global pada satu daerah adalah menambah data penduduk pada sebuah desa. Jika penambahan dilakukan di desa maka ini dianggap lokal jika tidak dianggap global. Sebaliknya untuk sebuah kependudukan dimana seseorang akan pindah dari desa A ke desa B. Orang tersebut meminta KTP baru di desa B, karena yang harus diakses terletak pada dua lokasi berbeda.

       Pada sistem basis data terdistribusi yang ideal, lokasi akan berbagi skema global. Semua lokasi akan menjalankan software DBMS terdistribusi yang sama dan masing-masing lokasi akan mengetahui keberadaan lokasi yang lainnya. Jika dibangun dari awal sebuah basis data terdistribusi yang mungkin dapat mencapai tujuan di atas. Namun ,dalam kenyataannya basisdata terdistribusi harus dibuat dengan menggabungkan beberapa sistem basis data yang sudah ada, masing-masing dengan skemanya sendiri dan mungkin menjalankan DBMS berbeda. Sistem semacam ini kadang disebut sistem multi basisdata atau sistem basisdata teridstribusi heterogen.

Rabu, 07 Desember 2011

HYPER-THREADING & DISPATCHING ALGORITHM

1. Teknologi Hyper Threading 






 
 
 
 
 
 
Teknologi Hyper-Threading adalah teknik yang memungkinkan sebuah CPU tunggal dapat bertindak seperti beberapa CPU. Sebuah CPU (single thread) terdiri dari banyak komponen kecil. Pada saat menjalankan proses, beberapa komponen mungkin sibuk memproses instruksi, sedangkan komponen lainnya sedang menuggu untuk dimanfaatkan. Sehingga hal ini mengakibatkan CPU bekerja tidak maksimal.

Hyper-threading memungkinkan bagian-bagian yang berbeda dari CPU untuk bekerja pada tugas yang berbeda secara bersamaan. Dengan cara ini, sebuah komputer dengan CPU Hyper-Threading tampaknya lebih dari satu CPU.

Sebuah CPU dengan Hyper-Threading memiliki dua set sirkuit yang melacak keadaan CPU. Sirkuit ini mencakup sebagian besar register dan petunjuk instruksi. Sirkuit ini berfungsi sebagai fasilitas penyimpanan sementara untuk melacak dimana CPU saat ini bekerja. Bagian dari CPU yang tidak direpleksi adalah L1 dan L2 cache. Hyper-Threading meduplikat sekitar 5% sirkuit dari CPU. Tergantung pada aplikasi perangkat lunak yang digunakan, Hyper-Threading dapat meningkatkan performa hingga enam kali lipat.

Perangkat Lunak Yang Mendukung
Manfaat kinerja Hyper-Threading  hanya dapat dijalankan dengan menggunakan sistem operasi yang mendukung beberapa CPU. Pada sistem operasi, Hyper-Threading akan terlihat seperti dua CPU. Sistem operasi yang mendukung Hyper-Threading diantaranya Microsoft Windows NT 4.0, Microsoft Windows 2000, Microsoft XP Profesional, dan sebagian besar varian Unix.

Cara Kerja Teknologi Hyper-Threading
Pada saat CPU (tanpa Hyper-Threading) memproses instruksi, hanya sekitar 35% unit CPU saja yang terpakai. Sisanya menganggur dan menunggu instruksi sebelumnya selesai. Hal ini disebabakan karena 1 CPU, instruksi-instruksi dikirimkan dalam bentuk single thread. Sehingga instruksi-instruksi tersebut mengantri secara berurutan.
Sedangkan pada CPU Hyper-threading, urutan instruksi dikirim secara multithread (dalam 2 thread secara paralel/bersamaan), sehingga sebuah instruksi tidak harus mengantri dulu instuksi didepannya, tapi dapat langsung diproses oleh Execution Unit yang semula menganggur.

Perbandingan Dengan CPU biasa
Seberapapun besar GHz sebuah CPU, apabila Execution Unitnya sedang memproses instruksi yang belum selesai, maka CPU tersebut akan tetap terhambat untuk menerima instruksi berikutnya, ini karena instruksi harus mengantri berurutan pada jalur single-thread.
Oleh karena itu Tomshardware pernah menyatakan bahwa performa P4 3.06 GHz dengan HT sanggup mengalahkan P4 4GHz tanpa HT. Situasi seperti itu bisa saja terjadi terutama bila dalam pengujiannya Tomshardware menjalankan aplikasi secara bersamaan.
Untuk pemakaian sehari-hari kita seringkali menjalankan banyak aplikasi bersamaan, disaat itulah kita makin sadar bahwa 2 akan lebih baik dari 1. Petinju profesional sekalipun, tapi bila hanya memiliki 1 tangan, maka akan dengan mudah dikalahkan oleh tukang becak yang mempunyai 2 tangan.


OK, diatas sudah dijelaskan secara umum tentang Hyper-Threading itu apa??? Sekarang kita ulas lebih dalam lagi si Hyper-Threading ini...

Teknologi Hyper-Threading (HT) adalah sebuah teknologi yang dikembangkan oleh Intel agar dapat meningkatkan kinerja prosesor, dengan cara memberikan instruksi melalui software untuk membelah diri (spliting) menjadi beberapa aliran (thread). Teknologi Hyper-Threading menyediakan thread-level secara paralel pada setiap processor, sehingga penggunaan sumber daya processor menjadi lebih efisien, memungkinkan beberapa thread untuk berjalan pada setiap inti (core). Teknologi Hyper-Threading dapat dapat diaktifakn melalui kombinasi antara :
  • Processor Intel® dan chipset yang mendukung Teknologi Hyper-threading
  • Sistem Operasi (OS) untuk optimalisasi Teknologi Hyper-Threading
  • BIOS (Basic Input Output System) yang support Teknologi Hyper-Threading

Dengan aktifnya Teknologi Hyper-Threading pada processor maka sebuah komputer akan mampu :
  • Menjalankan aplikasi berat secara bersamaan dengan tetap mempertahankan respon sistem
  • Menjaga sistem lebih aman, efisien dan meminimalkan dampak terhadap produktivitas
  • Mengaktifkan grafis menjadi lebih baik, sehingga penggemar multi media dapat  membuat, mengedit, menjalakan encoding file grafis, pada saat yang sama komputer juga menjalankan aplikasi dibelakang layar seperti program anti virus tanpa mengorbankan kinerja sistem

Teknologi Hyper-Threading jika digabungkan dengan Teknologi Intel® Turbo Boost ataupun Intel® Turbo Boost 2.0 memungkinkan processor untuk mengolah data secara simultan pada beberapa thread, menyesuaikan beban kerja dan secara otomatis akan mematikan core yang tidak aktif, serta processor akan meningkatkan frekuensi pada core yang sibuk untuk menambah kinerja lebih besar.

Perlu diketahui bahwa fungsi Hyper-Treading ini bisa bekerja optimal bila didukung oleh sistem operasi yang sesuai, misalnya wnidows XP, selain bergantung pada dukungan sistem operasi, juga bergantung pada :
  • Dukungan Chipset yang digunakan pada motherboard
  • Dukungan BIOS untuk mengatur aktif tidaknya fungsi HT dari BIOS
  • Dukungan Aplikasi software yang digunakan

Teknologi Hyper-Threading adalah teknologi Eksklusif milik Intel, tidak dimiliki oleh processor-processor yang bukan produksi Intel.
 
2. Dispatching Algorithm 
Dispatching adalah suatu modul yang akan memberikan kontrol pada CPU terhadap penyeleksian proses yang dilakukan selama short term scheduling. Fungsi-fungsi yang terkandung didalamnya meliputi :
  • Switching Context
  • Switching ke User Mode
  • Melompat ke lokasi tertentu pada user program untuk memulai program

Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai untuk menjalankan proses yang lainnya disebut dispatch latency.

Beberapa algoritma penjadwalan CPU dispatching :
  • First-Come First-Served Scheduling (FCFS)
  • Shortest Job First Scheduler (SJF)
  • Priority Scheduling
  • Round-Robin Scheduling



3. Sistem Operasi Yang Mendukung 
    Teknologi Hyperthreading

Pengelompokan ke dalam Multi Threading :
  • one-to-one Model           : Windows NT/XP/2000, solaris 9
  • many-to-many Model  : Windows NT/2000, IRIX, Digital UNIX dan Solaris
  • two-level Model              : IRIX, HP-UX, Tru64, UNIX, Solaris 8