BAB II
Multithreading
2.1 Thread
Suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang akan dieksekusi. Namun ada kalanya proses-proses akan menggunakan resource secara bersama-sama. Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang stack disebut dengan thread atau lighweight process(LWP). Thread akan bekerja sama dengan thread lainnya dalam hal penggunaan bagian kode, bagian data, dan resource sistem operasi, seperti open file dan sinyal secara kolektif yang sering disebut dengan task.
•
Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
•
Merupakan sebuah status eksekusi (ready, running, suspend, block, queue, dll)
•
Kadang disebut sebagai proses ringan (lightweight).
•
Unit dasar dari dari sistem utilisasi pada processor (CPU).
•
Dalam thread terdapat: ID Thread, Program Counter, Register dan Stack.
•
Sebuah thread berbagi code section, data section dan resource sistem operasi dengan thread yang lain yang memiliki proses yang sama.
2.2 Single-Threading dan Multi-Threading
•
Single-Threading
adalah sebuah lightweight process (proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller.
•
Multi-Threading
adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.
Dalam gambar tersebut terlihat perbedaan antara single thread dengan multi thread. Setiap thread dapat melakukan proses tersendiri, sehingga proses yang semula besar dipecah ke dalam proses kecilkecil, sedangkan pada single thread hanya ada 1 thread yang menangani proses yang besar. Tentu multithread akan lebih cepat dari pada single thread, namun dalam kasus tertentu terlalu banyak multithread justru memperlambat kerja atau proses.
2.3 Keuntungan Multi-Threading
1. Responsive; tanggap : Multi-Threading mengizinkan program untuk berjalan terus walau-pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
2. Pembagian sumber daya : Secara default, thread membagi memori dan sumber daya dari proses. Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
3. Ekonomis : Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
4. Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
2.4 Thread dalam Sistem Operasi
•
Sistem operasi telah mendukung proses multithreading.
•
Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya.
•
Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna.
2.5 Model Multi-Threading
1. Many-to-One
Model manytoone ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked). Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.
2. One-to-One
Model onetoone memetakan setiap thread pengguna ke dalam satu kernel thread. Hal ini membuat model onetoone lebih sinkron daripada model manytoone dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan 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 onetoone diimplementasikan oleh Windows NT dan OS/2.
3. Many-to-Many
Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam multiprosesor daripada dalam uniprosesor) dimana model manytoone mengizinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model onetoone mempunyai konkurensi yang lebih tinggi, tetapi pengembang harus hatihati untuk tidak membuat terlalu banyak thread tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat dibatasi.
2.6 Thread cancellation
Thread cancellation/ pembatalan thread ialah pemberhentian thread sebelum tugasnya selesai. Misalnya jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan disebut sebagai target thread. Pembatalan Thread terdiri dari 2 jenis:
1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
2. Deffered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
2.7 Thread Pools
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools.
Keuntungan menggunakan Thread Pools
•
Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
•
Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.
BAB III
Multiprocessing
2.1 Defenisi Multiprocessing
Multiprocessing System adalah penggunaan dua atau lebih central processing unit (CPU) dalam satu sistem komputer. Istilah ini juga merujuk pada kemampuan dari suatu sistem untuk mendukung lebih dari satu prosesor dan / atau kemampuan untuk mengalokasikan tugas antara mereka. Terdapat banyak variasi pada tema dasar ini, dan definisi multiprocessing dapat bervariasi tergantung konteks, kebanyakan sebagai fungsi dari seberapa CPU didefinisikan (multiple core pada satu mati, beberapa chip dalam satu paket, beberapa paket dalam satu unit sistem, dll).
Suatu kemampuan sistem operasi yang menjalankan dua atau lebih interuksi secara serentak dengan menggunakan sejumlah CPU dalam sebuah komputer.Dengan pendekatan seperti ini, sistem operasi dapat mengatur agar sejumlah CPU menjalankan instruksi¬instruksi yang berbeda yang terletak dalam sebuah program dalam waktu yang sama.
Kegunaan : Komputer ini memiliki lebih dari satu processor. Akibatnya meningkatkan jumlah suatu proses yang dapat diselesaikan dalam satu unit waktu (pertambahan throughput ). Perlu diingat hal ini tidak berarti daya komputasinya menjadi meningkat sejumlah prosesornya. Yang meningkat adalah jumlah pekerjaan yang bisa dilakukannya dalam waktu tertentu.
Cara Kerja : Uang yang terpakai lebih sedikit karena prosesor ¬prosesor terdapat dalam satu komputer dan dapat membagi peripheral(ekonomis) seperti disk dan catu daya listrik. Jika satu processor mengalami suatu gangguan, maka proses yang terjadi masih dapat berjalan dengan baik karena tugas prosesor yang terganggu diambil alih oleh prosesor lain. Hal ini dikenal dengan istilah Graceful Degradation . Sistemnya sendiri dikenal bersifat fault tolerant atau fail¬soft system
2.2 Jenis-Jenis Multiprocessing
1. Asymmetric Multi Processing
Pada model processingASMP (Asymmetric Multi Processing), ide dasarnya adalah master/slave, yaitu kernel selalu berjalan di prosesor tertentu, sedangkan prosesorprosesor lainnya menjalankan utiliti yang ada di system operasi atau mengerjakan tugastugas tertentu. Prosesor master bertugas menjadwal proses atau thread. Ketika suatu proses/thread aktif, dan prosesor slave membutuhkan layanan (misal untuk I/O), maka dia harus mengirim permintaan ke prosesor master dan menunggu hingga permintaanya dilaksanakan. Model ini adalah sederhana, karena hanya satu prosesor yang mengatur sumber daya memori dan I/O.
2. Symmetric Multi Processing
pada model processing lainnya adalah SMP (Symmetric Multi Processing). Pada model ini, kernel bisa dijalankan di prosesor mana saja, dan tiap prosesor bisa melakukan penjadwalan proses/thread secara mandiri. Model seperti ini membuat desain sistem operasi menjadi lebih rumit, karena prosesproses bias berjalan secara paralel. Karena itu, haruslah dijamin agar hanya 1 prosesor yang mengerjakan tugas tertentu dan prosesproses itu tidak mengalami starvation.
3. Non-uniform memory access (NUMA) multiprocessing
Metoda mengkonfigurasi sekelompok mikroprosesor dalam multiprocessing system sehingga mereka dapat berbagi memori local, meningkatkan kinerja dan kemampuan system yang akan di perluas.
4.Clustering
Clustering adalah metode penganalisaan data, yang sering dimasukkan sebagai salah satu metode Data Mining, yang tujuannya adalah untuk mengelompokkan data dengan karakteristik yang sama ke suatu ‘wilayah’ yang sama dan data dengan karakteristik yang berbeda ke ‘wilayah’ yang lain.
Makalah Multithreading and Multiprocessing.docx