Muhamad Renaldy
Ridwan (53417795) – 4ia18
Parallelism Concept
Parallelism Concept adalah sebuah teknik
yang dapat meningkatkan kecepatan proses dengan cara memperbanyak jumlah modul
perangkat keras yang dapat beroperasi secara bersamaan, disertai dengan
membentuk beberapa proses yang berkerja secara bersamaan pada modul-modul
perangkat keras tersebut.
Pemrosesan parallel adalah sebuah bentuk
efisien pemrosesan informasi yang menekankan pada eksploitasi dari
kejadian-kejadian dalam proses komputasi. Pemrosesan parallel dapat
terjadi pada berbagai tingkatan level proses. Biasanya terjadi pada level yang
memiliki banyak pekerjaan yaitu pada program yang menggunakan :
· Multiprogramming :
Sebuah metode yang dilakukan dua buah program atau lebih yang dijalankan secara
serentak dalam sebuah komputer, dimana konsep ini menggunakan CPU sampai
proses tersebut dalam status wait atau selesai. Pada saat itu, CPU akan
berada dalam kondisi idle, supaya tidak ada waktu yang terbuang maka CPU dialihkan
ke proses lain, jika proses kedua selesai, maka proses pertama yang dalam
status wait akan dilanjutkan.
· Time sharing :
merupakan hasil pengambangan dari multiprogramming, caara bekerjanya adalah
pengeksekusian proses yang berada dalam memory utama secara
bergantian, namun CPU hanya dapat menjalankan proses yang berada
dalam memory utama saja. Perpindahan antar proses sangat sering
terjadi sehingga user dapat berinteraksi dengan setiap program pada
saat dijalankan.
· Multiprocessing :
adalah sebuah metode yang menggunakan dua CPU atau lebih dalam sebuah
sistem secara serentak, metode ini dapat dibilang sama dengan Multiprogramming namun
perbedaannya ialah Multiprocessing diimplementasikan dalam perangkat
keras, sedangkan multiprogramming pada perangkat lunak.
Distributed Processing
Distributed Processing adalah sebuah sistem
yang menggunakan banyak komputer yang terdistribusi dan terpisah secara
geografis yang digunakan untuk memecahkan berbagai macam persoalan komputasi
dalam skala besar
Sistem ini membuat penggunaan banyak komputer dalam
suatu jaringan menjadi lebih efektif, sehingga memaksimalkan penggunaan sumber
daya komputasi. Hal ini berarti bahwa setiap klien dalam jaringan dapat
mengakses seluruh data dalam jaringan tersebut, dan juga menjalankan program
komputer dalam jaringan baik server maupun klien.
Karakteristik Distributed Processing
· Kumpulan
dari data logik yang digunakan bersama-sama.
· Data
di bagi menjadi beberapa fragment.
· Fragment mungkin
mempunyai copy ( replika ).
· Fragment /
replika nya di alokasikan pada yang digunakan.
· Setiap
site berhubungan dengan jaringan komunikasi.
· Data
pada masing-masing site dibawah pengawasan DBMS.
· DBMS
pada masing-masing site dapat mengatasi aplikasi lokal, secara otonomi.
· Masing-masing
DBMS berpastisipasi paling tidak satu global aplikasi
Architectural Parallel Computer
Architectural Parallel Computer adalah
sebuah metode yang mengendalikan seluruh sumber daya untuk mengoptimalkan
performa dan kemampuan program dalam batas yang diberikan teknologi dan biaya
pada waktu tertentu. Metode ini menambahkan dimensi baru dalam pengembangan
sistem komputer dengan menggunakan banyak prosesor.
Architectural Parallel Computer sebenarnya
memiliki banyak pengertian, salah satunya yang dijelaskan dalam taksonomi Flynn,
ia membaginya menjadi 4, yaitu:
· SISD
Merupakan sebuah arsitektur komputer yang hanya
mengeksekusi satu aliran instruksi dalam satu siklus dan hanya menggunakan satu
aliran data sebagai input pada setiap siklus.
· SIMD
Merupakan sebuah arsitektur komputer yang seluruh unit
pemrosesannya mengeksekusi satu instruksi pada satu siklus dan setiap unit ini
dapat mengoperasikan elemen data yang berbeda. Arsitektur ini cocok untuk
menyelesaikan masalah khusus seperti pemrosesan grafis atau gambar.
· MISD
Merupakan salah satu tipe arsitektur komputer parallel yang
menggunakan banyak unit pemrosesan yang mengerjakan aliran data tunggal secara
mandiri melalui jalur aliran instruksi yang terpisah.
· MIMD
Merupakan salah satu tipe arsitektur komputer parallel yang
menggunakan sejumlah prosesor yang berfungsi secara asinkronus dan mandiri.
Dimana setiap prosesor yang berbeda dapat mengeksekusi instruksi yang berbeda
juga dalam data yang berbeda.
Komponen-komponen Architectural Parallel Computer
Dalam arsitektur komputer parallel, terdapat
komponen-komponen utama yang digunakan pada cluster PC, antara lain:
· Prosesor
(CPU). Bagian paling penting dalam sistem, untuk multicore terdapat
lebih dari satu core yang mengakses sebuah memori (shared memory).
· Memori.
Bagian ini dapat diperinci lagi menjadi beberapa bagian penyusunnya seperti
RAM, cache memory dan memori eksternal.
· Sistem
Operasi. Software dasar untuk menjalankan sistem komputer.
· Cluster Middleware.
Antarmuka antara hardware dan software.
· Programming Environment dan Software Tools. Software yang
digunakan untuk pemrograman paralel termasuk software pendukungnya.
· User Interface. Software yang
menjadi perantara hardware dengan user.
· Aplikasi. Software berisi
program permasalahan yang akan diselesaikan.
· Jaringan.
Penghubung satu PC (prosesor) dengan PC yang lain sehingga memungkinkan
pemanfaatan sumberdaya secara simultan.
Implementasi Parallel Computation
Contoh pengimplementasian komputasi parallel pada
perusahaan yang bekerja di dunia perfilm-an. Khususnya pada bagian rendering dan
animasi pada film.
Kemajuan dibidang komputasi, khususnya dalam bidang
komputer grafis memberikan kemudahan untuk memodelkan suatu benda dalam 3
dimensi dan mengubah-ubah sudut pandang, menentukan pencahayaan, bahkan
menyusun gerakan benda dalam alam 3 dimensi tersebut, sehingga pembuatan fim bergenre science fiction yang
biasanya memiliki cerita yang tidak ada didunia nyata (superhero, alien,dan
lain-lain) menjadi dapat dibuat dalam bentuk animasi, dan terlihat nyata.
Contoh dari hasil pengimplementasian komputasi parallel dapat
kita lihat juga pada bagian rendering, ditemukannya teknik rendering obyek
3D kedalam media 2D membuat benda yang dihasilkan oleh perangkat lunak ini
menjadi lebih nyata dan menyerupai aslinya. Pada rendering Film digunakan
unit Komputasi parallel Distributed Memory Multicomputer.
Hal ini dikarenakan komputer yang digunakan untuk rendering film adalah
kluster komputer. Kluster komputer adalah proses menghubungkan beberapa
komputer agar dapat bekerja bersama dengan sebuah jaringan sebagai
penghubungnya.
DISTRIBUTED PROCESSING
Distributed Processing mengerjakan semua proses pengolahan
data secara bersama antara komputer pusat dengan beberapa komputer yang lebih
kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut
memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara
terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian
total. Jika salah satu prosesor mengalami kegagalan atau masalah yang lain akan
mengambil alih tugasnya.
Pemrosesan terdistribusi adalah penggunaan lebih dari
satu prosesor untuk melakukan pengolahan untuk tugas individu.
Dalam Bagian A dari gambar, klien dan server yang
terletak di komputer yang berbeda, komputer ini terhubung melalui jaringan.
Server dan klien dari sistem database Oracle berkomunikasi melalui Net8,
antarmuka jaringan Oracle.
Dalam Bagian B dari gambar, satu komputer memiliki
lebih dari satu prosesor, dan prosesor yang berbeda memisahkan pelaksanaan
aplikasi klien dari Oracle.
Oracle client / server arsitektur dalam lingkungan
pemrosesan terdistribusi memberikan manfaat sebagai berikut
· Aplikasi client
tidak bertanggung jawab untuk melaksanakan setiap pengolahan data. Sebaliknya,
mereka meminta masukan dari pengguna, data permintaan dari server, dan kemudian
menganalisa dan menyajikan data ini menggunakan kemampuan tampilan dari
workstation klien atau terminal (misalnya, dengan menggunakan grafik atau
spreadsheet).
· Aplikasi client
tidak tergantung pada lokasi fisik dari data. Jika data tersebut akan
dipindahkan atau didistribusikan ke server database lain, aplikasi terus
berfungsi dengan modifikasi sedikit atau tidak ada.
· Oracle
memanfaatkan fasilitas multitasking dan berbagi-memori sistem operasi yang
mendasarinya. Akibatnya, ini memberikan tingkat tertinggi kemungkinan
konkurensi, integritas data, dan kinerja untuk aplikasi kliennya.
· Klien workstation
atau terminal dapat dioptimalkan untuk penyajian data (misalnya, dengan
menyediakan grafis dan dukungan mouse) dan server dapat dioptimalkan untuk
pengolahan dan penyimpanan data (misalnya, dengan memiliki sejumlah besar
memori dan ruang disk).
· Dalam lingkungan
jaringan, Anda dapat menggunakan workstation klien murah untuk mengakses data
remote dari server efektif.
· Jika perlu,
Oracle dapat ditingkatkan sebagai sistem Anda tumbuh. Anda dapat menambahkan
beberapa server untuk mendistribusikan beban database pengolahan seluruh
jaringan (horizontal skala), atau Anda dapat memindahkan Oracle ke komputer
mini atau mainframe, untuk mengambil keuntungan dari kinerja sistem yang lebih
besar itu (vertikal skala). Dalam kedua kasus, semua data dan aplikasi yang
dipertahankan dengan modifikasi sedikit atau tidak ada, karena Oracle adalah
portabel antara sistem.
· Dalam lingkungan
jaringan, data bersama disimpan pada server, bukan pada semua komputer dalam
sistem. Hal ini membuat lebih mudah dan lebih efisien untuk mengelola akses
konkuren.
· Dalam lingkungan
jaringan, aplikasi client mengirimkan permintaan database ke server dengan
menggunakan pernyataan SQL. Setelah diterima, pernyataan SQL diproses oleh
server, dan hasilnya dikembalikan ke aplikasi klien. Jaringan lalu lintas
disimpan ke minimum karena hanya permintaan dan hasilnya dikirim melalui
jaringan.
Distributed data processing / pemrosesan data
terdistribusi
Merupakan sekumpulan peralatan pemrosesan yang saling
terhubung melalui jaringan yang mengerjakan tugas-tugas tertentu.
Pemrosesan terdistribusi dapat dikelompokan
berdasarkan beberapa kriteria yaitu :
1. Struktur
antar hubungan
2. Kesaling
tergantungan komponen-komponen.
3. Keselarasan
antar komponen.
Distributed database system / system database
terdistribusi
Merupakan sekumpulan database yang saling terhubung
secara logical dan secara fisik terdistribusi pada berbagai tempat melalui
jaringan computer.
Sistem yang mengelola database terdistribusi dan
menyediakan mekanisme agar distribusi transparent adalahdistributed database
management system (DDBMS).
Ciri-ciri untuk system yang bukan merupakan system
database terdistribusi :
1. Sistem
yang berisi kumpulan file
2. Berbagai
arsitektur fisik berkait dengan system multiprocessor.
Ciri sistem database distribusi
1. Data
disimpan pada sejumlah tempat. Setiap tempat secara logic terdiri dari
processor tunggal.
2. Processor
pada tempat yang berbeda tersebut dihubungkan dengan jaringan computer.
3. Bukan
sekumpulan file yang berada pada berbagai tempat tetapi merupakan database pada
berbagai tempat.
4. Setiap
tempat mempunyai kemampuan untuk mandiri memproses permintaan user yang
membutuhkan akses kedata ditempat tersebut, dan juga mampu untuk memproses data
yang tersimpan di tempat lain
Keuntungan dan Kelemahan sistem database distribusi
· Keuntungan
:
1. Pengelolaan
secara transparan data terdistribusi dan replicated.
2. Mengacu
pada struktur organisasi
3. Meningkatkan
kemampuan untuk share dan otonomi local
4. Meningkatkan
ketersediaan data
5. Meningkatkan
kehandalan
6. Meningkatkan
unjuk kerja
7. Memudahkan
pengembangan system
· Kelemahan
:
1. Kompleksitas
manajemen
2. Control
integritas lebih sulit
3. Biaya
pengembangan
4. Keamanan
5. Kurang
standarisasi
6. Menambahkan
kebutuhan penyimpanan
7. Lebih
sulit dalam mengatur lingkungan data
8. Menambah
biaya pelatihan.
Thread dalam Sistem Operasi
Thread adalah unit dasar dari penggunaan CPU, thread
mengandung Thread ID, program counter, register set, dan stack. Sebuah Thread
berbagi code section, data section, dan sumber daya sistem operasi dengan
Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut
lightweight process. Sebuah proses tradisional atau heavyweight process
mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara
proses dengan thread tunggal dengan proses dengan thread yang banyak adalah
proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada
satu satuan waktu. Banyak software yang berjalan pada PC modern didesain secara
multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang
terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya
sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan
sedangkan thread yang lain berfungsi sebagai penerima data dari network.
Kadang kala ada situasi dimana sebuah aplikasi
diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya
sebuah web server bisa mempunyai ratusan klien yang mengaksesnya secara
concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai
thread tunggal maka ia hanya bisa melayani satu klien pada pada satu satuan
waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus
menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan
membuat web server menjadi multithreading. Dengan ini maka sebuah web server
akan membuat thread yang akan mendengar permintaan klien, ketika permintaan
lain diajukan maka web server akan menciptakan thread lain yang akan melayani
permintaan tersebut.
Java mempunyai pengunaan lain dari thread. Perlu
dikeahui bahwa java tidak mempunyai konsep asynchronous. Sebagai contohnya
kalau program java mencoba untuk melakukan koneksi ke server maka ia akan
berada dalam keadaan block state sampai koneksinya jadi(bisa dibayangkan apa
yang terjadi apabila servernya mati). Karena java tidak memiliki konsep
asynchronous maka solusinya adalah dengan membuat thread yang mencoba untuk
melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap
waktu(misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia
akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih
mencoba untuk melakukan koneksi ke server, kalau thread tersebut masih dalam
keadaan mencoba untuk melakukan koneksi ke server maka ia akan melakukan
interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi ke
server.
Keuntungan
Keuntungan dari program yang multithrading dapat
dipisah menjadi empat kategori :
1. Responsi
Membuat aplikasi yang interaktif menjadi
multithreading dapat membuat sebuah program terus berjalan meskipun sebagian
dari program tersebut diblok atau melakukan operasi yang panjang, karena itu
dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser
yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara
thread lain berusaha menampilkan image.
2. Berbagi sumber daya
thread berbagi memori dan sumber daya dengan thread
lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah
mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam
lokasi memori yang sama.
3. Ekonomi
dalam pembuatan sebuah proses banyak dibutuhkan
pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan
thread, karena thread berbagi memori dan sumber daya proses yang memilikinya
maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah
untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan
pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama
dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali
dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama
dibandingkan context switch thread.
4. Utilisasi arsitektur multiprocessor
Keuntungan dari multithreading bisa sangat meningkat
pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara
pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU
menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat
cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu
thread yang dijalankan CPU pada satu-satuan waktu(satu -satuan waktu pada CPU
biasa disebut time slice atau quantum).
User Threads
User thread didukung diatas kernel dan diimplementasi
oleh thread library pada user level. Library meneyediakan fasilitas untuk
pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari
kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan
dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel.
Oleh karena itu, user -level thread biasanya cepat untuk dibuat dan diatur.
Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread
tunggal maka apabila salah satu user-level thread menjalankan blocking system
call maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain
yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah
POSIX Pthreads, Mach C-threads, dan Solaris threads.
Kernel Threads
Kernel thread didukung secara langsung oleh sistem
operasi: pembentukan thread, Penjadwalan, dan managemen dilakukan oleh kernel
dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem
operasi, kernel thread biasanya lebih lambat untuk membuat dan mengelola
daripada pengguna thread. Windows NT, Solaris, dan Digital UNIX adalah sistem
operasi yang mendukung kernel thread.
Kelebihan :
1. Jika sebuah thread menjalankan blocking system call maka kernel dapat
menjadualkan thread lain di aplikasi untuk melakukan eksekusi.
2. Pada lingkungan multiprocessor, kernel dapat menjadual thread-thread pada
processor yang berbeda.
Kekurangan :
1. Pengaturan dan pembuatan thread lebih lambat.
Model Multithreading
Multithreading adalah suatu kemampuan yang
memungkinkan beberapa kumpulan instruksi atau proses dapat dijalankan secara
bersamaan dalam sebuah program. Satu kumpulan instruksi yang akan dieksekusi
secara independen dinamakan thread. thread adalah alur kontrol dari suatu
proses.atau sekumpulan perintah(instruksi) yang dapat dilaksanakan(dieksekusi)
secara teratur dengan proses lainnya.Proses melakukan setiap
langkah-langkah/intruksi yang berurutan, setiap intruksi untuk mengeksekusi
baris kode/listing – listing program.Nah Karena langkah-langkah yang berurutan
itu, setiap langkah membutuhkan jumlah waktu tertentu.
Model Many to One
Yaitu memetakan beberapa tingkatan thread user hanya
ke satu buah kernel thread.
Kelebihan :
1. Managemen proses thread dilakukan oleh(di ruang) pengguna, sehingga menjadi
lebih efisien.
Kekurangan :
1. Multithread tidak dapat berjalan atau bekerja secara paralel di dalam
multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam
suatu waktu. Model ini ada pada Solaris Green dan GNU Portable.
Model One to One
Yaitu memetakan setiap user thread ke dalam 1 kernel
thread.
Kelebihan :
1. Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan
thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap
sistem pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara
parallel dalam multiprosesor.
Kekurangan :
1. Dalam pembuatan user thread diperlukan pembuatan korespondensi thread
pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi
kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi
jumlah thread yang didukung oleh sistem. Model ini ada pada Windows NT dan
OS/2.
Model Many to Many
Yaitu membolehkan setiap tingkatan user thread
dipetakan ke banyak kernel thread.
Kelebihan :
1. Developer dapat membuat user thread sebanyak yang diperlukan dan kernel
thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
2. Dan ketika suatu thread menjalankan blocking system call maka kernel dapat
menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan :
1. Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi
tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh
kernel pada suatu waktu. Model ini ada pada Solaris, IRIX, dan Digital UNIX.
Thread Dalam Solaris 2
Solaris 2 merupakan salah satu versi dari UNIX yang
sampai dengan tahun 1992 hanya masih mendukung proses berat(heavyweight) dengan
kontrol oleh satu buah thread. Tetapi sekarang Solaris 2 sudah berubah menjadi
sistem operasi yang modern yang mendukung threads di dalam level kernel dan pengguna,
multiprosesor simetrik(SMP), dan Penjadwalan real-time.
Threads di dalam Solaris 2 sudah dilengkapi dengan
library mengenai API-API untuk pembuatan dan managemen thread. Di dalam Solaris
2 terdapat juga level tengah thread. Di antara level pengguna dan level kernel
thread terdapat proses ringan/ lightweight(LWP). Setiap proses yang ada
setidaknya mengandung minimal satu buah LWP. Library thread memasangkan
beberapa thread level pengguna ke ruang LWP-LWP untuk diproses, dan hanya satu
user-level thread yang sedang terpasang ke suatu LWP yang bisa berjalan.
Sisanya bisa diblok mau pun menunggu untuk LWP yang bisa dijalankan.
Thread Java
Thread adalah rangkaian eksekusi dari sebuah aplikasi
java dan setiap program java minimal memiliki satu buah thread. Sebuah thread
bisa berada di salah satu dari 4 status, yaitu new, runnable, blocked, dan
dead.
Untuk membuat thread dalam java terdapat dua cara,
yaitu :
1. Extends class Thread
Untuk menjalankan thread, dapat dilakukan dengan
memanggil method start(). Saat start() dijalankan, maka sebenarnya method run()
dari class akan dijalankan. Jadi untuk membuat thread, harus mendefinisikan
method run() pada definisi class. Konstruktor dari cara ini adalah :
SubThread namaObject = new SubThread();
namaObject.start();
2. Implements interface Runnable
Cara ini merupakan cara yang paling sederhana dalam
membuat thread. Runnable merupakan unit abstrak, yaitu kelas yang
mengimplementasikan interface ini hanya cukup mengimplementasikan fungsi run().
Dalam mengimplementasi fungsi run(), kita akan mendefinisikan instruksi yang
membangun sebuah thread. Konstruktor dari cara ini adalah :
MyThread myObject= new MyThread();
Thread namaObject = new Thread(myObject);
Atau dengan cara singkat seperti :
New Thread(new ObjekRunnable());
MyThread merupakan class yang mengimplementasikan
interface dari Runnable, dan object dari class MyThread akan menjadi parameter
instansi object class Thread.
Managemen Thread
Manajemen thread merupakan konsep pokok dalam sistem
operasi, sehingga masalah manajemen thread adalah masalah utama dalam
perancangan sistem operasi. Proses adalah program yang sedang dieksekusi.
Proses dapat juga didefinisikan sebagai unit kerja terkecil yang secara
individu memiliki sumber daya dan dijadwalkan oleh sistem operasi. Proses
berisi instruksi, data, program counter, register pemroses, stack data, alamat
pengiriman dan variabel pendukung lainnya.
Keadaan Thread
Sebuah thread berada di dalam keadaan BARU ketika kita
mempunyai sebuah objek Thread yang dipakai tapi belum dipanggil dengan method
start().
Ketika kita mulai sebuah thread(dengan memanggil
Method Start() dari Objek Thread), sebuah tumpukan baru akan dibuat, dengan
run() method dari Runnable yang berada di bawah tumpukan. Thread sekarang mulai
dalam keadaan RUNNABLE, menunggu untuk dijalankan.
Sebuah thread mengatakan untuk menjadi RUNNING ketika
Penjadwal Thread dari JVM telah memilihnya untuk menjadi thread yang sedang
berjalan. Pada mesin berprosessor tunggal, hanya ada satu Thread yang sedang
Berjalan.
Kadang sebuah Thread dapat dipindahkan dari keadaan
RUNNING ke keadaan TERBLOK(TIdak Berjalan untuk Sementara). Sebuah Thread
mungkin Terblok karena ia menunggu data dari sebuah stream(aliran data), atau
karena ia telah tertidur, atau karena ia menunggu untuk penguncian Objek.
Penjadwalan Thread tidak menjamin untuk bekerja pada
cara tertentu, jadi kita tidak dapat memastikan bahwa thread-thread akan
bergiliran sesuai keinginan kita. Kita dapat membantu untuk mempengaruhi
mengaktifkan pengambilan dengan mengkondisikan thread anda ke keadaan sleep
pada waktu-waktu tertentu.
Thread dan JVM
JVM(Java Virtual Machine) adalah sebuah mesin
imajiner(maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata.
JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java
terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas
dari platform manapun karena proses kompilasi diselesaikan oleh JVM.
Aplikasi program Java diciptakan dengan file teks
berekstensi.java. Program ini dikompilasi menghasilkan satu berkas bytecode
berekstensi.class atau lebih.
Bytecode adalah serangkaian instruksi serupa instruksi
kode mesin. Perbedaannya adalah kode mesin harus dijalankan pada sistem
komputer dimana kompilasi ditujukan, sementara bytecode berjalan pada java
interpreter yang tersedia di semua platform sistem komputer dan sistem operasi.
JVM dan Sistem Operasi
Java Virtual Machine atau JVM adalah jenis perangkat
lunak virtual machine aplikasi untuk menjalankan program dalam kode instruksi
Java. Java sendiri adalah bahasa komputer yang digunakan pada sistem platform
Java, dimana memiliki jenis instruksi mesin yang berbeda dengan sistem komputer
jenis PC atau yang lainnya. Oleh karena itu agar sebuah komputer dapat
menjalankan sebuah program dalam bahasa Java, maka diperlukan JVM yang sering
disebut sebagai middleware yang berfungsi untuk menterjemahkan instruksi
Java(JVM instruction set) menjadi instruksi mesin pada komputer jenis tertentu.
Java Virtual Machine dalam nama lain disebut sebagai
Java Runtime Environment(JRE), dikembangkan oleh Sun Microsystem untuk
memperluas penggunaan bahasa Java pada platform komputer manapun. Oleh karena
itu program yang dibuat dengan java dapat dijalankan pada banyak platform
komputer maupun berbagai sistem operasi komputer. Dengan sistem emulasi
instruksi ini, maka program java ini banyak sekali dipakai pada
aplikasi--aplikasi di perangkat mobile, karena perangkat mobile saat ini sudah
banyak yang sudah memiliki Java Virtual Machine.
Contoh Solusi Multithreaded
solusi multithreaded secara lengkap kepada masalah
produser konsumer yang menggunakan penyampaian pesan. Kelas server pertama kali
membuat sebuah mailbox untuk mengumpulkan pesan, dengan menggunakan kelas
message queue kemudian dibuat produser dan konsumer threads secara terpisah dan
setiap thread mereferensi ke dalam mailbox bersama. Thread produser secara
bergantian antara tidur untuk sementara, memproduksi item, dan memasukkan item
ke dalam mailbox. Konsumer bergantian antara tidur dan mengambil suatu item
dari mailbox dan mengkonsumsinya. Karena receive() method dari kelas message
queue adalah tanpa pengeblokan, konsumer harus mencek apakah pesan yang
diambilnya tersebut adalah nol.
Message Passing
Message passing itu adalah teknik untuk mengatur suatu
alu komunikasi messaging terhadap proses pada sebuah sistem. Suatu proses
mengirimkan message yang mewakili suatu request, Message di sampaikan ke
penerima yang kemudian memproses request tsb dan mengirim pesan balasan.
Kemudian, balasan tersebut memicu request lainnya, yang berlanjut pada balasan
berikutnya dan seterusnya. Operasi dasar yang dibutuhkan untuk mendukung
paradigma message passing adalah send dan receive. Jadi Message Passing ini
bentuk komunikasi yang digunakan oleh komputasi parallel yang udah kita bahas
sebelumnya. Objek dalam message passing di distribusikan menggunakan metode
sistem remote doa seperti : ONC RPC , CORBA , Java RMI , DCOM , SOAP , . NET
Remoting , CTO , QNX Neutrino RTOS , OpenBinder , D-Bus , Unison RTOS.
openMP(Open Multi Processing)
OpenMP adalah sebuah antarmuka pemrograman aplikasi
(API) yang mendukung multi processingshared memory pemrograman di C, C++ dan
Fortran pada berbagai arsitektur, termasuk Unix dan Microsoft Windows platform.
OpenMP Terdiri dari satu set perintah kompiler,perpustakaan rutinitas,
danvariabel lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun
dengan model hibrida pemrograman paralel dapat dijalankan pada komputer cluster
dengan menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih
transparan dengan menggunakan ekstensi OpenMP non-shared memory systems. OpenMP
dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB
atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras
komputer utama dan vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray ,
HP , Fujitsu , Nvidia , NEC , Microsoft , Texas Instruments , Oracle
Corporation , dan banyak lagi.
CUDA(Compute Unified Device Architecture)
Yaitu suatu
skema yang dibuat oleh NVIDIA agar NVIDIA selaku GPU (Graphic Processing Unit)
mampu melakukan komputasi tidak hanya untuk pengolahan grafis namun juga untuk
tujuan umum. Jadi dengan adanya CUDA kita dapat memanfaatkan banyak prosesor
dari NVIDIA untuk melakukan proses perhitungan ataunpun komputasi yang banyak.
Platform CUDA dapat diakses oleh pengembang perangkat
lunak melalui library CUDA-accelerated , perintah kompiler (seperti OpenACC ),
dan ekstensi untuk bahasa pemrograman standar industri, termasuk C, C++ dan
Fortran . C / C++ programmer menggunakan CUDA C / C + +, yang disusun dengan
"nvcc", NVIDIA LLVM berbasis C / C++ compiler, dan Fortran programmer
dapat menggunakan 'CUDA Fortran', yang disusun dengan PGI CUDA Fortran compiler
dari The Portland Grup. Selain library, arahan compiler, CUDA C / C++ dan CUDA
Fortran, platform CUDA mendukung interface komputasi lainnya, termasuk Khronos
Grup 's OpenCL , Microsoft DirectCompute , dan C++ AMP . Pemrograman pihak
ketiga juga tersedia untuk Python , Perl , Fortran , Java , Ruby , Lua ,
Haskell, Matlab , IDL , dan dukungan asli di Mathematica.
GPU dalah sebuah processor khusus untuk memepercepat
dan mengubah memori untuk mempercepat pemrosesan gambar. GPU ini sendiri
biasanya berada di dalam graphic card komputer ataupun laptop
Dalam permainan komputer industri, GPU yang digunakan
tidak hanya untuk rendering grafis tetapi juga dalam perhitungan fisika
permainan (efek fisik seperti puing-puing, asap, api,
cairan), contoh termasuk PhysX dan Bullet . CUDA juga telah digunakan untuk
mempercepat aplikasi non-grafis dalam biologi komputasi , kriptografi dan
bidang lainnya oleh urutan besarnya atau lebih.
CUDA memiliki beberapa keunggulan dibandingkan tradisional
perhitungan tujuan umum pada GPU (GPGPU) menggunakan API grafis:
1. Tersebar
membaca - kode dapat membaca dari alamat sewenang-wenang dalam memori.
2. Memori
bersama - CUDA memperlihatkan cepat memori bersama wilayah (sampai 48KB per Multi-Processor)
yang dapat dibagi di antara benang. Ini dapat digunakan sebagai cache dikelola
pengguna, memungkinkan bandwidth yang lebih tinggi daripada yang mungkin
menggunakan pencarian tekstur.
3. Download
lebih cepat dan readbacks ke dan dari GPU.
4. Dukungan
penuh untuk integer dan bitwise operasi, termasuk pencarian tekstur bulat.
Referensi :
https://www.academia.edu/24318259/Implementasi_Komputasi_Paralel_Dalam_Dunia_Bisnis
https://michaelaureliuss.wordpress.com/2018/11/02/distributed-processing/
https://www.academia.edu/32362019/Parallelism_concept?auto=download
https://www.tutorialspoint.com/parallel_computer_architecture/
https://fikrinm93.wordpress.com/2016/06/17/242/
http://id.wikipedia.org/wiki/Oracle_Solaris
https://ranggablack89.wordpress.com/2012/01/02/distributed-processing-client-server/
http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c35.html
http://teknikkom15.blogspot.co.id/2012/03/thread-dalam-solaris-2.html
https://lifenmechatronic.wordpress.com/2015/04/01/thread-thread-java/
http://thisismeamirah.blogspot.co.id/2014/11/sistem-virtual-machine.html
http://seto.citravision.com/berita-50-parallel-computation–pengantar-message-passing-openmp.html
http://djuneardy.blogspot.co.id/2015/05/konsep-arsitektur-paralel-pemrosesan.html
http://bimotrihatmojo.blogspot.com/2018/06/pengantar-pemrograman-cuda-gpu.html