bjk

Rabu, 14 Juli 2021

PARALLEL COMPUTATION

 

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

 

Konsep Dasar

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.

https://vivimargaretha494.wordpress.com/

 

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

 

 

 

 

 

 

0 komentar:

Posting Komentar