@AstikaAyuningtyas. Diberdayakan oleh Blogger.
RSS

Pengantar Pemrosesan Data Terdistribusi

Apa itu Pemrosesan Data Terdistribusi?

Pemrosesan data terdistribusi atau bisa kita sebut dengan PDT meupakan sekumpulan proses yang saling terhubung untuk memenuhi kebutuhan pengolahan informasi dari satu entity organisasi. PDT juga bisa dikatan sebagai suatu sistem yang di dalamnya terdapat program-program aplikasi untuk pengolahan data yang tersebar diberbagai node-node untuk menyelesaikan suatu pekerjaan. 

Dukungan apa yang diperlukan untuk melakukan PDT?

Komputer dan Komunikasi. PDT itu meletakkan sumber daya komputer ke tempat dimana pengguna berada, sumber daya tersebut terpisah secara geografis dan saling interkoneksi secara online.

Sumber Daya Terdistribusi

Sumber daya yang dibutuhkan untuk membangun PDT antara lain: 
  1. Sumber daya platform (hardware, software system), 
  2. Aplikasi atau Proses, 
  3. Data atau Database.
Terminologi sistem pemrosesan datanya dapat berbentuk distribusi horisontal atau vertikal

Apa pertimbangan menggunakan PDT?

Perkembangan organisasi yag pada umumnya mempunyai banyak cabang yang tersebar dalam berbagai lokasi dan menginginkan untuk mengintegrasikan antar cabang-cabang tersebut sehingga pertukaran data dan informasi dapat dilakukan dengan cepat dan koordinasi antar cabang dapat ditingkatkan lebih baik lagi.
Terdapat kebutuhan dan tuntutan baik dari pihak perusahaan maupun dari sisi customer agar mendekatkan diri kepada pengguna. Perlu diingat untuk merancang PDT Kita harus mempertimbangkan beberapa hal diantaranya:
  1. Dimana informasi harus disimpan dan dioleh?
  2. Dimana dan Bagimana bentu data yang disimpan?
  3. Bagaimana struktur data yang disimpan?
  4. Bagaimana mengakses data tersebut?

Apa Kriteria PDT?

Menurut David Bulter, ada tiga kriteria PDT yaitu:
  1. Harus berada pada dua lokasi atau lebih dengan prosesor yang terpisah
  2. Prosesor-prosesor harus di-link
  3. Prosesor-prosesor melayani satu entiti organisasi

Apa tujuan dari PDT?

  1. Otonomi lokal
  2. Desentralisasi operasi dan sentarlisasi kontrol
  3. Meningkatkan produktivitas end user
  4. Pengembangan aplikasi oleh user group
  5. Dialog terminal lebih efisien
  6. Akses remote terhadap resource dan data di lain lokasi
  7. Membuat jarak menjadi transparan
  8. Availability
  9. Privacy &Security
  10. Auditability
  11. Akurat dan Konsisten
  12. Adaptive

Apa saja pendukung PDT?

  1. Penggunaan komputer mini dan mikro
  2. Teknik database
  3. Jaringan komputer
  4. Struktur jaringan fleksibel
  5. Kontrol saluran yang standar
  6. Arsitektur jaringan standar
  7. Arsitektur berlapis
  8. Terminal virtual
  9. Kriptografi
  10. Keamanan
  11. Audit
  12. Kamus data
Perlu adanya pengembangan sturktur manajemen untuk menjalankan strategi pada PDT, yang meliputi:
  1. Administrasi sistem terdistribusi
  2. Administrasi data terdistribusi
  3. Administrasi jaringan


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Memulai Ngoding dengan C/C++

Apa itu C/C++?

Salah satu bahasa pemrograman populer yang banyak orang menggunakan untuk mengembangkan program-program berskala besar seperti games, program penelitian di bidang sains, embedded system, dll

Memulai "Ngoding" di C/C++

Pada saat Kita membuat program dengan bahasa pemrograman C/C++ pertama yang perlu Kita ketahui adalah mengenal karakteristiknya seperti identifier dan tipe data yang ada pada bahasa tersebut. Identifier adalah pengingat tempat penyimpanan data di dalam memori komputer. Dalam dunia informatika, identifier dibagi menjadi dua yaitu variabel dan konstanta. Perbedaannya, variabel itu nilainya bisa diubah sedangkan konstanta itu nilainya selalu tetap dengan kata lain tidak dapat diubah-ubah selama program tersebut dijalankan. Gambar 1 adalah daftar tipe data beserta dengan cakupannya di dalam bahasa pemrograman C/C++.

Gambar 1. Tipe Data C/C++

Nah, sebelum Kita memulai Ngoding. Perlu Kita ketahui bahwa terdapat beberapa jargon programmer antara lain:
  1. Source Code: Kode program yang ditulis programmer
  2. Compile (Build): Pengubahan source code ke dalam object code (bisa bahasa mesin/assembly)
  3. Executable: Program dalam bahasa mesin siap dieksekusi
  4. Language: Bahasa pemrograman
  5. Library: Fungsi-fungsi yang digunakan pada pembuatan program
  6. Preprocessor Directive: Dimulai tanda #, header file (file yang berekstensi .h yang disertakan pada pembuatan program)

Apa hubungannya C dengan C++?

C++ merupakan bentuk perluasan dari bahasa C. Seperti layaknya saudara kandung, kakak adik :)
Tanda ++ (increment) bearti C+1, nilai 1 melambangkan dukungan terhadap pemrograman berorientasi obyek.  

Struktur Pada C/C++

Program C maupun C++ selalu tersusun dari lima bagian utama, yaitu: 
  1. Preprocessor Directive (Pengarah Kompilator)
  2. Declaration (Deklarasi)
  3. Defiition (Definisi)
  4. Statement atau Expression (Penyataan atau Ekspresi)
  5. Comments (Komentar)
Contohnya bisa Kalian lihat di bawah ini:

Contoh 1
// Preprocessor Directive
#include <iostream>
//Function utama
int main()
{ //Blok pembuka
    //Pernyataan (Statement)
    std::cout<<"Selamat Datang Struktur Data & Algoritma";
    //Pernyataan     
    return 0;
} //Blok Penutup

Contoh 2
// Preprocessor Directive
#include <stdio.h>
//Function utama
int main()
{ //Blok pembuka
    //Pernyataan (Statement)
    printf(“Selamat Datang SD & Algoritma“);
    //Pernyataan     
    return 0;
} //Blok Penutup

Bagaimana proses pembentukan program di C/C++


Gambar 2. Proses Pembentukan Program

Pada Gambar 2 terlihat bagaimana proses pembentukan program di C/C++. Pertama dimulai dari menggabungkan kode program dengan preprocessor directive yang digunakan di dalam kode. Pada awal pemrosesan kode program, Compiler akan menerjemahkan kode program menjadi kode assembly. Selanjutnya Assembler bertugas menerjemahkan kode-kode yang terdapat di dalamnya ke dalam bentuk kode obyek, kemudian oleh Linker akan dihubungkan semua file kode obyek dengan standart runtime library dan mengubahnya ke dalam satu file yaitu .exe. Setelah itu, Loader akan mengeksekusi program yang sudah dibuat (run).


 


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Pengantar Struktur Data dan Algoritma

Apa itu algoritma?

Algoritma merupakan langkah-langkah atau aturan logis yang dideskripsi tekstual dengan pola baku untuk menyelesaikan suatu masalah. Dengan kata lain, jika Kalian memiliki suatu masalah dimana masalah tersebut butuh penyelesaian satu per satu, tahapan itulah yang Kita namakan sebagai sebuah algoritma. Algoritma bisa berupa bahasa alami seperti Bahasa Indonesia, Bahasa Inggris, dst (inget dulu waktu SMA dapet pelajaran Bahasa Inggris tentang Procedural, contohnya bikin "How to Make Fried Rice", itu salah satu contoh penerapannya), selain itu algoritma bisa berupa notasi algoritmik atau lebih Kita kenal dengan Pseudocode, bisa juga berupa Flowchar (bisa dibaca diagram alir). Ketika Kalian mempelajari tentang algoritma, salah satu yang harus diingat adalah tiga struktur dasar pembangun algoritma yaitu:
  1. Sequence: Algoritma harus runtut ya
  2. Selection: Algoritma terdapat pemilihan, mana bagian deklarasi variabelnya, tipe datanya apa, prosesnya bagaimana, hasilnya mau seperti apa, dll. 
  3. Looping: Di dalam algoritma penting terdapat perulangan karena bila pada suatu kondisi Kita telah memilih salah satu alternatif yang ada tetapi alternatif tersebut tidak sesuai dengan yang diharapkan maka Kita perlu kembali ke langkah-langkah sebelumnya untuk mencari alternatif lain. Itu pentingnya kenapa dalam algoritma ada Looping.

Apa itu Struktur Data?

Struktur data adalah cara Kita meniyimpan, menyusun, mengatur data sehingga data dapat digunakan secara efektif dan efisien. Struktur data itu modelnya logika atau matematik yag secara khusus mengorganisasi 

Contoh Struktur Data

Bentuk-bentuk struktur data antara lain:
  1. Array atau Larik 
  2. Record atau Rekaman atau Struct atau Struktur
  3. Searching
  4. Sorting
  5. Stack atau Tumpukan 
  6. Queue atau Antrian
  7. List atau Susunan 
  8. Graph 
  9. Tree

Hubungan Algoritma dan Struktur Data 

Kita sudah membicarakan algoritma dan struktur data, lantas hubungan keduanya apa?
Program adalah kumpulan instruksi komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Sebuah program membutuhkan struktur pengaturan dan pengaksesan data-data agar dapat digunakan dengan efektif.

Demikian materi pengantar tentang struktur data dan algoritma. Semoga membantu.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Arsitektur Memori Komputer Paralel

Pada komputer paralel, arsitektur memori diklasifikasikan menjadi tiga kategori antara lain:
1. Shared Memory
Pada arsitektur jenis ini, prosesor dapat mengakses semua memori sebagai space alamat global. Shared momory dibagi menjadi dua kelas yaitu UMA (Uniform Memory Access) dan NUMA (Non-Uniform Memory Access).
2. Distributed Memory
Arsitektur jenis ini prosesornya mempunyai memori lokal sendiri, sehingga inter-prosesor memori membutuhkan networking.
3. Hybrid distributed-shared memory
Arsitektur ini menggabungkan tipe shared dan distributed.

UMA sendiri merupakan kelas dari shared memory dengan karakteristik semua prosesor dapat mengakses semua memori sebagai ruang alamat global. Multiprosesor pada jenis ini dapat beroperasi secara independen namun dapat saling berbagi memori. Karena hal tersebut membawa dampak perubahan di lokasi memori oleh satu prosesor dapat dilihat oleh prosesor yang lainnya (yang terhubung ke memori yang sama). Prosesor pada model UMA ini, mempunyai akses dan waktu akses yang sama ke mori di setiap prosesornya. Cache coheren menjadi problem utama pada model ini dikarenakan jika suatu prosesor update suatu lokasi di memori, semua prosesor mengetahui update tersebut, sehingga koherensi dilakukan di level hardware (lihat Gambar 1).
Hasil gambar untuk arsitektur UMA
Gambar 1. Arsitektur UMA

NUMA memiliki karakteristik prosesor memiliki bank alamat memori sendiri, sehingga prosesor dapat mengakses memori lokal dengan cepat, sedangkan untuk memori remote lebih lambat. Pengaksesan pada data lokal dapat meningkatkan throughput memori pada jenis arsitektur ini. Sseringkali model ini digunakan untuk menghubungkan secara fisik dua atau lebih SMP, satu SMP dapat mengakses memori secara langsung ke SMP yang lainnya. Berbeda dengan tipe UMA, pada NUMA tidak semua prosesor mempunyai waktu akses yang sama ke memori. NUMA memiliki kelemahan yaitu akses memori lewat bus interconnect lebih lambat karena berada diluar jalur lokalnya (lihat Gambar 2).
Hasil gambar untuk arsitektur NUMA 
Gambar 2. Arsitektur NUMA

Bila disimpulkan secara keseluruhan dua tipe pada jenis Shared Memory bahwa space alamat memori global menyediakan perspektif pemrograman user-friendly ke memori, selain itu sharing data antar task cepat dan uniform karena dekatnya memori ke CPU. Namun apabila dilihat dari kelemahan pada bangunan arsitektur ini adalah tidak scalable artinya menambah CPU dapat meningkatkan trafik di jalur shared memory--CPU. Kelemahan yang lainnya adalah programmer bertanggungjawab untuk sinkronisasi yang memastikan akses yang tepat ke memori global. Tentunya hal ini akan berdampak semakin kompleks dan mahal seiring semakin bertambahnya jumlah prosesor.

Pada Jenis yang kedua pada komputer paralel adalah distributed memory dimana tiap prosesor mempunyai memori lokal sendiri, sehingga prosesor dapat beroperasi secara independen. Perubahan yang terjadi pada sisi lokal memori tidak akan membawa efek ke memori lainnya. Pada arsitektur ini, jika memerlukan interprocessor, tugas programmer secara eksplisit mendefinisikan bagaimana dan kapan data akan dikomunikasikan (lihat Gambar 3).
 
Gambar 3. Distributed Memory Architecture

Kelebihan yang didapatkan dari jenis distributed ini adalah scalable jumlah prosesor dan ukuran memori dapat ditingkatkan. Tiap prosesornya dapat mengakses memorinya tanpa interferensi dan overhead, seperti dikoheren cache. Pada jenis ini menjadi cost effecitve apabila menggunakan PC komoditas, off the self processor. Tetapi kelemahan yang ditemukan pada arsitektur ini adalah tugas programmer akan semakin kompleks terkait dengan detail komunikasi datanya, selain itu mapping data struktur berbasis memori global bisa jadi susah.

Jenis yang ketiga adalah Hybrid Memory yang terdiri dari arsitektur memori shared dan distributed. Komponen memori shared biasanya mesin SMP koheren (prosesor di mesin SMP mempunyai akses global ke memori mesin tersebut), sedangkan komponen distributed adalah jaringan  SMP multiple (SMP hanya tahu memorinya saja). Komunikasi jaringan diperlukan untuk memindahkan data dari satu SMP ke lainnya.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Konsep Dasar Pemrosesan Paralel

Pemrosesan paralel menjadi salah satu solusi komputasi dalam skala besar yang menawarkan kecepatan pemrosesan. Dimana, di dalam paralel sebuah permasalahan dipecah menjadi bagian yang terkecil. untuk kemudian setiap bagiannya dieksekusi dua atau lebih prosesor/memory secara simultan. Pada prinsipnya, pemrosesan paralel menyelesaikan problem dalam skala yang besar menjadi bagian-bagian kecil. Tujuan utamanya adalah untuk mempersingkat waktu penyelesaian tugas-tugas dengan cara mengoptimalkan resorce pada sistem komputer yang ada untuk mencapai tujuan yang sama.

Sederhananya, semakin banyak yang bisa dilakukan secara bersamaan (dalam waktu yang sama) di dalam paralel, semakin banyak pekerjaan yang bisa diselesaikan. Lantas apa yang membedakan pemrosesan paralel dengan serial. Pada pemrosesan serial jelas terlihat bahwa proses dijalankan di komputer tunggal dengan satu CPU, selain itu problem dipecah dalam instruksi dengan eksekusi berurutan (hanya satu eksekusi dalam satu waktu (lihat ilustrasi pemrosesan serial pada Gambar 1).
 
Gambar 1. Ilustrasi Pemrosesan Tunggal (Serial)

Berbeda dengan pemrosesan yang dilakukan secara paralel dimana problem yang diselesaikan dijalankan menggunakan banyak CPU, problem dipecah menjadi bagian yang dapat dikerjakan secara bersamaan. Setiap bagian yang dipecah menjadi instruksi yang terurut dan dieksekusi secara simultan di CPU yang berbeda (lihat ilustrasi pemrosesan paralel pada Gambar 2).
 
Gambar 2. Ilustrasi Pemrosesan Paralel

Jika dilihat pada Gambar 2 pada pemrosesan paralel di setiap instrusinya dijalankan secara serial dalam waktu yang bersamaan antar CPU yang bekerja mengeksekusi data. Dengan kata lain, model arsitektur paralel ini dapat diklasifikasikan ke dalam taksonomi Flynn pada model SIMD (Single Instruction Multiple Data), dimana Michael J. Flynn membedakan arsitektur komputer multiprosesor berdasarkan dimensi instruksi dan data, kemudian dibagi menjadi single atau multiple. SIMD merupakan tipe komputer paralel karena semua processing unit (PU)-nya mengeksekusi instruksi yang sama dalam satu waktu, selain itu proses pada setiap PU boleh dengan data yang berbeda-beda. Dapat dicontohkan pada problem spasial penerapan tipe komputer ini digunakan untuk pemrosesan grafik seperti pada komputer dengan GPU.

Pemrosesan paralel haruslah memiliki kemampuan untuk:
1. Menjalankan multi instruksi program dalam satu waktu.
2. Memecah program ke beberapa task dan dikerjakan secara simultan
3. Menyelesaikan problem lebih cepat di multi sumber daya komputasi daripada sumber daya tunggal.
4. Membagi beban kerja dan mendistribusikannya pada komputer-komputer lain yang terdapat dalam sistem untuk menyelesaian suatu masalah.
5. Sistem ini nantinya akan terdiri dari sejumlah komputer atau memory yang akan bekerja sama untuk menyelesaikan suatui masalah.

Lantas apa yang menjadi pertimbangan dilakukannya pemrosesan paralel, this's simple "Menghemat waktu dan biaya" karena penggunaan lebih banyak resource untu satu task akan mempercepat waktu pengerjaan, dengan potensi penghematan biaya.  Disamping itu, cluster dapat dibangun dengan komponen komoditas dan murah. Pertimbangan berikutnya, this's logic "Mengerjakan problem dalam skala yang lebih besar" karena banyak problem yang tidak bisa dipecahkan dengan komputer tunggal/serial, dikarenakan keterbatasan memori: Grand Challenge, web search engine yang memproses jutaan transaksi per second.



  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS