Batch system adalah
dimana job-job yang mirip dikumpulkan dan dijalankan secara kelompok kemudian
setelah kelompok yang dijalankan tadi selesai maka secara otomatis kelompok
lain dijalankan. jadi dengan kata lain adalah teknologi proses komputer dari
generasi ke-2. yang jika suatu tugas sedang dikerjakan pada 1 rangkaian, akan
di eksekusi secara berurutan. Pada komputer generasi ke-2 sistem komputer nya
maasih blum dilengkapi oleh sebuah sistem operasi. But, dalan beberapa fungsi
sistem operasi, seperti os yang tengah berkembang pada jaman sekarang ini.
Contohnya adlah FMS ( Fortarn Monitoring System ) dan IBSYS.
2 Bentuk Batch Sytem
Sistem Batch
Sistem Batch
Pada tahun 1950-an
yaitu saat munculnya komputer generasi pertama,muncul konsep ini yaitu dengan
menggunakan job-job dalam satu angkatan,konsep ini merupakan cikal bakal dari
sistem operasi selanjutnya,tujuan dari konsep ini adalah untuk meningkatkan
utilitas CPU dalam menangani job-job yang ada. Batch sistem terdapat dua cara:
a. Resident Monitor
b. Overlap Operasi Antara I/O dengan CPU
1. Sistem Batch Pertama
Dengan mengeluarkan
biaya yg tinggi,manusia bisa mengatasi waktu dalam melakukan komputasi solusi
yg di lakukan adalah dengan mengadopsi sistem batch. Ide dasarnya adalah dengan
mengumpulkan semua job yg akan di kerjakan dan memasukannya ke dalam magnetik
tape.
2. Multiprogramming System
Beberapa job yg siap di
eksekusi,dikumpulkan dalam sebuah pool. Sistem operasi mengambil job-job
tersebut dan meletakan di memori dalam bentuk antrian .
3. Time Sharing Sitem
Sering juga di sebut
dengan”Multitasking”,teknik sama dengan “Multiprogramming system”,hanya saja
waktu bagi proses untuk menggunakan CPU di batasi,waktu mksimum penggunaan CPU
oleh proses ini disebut dengan “Quantum”.
4. Multiproccessing System
Multiproccessing
merupkan ssuatu system yg lebih dari satu CPU(prosessor) pekerjaan sebuah job
di lakukan dengan dua cara:
a. Pararel System
b. Distributed System
5. Real Time System
Real tyme system di
gunakan jika satu operasi melakukan kecepatan waktu dari prosesor atau aturan
data dan sering di gunakan sebagai pengontrol terhadap aplikasi-aplikasi
tersebut terdapat dua bentuk real time sistem yaitu:
a. Hard real time,menjamin critical task
selesai tepat waktu
b. Soft real time,memberikan prioritas
pada critical task di banding dengan task lainnya sampai critical task tersebut
selesai di kerjakan
6. Sistem operasi terpusat dan
terdisistribusi
Istilah sistem
operasi terpusat dan terdistribusi terdapat pada system multiprocessing. System
operasi terpusat adalah system operasi yg dapat menangani multiprosesor di mana
semua prosesor menggunakan satu memori utama. Sebuah proses bertindak sebagai
master dan yg lainnya sebagai slave.
System operasi terdestribusi adalah
system operasi yg dapat menangani multiprosessor di mana masing-masing prosesor
memiliki memory utama tersendiri.
a. Pengaturan sumber daya
b. Keuntungan dari dua sistem
c. Kerugian dari sebuah
B. CRITICAL SECTION
Critical Section adalah
bagian dari suatu proses yang akan melakukan akses dan manipulasi data.
Ketika sebuah proses sedang dijalankan
dalam critical section nya, tidak ada proses lain yang boleh
dijalankan dalam critical section tersebut, karena akan menyebabkan
keadaan mutually exclusive.
Mutually exclusive yakni keadaan
terjadinya akses resources yang sama di saat yang bersamaan. Mutually exclusive
memerlukan kondisi tertentu agar dapat terpenuhi.
Critical section biasanya digunakan
saat program multithreading, dimana program tersebut terdiri dari banyak
thread, akan mengubah nilai dari variabel. Dalam hal ini critical
sectiondiperlukan untuk melindungi variabel dari concurrent
access (pengaksesan program di saat yang bersamaan) yang dapat
membuat nilai dari variabel tersebut menjadi tidak konsisten.
Seperti yang telah kita ketahui bahwa
proses dapat bekerja sendiri (independent process) dan juga dapat bekerja
bersama proses-proses yang lain (cooperating process). Pada umumnya ketika
proses saling bekerjasama (cooperating process) maka proses-proses tersebut
akan saling berbagi data. Pada saat proses-proses berbagi data, ada kemungkinan
bahwa data yang dibagi secara bersama itu akan menjadi tidak konsisten
dikarenakan
adanya kemungkinan proses-proses
tersebut melakukan akses secara bersamaan yang menyebabkan data tersebut
berubah, hal ini dikenal dengan istilah Race Condition.
Oleh karena itu, dibutuhkan solusi yang tepat untuk menghindari munculnya Race Condition. Solusi tersebut harus memenuhi ketiga syarat berikut:
Mutual Exclusion
Progress
Bounded Waiting
Ada dua jenis solusi untuk memecahkan
masalah critical section, yaitu.
Solusi Perangkat Lunak. Solusi ini
menggunakan algoritma-algoritma untuk mengatasi masalah critical section.
Solusi Perangkat Keras. Solusi ini
tergantung pada beberapa instruksi mesin tertentu, misalnya dengan
me-non-aktifkan interupsi, mengunci suatu variabel tertentu atau menggunakan
instruksi level mesin seperti tes dan set.
Berikut ini algoritma-algoritma yang digunakan untuk mengatasi masalah critical section:
1.
Algoritma I
Algoritma I memberikan giliran kepada setiap
proses untuk memproses critical section-nya secara bergantian.
Asumsi yang digunakan disini setiap
proses secara bergantian memasuki critical section-nya.
Statement while(turn != 4) akan
memeriksa apakah pada saat itu proses 4 mendapatkan turn, jika tidak maka
proses 4 akan busy waiting(lihat kembali bahwa printah while diakhiri dengan
“;”). Jika ternyata pada saat itu merupakan giliran proses 4 maka proses 4 akan
mengerjakan critical section-nya. Sampai sini jelas terlihat bahwa mutex
terpenuhi! Proses yang tidak mendapatkan turn tidak akan dapat mengerjakan
critical section-nya dan turn hanya akan diberikan pada satu proses saja.
Setelah proses 4 selesai mengerjakan
critical section maka turn diberikan pada proses lainnya (turn= j, j merupakan
proses selanjutnya yang dapat mengerjakan critical section). Setelah turn-nya
diberikan kepada proses lain, proses 4 akan mengerjakan remainder section.
Disini jelas terlihat bahwa syarat bounded waiting jelas terpenuhi.
Ingat asumsi yang digunakan dalam algoritma ini adalah setiap proses secar
bergantian memasuki critical section-nya, jika pada saat itu proses 4 ternyata
belum mau mengerjakan critical section-nya maka proses ke-j tidak akan
mendapatkan kesempatan untuk mengerjakan critical section walau saat itu
sebenarnya proses ke-j akan memasuki critical section. Artinya syarat progress
tidak terpenuhi pada algoritma ini.
2.
Algoritma II
Masalah yang terjadi pada algoritma 1
ialah ketika di entry section terdapat sebuah proses yang ingin masuk ke critical
section, sementara di critical section sendiri tidak ada proses yang sedang
berjalan, tetapi proses yang ada di entry section tadi tidak bisa masuk ke
critical section. Hal ini terjadi karena giliran untuk memasuki critical
section adalah giliran proses yg lain sementara proses tersebut masih berada di
remainder section. Untuk mengatasi masalah ini maka dapat diatasi dengan
merubah variabel trun pada algoritma pertama dengan array
Boolean flag [2];
Elemen array diinisialisasi false. Jika
flag[i] true, nilai tersebut menandakan bahwa Pi ready untuk memasuki critical
section. Pada algoritma ini. hal pertama yang dilakukan ialah mengeset proses
Pi dengan nilai True, ini menandakan bahwa Pi ready untuk masuk ke critical
section. kemudian, Pi memeriksa apakah Pj
tidak ready untuk memasukui critical
section. Jika Pj ready, maka Pi menunggu sampai Pj keluar dari critical section
(flag[j] bernilai false). Ketika keluar dari critcal section, Pi harus merubah
nilai flag[i] menjadi false agar prores lain dapat memasuki critical section.
Contoh:
Pada algoritma ini, kriteria
Mutual-exclusion terpenuhi, tetapi tidak memenuhi kriteria
progress. Ilustrasinya seperti di bawah
ini.
T0 : Po set flag [0] = true
T1 : Po set flag [1] = true
Dari ilustrasi diatas terlihat bahwa
algoritma ini memungkinkan terjadinya nilai true untuk kedua proses, akibatnya
tidak ada proses yang akan berhasil memasuki critical section.
Jadi untuk algoritma 2 masih terdapat
kelemahan, seperti yang terjadi di atas.
3.
Algoritma III
Idenya berasal dari algoritma 1 dan 2.
Algoritma 3 mengatasi kelemahan pada algoritma 1 dan 2 sehingga progres yang
diperlukan untuk mengatasi critical section terpenuhi.
Algoritma III ditemukan oleh G.L.
Petterson pada tahun 1981 dan dikenal juga sebagai Algoritma Petterson.
Petterson menemukan cara yang sederhana untuk mengatur proses agar
memenuhi mutual exclusion. Algoritma ini adalah solusi untuk memecahkan
masalah critical section pada dua proses. Ide dari algoritma ini
adalah menggabungkan variabel yang di- sharing pada Algoritma I dan
Algoritma II, yaitu variabel turn dan variabel flag. Sama
seperti pada Algoritma I dan II, variabel turn menunjukkan giliran
proses mana yang diperbolehkan memasuki critical section dan variabel flag menunjukkan
apakah suatu proses membutuhkan akses ke critical section atau tidak.
Awalnya flag untuk kedua
proses diinisialisai bernilai false, yang artinya kedua proses tersebut
tidak membutuhkan akses ke critical section. Kemudian jika suatu proses
ingin memasuki critical section, ia akan mengubah flag-nya
menjadi true (memberikan tanda bahwa ia butuh critical section)
lalu proses tersebut memberikan turn kepada lawannya. Jika lawannya
tidak menginginkan critical section (flag-nya false), maka
proses tersebut dapat menggunakan critical section, dan setelah selesai
menggunakan critical section ia akan mengubah flag-nya
menjadi false. Tetapi apabila proses lawannya juga
menginginkan critical section maka proses lawan-lah yang dapat
memasuki critical section, dan proses tersebut harus menunggu sampai
proses lawan menyelesaikan critical section dan
mengubah flag-nya menjadi false.
Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah flag[0] = true, lalu P0 mengubah turn= 1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang dapat mengakses critical section. Namun apabila P1 juga membutuhkan critical section, karena flag[1] = true dan turn= 1, maka P1 yang dapat memasuki critical section dan P0 harus menunggu sampai P1 menyelesaikan critical section dan mengubah flag[1] = false, setelah itu barulah P0 dapat mengakses critical section.
Bagaimana bila kedua proses
membutuhkan critical section secara bersamaan? Proses mana yang dapat
mengakses critical section terlebih dahulu? Apabila kedua proses (P0
dan P1) datang bersamaan, kedua proses akan menset
masing-masing flag menjadi true (flag[0]
= truedan flag[1] = true), dalam kondisi ini P0 dapat mengubah
turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat mengakses critical
section terlebih dahulu adalah proses yang terlebih dahulu mengubah turn
menjadi turn lawannya. Misalkan P0 terlebih dahulu
mengubah turn= 1, lalu P1 akan mengubah turn= 0,
karena turn yang terakhir adalah 0 maka P0-lah yang dapat
mengakses critical section terlebih dahulu dan P1 harus menunggu.
Algoritma III memenuhi ketiga syarat yang dibutuhkan.
Algoritma III memenuhi ketiga syarat yang dibutuhkan.
Syarat progress dan bounded waitingyang tidak dipenuhi pada Algoritma I dan II dapat dipenuhi oleh algoritma ini karena ketika ada proses yang ingin mengakses critical section dan tidak ada yang menggunakan critical sectionmaka dapat dipastikan ada proses yang bisa menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk dapat masuk ke critical section.
4.
Algoritma Tukang Roti
Algoritma ini didasarkan pada algoritma
penjadwalan yang biasanya digunakan oleh tukang roti, dimana urutan pelayanan
ditentukan dalam situasi yang sangat sibuk. Algoritma ini dapat digunakan untuk
memecahkan masalah critical section untuk n buah proses, yang
diilustrasikan dengan n buah pelanggan. Ketika memasuki toko, setiap pelanggan
menerima
sebuah nomor. Sayangnya, algoritma
tukang roti ini tidak dapat menjamin bahwa dua proses (dua pelanggan) tidak
akan menerima nomor yang sama. Dalam kasus di mana dua proses menerima nomor
yang sama, maka proses dengan nomor ID terkecil yang akan dilayani dahulu.
Jadi, jika Pi dan Pj menerima nomor yang sama dan i < j, maka Pi dilayani
dahulu. Karena setiap nama proses adalah unik dan berurut, maka algoritma ini
dapat digunakan untuk memecahkan masalah critical section untuk n
buah proses.
Struktur data umum algoritma ini adalah
boolean choosing[n];
int number [n];
Awalnya, struktur data ini
diinisialisasi masing-masing ke false dan 0, dan menggunakan notasi berikut:
– (a, b) < (c, d) jika a < c atau
jika a= c dan b < d
– max(a0, …, an-1) adalah sebuah
bilangan k, sedemikian sehingga k >= ai untuk setiap i= 0, …, n – 1
Dengan demikian, diketahui bahwa
Algoritma I dan II terbukti tidak dapat memecahkan masalah critical section
untuk dua proses karena tidak memenuhi syarat progress dan bounded waiting.
Algoritma yang dapat menyelesaikan masalah critical section pada dua proses
adalah Algoritma III. Sedangkan untuk masalah critical section pada n-buah
proses dapat diselesaikan dengan menggunakan Algoritma Tukang Roti.
Penjadwalan CPU
Penjadwalan CPU adalah suatu proses
pengaturan atau penjadwalan proses-proses yang ada di dalam komputer. Dimana
proses-proses tersebut berjalan dalam pola yang disebut Siklus Burst.
Penjadwalan sangat penting dalam
menentukan performance sebuah komputer karena mengatur
alokasi resource dari CPU untuk menjalankan proses-proses di dalam
komputer. Penjadwalan CPU merupakan suatu konsep dasar
dari multiprograming, karena dengan adanya penjadwalan dari CPU itu
sendiri maka proses-proses tersebut akan mendapatkan
alokasi resource dari CPU.
Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
Berubah
dari running ke waiting state.
Berubah
dari running ke ready state.
Berubah
dari waiting ke ready state.
Dihentikan.
Penjadwalan nomor 1 dan 4
bersifat Non Preemptive sedangkan lainnya Preemptive.
Penjadwalan yang biasa digunakan sistem
operasi dewasa ini biasanya bersifat Preemptive. Bahkan beberapa
penjadwalan sistem operasi, contohnya Linux
2.6, mempunyai kemampuan Preemptive terhadap system
call-nya ( preemptible kernel).
Penjadwalan CPU secara garis besar
dibagi menjadi 2, yaitu Penjadwalan Preemptive dan
Penjadwalan Non Preemptive.
1.
Penjadwalan Pre-emptive
Penjadwalan Preemptive mempunyai
arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang
berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi.
Penjadwalan ini bisa saja termasuk penjadwalan proses atau I/O.
Dengan kata lain,
penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela
proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana
yang akan dieksekusi selanjutnya.
Penjadwalan Preemptive memungkinkan
sistem untuk lebih bisa menjamin bahwa setiap proses mendapat
sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat
merespon terhadap event dari luar (contohnya seperti ada data yang
masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses.
Lama waktu suatu proses diizinkan untuk
dieksekusi dalam penjadwalan Preemptive disebut time
slice/quantum.
Penjadwalan berjalan setiap satu
satuan time slice untuk memilih proses mana yang akan berjalan
selanjutnya. Bila time slice terlalu pendek maka penjadwal akan
memakan terlalu banyak waktu proses, tetapi bila time slice terlau
lama maka memungkinkan proses untuk tidak dapat merespon
terhadap event dari luar secepat yang diharapkan.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang memiliki Burst I/O yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama disebut CPU Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat dimana sistem menunggu request input(seperti disk, keyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Keuntungan penggunaan penjadwalan pre-emptive:
a. sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
b. Sistem terhindar dari keadaan busywait.
contoh sistem operasi yang menerapkan
penjadwalan Preemptive:
Windows 95, Windows XP, Linux, Unix,
AmigaOS, MacOS X, dan Windows NT .
2.
Penjadwalan Non Pre-emptive
Penjadwalan Non
Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak
pernah melakukan context switch dari proses yang sedang berjalan ke
proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt.
Penjadwalan Non
Preemptive terjadi ketika proses hanya:
1. Berjalan dari running
state sampai waiting state.
2. Dihentikan.
Ini berarti CPU menjaga proses sampai
proses itu pindah ke waiting state ataupun dihentikan (proses tidak
diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh.
Ini adalah metode yang dapat digunakan
untuk platforms hardware tertentu, karena tidak memerlukan
perangkat keras khusus (misalnya timer yang digunakan untuk
meng interupt pada metode penjadwalan Preemptive).
Dispatcher
Komponen yang lain yang terlibat dalam
penjadwalan CPU adalah dispatcher.
Dispatcher adalah modul yang
memberikan kontrol CPU kepada proses yang sedang terjadwal. Fungsinya:
Context switching
Mengganti state dari suatu proses dan
mengembalikannya untuk menghindari monopoli CPU time. Context
switching dilakukan untuk menangani suatu interrupt(misalnya menunggu
waktu I/O). Untuk menyimpan state dari proses-proses yang terjadwal
sebuah Process Control Blockharus dibuat untuk mengingat proses-proses
yang sedang diatur scheduler. Selain state suatu
proses, PCB juga menyimpan process ID, program
counter(posisi saat ini pada program), prioritas proses dan data-data tambahan
lainnya.
Switching to user
mode dari kernel mode.
Lompat dari suatu bagian di progam user untuk
mengulang program.
C. PROCESS CONTROL BLOCK
Setiap proses
digambarkan dalam sistem operasi oleh sebuah process control block (PCB) – juga
disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 10.2, Process
Control Block. PCB berisikan banyak bagian dari informasi yang berhubungan
dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
·
Status Proses. Status new, ready,
running, waiting, halted, dan juga banyak lagi.
·
Program Counter. Suatu stack yang berisi
alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
·
CPU register. Register bervariasi dalam
jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut
termasuk accumulator, register indeks, stack pointer, general-purposes
register, ditambah code information pada kondisi apa pun. Beserta dengan
program counter, keadaan/status informasi harus disimpan ketika gangguan
terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar
setelahnya (lihat Gambar 10.3, Status Proses).
·
Informasi manajemen memori. Informasi
ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register,
tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan
oleh sistem operasi (lihat Bagian V, Memori).
·
Informasi pencatatan. Informasi ini
termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah
akun, jumlah job atau proses, dan banyak lagi.
·
Informasi status M/K. Informasi termasuk
daftar dari perangkat M/K yang di gunakan pada proses ini, suatu daftar
berkas-berkas yang sedang diakses dan banyak lagi. PCB hanya berfungsi sebagai
tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan
yang lain.
Element-elemen PCB antara lain:
Identifikasi Proses yaitu Identifier numerik yang meliputi
·
Identifier proses
·
Identifier proses yang menciptakan
·
Identifier pemakai
Informasi Status Pemroses yang meliputi
·
Register-register yang terlihat pemakai
yaitu Register-register yang dapat ditunjuk instruksi bahasa assembly untuk
diproses pemroses
·
Register-register kendali dan status
yaitu Register-register yang digunakan untuk mengendalikan operasi pemroses :
1.
Program
counter
2. PSW, dsb.
·
Pointer stack yaitu Tiap proses
mempunyai satu stack atau lebih. Stack digunakan untuk parameter atau alamat
prosedur pemanggil dan system call. Pointer stack menunjuk posisi paling atas
dari stack
Informasi Kendali Pemroses meliputi
·
Informasi penjadwalan dan status yaitu
Informasi-informasi yang dipakai untuk menjalankan fungsi penjadwalan a.l :
1. Status proses. Mendefinisikan status proses (running,ready,block, dsb)
2. Prioritas. Menjelaskan prioritas proses
3. Informasi berkaitan penjadwalan. Informasi ini
seperti lama menunggu, lama proses terakhir dieksekusi dsb.
4. Kejadian (Event). Identitas
kejadian yang ditunggu proses
·
Penstrukturan data yaitu Suatu proses
dapat dikaitkan dengan proses lain dalam satu antrian atau ring, atau struktur lainnya. PCB harus memiliki pointer untuk mendukung struktur ini.
· Komunikasi antar proses yaitu Beragam
flag, sinyal dan pesan dapat diasosiasikan dengan komunikasi antara dua proses
yang terpisah. Informasi ini disimpan dalam PCB
· Kewenangan proses yaitu Proses dapat
mempunyai kewenangan berkaitan dengan memori dan tipe instruksi yang dapat
dijalankan
·
Manajemen memori Bagian ini berisi
pointer ke tabel segmen atau page yang
menyatakan memori virtual proses
·
Kepemilikan dan utilisasi sumber daya
yaitu Sumber daya yang dikendalikan proses harus diberi tanda, misalnya :
1. Berkas yang dibuka
2. Pemakaian pemroses
3. Pemakaian sumberdaya lainnya
D. DISTRIBUSI PROCESSING
Definisi umum dari
pemrosesan terdistribusi merupakan cara untuk mempercepat pengolahan data atau
informasi dengan mendistribusikan pekerjaan atau intruksi ke banyak komputer
yang telah dipilih untuk memberi kekuatan pemrosesan yang lebih cepat. Tujuan
dari komputasi terdistribusi adalah menyatukan kemampuan dari sumber daya
(sumber komputasi atau sumber informasi) yang terpisah secara fisik, ke dalam
suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh melebihi
dari kapasitas individual komponen-komponennya.
Tujuan lain yang ingin dicapai dalam
komputasi terdistribusi adalah transparansi. Kenyataan bahwa sumber daya yang
dipakai oleh pengguna sistem terdistribusi berada pada lokasi fisik yang
terpisah, tidak perlu diketahui oleh pengguna tersebut. Transparansi ini
memungkinkan pengguna sistem terdistribusi untuk melihat sumber daya yang
terpisah tersebut seolah-olah sebagai satu sistem komputer tunggal, seperti
yang biasa digunakannya. Dalam prosesnya setiap komputer berinteraksi satu sama
lain untuk mencapai tujuan bersama.
ARSITEKTUR KOMPUTER PARALEL
Karakteristik umum dari architectural
parallel komputer adalah sebagai berikut:
Pertama dalam hal pembagian memori pada
komputer parallel yang sangat bervariasi, namun pada umumnya memiliki kesamaan
kemampuan untuk semua prosesor dalam mengakses semua memori sebagai ruang
alamat global.
Kedua beberapa prosesor dapat beroperasi
secara independen akan tetapi harus didukung oleh berbagai sumber daya memori
yang sama.
Ketiga yaitu karakteristik yang terletak
pada perubahan lokasi memori yang dipengaruhi oleh satu prosesor yang terlihat
oleh proses – prosesor lainnya.
Keempat, karakteristiknya terlihat pada mesin
memori bersama dapat dibagi menjadi dua kelas utama berdasarkan waktu akses
memori: UMA dan NUMA.
Sesuai taksonomi Flynn, seorang Designer Processor, Organisasi Prosesor dibagi menjadi 4 :
SISD (Single Instruction Single Data Stream)
Single Instruction – Single Data.
Komputer ini memiliki hanya satu prosesor dan satu instruksi yang dieksekusi
secara serial. Komputer ini adalah tipe komputer konvensional. Menurut mereka
tipe komputer ini tidak ada dalam praktik komputer paralel karena bahkan
mainframe pun tidak lagi menggunakan satu prosesor.
SIMD (Single Instruction Multiple Data Stream)
Single Instruction – Multiple Data.
Komputer ini memiliki lebih dari satu prosesor, tetapi hanya mengeksekusi satu
instruksi secara paralel pada data yang berbeda pada level lock-step.
MISD (Multiple Instruction Single Data Stream)
Multiple Instructions – Single Data.
Teorinya komputer ini memiliki satu prosesor dan mengeksekusi beberapa
instruksi secara paralel tetapi praktiknya tidak ada komputer yang dibangun
dengan arsitektur ini karena sistemnya tidak mudah dipahami.
MIMD (Multiple Instruction Multiple Data Stream)
Multiple Instructions – Multiple Data.
Komputer ini memiliki lebih dari satu prosesor dan mengeksekusi lebih dari satu
instruksi secara paralel. Tipe komputer ini yang paling banyak digunakan untuk
membangun komputer paralel, bahkan banyak supercomputer yang menerapkan
arsitektur ini.
THREAD PROGRAMMING
Secara umum model pemrograman ini adalah
jenis pemrograman memori yang digunakan secara bersamaan. Dalam Thread
Programming Paralel, sebuah proses tunggal dapat memiliki beberapa jalur
eksekusi yang konkuren. Implementasi thread bukanlah hal baru dalam teknik
komputasi, Secara historis, perusahaan hardware menerapkan thread versi mereka
sendiri. Implementasi tersebut berada secara substansial dari satu sama lain
sehingga sulit bagi programmer untuk mengembangkan aplikasi yang thread
portabel.
MESSAGING PASSING, OPEN MP
Jenis model ini menunjukkan
karakteristik sebagai berikut:
Tugas pertukaran data melalui komunikasi
dengan mengirim dan menerima pesan.
Transfer data biasanya memerlukan
kerjasama operasi yang akan dilakukan oleh masing-masing proses.
(Open Multi-Processing) adalah sebuah
antarmuka pemrograman aplikasi (API) yang mendukung multi processing shared
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, dan variabel 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.
PEMROGRAMAN CUDA (GRAPHICAL PROCESSING
UNIT)
Sebagaimana telah kita ketahui bahwa
Cuda adalah platform komputasi paralel dan model pemrograman yang diciptakan
oleh perusahaan perangkat keras dunia yaitu NVIDIA. hal ini memungkinkan
peningkatan dramatis dalam kinerja komputasi dengan memanfaatkan kekuatan dari
Graphics Processing Unit(GPU).
Sebuah GPU (Graphical Processing Unit)
pada awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan
rendering pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan
rendering, terutama untuk mendekati waktu proses yang realtime /sebagaimana
kenyataan sesungguhnya, maka meningkat pula kemampuan prosesor grafik tersebut.
akselerasi peningkatan teknologi GPU ini lebih cepat daripada peningkatan
teknologi prosesor sesungguhnya (CPU), dan pada akhirnya GPU menjadi General
Purpose, yang artinya tidak lagi hanya untuk melakukan rendering saja melainkan
bisa untuk proses komputasi secara umum.
Penggunaan Multi GPU dapat mempercepat
waktu proses dalam mengeksekusi program karena arsitekturnya yang natively
parallel. Selain itu Peningkatan performa yang terjadi tidak hanya berdasarkan
kecepatan hardware GPU saja, tetapi faktor yang lebih penting adalah cara
membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan singkatan dari Compute Unified Device Architecture,didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile (VGA notebook).
Singkatnya, CUDA dapat memberikan proses
dengan pendekatan bahasa C, sehingga programmer atau pengembang software dapat
lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi
seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa
dimanfaatkan untuk aplikasi multimedia. Misalnya meng-edit film dan
melakukan filter gambar. Sebagai contoh dengan aplikasi multimedia, sudah
mengunakan teknologi CUDA. Software TMPGenc 4.0 misalnya membuat aplikasi
editing dengan mengambil sebagian proces dari GPU dan CPU. VGA yang dapat
memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.
Keuntungan dengan CUDA sebenarnya tidak
luput dari teknologi aplikasi yang ada. CUDA akan mempercepat proses aplikasi
tertentu, tetapi tidak semua aplikasi yang ada akan lebih cepat walaupun sudah
mengunakan fitur CUDA.
E. Sistem Handheld
Sekitar tahun 1990-an
dikembangkan sistem yang lebih kecil dari mikrokompuer yang disebut dengan
sistem handheld dalam bentuk personal digital assistants (PDA). Handheld
computer adalah komputer yang cukup kecil sehingga dapat digenggam. Komputer
genggam ini dapat bekerja dengan fungsi yang hampir sama dengan komputer biasa.
Meskipun sangat mudah untuk dibawa, komputer genggam tidak dapat menggantikan
komputer biasa (PC) karena hanya memiliki keyboard dan layar yang kecil. Sistem
operasi yang populer belakngan ini seperti Symbian, Windows Mobile, Palm OS,
Android, Blackberry OS, Iphone OS (iOS). Kata kunci :
Personal Digital Assistants (PDA), Symbian, Windows Mobile, Palm OS, Android, Blackberry OS, Iphone OS (iOS).
Sistem handheld adalah sebuah komputer yang mudah dapat disimpan di saku (dari ukuran yang cukup) dan digunakan saat Anda sedang me-megangnya. Komputer genggam saat ini, yang juga disebut personal digital assistant (PDA), dapat dibagi menjadi mereka yang menerima tulisan tangan sebagai masukan dan mereka dengan keyboard kecil. Handheld asli yang diterima tulisan tangan adalah Apple Newton, yang kemudian ditarik dari pasar. Hari ini, handheld paling populer yang menerima input tulisan tangan adalah PalmPilot dari 3Com. Philips, Casio, NEC, Compaq, dan perusahaan lain membuat handheld dengan keyboard kecil.
Windows CE dan EPOC adalah dua sistem operasi yang paling banyak digunakan dalam komputer genggam. Komputer genggam biasanya di-gunakan manajer informasi pribadi (PIM) jenis aplikasi: mempertahankan jadwal, menjaga nama dan nomor telepon, melakukan perhitungan sederhana, mencatat, dan, dengan modem, saling berkirim e-mail dan mendapatkan informasi dari Web. Keyboard memiliki kunci kecil yang mengambil membiasakan diri. Mereka yang menangani tulisan tangan juga memberlakukan kendala dan me-merlukan beberapa pembelajaran. Namun demikian, kelas ini komputer banyak dijual dan dihargai oleh banyak pengguna.
Personal Digital Assistants (PDA), Symbian, Windows Mobile, Palm OS, Android, Blackberry OS, Iphone OS (iOS).
Sistem handheld adalah sebuah komputer yang mudah dapat disimpan di saku (dari ukuran yang cukup) dan digunakan saat Anda sedang me-megangnya. Komputer genggam saat ini, yang juga disebut personal digital assistant (PDA), dapat dibagi menjadi mereka yang menerima tulisan tangan sebagai masukan dan mereka dengan keyboard kecil. Handheld asli yang diterima tulisan tangan adalah Apple Newton, yang kemudian ditarik dari pasar. Hari ini, handheld paling populer yang menerima input tulisan tangan adalah PalmPilot dari 3Com. Philips, Casio, NEC, Compaq, dan perusahaan lain membuat handheld dengan keyboard kecil.
Windows CE dan EPOC adalah dua sistem operasi yang paling banyak digunakan dalam komputer genggam. Komputer genggam biasanya di-gunakan manajer informasi pribadi (PIM) jenis aplikasi: mempertahankan jadwal, menjaga nama dan nomor telepon, melakukan perhitungan sederhana, mencatat, dan, dengan modem, saling berkirim e-mail dan mendapatkan informasi dari Web. Keyboard memiliki kunci kecil yang mengambil membiasakan diri. Mereka yang menangani tulisan tangan juga memberlakukan kendala dan me-merlukan beberapa pembelajaran. Namun demikian, kelas ini komputer banyak dijual dan dihargai oleh banyak pengguna.
a) PDA (Personal Digital Assistants)
Personal Digital Assistants disingkat PDA adalah sebuah alat elektronik yang berbasis komputer dan berbentuk kecil serta dapat dibawa kemana-mana. PDA banyak digunakan sebagai pengorganisir pribadi pada awalnya, tetapi karena perkembangannya, kemudian ber-tambah banyak fungsi kegunaannya, seperti kalkulator, penunjuk jam dan waktu, permainan komputer, pengakses internet, penerima dan pengirim surat elektronik (e-mail), penerima radio, perekam video, dan pencatat memo. Selain dari itu dengan PDA (komputer saku) ini, kita dapat menggunakan buku alamat dan menyimpan alamat, membaca buku-e, menggunakan GPS dan masih banyak lagi fungsi yang lain. Bahkan versi PDA yang lebih canggih dapat digunakan sebagai telepon genggam, akses internet, intranet, atau extranet lewat Wi-Fi atau Jaringan Wireless. Salah satu ciri khas PDA yang paling utama adalah fasilitas layar sentuh.
Personal Digital Assistants disingkat PDA adalah sebuah alat elektronik yang berbasis komputer dan berbentuk kecil serta dapat dibawa kemana-mana. PDA banyak digunakan sebagai pengorganisir pribadi pada awalnya, tetapi karena perkembangannya, kemudian ber-tambah banyak fungsi kegunaannya, seperti kalkulator, penunjuk jam dan waktu, permainan komputer, pengakses internet, penerima dan pengirim surat elektronik (e-mail), penerima radio, perekam video, dan pencatat memo. Selain dari itu dengan PDA (komputer saku) ini, kita dapat menggunakan buku alamat dan menyimpan alamat, membaca buku-e, menggunakan GPS dan masih banyak lagi fungsi yang lain. Bahkan versi PDA yang lebih canggih dapat digunakan sebagai telepon genggam, akses internet, intranet, atau extranet lewat Wi-Fi atau Jaringan Wireless. Salah satu ciri khas PDA yang paling utama adalah fasilitas layar sentuh.
b) SymbianOS
Symbian bisa dibilang sebagai sistem operasi paling populer di dunia mengingat jumlah peng-gunanya mencapai lebih dari 50% dari pengguna smartphone. Sistem operasi ini dikembangkan oleh Symbian, Ltd.–yang merupakan kolaborasi vendor ponsel Ericsson, Nokia, Motorola, dan Psion–dan memang dikhususkan sebagai mobile operating system. Sistem operasi ini ditulis dengan bahasa C++. Awalnya sistem operasi ini merupakan OS yang close source, namun dalam perkembangannya, sistem operasi ini berubah menjadi open source dan memungkinkan banyak pihak untuk mengembangkan aplikasi yang bisa dioperasikan di ponsel ber-OS symbian. Versi stabil terbaru dari Symbian OS adalah Symbian OS 9.5 dan versi tak-stabil terbarunya adalah Symbian^2 platform / Q3 yang dirilis pada tahun 2009.
Dalam perkembangannya Symbian OS memiliki beberapa versi, yaitu :
• Symbian OS 6.0 dan 6.1. contohnya adalah Nokia 9210 Communicator.
• Symbian OS 7.0 dan 7.0s. Pada versi ini muncul berbagai versi user interface seperti UIQ (Sony Ericsson P800, P900, P910, Motorola A925), Series 60 (Nokia 7650, 3230, 6260, 6600, 6670, 7610, N-Gage, N-Gage QD), Series 80 (Nokia 9210, 9300, 9500), series 90 (Nokia 7710), dan MOAP–Mobile Oriented Application Platform (Contohnya ponsel NTT DoComo). Symbian OS 7.0s adalah versi 7.0 yang diadaptasi agar memiliki kompatibilitas yang lebih baik dengan versi 6.x.
• Symbian OS 8.0 dan 8.1. Contohnya adalah Nokia N91.
• Symbian OS 9. Digunakan untuk keperluan internal Symbian.
• Symbian OS 9.1. Termasuk ponsel Nokia seri S60 3rd edition dan beberapa tipe Sony Ericsson seperti M600 dan P990.
• Symbian OS 9.2. Contohnya Nokia E90, Nokia N95, Nokia N82, dan Nokia 5700.
• Symbian OS 9.3. Misalnya Nokia E72, E75, E79, dan N96.
• Symbian OS 9.4. Contohnya Samsung OMNIA HD, Nokia N97, Nokia 5800 XpressMusic, Sony Ericsson Satio, dan ponsel S60 5th edition lainnya..
Sistem operasi Symbian juga rentan terhadap ancaman sekuriti berupa virus. Contoh virus yang sering menyerang ponsel ber-OS Symbian adalah Cabir, yang me-ngirimkan dirinya dari ponsel ke ponsel lain via bluetooth.
c) Windows Mobile
Windows mobile adalah versi mobile dari sistem operasi PC paling populer, Windows, keluaran Microsoft. Sistem operasi ini didesain khusus agar bisa berjalan pada smartphone dan perangkat mobile. Sistem operasi yang awalnya dirilis dengan nama Pocket PC 2000 ini hampir semuanya dilengkapi stylus pen yang digunakan sebagai ‘mouse’ pada layar ponsel. OS ini sudah berkali-kali di-update versinya dengan versi terbarunya saat ini adalah Windows Mobile 6.5 yang dirilis 5 Oktober 2009. Ke depannya akan dirilis Windows Mobile 7.0 yang akan keluar sekitar pertengahan 2010. User interface dari perangkat Windows Mobile menyerupai Windows pada PC, namun sayangnya, seperti halnya Windows pada PC, sistem operasi ini bersifat close source sehingga agak menyulitkan pihak ketiga untuk menyediakan aplikasi yang mendukung.
Versi-versi yang telah dirilis meliputi:
• Pocket PC 2000
• Pocket PC 2002
• Windows Mobile 2003 yang memiliki 4 edisi, yaitu : Windows Mobile 2003 for Pocket PC Premium Edition, Windows Mobile 2003 for Pocket PC Professional Edition, Windows Mobile 2003 for Smartphone, dan Windows Mobile 2003 for Pocket PC Phone Edition.
• Windows Mobile 2003 Second Edition (Windows Mobile 2003 SE).
• Windows Mobile 5
• Windows Mobile 6 yang memiliki 3 versi, yaitu : Windows Mobile 6 Standard for Smartphone (phone without touchscreen), Windows Mobile 6 Professional for Pocket PC with phone functionality, dan Windows Mobile 6 Classic for Pocket PCs without cellular radio.
Contoh dari perangkat yang memiliki sistem operasi ini antara lain Audiovox SMT 5600, iMate SP3i, Samsung SCH-i600, Mio 8390, Sagem myS-7, Orange SPV C500, HP iPAQ rw6100, Motorola MPx220, O2 Xphone, dan O2 Xphone II. UPDATE 08-02-2011: Saat ini versi terbaru dari Windows Mobile adalah Windows Phone 7.
d) Palm OS
Palm OS adalah sistem operasi mobile yang dikembangkan oleh Palm, Inc. yang awalnya dikhususkan sebagai sistem operasi untuk PDA. Namun dalam perkembangannya, Palm OS juga dibuat untuk smartphone. Sistem operasi ini didesain untuk kemudahan penggunaan dengan GUI (Graphical User Interface) berbasis touchscreen. Sistem operasi ini ditulis dengan bahasa pemrograman C/C++ dan bersifat close source. Contoh perangkat yang meng-gunakan sistem operasi Palm adalah Palm Treo 680. Smartphone ini menggunakan system operasi Palm OS 5.4.9. Beberapa fitur yang ditawarkan adalah Pocket Express, Microsoft Media Player, Palm files, PDF viewer, Adobe Acrobat reader, eReader, Pocket Tunes, dan Document To Go.
e) Android
Android adalah sistem operasi mobile yang berjalan pada kernel Linux, yang dirilis pada 21 Oktober 2008. Awalnya, sistem operasi ini dikembangkan oleh Android, Inc, yang kemudian dibeli oleh Google, dan yang terakhir, sistem operasi ini dibeli oleh Open Handset Alliance, sebuah consortium dari 47 perusahaan hardware, software, dan telecom (termasuk Google) yang didirikan untuk membuat open standard bagi perangkat lunak mobile. Sistem operasi ini bersifat free dan open source. Perangkat mobile yang mendukung sistem operasi ini di antaranya adalah HTC Dream dan HTC Magic, ponsel keluaran vendor asal Taiwan, HTC.
f) Blackberry OS
Blackberry OS adalah sistem operasi mobile yang dikembangkan oleh perusahaan Kanada, Research in Motion (RIM) yang dibuat untuk handheld andalan mereka dengan nama yang sama. Sistem operasi ini ditulis dalam bahasa Java dan bersifat Close Source. Versi stabil terakhir yang dikeluarkan adalah versi 5.0.0.419 (Blackberry Storm 9530). Perangkat yang menggunakan Blackberry OS sebagai sistem operasi tentu saja adalah semua varian Blackberry seperti Blackberry Bold, Storm, Curve, Pearl, dan Tour.
g) Iphone OS (iOS).
iPhone OS adalah sistem operasi mobile
yang dikembangkan oleh Apple, Inc. yang dibuat untuk produk mereka yaitu iPhone
dan iPod Touch. Sistem operasi ini termasuk dalam keluarga Mac OS X / Unix-like
operating system. Walaupun sistem operasinya bersifat close source, namun
komponennya bersifat open source sehingga memudahkan pihak ketiga untuk
mengembangkan aplikasi-aplikasi yang bisa berjalan pada sistem operasi
ini.
User interface pada sistem operasi ini menggunakan konsep manipulasi langsung pada layar handheld dengan menggunakan multi-touch gesture. Kontrol pada interfacenya meliputi slider, swith, dan tombol. Aplikasi-aplikasi yang disertakan dalam sistem operasi ini meliputi Messaging, Calendar, Photos, Camera, Youtube, Google Maps, iPhone, Safari, dan beberapa aplikasi standar lainnya.
User interface pada sistem operasi ini menggunakan konsep manipulasi langsung pada layar handheld dengan menggunakan multi-touch gesture. Kontrol pada interfacenya meliputi slider, swith, dan tombol. Aplikasi-aplikasi yang disertakan dalam sistem operasi ini meliputi Messaging, Calendar, Photos, Camera, Youtube, Google Maps, iPhone, Safari, dan beberapa aplikasi standar lainnya.
Kesimpulan dari pembahasan diatas yaitu sistem operasi handheld adalah salah satu perkembangan dari system operasi yang diperuntukan untuk personal atau perorangan saja. Maksud dari personal disini adalah user yang menggunakan atau penggunanya hanya dapat menggunakan sebagian kecil dari system operasi yang terdapat pada komputer. Dikarenakan system ini memang memiliki spesifikasi yang rendah dibanding system operasi computer pada umumnya. Namun system ini juga memiliki kelebihan yaitu ukurannya yang kecil mudah dibawa kemana – mana dan dimana saja kita dapat melakukan kerja dengan piranti ini. Ukuran kecil dan ringan, piranti ini jelas menjadi penopang mobilitas kerja,
F.
THREAD
Thread
merupakan unit dasar dari penggunaan CPU, yang terdiri dari 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.
waktu.
Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multi-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu.
Contohnya
sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan
sedangkan thread yang lain berfungsi sebagai penerima data dari network.
Thread Sharing
•
Thread menempati ruang alamat memori yang sama
• Tiap thread dapat mengakses data yang sama
• Jika suatu thread mengubah data di memori, maka threadyang lain dapat mengetahuin perubahan data tersebut
• Jika sebuah thread sedang membuka suatu file, maka threadyang lain juga dapat membaca isi file tersebut
• Tiap thread dapat mengakses data yang sama
• Jika suatu thread mengubah data di memori, maka threadyang lain dapat mengetahuin perubahan data tersebut
• Jika sebuah thread sedang membuka suatu file, maka threadyang lain juga dapat membaca isi file tersebut
Status Thread
Spawn
:
Otomatis
thread terbentuk saat proses terbentuk
Thread bisa dibentuk oleh thread lain dalam satu proses
Thread baru berada pada antrian ready
Thread bisa dibentuk oleh thread lain dalam satu proses
Thread baru berada pada antrian ready
Block
:
Thread
di block bila menuggu suatu event
Unblock
:
Bila
event yang dibutuhkan sudah datang, maka thread -> ready
Finish
:
Thread
telah selesai dieksekusi
Thread Pools
Pada
aplikasi yang multithreading ada 2 masalah yang timbul :
Ukuran
waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang
diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah
ia menyelesaikan tugasnya.
Pembuatan
thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.
Solusinya
adalah dengan penggunaan thread pools, cara kerjanya adalah dengan membuat
beberapa thread pada proses ketika startup dan menempatkan thread-thread
tersebut ke pools, dimana mereka duduk diam dan menunggu untuk bekerja.
Jadi ketika aplikasi menerima permintaan maka maka ia akan membangunkan thread
dari pool dan jika threadnya tersedia maka permintaan tersebut akan dilayani.
Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan
menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat
dibutuhkan maka aplikasi menunggu sampai ada 1 thread yang bebas.
Keuntungan
thread pool :
Bisa
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 mendukung pada
sistem yang tidak bisa mendukung banyak thread
Model
Multithreading
Dukungan
thread disediakan pada tingkat user yaitu user threads dan kernel threads. User
Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan
kernel therads didukung dan diatur secara langsung oleh sistem operasi.
Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:
Model
One to One :
Model
One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel.
Ia
menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel.
Kelemahannya model ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel.
Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini jumlah thread dibatasi oleh sistem.
Keuntungannya sama dengan keuntungan thread kernel.
Kelemahannya model ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel.
Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini jumlah thread dibatasi oleh sistem.
Contoh
sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.
Model
Many To One:
Model
Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread
tingkatan kernel.
Pengaturan
thread dilakukan dalam ruang pengguna, sehingga efisien.
Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat.
Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat.
Jadi,
multiple thread tidak dapat berjalan secara paralel pada multiprocessor.
Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One
Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One
Model
Many To Many:
Model
ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang
jumlahnya lebih sedikit atau sama dengan tingkatan pengguna thread.
Jumlah
thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin.
Many-to-One
model mengizinkan developer untuk membuat user thread sebanyak yang ia mau
tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu
thread yang dapat dijadwal oleh kernel pada suatu waktu.
One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas).
Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor.
One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas).
Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor.
Dan
juga ketika suatu thread menjalankan blocking system call maka kernel dapat
menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang
mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.
Keuntungan
Thread
Responsif
:
Aplikasi
yg multithreading dapat meningkatkan respons terhadap user
Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan user untuk menampilkan video, sementara thread lain berusaha
Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan user untuk menampilkan video, sementara thread lain berusaha
menampilkan
image.
Berbagi
Sumber Daya :
Thread
berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses
yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi
untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
Ekonomis
:
daya.
Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan
sumber
Utilisasi
arsitektur multiprocessor:
Keuntungan
dari multithreading dapat sangat meningkat pada
arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang
arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang
berbeda.
Referensi :
Tidak ada komentar:
Posting Komentar