Selamat Membaca

Pahami dan resapi setiap langkah yang kau ikuti.

Selamat Menanam

Tanamkan kebaikan dikehidupanmu.

Selamat Menabur

Taburkan ilmu yang kau punya bagi setiap orang.

Selamat Tumbuh

Tumbuhlah menjadi seseorang yang berguna bagi orang terdekatmu.

Selamat Berkembang

Kembangkan ilmumu untuk kebaikan bagi setiap orang.

Tampilkan postingan dengan label Pengetahuan Komputer. Tampilkan semua postingan
Tampilkan postingan dengan label Pengetahuan Komputer. Tampilkan semua postingan

Kamis, 06 Februari 2014

Algoritma Pemrosesan Paralel


2.1.1 Pengertian Algoritma
Algoritma pada sistem kerja komputer dapat meliputi brainware, hardware, dan software. Tanpa salah satu dari ketiga sistem tersebut, komputer tidak akan berguna. Kita akan lebih fokus pada software komputer. Software terbangun atas susunan program dan syntax. Untuk menyusun program atau syntax, diperlukannya langkah-langkah yang sistematis dan logis untuk dapat menyelesaikan masalah atau tujuan dalam proses pembuatan suatu software. Maka algoritma berperan penting dalam penyusunan program atau syntax tersebut.

Pengertian algoritma adalah susunan yang logis dan sistematis untuk memecahkan suatu masalah atau untuk mencapai tujuan tertentu. Dalam dunia komputer, algoritma sangat berperan penting dalam pembangunan suatu software.
Dalam dunia sehari-hari, mungkin tanpa kita sadari algoritma telah masuk dalam kehidupan kita. Jadi perlu diingat bahwa algoritma tidak hanya diterapkan pada dunia komputasi, tetapi juga algoritma diterapkan dalam kehidupan sehari-hari.
Sedangkan dalam dunia komputasi, contoh penggunaan algoritma adalah dalam pembuatan program pada bahasa pemrograman seperti bahasa C, C#, dan Visual Basic. Dengan syntax pada tiap bahasa pemrograman dan algoritma, maka akan tersusun program-program dan terlahirlah software.

2.1.2 Algoritma Paralel
Algoritma paralel adalah algoritma untuk menyelesaikan masalah numerik, karena masalah numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi yang sangat tinggi. Untuk dapat mengadaptasi suatu algoritma sekuensial ke dalam algoritma paralel, terlebih dahulu harus dipelajari mengenai konsep pemrosesan paralel dan bagaimana proses-proses dapat berlangsung secara paralel.
Dalam beberapa kasus, algoritma sekuensial dengan mudah dapat diadaptasi ke dalam lingkungan paralel. Namun dalam kebanyakan kasus, problem komputasi harus dianalisa ulang dan menghasilkan algoritma paralel yang baru. Terdapat beberapa penelitian mengenai perancangan algoritma paralel untuk problem-problem praktis seperti pengurutan, pemrosesan geraf, solusi untuk persamaan lanjar, solusi untuk persamaan diferensial, dan untuk simulasi. Teknik pembangunan algoritma paralel dapat dibedakan sebagai berikut :

1. Paralelisme Data
Teknik paralelisme data merupakan teknik yang paling banyak digunakan dalam program paralel. Teknik ini lahir dari penelitian bahwa aplikasi utama komputasi paralel adalah dalam bidang sain dan engineer, yang umumnya melibatkan array multi-dimensi yang sangat besar. Dalam program sekuensial biasa, array ini dimanipulasi dengan mempergunakan perulangan bersarang untuk mendapatkan hasil. Kebanyakan program paralel dibentuk dengan mengatur ulang algoritma sekuensial agar perulangan bersarang tersebut dapat dilaksanakan secara paralel. Paralelisme data menunjukkan bahwa basis data dipergunakan sebagai dasar untuk membentuk aktifitas paralel, dimana bagian yang berbeda dari basis data akan diproses secara paralel. Dengan kata lain paralelisme dalam program ini dibentuk dari penerapan operasi-operasi yang sama ke bagian array data yang berbeda. Prinsip paralelisme data ini berlaku untuk pemrograman multiprosesor dan multikomputer.

2. Partisi Data
Merupakan teknik khusus dari paralelisme data, dimana data disebar ke dalam memori-memori lokal multikomputer. Sebuah proses paralel kemudian ditugaskan untuk mengoperasikan masing-masing bagian data. Proses tersebut harus terdapat dalam lokal memori yang sama dengan bagian data, karena itu proses dapat mengakses data tersebut secara lokal. Untuk memperoleh kinerja yang baik, setiap proses harus memperhatikan variabel-variabel dan data-data lokalnya masing-masing. Jika suatu proses membutuhkan akses data yang terdapat dalam remote memori, maka hal ini dapat dilakukan melalui jaringan message passing yang menghubungkan prosesor-prosesor. Karena komunikasi antar prosesor ini menyebabkan terjadinya waktu tunda, maka messsage passing ini sebaiknya dilakukan dalam frekuensi yang relatif kecil. Dapat disimpulkan bahwa tujuan dari partisi data adalah untuk mereduksi waktu tunda yang diakibatkan komunikasi messsage passing antar prosesor. Algoritma paralel mengatur agar setiap proses dapat melakukan komputasi dengan lokal data masing-masing.

2.1.3 Algoritma Relaksasi
Pada algoritma ini, setiap proses tidak membutuhkan sinkronisasi dan komunikasi antar proses. Meskipun prosesor mengakses data yang sama, setiap prosesor dapat melakukan komputasi sendiri tanpa tergantung pada data antara yang dihasilkan oleh proses lain. Contoh algoritma relaksasi adalah algoritma perkalian matrik, pengurutan dengan mengunakan metode ranksort dan lain sebagainya.

2.1.4 Paralelisme Sinkron
Aplikasi praktis dari komputasi paralel adalah untuk masalah yang melibatkan array multi-dimensi yang sangat besar. Masalah tersebut mempunyai peluang yang baik untuk paralelisme data karena elemen yang berbeda dalam array dapat diproses secara paralel. Teknik komputasi numerik pada array ini biasanya iteratif, dan setiap iterasi akan mempengaruhi iterasi berikutnya untuk menuju solusi akhir. Misalnya saja untuk solusi persamaan numerik pada sistem yang besar. Umumnya, setiap iterasi mempergunakan data yang dihasilkan oleh iterasi sebelumnya dan program akhirnya menuju suatu solusi dengan akurasi yang dibutuhkan. Algoritma iterasi ini mempunyai peluang paralelisme pada setiap iterasinya. Beberapa proses paralel dapat dibentuk untuk bekerja pada array bagian yang berbeda. Namun setelah setiap iterasi, proses-proses harus disinkronkan, karena hasil yang diproduksi oleh satu proses dipergunakan oleh prosesproses lain pada iterasi berikutnya. Teknik pemrograman paralel seperti ini disebut paralelisme sinkron. Contohnya adalah perhitungan numerik pada Metode Eliminasi Gauss. Pada paralelisme sinkron ini, struktur umum programnya biasanya terdiri dari perulangan FORALL yang akan membentuk sejumlah besar proses paralel untuk dioperasikan pada bagian array data yang berbeda. Setiap proses diulang dan disinkronkan pada akhir iterasi. Tujuan dari sinkronisasi ini adalah untuk meyakinkan bahwa seluruh proses telah menyelesaikan iterasi yang sedang berlangsung, sebelum terdapat suatu proses yang memulai iterasi berikutnya.

2.1.5 Komputasi Pipeline
Pada komputasi pipeline, data dialirkan melalui seluruh struktur proses, dimana masing-masing proses membentuk tahap-tahap tertentu dari keseluruhan komputasi . Algoritma ini dapat berjalan dengan baik pada multikomputer, karena adanya aliran data dan tidak banyak memerlukan akses ke data bersama.
Contoh komputasi pipeline adalah teknik penyulihan mundur yang merupakan bagian dari metoda eliminasi.
Dalam merancang suatu algoritma paralel kita harus mempertimbangkan pula hal-hal yang dapat mengurangi kinerja program paralel. Hal-hal tersebut adalah :

1. Memory Contention
Eksekusi prosesor tertunda ketika prosesor menunggu hak ases ke sel memori yang sedang dipergunakan oleh prosesor lain. Masalah ini muncul pada arsitektur multiprosesor dengan memori bersama.

2. Excessive Seqential Code
Pada beberapa algoritma paralel, akan terdapat kode sekuensial murni dimana tipe tertentu dari operasi pusat dibentuk, seperti misalnya pada proses inisialisasi. Dalam beberapa algoritma, kode sekuensial ini dapat mengurangi keseluruhan speedup yang dapat dicapai. Process Creation Time Pembentukan proses paralel akan membutuhkan waktu eksekusi. Jika proses yang dibentuk relative berjalan dalam waktu yang relatif lebih singkat dibandingkan dengan waktu pembentukan proses itu sendiri, maka overhead pembuatan akan lebih besar dibandingkan dengan waktu eksekusi paralel algoritma. Communication Delay Overhead ini muncul hanya pada multikomputer. Hal ini disebabkan karena interaksi antar prosesor melalui jaringan komunikasi. Dalam beberapa kasus, komunikasi antar dua prosesor mungkin melibatkan beberapa prosesor antara dalam jaringan komunikasi. Jumlah waktu tunda komunikasi dapat menurunkan kinerja beberapa algoritma paralel.

3. Process Creation Time
Pembentukan proses paralel akan membutuhkan waktu eksekusi. Jika proses yang dibentuk relative berjalan dalam waktu yang relatif lebih singkat dibandingkan dengan waktu pembentukan proses itu sendiri, maka overhead pembuatan akan lebih besar dibandingkan dengan waktu eksekusi paralel algoritma.

4. Communication Delay
Overhead ini muncul hanya pada multikomputer. Hal ini disebabkan karena interaksi antar prosesor melalui jaringan komunikasi. Dalam beberapa kasus, komunikasi antar dua prosesor mungkin melibatkan beberapa prosesor antara dalam jaringan komunikasi. Jumlah waktu tunda komunikasi dapat menurunkan kinerja beberapa algoritma paralel.

5. Synchronization Delay
Ketika proses paralel disinkronkan, berarti bahwa suatu proses akan harus menunggu proses lainnya. Dalam beberapa program paralel, jumlah waktu tunda ini dapat menyebabkan bottleneck dan mengurangi speedup keseluruhan. Load Imbalance Dalam beberapa program paralel, tugas komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya. Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang ditugaskannya.


6. Load Imbalance
Dalam beberapa program paralel, tugas komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya. Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang ditugaskannya.

2.1.6 PVM (Parallel Virtual Machine)
PVM (Parallel Virtual Machine) adalah paket software yang mendukung pengiriman pesan untuk komputasi parallel antar komputer. PVM dapat berjalan diberbagai macam variasi UNIX atau pun windows dan telah portable untuk banyak arsitektur seperti PC, workstation, multiprocessor dan superkomputer.
Sistem PVM terbagi menjadi dua. Pertama adalah daemon, pvmd, yang berjalan pada mesin virtual masing-masing komputer. Mesin virtual akan dibuat, ketika user mengeksekusi aplikasi PVM. PVM dapat dieksekusi melalui prompt UNIX disemua host. Bagian kedua adalah library interface rutin yang mempunyai banyak fungsi untuk komunikasi antar task . Library ini berisikan rutin yang dapat dipanggil untuk pengiriman pesan, membuat proses baru, koordinasi task dan konfigurasi mesin virtual.
Salah aturan main yang penting dalam PVM adalah adanya mekanisme program master dan slave/worker. Programmer harus membuat kode master yang menjadi koordinator proses dan kode slave yang menerima, menjalankan, dan mengembalikan hasil proses ke komputer master. Kode master dieksekusi paling awal dan kemudian melahirkan proses lain dari kode master. Masing-masing program ditulis menggunakan C atau Fortran dan dikompilasi dimasing-masing komputer. Jika arsitektur komputer untuk komputasi paralel semua sama, (misalnya pentium 4 semua), maka program cukup dikompilasi pada satu komputer saja. Selanjutnya hasil kompilasi didistribusikan kekomputer lain yang akan menjadi node komputasi parallel. Program master hanya berada pada satu node sedangkan program slave berada pada semua node.
Komunikasi dapat berlangsung bila masing-masing komputer mempunyai hak akses ke filesystem semua komputer. Akses ke file system dilakukan melalui protokol rsh yang berjalan di unix atau windows.
Berikut adalah langkah pengaturan pada masing-masing komputer :
• Buat file hostfile yang berisi daftar node komputer dan nama user yang akan dipakai untuk komputasi paralel. Bila nama user pada semua komputer sama misalnya nama user riset pada komputer C1, C2,C3 dan C4, maka hostfile ini boleh tidak ada. Hostfile ini dapat digunakan bila nama user di masing-masing komputer berbeda.
• Daftarkan IP masing-masing komputer pada file/etc/hosts/hosts.allow dan /etc/hosts/hosts.equiv.
• Penambahan dan penghapusan host secara dinamis dapat dilakukan melalui konsole PVM. Bila IP tidak didefinisikan pada hostfile¸ cara ini dapat digunakan.
Program PVM terdiri dari master dan slave, dimana program master dieksekusi paling awal dan kemudian melahirkan proses lain. PVM memanggil rutin pvm_spawn() untuk melahirkan satu atau dua proses lebih yang sama. Fungsi-fungsi untuk PVM versi bahasa C mempunyai rutin awalan pvm. Pengiriman dan penerimaan task diidentifikasi dengan TID (Task Identifier). TID ini bersifat unik dan digenerate oleh pvmd lokal. PVM berisi beberapa rutine yang mengembalikan nilai TID sehingga aplikasi user dapat mengidentifikasi task lain disistem.

1. Komputasi Paralel dengan Parallel Virtual Machine (PVM)
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak.
Penggunaan komputasi paralel prosessing merupakan pilihan yang cukup handal untuk saat ini untuk pengolahan data yang besar dan banyak, hal ini apabila dibandingkan dengan membeli suatu super komputer yang harganya sangat mahal maka penggunaan komputasi parallel prosessing merupakan pilihan yang sangat tepat untuk pengolahan data tersebut.
Aspek keamanan merupakan suatu aspek penting dalam sistem parallel prosessing komputasi ini, karena di dalam sistem akan banyak berkaitan dengan akses data, hak pengguna, keamanan data, keamanan jaringan terhadap peyerangan sesorang atau bahkan virus sehingga akan menghambat kinerja dari sistem komputasi ini.
Komputasi paralel adalah melakukan perhitungan komputasi dengan menggunakan 2 atau lebih CPU/Prosesor dalam suatu komputer yang sama atau komputer yang berbeda dimana dalam hal ini setiap instruksi dibagi kedalam beberapa instruksi kemudian dikirim ke prosesor yang terlibat komputasi dan dilakukan secara bersamaan. Untuk proses pembagian proses komputasi tersebut dilakukan oleh suatu software yang betugas untuk mengatur komputasi dalam hal makalah ini akan digunakan Parallel Virtual Machine (PVM).
Pada sistem komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini komputer paralel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory sistem (sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk menghubungkan antar prosesor dan memori.
Komunikasi data pada sistem paralel memori terdistribusi, memerlukan alat bantu komunikasi. Contoh alat bantu yang sering digunakan oleh sistem seperti PC Jaringan pada saat ini adalah standar PVM (Parallel Virtual Machine) yang bekerja diatas TCP/IP communication layer. Standar ini memerlukan fungsi remote access agar dapat menjalankan program pada masing-masing unit prosesor.
Salah satu protocol yang dipergunakan pada komputasi parallel adalah Network File System (NFS), NFS adalah protokol yang dapat membagi sumber daya melalui jaringan. NFS dibuat untuk dapat independent dari jenis mesin, jenis sistem operasi, dan jenis protokol transport yang digunakan. Hal ini dilakukan dengan menggunakan RPC. NFS memperbolehkan user yang telah diijinkan untuk mengakses file-file yang berada di remote host seperti mengakses file yang berada di lokal. Protokol yang digunakan protokol mount menentukan host remote dan jenis file sistem yang akan diakses dan menempatkan di suatu direktori, protokol NFS melakukan I/O pada remote file system. Protokol mount dan protokol NFS bekerja dengan menggunakan RPC dan mengiri dengan protokol TCP dan UDP. Kegunaan dari NFS pada komputasi paralel adalah untuk melakukan sharing data sehingga setiap node slave dapat mengakses program yang sama pada node master.

2. Langkah – Langkah Penggunaan Parallel Virtual Machine (PVM)
Secara umum, langkah implementasi komputasi parallel sebagai berikut :
a. Jalankan PVM daemon pada setiap mesin dalam cluster.
b. Jalankan program master pada master daemon.
c. Master daemon akan menjalankan proses slave.
Untuk mengimplementasikannya, dapat memakai tools :
- PVM, virtual machine dan routine untuk komputasi paralel
- rsh (remote shell), aplikasi untuk authentikasi dan komunikasi proses antar komputer.
- Xpvm versi 1.2, interface grafis untuk PVM dengan animasi eksekusi komputasi paralel yang dapat dilihat dilayar.

3. Pola Pemrograman Paralel pada PVM
Komputasi paralel dapat didekati dengan 3 tinjauan dasar yaitu
a. Crowd Computation
Crowd computation adalah model paling umum dan terdiri dari kumpulan proses yang saling berhubungan sangat erat. Melakukan komputasi pada bagian-bagian yang berbeda dari workload.
Program master bertugas penyebaran proses (spawn proses), inisialisasi, collection, display hasil dan mungkin display fungsi-fungsi waktu. Sedang program slave bertugas melaksanakan komputasi yang sebenarnya, menerima alokasi task/workload dari master baik secara statis maupun dinamis dan melakukan komputasi task-task dari alokasi dirinya sendiri.
b. Tree Computation
Tree computation adalah pola pemrograman dimana proses disebar secara dinamis seperti tree. Hubungan antar node sebagai hubungan parent-child. Cocok untuk aplikasi dimana total proses yang akan terbentuk tidak diketahui sebelumnya. Biasanya tree computation ini dipakai urituk algoritma-algoritma branch and bound, alpa beta search dan algoritma recursive divide and conquer.
c. Hybrid Computation
Hybrid computation adalah model komputasi yang merupakan kombinasi model tree dan model crowd. Model ini memiliki struktur penyebaran proses yang lebih bebas.

2.2 Proses

2.2.1 Konsep Proses
Untuk membangun suatu algoritma program paralel, pengertian mengenai konsep proses merupakan alat bantu yang sangat berguna. Proses sendiri diartikan sebagai sederatan operasi yang dapat dibentuk oleh sebuah prosesor tunggal. Proses dapat dipergunakan sebagai blok pembangunan dasar dari pemrograman paralel, setiap prosesor mengeksekusi proses tertentu pada saat tertentu. Secara informal, proses dapat berupa sub rutin atau prosedur yang dieksekusi oleh prosesor tertentu. Ketersediaan sejumlah besar prosesor secara fisik berarti bahwa sejumlah besar proses dapat dieksekusi secara paralel oleh perangkat keras komputer. Dengan asumsi bahwa setiap aktifitas dari setiap proses mempunyai kontribusi terhadap keseluruhan komputasi, maka eksekusi komputasi tersebut akan lebih cepat dibandingkan jika dilakukan dengan prosesor tunggal. Agar konsep proses berguna dalam pembuatan program, konsep proses ini menjadi feature tambahan dalam bahasa pemrograman paralel.
Untuk menggabungkan konsep proses ke dalam bahasa pemrograman paralel, harus terdapat beberapa mekanisme dalam bahasa tersebut untuk mendefinisikan dan membentuk proses baru. Harus terdapat pula beberapa feature dalam bahasa tersebut untuk membagi (sharing) data antar prosesor paralel, dengan demikian setiap proses dapat berinteraksi satu sama lainnya untuk menyelesaikan keseluruhan komputasi. Setiap proses dapat mengeksekusi dengan kecepatan yang berbeda pada prosesor yang berbeda.

2.2.2 Status Proses
Pada dasarnya terdapat lima kemungkinan status untuk proses yang sedang aktif, yaitu :
- Ready, proses dikatakan dalam status ready jika proses tersebut memungkinkan untuk dieksekusi tetapi pada saat tersebut tidak dieksekusi oleh prosesor yang telah ditentukan. Pada saat pertama kali proses dibentuk, proses tersebut mempunyai status ready.
- Running, tiap satuan waktu hanya terdapat satu proses yang dapat berjalan pada satu prosesor.
- Blocked, suatu proses yang dalam status ready harus menunggu event dari proses lainnya, misalnya menunggu data hasil proses lain, maka proses tersebut berubah status menjadi blocked. Jika semua proses dalam status blocked, maka kondisi ini disebut deadlock. Hal ini menyebabkan eksekusi program tidak dapat diteruskan.
- Delayed, status delayed pada dasarnya hampir sama dengan status blocked, kecuali bahwa event yang ditunggu sebenarnya telah muncul. Karena waktu tunda komunikasi dalam arsitektur komputer, maka event tersebut belum tiba pada proses yang sedang blocked tersebut. Status delayed hanya akan muncul pada arsitektur multikomputer.
- Spinning, status proses spinning hanya akan muncul pada arsitektur multiprosesor.Status ini muncul pada saat proses tersebut harus menunda eksekusinya karena diharuskan menunggu proses lain selesai dieksekusi. Teknik menunda proses tersebut dengan menggunakan operasi lock, menunggu sampai proses lain melakukan operasi unlock. Teknik ini disebut busy-waiting. Pada dasarnya status ini sama dengan blocked, perbedaannya terletak pada teknik penundaan proses yang dipergunakan.

2.2.3 Pembentukan Proses
Aktifitas komputasi dimulai ketika suatu proses ditugaskan ke suatu prosesor dalam komputer paralel. Proses dapat digambarkan sebagai suatu kumpulan kode program yang ditugaskan ke suatu prosesor tertentu untuk dieksekusi. Dalam program paralel, eksekusi program dimulai sama seperti halnya program sekuensial biasa. Program paralel memerlukan suatu statement untuk pembentukan proses. Statement tersebut menyebabkan program membentuk proses baru untuk ditugaskan pada prosesor lain, yang kemudian mengeksekusi proses tersebut. Gambaran umum aktifitas paralel adalah sebagai berikut : proses yang sedang berjalan pada prosesor mengeksekusi statemen pembentukan proses, proses yang dibentuk disebut child process (proses anak), sedangkan pembentuk proses disebut parent process (proses induk). Program di bawah ini merupakan program sekuensial untuk mendapatkan akar dari elemenelemen array. Pada contoh program tersebut terdapat satu perulangan FOR. Perulangan ini menunjukkan potensi paralelisme program. Modifikasi yang dilakukan adalah dengan mengubah statement FOR dengan statement FORALL untuk membentuk proses anak. Statemen FORALL ini merupakan statement yang terdapat pada sistem Multi-Pascal.
PROGRAM SQRT;
VAR A: ARRAY [1..100] OF REAL;
I : INTEGER;
BEGIN
…
FOR i := 1 TO 100 DO
A[I] := SQRT([I]);
END.
Hasil modifikasi statement FOR menjadi FORALL dapat dilihat pada program di bawah ini :
PROGRAM SQRTParalel;
VAR A: ARRAY [1..100] OF REAL;
I : INTEGER;
BEGIN
…
FORALL i := 1 TO 100 DO
A[I] := SQRT([I]);
END.
Pada awal program utama, proses induk mengeksekusi statemen FORALL, dalam keadaan demikian status induk proses adalah running. Statemen FORALL pada program di atas membentuk 100 salinan statemen A[i]:=SQRT([i]) dan setiap satu proses paralel mempunyai variabel indeks i. Ke- 100 proses anak tersebut dieksekusi pada prosesor yang berbeda dan berlangsung secara paralel. Sewaktu proses induk menunda eksekusinya hingga seluruh proses anak selesai dieksekusi, proses induk tersebut dalam status blocked. Sedangkan seluruh proses anak yang sedang dieksekusi mempunyai status running. Setelah seluruh Proses anak selesai dieksekusi, proses induk berstatus running hingga terminasi. Pembentukan proses ini digambarkan sebagai berikut.

Pada contoh di atas, array A disimpan ke dalam memori bersama yang mudah diakses oleh prosesor-prosesor. Setiap prosesor akan bekerja dengan bagian elemen array, seluruhnya berlangsung secara paralel. Hal yang penting pada contoh di atas adalah mengenai variabel indeks i. Pada perulangan FOR sekuensial, indeks i adalah variabel integer tunggal yang bernilai 1 pada iterasi pertama, kemudian bernilai 2 pada iterasi kedua dan seterusnya. Pada saat iterasi dimulai, indeks variabel i secara otomatis berubah menjadi nilai berikutnya dan dapat dipergunakan dalam perulangan (loop). Hal ini merupakan karakter standar perulangan FOR dalam Perangkat Lunak Pascal.
Pada perulangan FOR paralel, indeks variabel i - seperti pada statemen FOR – dideklarasikan sebagai variabel INTEGER di awal program. Setelah itu, variabel i akan menjadi variabel local tunggal yang disimpan di memori bersama. Jika iterasi akan dieksekusi secara paralel, maka satu indeks variabel tunggal i tidak akan mencukupi. Semua nilai i dari 1 sampai 100 harus diperoleh secara simultan. Hal ini ditangani oleh perlangkat lunak secara otomatis, dengan jaminan setiap prosesor mempunyai salinan lokal indeks i sendiri. Jadi prosesor 1 mempunyai variabel lokal i dengan nilai 1, prosesor 2 mempunyai nilai i = 2 dan seterusnya.

2.2.4 Granularitas Proses
Hal penting yang perlu dipertimbangkan dalam pembentukan proses adalah granularitas proses, yaitu waktu berlangsungnya atau waktu eksekusi setiap proses. Dari contoh di atas, ketika statemen FORALL diekseskusi di prosesor 0, maka aktifitas komputasi yang terjadi di prosesor 0 adalah sebagai berikut :
Buat Proses Anak dan diberikan ke prosesor 1
Buat Proses Anak dan diberikan ke prosesor 2
.
.
Buat Proses Anak dan diberikan ke prosesor 100
Jika waktu pembentukan proses anak adalah 10 unit waktu, maka statemen FORALL akan membutuhkan 100.10 = 1000 unit waktu untuk membentuk seluruh proses anak. Jika statemen penugasan A[i] := SQRT(A[i]) membutuhkan waktu eksekusi 10 unit waktu, maka keseluruhan waktu yang statement FORALL adalah 1000+10=1010 unit waktu. (Proses Induk yang berjalan pada prosesor 0 membutuhkan 1000 unit waktu untuk membuat 100 Proses Anak, dan keseluruhan proses anak ini akan berjalan secara paralel dalam waktu 10 unit waktu). Jika menggunakan FOR secara sekuensial, maka seluruh perulangan akan dilaksanakan di prosesor 0. Misalkan statemen penugasan A[i] := SQRT(A[i]) membutuhkan waktu eksekusi 10 unit waktu, maka waktu keseluruhan yang dibutuhkan oleh statemen FOR adalah 100.10 = 1000 unit waktu.
Dibandingkan dengan menggunakan statemen FORALL yang membutuhkan waktu sebesar 1010 unit waktu, maka eksekusi secara sekuensial menghasilkan waktu yang lebih baik. Pada contoh di atas, terjadi kegagalan speedup. Jika waktu untuk pembentukan proses anak adalah tetap 10 unit waktu dan setiap proses anak mempunyai granularitas yang besar, misalnya 10000 unit waktu, maka total waktu eksekusi secara paralel adalah 11000. 1000 unit waktu untuk pembentukan 100 proses anak dan 10000 unit waktu untuk eksekusi proses. Dibandingkan dengan eksekusi yang dilakukan secara sekuensial yang akan membutuhkan 100.10000 = 1000000 unit waktu, maka speedup yang diperoleh adalah 1000000/11000 = 91.
Untuk meningkatkan efisiensi, granularitas dapat ditingkatkan dengan cara mengelompokkan beberapa nilai indeks ke dalam proses yang sama. Pada contoh algoritma di atas, misalkan dibentuk 10 proses dengan masing-masing 10 nilai indeks variabel i. Contohnya seperti di bawah ini :
PROGRAM SQRTParallelGroup;
VAR A: ARRAY [1..100] OF REAL;
I : INTEGER;
BEGIN
FORALL I := 1 TO 10 GROUPING 10 DO
A[I] := SQRT([I]);
END.
Pada contoh di atas, prosesor 0 hanya membentuk 10 proses. Masing-masing proses secara sekuensial melakukan pengulangan 10 kali. Proses 1 melakukan iterasi dengan nilai indeks 1 sampai 10, proses 2 melakukan iterasi nilai indeks 11 sampai 20 dan seterusnya. Jika ukuran kelompok tidak genap dibagi dengan nilai indeks, maka proses anak terakhir akan mempunyai nilai indeks yang lebih kecil daripada nilai indeks ukuran. Seperti halnya statemen FOR, statemen FORALL dapat dipergunakan dalam perulangan bersarang. Contohnya adalah program pertambahan matrik berikut ini :
PROGRAM TambahMatrik;
VAR i, j : INTEGER;
A,B,C : ARRAY [1..20,1..30] OF REAL;
BEGIN
FORALL i := 1 to 20 DO
FORALL j:= 1 to 30 DO
C[i,j] := A[i,j] + B[i,j];
END.
Contoh program di atas menunjukkan 600 proses telah dibentuk. Pembentukan ini terdiri dari dua tahap. Tahap pertama - pada statemen FORALL pertama dengan nilai indeks i dari 1 sampai 20 -, menghasilkan 20 proses anak, masing-masing untuk nilai indeks i. Setiap proses anak ini terdiri dari statemen FORALL kedua. Ketika setiap proses anak generasi pertama ini dieksekusi pada prosesor yang telah ditugaskan, ke-20 proses tersebut masing-masing akan membentuk 30 proses anak, sesuai dengan nilai indeks j. Jadi total proses anak yang dibentuk adalah 600 proses. Masing-masing proses dibentuk untuk setiap elemen dari Matrik. Pembuatan proses secara bertingkat ini akan mereduksi keseluruhan waktu pembentukan proses. Hal ini disebabkan generasi pertama dari proses anak akan dieksekusi secara paralel pada prosesor yang berbeda. Dibandingkan dengan hanya satu prosesor membentuk seluruh proses, maka akan terdapat 20 prosesor yang membentuk proses anak baru secara paralel. Misalkan terdapat dua perulangan FORALL bersarang dengan perulangan terluar mempunyai nilai indeks n dan perulangan terdalam mempunyai nilai indeks m. Jika waktu untuk membentuk satu proses adalah C, maka total waktu untuk membentuk semua nm proses adalah C(n+m). Jika seluruh proses dibentuk oleh satu proses induk, maka waktu total pembentukan adalah Cnm. Secara umum aktifitas yang terjadi pada saat statement FORALL tersebut dieksekusi adalah sebagai berikut :
Buat sejumlah n proses anak (dengan statemen FORALL),
Tunggu sampai seluruh n proses anak tersebut selesai dieksekusi,
Lanjutkan eksekusi setelah FORALL
Dapat dilihat bahwa ketika proses anak sedang dieksekusi, maka proses induk akan menunda eksekusinya – berstatus blocked - sampai seluruh proses anak selesai dieksekusi. Untuk beberapa algoritma tertentu, akan lebih efisien jika seluruh proses anak running secara parallel dengan proses induk. Konsekuensinya, meskipun proses induk telah mencapai terminasi program sewaktu proses anak sedang berjalan, proses induk tidak diijinkan untuk berhenti sampai seluruh proses anaknya selesai dieksekusi. Dengan kata lain diperlukan featuring untuk menahan proses induk mencapai terminasi program utama agar seluruh proses anak dapat dieksekusi dengan benar. Featuring ini terdapat dalam beberapa beberapa perangkat lunak paralel.

2.2.5 Proses Komunikasi
Pada algoritma relaksasi, setiap proses paralel berjalan secara independen tanpa interaksi dengan proses-proses lain. Dalam algoritma relaksasi paralel, tidak ada proses yang menulis nilai yang kemudian digunakan oleh proses lain. Algoritma ini sederhana dan menghasilkan speedup yang baik sewaktu diterapkan pada berbagai arsitektur komputer paralel. Untuk algoritma yang tidak termasuk algoritma relaksasi, diperlukan mekanisme tertentu dalam menangani proses komunikasi yang terjadi. Misalkan terdapat 2 proses pada multiprosesor, P1 dan P2. Dalam ekseskusinya P1 menghasilkan suatu nilai dan menulis nilai tersebut ke variabel bersama C yang kemudian dipergunakan oleh P2 untuk komputasi berikutnya, seperti pada gambar .13. Selama P1 dan P2 merupakan proses paralel, tidak ada jaminan bahwa P1 akan menulis nilai ke variable C sebelum P2 membacanya. Jika P1 dibiarkan menyelesaikan eksekusinya dan kemudian P2 memulai eksekusi, berarti paralelisme proses tidak diperoleh. Tipe komunikasi proses ini sering muncul dalam berbagai program paralel, satu proses melakukan komputasi terhadap beberapa nilai yang akan dipergunakan oleh proses paralel lainnya. Untuk menangani masalah ini, diperlukan suatu kanal (channel) yang mempunyai properti ‘kosong’. Ketika suatu proses membaca kanal yang kosong, maka eksekusi proses secara otomatis akan tertunda sampai terdapat proses lain yang menulis suatu nilai ke dalam kanal tersebut. Untuk contoh di atas, dengan membuat variabel C menjadi variabel kanal yang diinisiasi ‘kosong’, proses P2 akan menunggu pembacaan variabel C sebelum proses P1 selesai menuliskan suatu nilai ke dalam variabel C. Dengan demikian komunikasi proses dijamin berlangsung dengan benar.

Variabel kanal ini akan sangat berguna untuk komputasi pipeline, dimana data hasil komputasi proses dikirimkan ke proses berikutnya melalui variabel kanal. Terdapat perbedaan yang sangat mendasar pada pemodelan perangkat lunak konseptual untuk multiprosesor dan multikomputer. Hal ini dikarenakan adanya perbedaan dalam hal variable bersama, yang dapat diakses oleh seluruh prosesor. Pada multikomputer, yang tidak mengenal variabel bersama, tiap prosesor mempunyai memori lokal sendiri untuk mengakses variabel lokalnya sendiri. Prosesor tersebut terhubung secara fisik melalui jaringan, yang dapat mengirim blok data dari suatu proses ke proses lain. Secara fisik, prosesor dapat berkomunikasi dengan prosesor lain dengan mengirimkan message melalui sambungan saluran penghubung (connection link). Jika proses merupakan abstraksi perangkat lunak dari prosesor fisik, maka abstraksi perangkat lunak untuk saluran komunikasi dapat berupa kanal komunikasi antara proses-proses. Dengan kata lain, proses dapat berkomunikasi dengan proses lain dengan mengirimkan message melalui variabel kanal. Untuk menyesuaikan variabel kanal dalam program multikomputer, fungsi dan semantiknya harus diubah. Pada multiprosesor, variabel kanal serupa dengan variabel bersama yang dapat diakses oleh semua prosesor. Variabel ini tidak seperti saluran komunikasi dari suatu multikomputer, yang secara fisik menghubungkan dua prosesor yang spesifik. Untuk membuat variabel kanal dapat mencerminkan sifat saluran komunikasi, ujung penerima (receiving end) dari tiap kanal haruslah dihubungkan ke suatu proses yang spesifik.

Karakteristik penting pada komunikasi adalah adanya jaminan bahwa pesan yang dikirim oleh suatu sumber tertentu ke tujuan yang sama, akan datang sesuai dengan urutan pengirimannya. Variabel kanal yang ditugaskan pada proses spesifik dalam multikomputer akan memiliki sifat yang sedikit berbeda dengan variabel kanal biasa pada multiprosesor. Untuk itu membedakannya, variabel kanal tersebut disebut port komunikasi. Pembentukan port komunikasi ini dapat dilaksanakan bersamaan dengan pembentukan proses anak. Port komunikasi hanya dapat dibaca oleh satu proses yang spesifik. Pada operasi penulisan ke port terdapat waktu tunda sebelum message sampai ke kanal tujuan. Besar waktu tunda tergantung dari topologi arsitektur multikomputer. Waktu tunda yang terjadi pada penulisan port memiliki implikasi penting yang mempengaruhi kinerja program.
Secara umum, aktifitas proses induk pada program multikomputer dapat digambarkan sebagai berikut :
Interaksi dengan user untuk mendapatkan data awal, baik dari disk maupun dari piranti masukan.
Membentuk proses-proses anak yang akan membangun komputasi paralel.
Mengumpulkan hasil komputasi proses anak dan melaporkannya ke user atau menuliskan ke disk.
Dari aktifitas di atas, terlihat perlu adanya komunikasi antara proses induk dengan proses anak. Komunikasi proses induk yang berjalan dua arah ini, yaitu kirim (send) dan terima (receive) pesan, dilakukan dengan menggunakan port komunikasi. Pengiriman hasil komputasi dari proses anak ke proses induk dapat juga dilakukan melalui parameter-parameter proses anak.
Parameter yang dipergunakan dapat berupa parameter value dan parameter VAR. Parameter value digunakan untuk memberikan data awal ke proses anak, sedangkan parameter VAR digunakan untuk mengumpulkan data hasil komputasi proses anak. Parameter VAR di sini merupakan remote var yang mempunyai dua karakteristik penting, yaitu bahwa parameter ini hanya dapat ditulis dan tidak dapat dibaca. Proses penulisan dilakukan di prosesor anak, sedangkan yang ditulis sebenarnya adalah alamat parameter yang ada di remote prosesor. Untuk topologi multikomputer yang mempertimbangkan waktu komunikasi antar prosesor, lokasi relative dari prosesor akan sangat mempengaruhi waktu tunda komunikasi tersebut. Prosesor yang jauh letaknya akan mempunyai waktu tunda komunikasi lebih lama dibandingkan dengan prosesor yang dekat. Untuk itu perlu dipertimbangkan pengalokasian prosesor untuk proses tertentu secara eksplisit oleh pemrogram.

2.3 Pemrosesan Paralel

2.3.1 Pengertian Pemrosesan Paralel
Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, paralel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.


1. Komputasi paralel
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Komputasi paralel membutuhkan:
• algoritma
• bahasa pemrograman
• compiler

2. Pemrograman paralel
Pemrograman parallel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Sebagai besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapat melakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.

2.3.2 Hubungan Antar Prosesor
Sistem komputer paralel dengan banyak prosesor yang bekerja secara simultan memerlukan kemampuan untuk membagi data dan berkomunikasi antar prosesor. Berdasarkan kedua kebutuhan tersebut, terdapat dua arsitektur komputer paralel, yaitu memori bersama dan message passing. Pada arsitektur memori bersama, biasanya disebut multiprosesor (multiprocessor), setiap prosesor dapat mengakses memori global dan menggunakan isi data dan struktur data yang disimpan dalam memori bersama (shared memory). Prosesor berkomunikasi dengan prosesor lain dengan menulis pesan ke memori global dimana prosesor kedua dapat membaca pesan tersebut pada lokasi memori yang sama. Skema arsitektur memori bersama dapat dilihat pada gambar.

Semua prosesor dapat melakukan komputasi secara paralel dan masing-masing dapat mengakses memori melalui bus. Bus bertanggung jawab mengatur permintaan pemakaian memori yang berlangsung secara simultan oleh beberapa prosesor. Bus juga bertanggung jawab untuk meyakinkan bahwa semua prosesor dilayani secara adil dengan waktu tunda (delay) akses yang minimum.
Salah satu kesulitan utama dari arsitektur multiprosesor dengan memori bersama adalah kemungkinan adanya tabrakan memori (memory contention). Peristiwa ini terjadi ketika beberapa prosesor mencoba untuk mengakses memori bersama dalam periode waktu yang sangat singkat, sehingga memori tidak akan dapat menampung semua permintaan secara simultan. Akibatnya beberapa prosesor akan harus menunggu sampai prosesor lainnya dilayani. Kemungkinan terjadinya tabrakan memori ini berbanding lurus dengan bertambahnya jumlah prosesor. Beberapa teknik telah dikembangkan untuk mereduksi tabrakan memori dan membuat sistem menjadi lebih efisien. Salah satu teknik adalah dengan adanya cache memory lokal pada masing-masing prosesor. Cache memory ini digunakan untuk menyimpan salinan isi memori yang paling baru dipergunakan. Hal ini menimbulkan masalah baru, yaitu cache coherent problem, dimana akan banyak salinan isi memori pada cache yang berbeda yang menimbulkan adanya kemungkinan isi cache yang outdate setelah isi memori bersama diperbaharui (update). Teknik lain untuk mereduksi tabrakan memori adalah dengan membagi memori bersama tersebut menjadi beberapa bagian modul yang dapat diakses secara paralel oleh prosesor yang berbeda. Data disebar ke beberapa modul memori untuk menghindari kemungkinan permintaan yang simultan ke modul memori yang sama oleh beberapa prosesor. Setiap n prosesor dapat mengakses m modul memori melalui jaringan penghubung prosesor - memori (processor -memory connection network).
Skema arsitektur memori bersama dengan jaringan penghubung prosesor - memori dapat dilihat pada gambar.

Jaringan penghubung ini menyebabkan beberapa prosesor dapat mengakses modul-modul memori yang berbeda secara simultan. Biaya dan kinerja tipe multiprosesor ini tergantung pada rancangan internal jaringan penghubung.
Beberapa contoh jaringan penghubung ini adalah jaringan butterfly, shuffle-exchange, cross-bar dan omega. Pendekatan lain untuk mereduksi tabrakan memori adalah dengan mengeliminasi seluruh memori bersama dan menyediakan memori lokal untuk setiap prosesor. Jenis komputer parallel dengan memori yang tersebar ini disebut multicomputer. Setiap pasangan memori - prosesor ini berlaku seperti halnya komputer sekuensial. Prosesor - prosesor dapat membaca (read) dan menulis (write) data secara bebas dengan menggunakan local memorinya masing-masing. Sebuah prosesor tidak dapat mengakses lokal memori prosesor lain dengan secara langsung, tetapi prosesor tersebut dapat mengirim atau menerima data dari prosesor lain dengan mengunakan jaringan komunikasi message passing. Sehingga data dapat disebar dan ditukar sesuai dengan kebutuhan.
Message Passing Interface (MPI) adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing – masing compute node yang kemudian masing – masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node. Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan – pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanisme suatu proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar proses.
MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain adalah.
1. menulis kode paralel secara portable,
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.
Skema arsitektur Message-Passing Muticomputer dapat dilihat pada gambar.

Keterangan :
P : Prosesor
M : Memori

Class Diagram dan Deployment Diagram

Gambar class diagram

Pengertian Class Diagram
Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.

Class memiliki tiga area pokok :
1. Nama (dan stereotype)
2. Atribut
3. Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut :
• Private, tidak dapat dipanggil dari luar class yang bersangkutan
• Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang mewarisinya
• Public, dapat dipanggil oleh siapa saja

Pengertian Deployment Diagram
Deployment/physical diagram menggambarkan detail bagaimana komponen di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal Sebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men deploy komponen dalam lingkungan sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga didefinisikan dalam diagram ini.

Gambar deployment diagram

Use Case, Activity Diagram dan Sequence Diagram

Gambar simbol use case

Pengertian Use Case Diagram
Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem.Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Menggambarkan kebutuhan sistem dari sudut pandang user.
Mengfokuskan pada proses komputerisasi (automated processes). Menggambarkan hubungan antara use case dan actor
Use case menggambarkan proses system (kebutuhan system dari sudut pandang user).

Secara umum use case adalah:
- Pola perilaku system
- Urutan transaksi yang berhubungan yang dilakukan oleh satu actor
Use case diagram terdiridari
- Use case
- Actors
- Relationship
- System boundary boxes (optional)
- Packages (optional)

Contoh use case :
Gambar use case dealer motor

Pengertian Activity Diagram
Activity diagram memodelkan workflow proses bisnis dan urutan aktivitas dalam sebuah proses. Diagram ini sangat mirip dengan flowchart karena memodelkan workflow dari satu aktivitas ke aktivitas lainnya atau dari aktivitas ke status. Menguntungkan untuk membuat activity diagram pada awal pemodelan proses untuk membantu memahami keseluruhan proses. Activity diagram juga bermanfaat untuk menggambarkan parallel behaviour atau menggambarkan interaksi antara beberapa use case.
Definisi activity diagram :
- Menggambarkan proses bisnis dan urutan aktivitas dalam sebuah proses
- Dipakai pada business modeling untuk memperlihatkan urutan aktifitas proses bisnis
- Struktur diagram ini mirip flowchart atau Data Flow Diagram pada perancangan terstruktur
- Sangat bermanfaat apabila kita membuat diagram ini terlebih dahulu dalam memodelkan sebuah proses untuk membantu memahami proses secara keseluruhan
- Activity diagram dibuat berdasarkan sebuah atau beberapa use case pada use case diagram

Simbol Activity Diagram

Contoh lain activity diagram :
Gambar activity diagram administrasi dealer motor

Gambar activity diagram penjualan dealer motor

Gambar activity diagram penjualan dealer motor

Pengertian Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan menjadi operasi/metoda dari class. Activation bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya sebuah message.

Contoh sequence diagram :
Gambar sequence diagram administrasi dealer motor

Gambar sequence diagram penjualan dealer motor(Bagian Counter Sparepart)

Gambar sequence diagram penjualan dealer motor(Bagian Gudang)

Gambar sequence diagram service dealer motor

Sabtu, 21 September 2013

TCP / IP Model


Application Layer

Lapisan ini mempunyai fungsi sebagai interface (antarmuka) antara pengguna dengan data. Pada lapisan ini terdapat semua aplikasi yang menggunakan protocol TCP/IP. Macam-macam protokol tersebut, yaitu : TELNET, FTP,SMTP, DNS, HTTP, dan WWW.

Transport Layer

Transport layer berfungsi untuk mengadakan komunikasi antara dua host/komputer. Protocol yang ada pada lapisan ini adalah TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol).

Internet Layer

Pada lapisan ini terdapat tiga macam protokol yaitu IP (Internet Protocol), ARP (Address Resolution Protocol), dan ICMP (Internet Control Message Protocol).Protocol IP berfungsi untuk menyampaikan paket data ke alamat yang tepat. ARP berfungsi untuk menemukan alamat hardware dari komputer yang terletak pada jaringan yang sama, sedangkan ICMP digunakan untuk mengirimkan pesan dan melaporkan kegagalan pengiriman data, sehingga data yang gagal terkirim akan dikirimkan kembali.

Network Interface Layer

Network Interface Layer berfungsi mengirimkan dan menerima data dari media fisik jaringan. Media fisik disini dapat berupa kabel jaringan, serat optik atau gelombang radio jika jaringan merupakan jaringan nirkabel. Karena tugasnya ini, protokol pada layer ini harus mampu menerjemahkan sinyal listrik menjadi data digital yang dimengerti komputer, yang berasal dari peralatan lain yang sejenis.

Osi Layer


Application Layer

Bertanggung jawab sebagai penghubung utama antara aplikasi yang berjalan pada satu komputer dan resources network yang membutuhkan akses padanya. Yang bertugas menyediakan jasa untuk aplikasi pengguna. Layer ini bertanggung jawab atas pertukaran informasi antara program komputer, seperti program e-mail, dan service lain yang jalan di jaringan, seperti server printer atau aplikasi komputer lainnya.

Presentation Layer

Bertanggung jawab bagaimana data dikonversi dan diformat untuk transfer data. Sebagai contoh, suatu koneksi antara PC dan mainframe membutuhkan konversi dari EBCDIC character - encoding format ke ASCII dan banyak faktor yang perlu dipertimbangkan. Kompresi data (dan enkripsi yang mungkin) ditangani oleh layer ini. Fungsi presentation layer antara lain untuk mentranslasikan data yang hendak ditransmisikan oleh aplikasi ke dalam format yang dapat ditransmisikan melalui jaringan. Protokol yang berada dalam level ini adalah perangkat lunak redirektor (redirector software), seperti layanan Workstation(dalam Windows NT) dan juga Network shell (semacam Virtual Network Computing(VNC) atau Remote Desktop Protocol (RDP).

Session Layer

Menentukan bagaimana dua terminal menjaga, memelihara dan mengatur koneksi, bagaimana mereka saling berhubungan satu sama lain. Layer ini menyediakan layanan ke dua layer diatasnya, Melakukan koordinasi komunikasi antara entiti layer yang diwakilinya. Beberapa protocol pada layer ini, NETBIOS suatu session interface dan protocol, dikembangkan oleh IBM, yang menyediakan layanan ke layer presentation dan layer application. NETBEUI, (NETBIOS Extended User Interface), suatu pengembangan dari NETBIOS yang digunakan pada produk Microsoft networking, seperti Windows NT dan LAN Manager.

Transport Layer

Bertanggung jawab membagi data menjadi segmen, menjaga koneksi logika “end-to-end” antar terminal, dan menyediakan penanganan error (error handling). Layer transport data, menggunakan protocol seperti UDP, TCP dan/atau SPX (Sequence Packet eXchange, yang satu ini digunakan oleh NetWare, tetapi khusus untuk koneksi berorientasi IPX). Layer transport adalah pusat dari mode-OSI.

Network Layer

Bertanggung jawab menentukan alamat jaringan, menentukan rute yang harus diambil selama perjalanan, dan menjaga antrian trafik di jaringan. IP, Internet Protocol, umumnya digunakan untuk tugas ini. Protocol lainnya seperti IPX, Internet Packet eXchange. Perusahaan Novell telah memprogram protokol menjadi beberapa, seperti SPX (Sequence Packet Exchange) & NCP (Netware Core Protocol). Protokol ini telah dimasukkan ke sistem operasi Netware.

Data Link Layer

Bertanggung jawab menyediakan link untuk data, memaketkannya menjadi frame yang berhubungan dengan “hardware” kemudian diangkut melalui media. komunikasinya dengan kartu jaringan, mengatur komunikasi layer physical antara sistem koneksi dan penanganan error. Layer data link bertanggung-jawab pada paket akhir dari data binari yang berasal dari level yang lebih tinggi ke paket diskrit sebelum ke layer physical. Akan mengirimkan frame (blok dari data) melalui suatu network. Ethernet (802.2 & 802.3), Tokenbus (802.4) dan Tokenring (802.5) adalah protocol pada layer Data-link.

Physical Layer

Bertanggung jawab atas proses data menjadi bit dan mentransfernya melalui media, seperti kabel, dan menjaga koneksi fisik antar sistem. Ini adalah layer yang paling sederhana yang berkaitan dengan electrical (dan optical) koneksi antar peralatan. Data biner dikodekan dalam bentuk yang dapat ditransmisi melalui media jaringan, sebagai contoh kabel, transceiver dan konektor yang berkaitan dengan layer Physical. Peralatan seperti repeater, hub dan network card adalah berada pada layer ini. Fungsi physical layer antara lain : Untuk mendefinisikan media transmisi jaringan, metode pensinyalan, sinkronisasi bit,arsitektur jaringan (seperti halnya Ethernet atau Token Ring), topologi jaringan dan pengabelan. Selain itu, level ini juga mendefinisikan bagaimana Network Interface Card (NIC) dapat berinteraksi dengan media kabel atau radio.

Sabtu, 30 Maret 2013

Pemrosesan Paralel



Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Komputasi paralel membutuhkan:
• algoritma
• bahasa pemrograman
• compiler
Sebagian besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapat melakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software. Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.
2. Arsitektur Komputer Parallel
Sesuai taksonomi Flynn, seorang Designer Processor, Organisasi Prosesor dibagi menjadi 4 :
A. SISD (Single Instruction Single Data Stream)
Arus Instruksi Tunggal dan Data Tunggal
B. SIMD (Single Instruction Multiple Data Stream)
Arus Instruksi Tunggal dan Multiple Data
C. MISD (Multiple Instruction Single Data Stream)
Arus Multiple Instruksi dan Data Tunggal
D. MIMD (Multiple Instruction Multiple Data Stream)
Arus Multiple Instruksi dan Multiple Data



1. Organisasi Prosesor SISD
• Prosesor tunggal
• Aliran instruksi tunggal
• Data disimpan dalam memori tunggal
• Uni-processor



Keterangan:
CU : Control Unit
IS : Instruction Stream (Arus Instruksi)
PU : Processing Unit (Unit Pengolah yang biasa disebut ALU)
DS : Data Stream (Arus Data)
MU : Memory Unit (Unit Memori)
2. Single Instruction, Multiple Data Stream – SIMD
• Single machine instruction
• Mengontrol eksekusi secara simultan
• sejumlah elemen-elemen pengolahan
• Berdasarkan Lock-step
• Setiap pengolahan elemen memiliki hubungan dengan memori data
• Setiap instruksi dieksekusi pada kumpulan data yang berbeda oleh prosesor yang berbeda
• Prosesor Vector and array
3. Multiple Instruction, Single Data Stream – MISD
• Rangkaian dari data
• Dikirimkan ke kumpulan prosesor
• Setiap prosesor mengeksekusi urutan instruksi yang berbeda
• Belum pernah diimplementasikan (komesial)
4. Multiple Instruction, Multiple Data Stream- MIMD
• Kumpulan/sejumlah prosesor
• Mengeksekusi secara simultan urutan instruksi yang berbeda
• Kumpulan data yang berbeda
• SMP, Cluster and sistem NUMA

Data Mining



Pengertian Data Mining
Data Mining merupakan Serangkaian proses untuk menggali nilai tambah berupa informasi yang selama ini tidak diketahui secara manual dari suatu basis data atau bisa disebut dengan KDD ( Knowledge Discovery in Database). Informasi yang dihasilkan diperoleh dengan cara mengekstraksi dan mengenali pola yang penting atau menarik dari data yang terdapat dalam basis data.

Pengertian dan Manfaat KDD
KDD (Knowledge Discovery in Database) adalah keseluruhan proses non-trivial untuk mencari dan mengidentifikasi pola (pattern) dalam data, dimana pola yang ditemukan bersifat sah, baru, dapat bermanfaat dan dapat dimengerti. Serangkaian proses tersebut yang memiliki tahap. Pembersihan data dan integrasi data (cleaning and integration). Proses ini digunakan untuk membuang data yang tidak konsisten dan bersifat noise dari data yang terdapat di berbagai basisdata yang mungkin berbeda format maupun platform yang kemudian diintegrasikan dalam satu database datawarehouse.
Latar Belakang Terbentuknya Data Mining
1. Melimpahnya data (overload data) yang dialami oleh berbagai institusi, perusahaan atau organisasi.
2. Merlimpahnya data ini merupakan akumulasi data transaksi yang terekam bertahun-tahun..
3. Data–data tersebut merupakan data transaksi yang umumnya diproses menggunakan aplikasi komputer yang biasa disebut dengan OLTP (On Line Transaction Processing).
Fungsi - Fungsi Umum Data Mining
1. Assosiation, adalah proses untuk menemukan aturan assosiatif antara suatu kombinasi item dalam suatu waktu
2. Sequence, proses untuk menemukan aturan assosiatif antara suatu kombinasi item dalam suatu waktu dan diterapkan lebih dari satu periode
3. Clustering, adalah proses pengelompokan seumlah data/obyek ke dalam kelompok data sehingga setiap kelompok berisi data yang mirip
4. Classification, proses penemuan model atau fungsi yang menjelaskan atau membedakan konsep atau kelas data, dengan tujuan untuk dapat memperkirakan kelas dari suatu objek yang labelnya tidak diketahui.
5. Regretion, adalah proses pemetaan data dalam suatu nilai prediksi
6. Forecasting, adalah proses pengestimasian nilai prediksi berdasarkan pola-pola di dalam sekumpulan data.
7. Solution, adalah proses penemuan akar masalah dan problem solving dari persoalan bisnis yang dihadapkai atau paling tidak sebagai informasi dalam pengambilan keputusan.
Proses Data Mining
1. Pembersihan data dan integritas data (Cleaning & Integration)

Proses ini digunakan untuk membuang data yang tidak konsisten dan bersifat noise dari data yang terdapat di berbagai basisdata yang mungkin berbeda format maupun platform yang kemudian dinintegrasikan dalam satu database datawarehouse

2. Seleksi dan transformasi data (selection and transformation)

Data yang ada dalam database datawarehouse kemudian direduksi untuk mendapatkan hasil yang akurat. Beberapa cara seleksi, antara lain :

Metode seleksi pada data Mining
• Sampling, adalah seleksi subset representatif dari populasi data yang besar.
• Denoising, adalah proses menghilangkan noise dari data yang akan ditransformasikan
• Feature extraction, adalah proses membuka spesifikasi data yang signifikan dalam konteks tertentu.
Metode transformasi pada Data Mining
• Centering, mengurangi setiap data dengan rata-rata dari setiap atribut yang ada.
• Normalisation, membagi setiap data yang dicentering dengan standar deviasi dari atribut bersangkutan.
• Scaling, mengubah data sehingga berada dalam skala tertentu.
3. Penambangan data (data mining)

Data yang telah ditransformasi, kemudian ditambang dengan berbagai teknik. Proses data mining adalah proses mencari pola atau informasi menarik dalam data terpilih dengan menggunkan fungsi-fungsi tertentu. Fungsi atau algoritma dalam data mining sangat bervariasi, dimana pemilihannya bergantung pada tujuan dan proses pencarian pengetahuan secara menyeluruh.

4. Evaluasi pola dan presentasi pengetahuan

Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. Langkah terakhir KDD adalah mempresentasikan pengetahuan dalam bentuk yang mudah dipahami pengguna.
Manfaat Data Mining
Dari sudut pandang komersial

Pemanfaatan data mining dapat digunakan dalam menangani meledaknya volume data. Bagaimana mana menyimpannya, mengestraknya serta memanfaaatkannya. Berbagai teknik komputasi dapat digunakan menghasilkan informasi yang dibutuhkan. Informasi yang dihasilkan menjadi asset untuk meningkatkan daya saing suatu institusi. Data mining tidak hanya digunakan untuk menangani persoalan menumpuknya data/informasi dan bagaimana menggudangkannya tanpa kehilangan informasi yang penting (warehousing). Data mining juga diperlukan untuk menyelesaikan permasalahan atau menjawab kebutuhan bisnis itu sendiri, misalnya :
1. Bagaimana mengetahui hilangnya pelanggan karena pesaing
2. Bagaimana mengetahui item produk atau konsumen yang memiliki kesamaan karakteristik
3. Bagaimana mengidentifikasi produk-produk yang terjual bersamaan dengan produk lain
4. Bagaimana memprediski tingkat penjualan
5. Bagaimana menilai tingkat resiko dalam menentukan jumlah produksi suatu item.
6. Bagaimana memprediksi prilaku bisnis di masa yang akan datang
Dari sudut pandang keilmuan
Data mining dapat digunakan untuk mengcapture, menganlisis serta menyimpan data yang bersifat real-time dan sangat besar, misal :
1. Remote sensor yang ditempatkan pada suatu satelit.
2. Teleskop yang digunakan untuk memindai langit.
3. Simulasi saintifik yang membangkitkan data dalam ukuran terabytes.

Instruksi Komputer



Komputer hanya mempunyai dalam jumlah terbatas perintah sederhana yang dirumuskan dengan baik. Perintah biasa yang dipahami kebanyakan komputer ialah "menyalin isi sel 123, dan tempat tiruan di sel 456", "menambahkan isi sel 666 ke sel 042, dan tempat akibat di sel 013", dan "jika isi sel 999 adalah 0, perintah berikutnya anda di sel 345".
Instruksi diwakili dalam komputer sebagai nomor - kode untuk "menyalin" mungkin menjadi 001, misalnya. Suatu himpunan perintah khusus yang didukung oleh komputer tertentu diketahui sebagai bahasa mesin komputer. Dalam praktiknya, orang biasanya tidak menulis perintah untuk komputer secara langsung di bahasa mesin tetapi memakai bahasa pemrograman "tingkat tinggi" yang kemudian diterjemahkan ke dalam bahasa mesin secara otomatis oleh program komputer khusus (interpreter dan kompiler). Beberapa bahasa pemrograman berhubungan erat dengan bahasa mesin, seperti assembler (bahasa tingkat rendah); di sisi lain, bahasa seperti Prolog didasarkan pada prinsip abstrak yang jauh dari detail pelaksanaan sebenarnya oleh mesin (bahasa tingkat tinggi).

Siklus Fetch – Eksekusi
Pada setiap siklus instruksi, CPU awalnya akan membaca instruksi dari memori. Terdapat
register dalam CPU yang berfungsi mengawasi dan menghitung instruksi selanjutnya, yang disebut Program Counter (PC). PC akan menambah satu hitungannya setiap kali CPU membaca instruksi.
Instruksi – instruksi yang dibaca akan dibuat dalam register instruksi (IR). Instruksi – instruksi ini dalam bentuk kode – kode binner yang dapat diinterpretasikan oleh CPU kemudian dilakukan aksi yang diperlukan. Aksi – aksi ini dikelompokkan menjadi empat katagori, yaitu :

• CPU – Memori, perpindahan data dari CPU ke memori dan sebaliknya.
• CPU –I/O, perpindahan data dari CPU ke modul I/O dan sebaliknya.
• Pengolahan Data, CPU membentuk sejumlah operasi aritmatika dan logika terhadap data.
• Kontrol, merupakan instruksi untuk pengontrolan fungsi atau kerja. Misalnya instruksi pengubahan urusan eksekusi.
Perlu diketahui bahwa siklus eksekusi untuk suatu instruksi dapat melibatkan lebih dari sebuah
referensi ke memori. Disamping itu juga, suatu instruksi dapat menentukan suatu operasi I/O.
• Instruction Addess Calculation (IAC), yaitu mengkalkulasi atau menentukan alamat instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan bilangan tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap instruksi 16 bit padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke alamat sebelumnya.
• Instruction Fetch (IF), yaitu membaca atau pengambil instruksi dari lokasi memorinya ke CPU.
• Instruction Operation Decoding (IOD), yaitu menganalisa instruksi untuk menentukan jenis operasi yang akan dibentuk dan operand yang akan digunakan.
• Operand Address Calculation (OAC), yaitu menentukan alamat operand, hal ini dilakukan apabila melibatkan referensi operand pada memori.
• Operand Fetch (OF), adalah mengambil operand dari memori atau dari modul I/O.
• Data Operation (DO), yaitu membentuk operasi yang diperintahkan dalam instruksi.
• Operand store (OS), yaitu menyimpan hasil eksekusi ke dalam memori.
Fungsi Interrupt
Fungsi interupsi adalah mekanisme penghentian atau pengalihan pengolahan instruksi dalam CPU kepada routine interupsi. Hampir semua modul (memori dan I/O) memiliki mekanisme yang dapat menginterupsi kerja CPU.
Tujuan interupsi secara umum untuk menejemen pengeksekusian routine instruksi agar
efektif dan efisien antar CPU dan modul – modul I/O maupun memori. Setiap komponen komputer dapat menjalankan tugasnya secara bersamaan, tetapi kendali terletak pada CPU disamping itu kecepatan eksekusi masing – masing modul berbeda sehingga dengan adanya fungsi interupsi ini dapat sebagai sinkronisasi kerja antar modul. Macam – macam kelas sinyal
interupsi :
• Program, yaitu interupsi yang dibangkitkan dengan beberapa kondisi yang terjadi pada hasil eksekusi program. Contohnya: arimatika overflow, pembagian nol, oparasi ilegal.
• Timer, adalah interupsi yang dibangkitkan pewaktuan dalam prosesor. Sinyal ini memungkinkan sistem operasi menjalankan fungsi tertentu secara reguler.
• I/O, sinyal interupsi yang dibangkitkan oleh modul I/O sehubungan pemberitahuan kondisi error dan penyelesaian suatu operasi.
• Hardware failure, adalah interupsi yang dibangkitkan oleh kegagalan daya atau kesalahan paritas memori.
Dengan adanya mekanisme interupsi, prosesor dapat digunakan untuk mengeksekusi
instruksi – instruksi lain. Saat suatu modul telah selesai menjalankan tugasnya dan siap menerima tugas berikutnya maka modul ini akan mengirimkan permintaan interupsi ke prosesor. Kemudian prosesor akan menghentikan eksekusi yang dijalankannya untuk menghandel routine interupsi. Setelah program interupsi selesai maka prosesor akan melanjutkan eksekusi programnya kembali. Saat sinyal interupsi diterima prosesor ada dua kemungkinan tindakan, yaitu interupsi diterima/ditangguhkan dan interupsi ditolak. Apabila interupsi ditangguhkan, prosesor akan melakukan hal – hal dibawah ini :

1. Prosesor menangguhkan eksekusi program yang dijalankan dan menyimpan konteksnya. Tindakan ini adalah menyimpan alamat instruksi berikutnya yang akan dieksekusi dan data lain yang relevan.
2. Prosesor menyetel program counter (PC) ke alamat awal routine interrupt handler. Gambar 3 berikut menjelaskan siklus eksekusi oleh prosesor dengan adanya fungsi interupsi.



A. CISC ( Complex Instruction Set Computing )
Complex Instruction Set Computing (CISC) atau kumpulan instruksi komputasi kompleks. Adalah suatu arsitektur komputer dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memori (load), operasi aritmatika, dan penyimpanan ke dalam memori (store) yang saling bekerja sama.
Tujuan utama dari arsitektur CISC adalah melaksanakan suatu instruksi cukup dengan beberapa baris bahasa mesin yang relatif pendek sehingga implikasinya hanya sedikit saja RAM yang digunakan untuk menyimpan instruksi-instruksi tersebut. Arsitektur CISC menekankan pada perangkat keras karena filosofi dari arsitektur CISC yaitu bagaimana memindahkan kerumitan perangkat lunak ke dalam perangkat keras.
B. RISC (Reduced Instruction Set Computer)
RISC singkatan dari Reduced Instruction Set Computer. Merupakan bagian dari arsitektur mikroprosessor, berbentuk kecil dan berfungsi untuk negeset istruksi dalam komunikasi diantara arsitektur yang lainnya.
Sejarah RISC
Proyek RISC pertama dibuat oleh IBM, stanford dan UC –Berkeley pada akhir tahun 70 dan awal tahun 80an. IBM 801, Stanford MIPS, dan Barkeley RISC 1 dan 2 dibuat dengan konsep yang sama sehingga dikenal sebagai RISC. RISC mempunyai karakteristik :
• one cycle execution time : satu putaran eksekusi. Prosessor RISC mempunyai CPI (clock per instruction)
atau waktu per instruksi untuk setiap putaran. Hal ini dimaksud untuk mengoptimalkan setiap instruksi pada
CPU.
• pipelining:adalah sebuah teknik yang memungkinkan dapat melakukan eksekusi secara simultan.Sehingga proses instruksi lebih efiisien
• large number of registers: Jumlah register yang sangat banyak. RISC di Desain dimaksudkan untuk dapat menampung jumlah register yang sangat banyak untuk mengantisipasi agar tidak terjadi interaksi yang berlebih dengan memory.
Perbedaan RISC dengan CISC dilihat dari segi instruksinya
RISC ( Reduced Instruction Set Computer )
- Menekankan pada perangkat lunak, dengan sedikit transistor
- Instruksi sederhana bahkan single
- Load / Store atau memory ke memory bekerja terpisah
- Ukuran kode besar dan kecapatan lebih tinggi
- Transistor didalamnya lebih untuk meregister memori
CISC ( Complex Instruction Set Computer )
- Lebih menekankan pada perangkat keras, sesuai dengan takdirnya untuk pragramer.
- Memiliki instruksi komplek. Load / Store atau Memori ke Memori bekerjasama
- Memiliki ukuran kode yang kecil dan kecepatan yang rendah.
- Transistor di dalamnya digunakan untuk menyimpan instruksi – instruksi bersifat komplek

Kamis, 04 Oktober 2012

Sistem Operasi


A. Sejarah Perkembangan

Sistem operasi merupakan sebuah penghubung antara pengguna dari komputer dengan perangkat keras komputer. Sebelum ada sistem operasi, orang hanya mengunakan komputer dengan menggunakan sinyal analog dan sinyal digital (silahkan cari sendiri apa itu sinyal analog dan sinyal digital). Seiring dengan berkembangnya pengetahuan dan teknologi, pada saat ini terdapat berbagai sistem operasi dengan keunggulan masing-masing. Untuk lebih memahami sistem operasi maka sebaiknya perlu diketahui terlebih dahulu beberapa konsep dasar mengenai sistem operasi itu sendiri.


Pengertian sistem operasi secara umum adalah pengelola seluruh sumber-daya yang terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan danmenyamankan penggunaan serta pemanfaatan sumber-daya sistem komputer ( artikel bahan kuliah).
Menurut Wikipedia sistem Operasi adalah software pada lapisan pertama yang ditempatkan pada memeori komputer pada saat komputer dinyalakan. Sedangkan software-software lainnya dijalankan setelah Sistem Operasi berjalan, dan Sistem Operasi akan melakukan layanan inti umum untuk software-software itu.
Menurut Tanenbaum, sistem operasi mengalami perkembangan yang sangat pesat, yang dapat dibagi kedalam empat generasi:

1. Generasi Pertama (1945-1955)
Generasi pertama merupakan awal perkembangan sistem komputasi elektronik sebagai pengganti sistem komputasi mekanik, hal itu disebabkan kecepatan manusia untuk menghitung terbatas dan manusia sangat mudah untuk membuat kecerobohan, kekeliruan bahkan kesalahan. Pada generasi ini belum ada sistem operasi, maka sistem komputer diberi instruksi yang harus dikerjakan secara langsung.

2. Generasi Kedua (1955-1965)
Generasi kedua memperkenalkan Batch Processing System, yaitu Job yang dikerjakan dalam satu rangkaian, lalu dieksekusi secara berurutan.Pada generasi ini sistem komputer belum dilengkapi sistem operasi, tetapi beberapa fungsi sistem operasi telah ada, contohnya fungsi sistem operasi ialah FMS (Fortran Monitoring System) dan IBSYS. Jadi generasi komputer kedua ini merupakan generasi pertama dari sistem Operasi.

3. Generasi Ketiga (1965-1980)
Pada generasi ini perkembangan sistem operasi dikembangkan untuk melayani banyak pemakai sekaligus, dimana para pemakai interaktif berkomunikasi lewat terminal secara on-line ke komputer, maka sistem operasi menjadi multi-user (di gunakan banyak pengguna sekaligus) dan multi-programming (melayani banyak program sekaligus).

4. Generasi Keempat (Pasca 1980an)
Dewasa ini, sistem operasi dipergunakan untuk jaringan komputer dimana pemakai menyadari keberadaan komputer-komputer yang saling terhubung satu sama lainnya. Pada masa ini para pengguna juga telah dinyamankan dengan Graphical User Interface yaitu antar-muka komputer yang berbasis grafis yang sangat nyaman, pada masa ini juga dimulai era komputasi tersebar dimana komputasi-komputasi tidak lagi berpusat di satu titik, tetapi dipecah dibanyak komputer sehingga tercapai kinerja yang lebih baik.
Adapun sejarah sistem operasi yang dirinci dari tahun 1980an. Artikel ini menguraikan sejarah sistem operasi dari DOS, Mac, Windows, BSD, sampai Linux.

1956
• GM-NAAI/O :Sistem operasi pertama ini digunakan pertama kali oleh General Motors pada komputer besar IBM 704. Namun, sistem ini tidak lebih hebat dari Batch Processing.
1969
• Unix :Sistem operasi modern pertama ini dikembangkan oleh Ken Thompson dan Dennis Ritchie yang saat itu membutuhkan sebuah platform yang cepat untuk game “Space Travel” mereka.
1973
• XeroxAlto : Sistem pertama dengan graphical interface yang hanya digunakan untuk penelitian sampai 1981
1980
• QDOS : Tim Paterson dari Seattle Computer menulis QDOS yang dibuat dari OS terkenal pada masa itu, CP/M. QDOS (Quick and Dirty Operating System) dipasarkan oleh Seatle Computer dengan nama 86-DOS karena dirancang untuk prosesor Intel 8086.
• Microsoft : Bill Gates dari Microsoft membeli lisensi QDOS dan menjualnya ke berbagai perusahaan komputer.
1981
• PC DOS : IBM meluncurkan PC DOS yang dibeli dari Microsoft untuk komputernya yang berbasis prosesor Intel 8086.
• MS DOS : Microsoft menggunakan nama MS DOS untuk OS ini jika dijual oleh perusahaan diluar IBM.
1983
• MS DOS 2.0 : Versi 2.0 dari MS DOS diluncurkan pada komputer PC XT.
1984
• System 1.0 : Apple meluncurkan Macintosh dengan OS yang diturunkan dari BSD UNIX. System 1.0 merupakan sistem operasi pertama yang telah berbasis grafis dan menggunakan mouse.
• MS DOS 3.0 : Microsoft meluncurkan MS DOS 3.0 untuk PC AT yang menggunakan chip Intel 80286 dan yang mulai mendukung penggunaan hard disk lebih dari 10 MB.
• MS DOS 3.1 : Microsoft meluncurkan MS DOS 3.1 yang memberikan dukungan untuk jaringan.
1985
• MS Windows 1.0 : Microsoft memperkenalkan MS¬Windows, sistem operasi yang telah menyediakan lingkungan berbasis grafis (GUI) dan kemampuan multitasking. Sayangnya sistem operasi ini sangat buruk performanya dan tidak mampu menyamai kesuksesan Apple.
• Novell Netware : Novell meluncurkan sistem operasi berbasis jaringan Netware 86 yang dibuat untuk prosesor Intel 8086.
1986
• MS DOS 3.2 : Microsoft meluncurkan MS DOS 3.2 yang menambahkan dukungan untuk floppy 3.5 inch 720 KB.
1987
• OS/2 : IBM memperkenalkan OS/2 yang telah berbasis grafis, sebagai calon pengganti IBM PC DOS.
• MS DOS 3.3 : Microsoft meluncurkan MS DOS 3.3 yang merupakan versi paling populer dari MS DOS.
• Windows 2.0 : Windows versi 2.0 diperkenalkan.
• MINIX : Andrew S. Tanenbaum mengembangkan Minix, sistem operasi berbasis Unix yang ditujukan untuk pendidikan. MINIX nantinya menginspirasi pembuatan Linux.
1988
• MS DOS 4.0 : Microsoft mengeluarkan MS DOS 4.0 dengan suasana grafis.
• WWW : Proposal World Wide Web (WWW) oleh Tim Berners Lee.
1989
• NetWare/386 (juga dikenal sebagai versi 3) diluncurkan oleh Novell untuk prosesor Intel 80386.
1990
• Perpisahan : Dua perusahaan raksasa berpisah, IBM berjalan dengan OS/2 dan Microsoft berkonsentrasi pada Windows.
• Windows 3.0 : Microsoft meluncurkan Windows versi 3.0 yang mendapat sambutan cukup baik.
• MS Office : Microsoft membundel Word, Excel, dan PowerPoint untuk menyingkirkan saingannya seperti Lotus 1 2 3, Wordstar, Word Perfect dan Quattro.
• DR DOS : Digital Research memperkenalkan DR DOS 5.0.
1991
• Linux 0.01 : Mahasiswa Helsinki bernama Linus Torvalds mengembangkan OS berbasis Unix dari sistem operasi Minix yang diberi nama Linux.
• MS DOS 5.0 : Microsoft meluncurkan MS DOS 5.0 dengan penambahan fasilitas full -screen editor, undelete, unformat dan Qbasic.
1992
• Windows 3.1 : Microsoft meluncurkan Windows 3.1 dan kemudian Windows for Workgroups 3.11 di tahun berikutnya.
• 386 BSD : OS berbasis Open Source turunan dari BSD Unix didistribusikan oleh Bill Jolitz setelah meninggalkan Berkeley Software Design, Inc (BSDI). 386 BSD nantinya menjadi induk dari proyek Open Source BSD lainnya, seperti NetBSD, FreeBSD, dan OpenBSD.
• Distro Linux : Linux didistribusikan dalam format distro yang merupakan gabungan dari OS plus program aplikasi. Distro pertama Linux dikenal sebagai SLS (Softlanding Linux System).
1993
• Windows NT : Microsoft meluncurkan Windows NT, OS pertama berbasis grafis tanpa DOS didalamnya yang direncanakan untuk server jaringan.
• Web Browser : NCSA memperkenalkan rilis pertama Mosaic, browser web untuk Internet.
• MS DOS 6.0 : Microsoft memperkenalkan MS DOS 6.0 Upgrade, yang mencakup program kompresi harddisk DoubleSpace.
• Slackware : Patrick Volkerding mendistribusikan Slackware Linux yang menjadi distro populer pertama di kalangan pengguna Linux.
• Debian : Ian Murdock dari Free Software Foundation (FSF) membuat OS berbasis Linux dengan nama Debian.
• MS DOS 6.2 : Microsoft meluncurkan MS DOS 6.2.
• NetBSD : Proyek baru OS berbasis Open Source yang dikembangkan dari 386BSD dibuat dengan menggunakan nama NetBSD.
• FreeBSD : Menyusul NetBSD, satu lagi proyek yang juga dikembangkan dari 386BSD dibuat dengan nama FreeBSD.
1994
• Netscape : Internet meraih popularitas besar saat Netscape memperkenalkan Navigator sebagai browser Internet.
• MS DOS 6.22 : Microsoft meluncurkan MS DOS 6.22 dengan program kompresi bernama DriveSpace. Ini merupakan versi terakhir dari MS DOS.
• FreeDOS : Jim Hall, mahasiswa dari Universitas Wisconsin River Falls Development mengembangkan FreeDOS. FreeDOS dibuat setelah Microsoft berniat menghentikan dukungannya untuk DOS dan menggantikannya dengan Windows 95.
• SuSE : OS Linux versi Jerman dikembangkan oleh Software und System Entwicklung GmbH (SuSE) dan dibuat dari distro Linux pertama, SLS.
• Red Hat : Marc Ewing memulai pembuatan distro Red Hat Linux.
1995
• Windows 95 : Microsoft meluncurkan Windows 95 dengan lagu Start Me Up dari Rolling Stones dan terjual lebih dari 1 juta salinan dalam waktu 4 hari.
• PC DOS 7 : IBM memperkenalkan PC DOS 7 yang terintegrasi dengan program populer pengkompres data Stacker dari Stac Electronics. Ini merupakan versi terakhir dari IBM PC DOS.
• Windows CE : Versi pertama Windows CE diperkenalkan ke publik.
• PalmOS : Palm menjadi populer dengan PalmOS untuk PDA.
• OpenBSD : Theo de Raadt pencetus NetBSD mengembangkan OpenBSD.
1996
• Windows NT 4.0 : Microsoft meluncurkan Windows NT versi 4.0
1997
• Mac OS : Untuk pertama kalinya Apple memperkenalkan penggunaan nama Mac OS pada Mac OS 7.6.
1998
• Windows 98 : Web browser Internet Explorer menjadi bagian penting dari Windows 98 dan berhasil menumbangkan dominasi Netscape Navigator.
• Server Linux : Linux mendapat dukungan dari banyak perusahaan besar, seperti IBM, Sun Microsystem dan Hewlet Packard. Server berbasis Linux mulai banyak dipergunakan menggantikan server berbasis Windows NT.
• Google : Search Engine terbaik hadir di Internet dan diketahui menggunakan Linux sebagai servernya.
• Japan Goes Linux : TurboLinux diluncurkan di Jepang dan segera menjadi OS favorit di Asia, khususnya di Jepang, China dan Korea.
• Mandrake : Gael Duval dari Brazil mengembangkan distro Mandrake yang diturunkan dari Red Hat.
1999
• Support : Hewlett Packard mengumumkan layanan 24/7 untuk distro Caldera, Turbo Linux, Red Hat dan SuSE.
• Corel Linux : Corel pembuat program Corel Draw, yang sebelumnya telah menyediakan Word Perfect versi Linux, ikut membuat OS berbasis Linux dengan nama Corel Linux dan yang nantinya beralih nama menjadi Xandros.
2000
• Mac OS/X : Mac OS diganti dengan mesin berbasis BSD Unix dengan kernel yang disebut sebagai Mac OS/X.
• Windows 2000: Microsoft meluncurkan Windows 2000 sebagai penerus Windows NT.
• Windows Me : Microsoft meluncurkan Windows Me, versi terakhir dari Windows 95.
• China Goes Linux : Red Flag Linux diluncurkan dari Republik Rakyat China.
• Microsoft vs IBM : CEO Microsoft Steve Ballmer menyebut Linux sebagai kanker dalam sebuah interview dengan Chicago Sun Times. Di lain pihak, CEO IBM Louis Gartsner menyatakan dukungan pada Linux dengan menginvestasikan $ 1 milyar untuk pengembangan Linux.
2001
• Windows XP : Microsoft memperkenalkan Windows XP.
• Lindows: Michael Robertson, pendiri MP3.com, memulai pengembangan Lindows yang diturunkan dari Debian. Nantinya Lindows berganti nama menjadi Linspire karena adanya tuntutan perubahan nama oleh Microsoft.
2002
• Open Office : Program perkantoran berbasis Open Source diluncurkan oleh Sun Microsystem.
• OS Lokal : OS buatan anak negeri berbasis Linux mulai bermunculan, diantaranya Trustix Merdeka, WinBI, RimbaLinux, Komura.
2003
• Windows 2003 : Microsoft meluncurkan Windows Server 2003.
• Fedora : Redhat mengumumkan distro Fedora Core sebagai penggantinya. Nantinya ada beberapa distro lokal yang dibuat berbasiskan Fedora, seperti BlankOn 1.0 dan IGOS Nusantara.
• Novell : Ximian, perusahaan pengembang software berbasis Linux dibeli oleh Novell, begitu juga halnya dengan SuSE yang diakuisisi oleh Novell.
• LiveCD : Knoppix merupakan distro pertama Linux yang dikembangkan dengan konsep LiveCD yang bisa dipergunakan tanpa harus diinstal terlebih dahulu. Distro lokal yang dibuat dari Knoppix adalah Linux Sehat dan Waroeng IGOS.
2004
• Ubuntu : Versi pertama Ubuntu diluncurkan dan didistribusikan ke seluruh dunia. Ada beberapa versi distro yang dikeluarkan, yaitu Ubuntu (berbasis Gnome), Kubuntu (berbasis KDE), Xubuntu (berbasis XFCE), dan Edubuntu (untuk pendidikan).
2005
• Mandriva : Mandrake bergabung dengan Conectiva dan berganti nama menjadi Mandriva.
2006
• Unbreakable Linux : Oracle ikut membuat distro berbasis Linux yang diturunkan dari Red Hat Enterprise.
• CHIPLux : Distro lokal terus bermunculan di tahun ini, bahkan Majalah CHIP yang lebih banyak memberikan pembahasan tentang Windows juga tidak ketinggalan membuat distro Linux dengan nama CHIPLux, yang diturunkan dari distro lokal PC LINUX dari keluarga PCLinuxOS (varian Mandriva). CHIPLux merupakan distro lokal pertama yang didistribusikan dalam format DVD.
2007
• Vista : Setelah tertunda untuk beberapa lama, Microsoft akhirnya meluncurkan Windows Vista. Windows Vista memperkenalkan fitur 3D Desktop dengan Aero Glass, SideBar, dan Flip 3D. Sayangnya semua keindahan ini harus dibayar mahal dengan kebutuhan spesifikasi komputer yang sangat tinggi.
2008
• 3D OS : Tidak seperti halnya Vista yang membutuhkan spesifikasi tinggi, 3D Desktop di Linux muncul dengan spesifikasi komputer yang sangat ringan. Era hadirnya teknologi 3D Desktop di Indonesia ditandai dengan hadirnya sistem operasi 3D OS yang dikembangkan oleh PC LINUX. Ada beberapa versi yang disediakan, yaitu versi 3D OS untuk pengguna umum serta versi distro warnet Linux dan game center Linux.
2010
• Windows7 : Sistem Operasi ini merupakan penyempurna dari sistem operasi yang di buat sebelumnya oleh microsoft. Bisa dikatakan bahwa sistem operasi ini merupakan sistem operasi terbaik yang ada pada saat ini.

B. Contoh – Contoh Sistem Operasi beserta Kelebihan dan Kekurangannya

• LINUX
Secara teknis dan singkat dapat dikatakan, Linux adalah suatu sistem operasi yang bersifat multi user dan multitasking, yang dapat berjalan di berbagai platform, termasuk prosesor INTEL 386 dan yang lebih tinggi. Sistem operasi ini mengimplementasikan standard POSIX. Linux dapat berinteroperasi secara baik dengan sistem operasi yang lain, termasuk Apple, Microsoft dan Novell.
Nama Linux sendiri diturunkan dari pencipta awalnya, LINUS TORVALDS, di Universitas Helsinki, Finlandia yang sebetulnya mengacu pada kernel dari suatu sistem operasi, suatu penamaan yang biasa digunakan untuk mengacu ke pada suatu kumpulan lengkap software, yang bersama-sama dengan kernel menyusun suatu sistem operasi yang lengkap.Linux dulunya adalah proyek hobi yang dikerjakan oleh Linus Torvalds yang memperoleh inspirasi dari Minix. Minix adalah sistem UNIX kecil yang dikembangkan oleh Andy Tanenbaum. Linux versi 0.01 dikerjakan sekitar bulan Agustus 1991.
Kemudian pada bulan Oktober 1991 tanggal 5, Linus mengumumkan versi resmi Linux, yaitu 0.02 yang hanya dapat menjalanka n bash (GNU Bourne Again Shell) dan gcc (GNU C Compiler). Sekarang Linux adalah sistem UNIX yang lengkap, bisa digunakan untuk jaringan (networking), pengembangan software, dan bahkan untuk sehari-hari. Linux sekarang merupakan alternatif OS yang jauh lebih murah jika dibandingkan dengan OS komersial, dengan kemampuan Linux yang setara bahkan lebih.
Satu hal yang membedakan Linux terhadap sistem operasi lainnya adalah, harga. Linux ini GRATIS. Berarti dapat diperbanyak, dan didistribusikan kembali tanpa harus membayar fee atau royalti kepada seseorang.
Kelebihan Linux
Sistem operasi ini adalah sistem operasi yang tahan virus. Virus-virus yang menyerang Windows tidak akan berkutik apabila terdampar di sistem Linux. Linux juga stabil, sehingga menjadi platform mayoritas bagi server internet, hingga industri perfilman Hollywood. Beberapa film seperti The Lord Of The Ring, hingga Harry Potter menggunakan bantuan Linux dalam proses produksinya. Linux juga dikembangkan bagi platform yang tidak wajar, seperti pada PlayStation 2, X-Box, iPod, dan Nintendo DS.
Linux juga multipengguna (multiuser) dan multitugas (multitasking). Anda dapat memasuki sistem dengan banyak user sekaligus dan menjalankan banyak tugas sekaligus. Linux adalah sistem operasi yang sejak lahir murni multiuser dan multitasking.
Kekurangan Linux
Beberapa kekurangan Linux yang paling dirasa adalah masih belum banyaknya game-game besar yang bersedia dijalankan pada platform Linux.
Orang-orang sepertinya juga alergi terhadap sistem operasi ini karena masih berpikir Linux adalah sistem operasi yang sulit, tidak mempunyai tampilan grafis, dan tidak gaul. Belum lagi, beberapa hardware yang sepertinya sulit untuk menyediakan driver untuk Linux. Tentunya, ini menjadi tugas berat bagi para pengembang kernel Linux, agar sistem operasi ini dapat berjalan dengan fleksibel
(seperti yang telah terjadi sekarang ini).

• Windows
Microsoft Windows adalah sistem operasi komputer berbasiskan GUI (Graphic User Interface) yang paling banyak digunakan dalam komputer pribadi di seluruh dunia. Sukses ini menjadikan pemiliknya, Bill Gates, menjadi orang terkaya di seluruh dunia mengalahkan kekayaan Sultan Brunei. Namun hanya sedikit orang yang mengetahui sejarah perkembangan Microsoft Windows itu sendiri, dan sedikit juga orang yang mengetahui sistem operasi komputer berbasiskan GUI selain merk Microsoft Windows.
Kelebihan Windows
Seperti yang telah disebutkan, Windows adalah sistem operasi yang user-friendly. Tampilannya begitu bersahabat bagi para pengguna. Selain itu, dukungan hardware yang lengkap, banyaknya aplikasi yang diperuntukkan bagi platform Windows semakin melengkapi nilai tambahnya.
Kekurangan Windows
Windows juga memiliki sisi kurang yang cukup mencolok. Sistem operasi
ini adalah sistem operasi yang rentan akan penyakit. Windows mudah
sekali tertular virus. Namun, masalah ini dapat diatasi dengan adanya
vendor-vendor software yang merilis antivirus bagi Windows. Sebut saja Norton dan AVG. Meski demikian, perkembangan virus komputer terus berlanjut layaknya virus-virus di dunia nyata. Mereka semakin banyak dan ganas. Siap kapan saja menginfeksi komputer Windows. Terlepas dari sisi teknis, harga lisensi Windows juga terbilang sulit dijangkau oleh masyarakat Indonesia kebanyakan. Versi bajakan memang murah, tetapi itu bukanlah pilihan bijak. Dengan membeli versi bajakan, sama saja kita telah mendanai para kriminal tersebut mengembangkan usaha mereka. Dan kita telah menjadi sponsor setia dalam melanggengkan tindak tanduk mereka.
Windows telah ada semenjak 80-an. Ketika itu, OS ini berpenampilan
minimalis dan berkesan kartunis. Tidak ada efek tiga dimensi dan
resolusi gambar yang terlalu rendah. Namun, sebagai sistem operasi yang
user-friendly, membawanya sebagai sistem operasi yang banyak diminati oleh orang.
Jenis-jenis Windows sendiri antara lain Windows 95, Windows 98, Windows 2000, Windows Me, Windows NT, Windows XP, dan Windows Vista.
Windows mendukung sistem berkas partisi dengan format FAT, FAT16,
FAT32, NTFS, juga iso9660.

• Mac OS
Mac OS, yang bererti Macintosh Operating System, atau Sistem Pengoperasi Macintosh, adalah sistem pengoprasian komputer Apple untuk komputer Apple Macintosh. Mac OS merupakan sistem pengoperasian pertama yang menggunakan antarmuka pengguna grafis(GUI). Pasukan Macintosh termasuk Bill Atkinson, Jef Raskin dan Andy Hertzfeld.
Bahasa Pemrograman
1. Bahasa tingkat rendah, adalah bahasa yang hanya dimengerti oleh mesin. Bahasa ini berubah bilangan biner yang terdiri dari angka 0 dan 1.
2. Bahasa tingkat menengah, adalah bahasa yang sudah bisa dimengerti oleh manusia. Namun karena kosakata yang dipakai adalah kosakata hasil singkatan, masih cukup sulit untuk dipakai oleh pengguna awam. Contoh peranti bahasa pemrograman tingkat menengah ini adalah bahasa Assembler
dan bahasa FORTRAN.
3. Bahasa tingkat tinggi, adalah bahasa pemrograman yang lebih mudah dari bahasa pemrograman tingkat menengah, karena kosakata yang dipakai bukan kosakata hasil penyingkatan atau pemotongan, seperti BASIC,COBOL, dan Pascal.
Bahasa pemrograman memuat berbagai kosakata sesuai aturan yang sebelumnya telah ditetapkan. Berbeda bahasa pemrograman, maka berbeda pula aturan yang dimiliki. Namun intinya, bahasa pemrograman ini berguna dalam menerjemahkan perintah-perintah atau instruksi ke dalam bahasa yang dimengerti oleh mesin. Bahasa pemrograman terbagi dalam tiga tingkat kesukaran.
Di zona keamanan berinternet, ternyata windows XP dan Vista menjadi sasaran utama serangan para hacker dunia, namun walaupun demikian XP dan Vista ternyata mampu membendung serangan tersebut dengan baik lewat firewall yang otomatis berjalan ketika mulai dijalankan. Namun ternyata para hacker tidak kalah ide, mereka menyerang lewat celah Internet Explorer 7 yang memang telah terbukti memiliki banyak kelemahan, walaupun Windows senantiasa menutupi celah-celah keamanan tersebut lewat update yang tiap 18 hari namun keadaan ini cukup membahayakan. Untuk mengatasinya, warga dunia disarankan untuk senantiasa mengupdate internet explorer atau memakai browser yang terbukti lebih aman yakni: Safari dan Firefox. Akibat serangan ini, di zona keamanan berinternet, windows XP harus merelakan 2 istana yang dijaganya terebut oleh para hacker, sedangkan windows Vista dengan penjagaan pintu gerbang yang ketat hanya kehilangan 1 istana di zona ini. Linux dan MacOS di zona ini boleh agak berlega hati karena tidak begitu dilirik untuk diserang oleh para hacker sehingga kelima istana yang mereka jaga tetap aman. Di zona ini Linux dan MacOS unggul.
Peperangan di zona keamanan PC, mengungkap banyak fakta akan kelemahan beberapa pasukan Sistem Operasi. Pasukan Windows XP, Vista dan Linux Ubuntu ternyata lemah terhadap penjagaan pintu login berpassword. Hanya dengan sebuah CD darurat, password pintu login WIndows XP, Vista dan Linux dapat dibobol. Begitu juga pasukan MacOS ternyata lemah pada masalah ini, hanya cukup dengan menekan kombinasi tombol [Apple] + [S] pada saat boot , data pada PC dapat diakses oleh setiap orang. Hal ini menyebabkan masing-masing pasukan kehilangan 1 istana. Istana yang lain, di wilayah enkripsi data keempat pasukan Sistem Operasi ternyata memiliki sistem enkripsi folder yang mudah dioperasikan. MacOS menggunakan FileVault, Linux dengan TrusCrypt dan Windows XP/Vista dengan sistem Encrypted File System (EFS). Namun dari semua itu ternyata Windows Vista lebih unggul karena dapat melindungi lebih baik, dimana seluruh harddisk dapat dienkripsi hanya dengan beberapa kali klik. Vista berhasil mempertahankan istananya sedangkan yang lain harus kehilangan istana setelah pertempuran yang sangat hebat dalam waktu yang lama. Selanjutnya, di istana terjadinya backup data pertempuran juga tidak kalah sengit. MacOS unggul dalam wilayah ini dengan sistem Time Machine nya. Windows XP melakukan backup dengan 2 tahap lewat System Restore, namun Windows Vista yang juga memiliki system restore dengan tambahan Salinan Data Bayangan seharusnya mampu lebih baik namun karena salah satu anggota pasukannya yakni Windows Vista versi Home tidak dilengkapi dengan layanan ini, mengakibatkan windows Vista harus rela kehilangan istana backup. Pasukan Linux justru lebih parah lagi, dengan sistem backup gratisan yang terlalu banyak dan tidak jelas mengakibatkan Pasukan ini lemah dan juga harus kehilangan istananya. Di zona keamanan PC ini MacOS dan XP unggul.
Di Zona Pengoperasian, terdapat 3 istana yang harus dijaga yakni Pencarian File, Instalasi Software dan File-Manager. Pada pencarian File, windows XP ternyata tidak tampil mengesankan. MacOS dengan sistem pencarian Spotlight terbukti mampu melakukan pencarian file secara kilat yang juga ditiru oleh Linux dan Windows Vista. Sedangkan untuk kemampuan seperti itu, windows XP harus memiliki tools tambahan. Dalam instalasi software, kecanggihan windows xp dan vista dalam menginstal sebuah software yang didownload ataupun dibeli serta murahnya biaya yang dikeluarkan untuk menginstal program gratis lewat Packet Manager yang dimiliki Linux, ternyata tak mampu menandingi kehebatan instalasi tradisional di MacOS. Instalasi tradisional MacOS dimana harus mengekstrak paket-paket software dana bentuk Zip lalu meletakkannya di dalam menu ternyata memiliki kelebihan pada saat membuang software. Di MacOS, kita tidak memerlukan uninstaller dan jika membuang program hanya cukup dengan menghapus foldernya saja tanpa kuatir akan ada sisa pada sistem registry. Di istana pengelolaan File Manager, windows XP tampil buruk karena tidak mampu menampilkan preview isi file seperti halnya yang terdapat pada Windows Vista, Linux dan MacOs.