Batch System
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
adalah FMS ( Fortarn Monitoring System ) dan IBSYS.
Jadi bisa disimpulkan,
bahwa komputer generasi ke-2 ini merupakan generasi pertama Sistem Operasi.
contoh sebuah Batch System
adalah sebuah e-mail dan transaksi batch processing. Dalam suatu sistem batch
processing, transaksi secara individual dientri melalui peralatan terminal,
dilakukan validasi tertentu, dan ditambahkan ke transaction file yang berisi
transaksi lain, dan kemudian dientri ke dalam sistem secara periodik. Di waktu
kemudian, selama siklus pengolahan berikutnya, transaction file dapat
divalidasi lebih lanjut dan kemudian digunakan untuk meng-up date master file
yang berkaitan.
ada 2 cara dalam Batch System yaitu :
Operator bertugas mengatur urutan job
Job-job yg sama cukup dicetak sekali saja, cara inilah
yg disebut “Batch system”
Teknik pengurutan job secara manual begini akan menyebabkan tingginya
waktu
menganggur CPU. Muncul teknik pengurutan job otomatis yg mampu
mentransfer secara otomatis dari suatu proses ke proses lainnya.Program kecil
dan bersifat residen dimemori serta berisi urutan2 job yg akan berpindah secara
otomatis, inilah “Resident Monitor”
- Overlap Operasi antara I/O dg CPU
·
Off
line Processing, data yg dibaca dari card reader disimpan dulu dalam tape
driver sebelum dibawa ke CPU, demikian pula informasi yg mau dicetak, disimpan
dulu di tape
·
Spooling adalah suatu program dapat dikerjakan
walaupun I/O masih mengerjakan proses
lainnya dan disk secara bersamaan menggunakan data untuk banyak proses.
Pengertian multi programming adalah kegiatan menjalankan beberapa program pada
memori pada satu waktu.
BENTUK DAN CONTOH BATCH SYSTEM
·
Multi-programming
adalah salah satu teknik penjadwalan dimana tugas (task) yang sedang berjalan tetap berjalan sampai ia melakukan
operasi yang membutuhkan waktu untuk menunggu respon dari luar (external
event), misalnya membaca data dari disket/CD/dsb, atau sampai komputer memaksa
untuk menukar tugas yang sedang berjalan dengan tugas lainnya. Sistem operasi
yang yang menggunakan multi-program sebagai scheduler-nya bertujuan untuk
memaksimalkan penggunaan CPU.
·
Multiprocessing
adalah istilah teknologi informasi dalam bahasa Inggris yang merujuk kepada
kemampuan pemrosesan komputer yang dilakukan secara serentak. Hal ini
dimungkinkan dengan menggunakan dua CPU atau lebih dalam sebuah sistem
komputer. Istilah ini juga dapat merujuk kepada dukungan sebuah sistem untuk
mendukung lebih dari satu prosesor dan mengalokasikan tugas kepada
prosesor-prosesor tersebut.
CRITICAL SECTION
Critical Section adalah sebuah segmen kode dari sebuah
proses yang mana sumber daya diakses bersamaan. Terdiri dari:
·
Entry
Section: kode yang digunakan untuk masuk ke dalam critical section
·
Critical
Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu
waktu
·
Exit
Section: akhir dari critical section, mengizinkan proses lain
·
Remainder
Section: kode istirahat setelah masuk ke critical section
Solusi untuk mengatasi masalah Critical Section,
yaitu:
a). Mutual exclution : Jika proses pi sedang
mengeksekusi critical section-nya maka tidak ada proses lain yang dapat
mengeksekusi dalam critical section mereka.
b). Progress : Jika tidak ada proses yang sedang
dieksekusi dalam critical section dan ada beberapa proses yang ingin masuk ke
critical section mereka, maka pemilihan proses yang akan masuk ke critical
section berikutnya tidak bias ditunda
c). Bounded Waiting :Suatu keterikatan harus ada pada
sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya
proses yang meminta masuk ke critical section dan sebelum permintaan itu
diterima.
Contoh pada algoritma
Cara-cara memecahkan masalah
• Hanya dua proses, Po dan P1
• Struktur umum dari proses adalah Pi (proses lain Pj)
do {
critical
section
remainder section
}
while(1);
Algoritma 1
Disini kita akan mencoba membuat sebuah rangkaian
solusi-solusi dari permasalahan yang makin meningkat kerumitannya.
Pada semua contoh, i adalah proses yang sedang
berjalan, j adalah proses yang lain. Pada contoh ini code.
i. Shared variables
• int turn
Initially turn=0
• turn = i,
Pi can enter its critical section
ii. Process Pi
do {
while(turn!=1);
critical section
turn=j;
remainder section
}
while(1);
iii. Memenuhi mutual exclusion, tapi bukan progress.
Algoritma 2
FLAG untuk setiap proses yang memberi STATE:
Setiap proses memantau suatu flag yang mengindikasikan
ia ingin memasuki critical section. Dia memeriksa flag poses lain dan tidak
akan memasuki critical section bila ada proses lain yang sedang masuk.
i. Shared variables
• boolean
flag[2];
initially flag [0] = flag [1] = false
• flag
[i] = true , Pi ready to enter its critical section
ii. Process Pi
do {
flag[i]:=true;
while(turn!=1);
critical
section
turn=j;
remainder section
}
while(1);
iii. Memenuhi mutual exclusion, tapi tidak memenuhi
progess.
Algoritma 3
FLAG untuk meminta izin masuk:
· Setiap
proses mengeset sebuah flag untuk meminta izin masuk. Lalu setiap proses
mentoggle bit untuk mengizinkan yang lain untuk yang pertama
· Kode
ini dijalankan untuk setiap proses i
Shared variables
F boolean flag[2];
initially
flag[0] = flag[1] = false
F flag[i] = true;
Pi ready to enter its critical section
·
Gabungan shared variables dari algorima 1 dan 2
· Process Pi
do {
flag[i]:=true;
turn =
j;
while(flag[j] and turn = j);
critical
section
flag[i]
= false;
remainder section
}
while(1);
·
Memenuhi ketiga persyaratan, memecahkan persoalan critical section untuk
kedua proses
Algoritma Bakery
Critical Section untuk n buah proses:
Sebelum memasukkan proses ke critical section, proses
menerima sebuah nomor. Pemegang nomor terkecil masuk ke critical section. Jika
ada dua proses atau lebih menerima nomor sama, maka proses dengan indeks
terkecil yang dilayani terlebih dahulu untuk masuk ke critical section. Skema
penomoran selalu naik secara berurut contoh: 1, 2, 3, 3, 3, 3, 4, 5,...
boolean choosing [n];
long long long int number [n];
/* 64 bit maybe okay for about 600 years */
Array structure elements are initiallized to false and
0 respectively
while (true) {
choosing[i] = true;
number[i] = max(number[0], ... [n-1]) + 1;
choosing[i] = false;
for (j = 0; j < n; j ++) {
while (choosing[j]) {}
while ((number[j] !=0) && ((number[j], j) < (number[i], i)))
{}
}
number[i] = 0
}
Solves the critical-section problem
for n process
Proses control block
Tiap proses digambarkan dalam sistem operasi oleh
sebuah process control block PCB - juga disebut sebuah control block. PCB
berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses
yang spesifik, termasuk hal-hal dibawah ini:
1.Status proses: status mungkin, new, ready, running,
waiting, halted, dan juga banyak lagi.
2.Program counter: suatu stack yang berisi alamat dari
instruksi selanjutnya untuk dieksekusi untuk proses ini.
3.CPU register: Register bervariasi dalam jumlah dan
jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator , indeks
register, stack pointer , general-purposes register , ditambah code information
pada kondisi apa pun. Besertaan dengan program counter, keadaaan/status
informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses
tersebut berjalan/bekerja dengan benar setelahnya (lihat Gambar 2-3).
4.Informasi managemen memori: Informasi ini dapat
termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel
page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan
oleh sistem operasi (lihat Bab Managemen memori).
5.Informasi pencatatan: Informasi ini termasuk jumlah
dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun jumlah job
atau proses, dan banyak lagi.
6.Informasi status I/O: Informasi termasuk daftar dari
perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang
sedang diakses dan banyak lagi.
7.PCB hanya berfungsi sebagai tempat penyimpanan
informasi yang dapat bervariasi dari proses yang satu dengan yang lain.
Gambar Proses Control Blok
Elemen-elemen dari Process Control Block (PCB) :
1.Identifier : menjelaskan proses yang sedang terjadi
2.State : kondisi yang terjadi pada proses
3.Priority : urutan perintah yang jelas pad suatu
proses
4.Program counter : instruksi pada proses
5.Memory pointers : media penyimpanan (penunjuk
alamat) pada proses
5.Context data : data yang berkaitan dengan proses
6.I/O status information : terdapat masukan dan
keluaran yang diinginkan
7.Accounting information : memberikan informasi yang
dibutuhkan
Macam-Macam Jenis Status Proses
Jenis status yang mungkin dapat disematkan pada suatu
proses pada setiap sistem operasi dapat berbeda-beda. Tetapi paling tidak ada 3
macam status yang umum, yaitu:
1.Ready adalah status dimana proses siap untuk
dieksekusi pada giliran berikutnya
2.Running adalah status dimana saat ini proses sedang
dieksekusi oleh prosesor
3.Blocked adalah status dimana proses tidak dapat
dijalankan pada saat prosesor siap/bebas
Distributed Processing
Komputasi terdistribusi adalah suatu sistem pada
jaringan komputer yang dihubungkan dengan cara tertentu sehingga tampak seperti
satu komputer bagi pemakai individual. Komputasi terdistribusi menggunakan
sumber data komputer yang ada dan melibatkan banyak komputer yang terdistribusi
dan terpisah secara geografis yang bertujuan untuk memecahkan berbagai macam
persoalan komputasi dalam skala besar.
Komputasi terdistribusi mentransformasikan banyak
komputer dalam satu jaringan yang dapat digunakan secara efektif seperti halnya
sebuah komputer saja, sehingga memaksimalkan penggunaan sumber daya komputasi.
Hal ini berarti bahwa setiap klien dalam jaringan dapat mengakses setiap file
data yang terdapat dalam jaringan, menjalankan program komputer yang ada dalam
jaringan (baik yang ada dalam server maupun yang ada dalam klien).
Sistem pengolahan data terdistribusi dapat diakses
oleh pengguna dengan menggunakan dua aplikasi yaitu berupa aplikasi lokal dan
aplikasi global, sehingga distributed data processing system memiliki
karakteristik yaitu :
·
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
Pengaruh Distributed Data Processing System Pada
Organisasi
- Meningkatkan kemampuan komputasi
- Meningkatkan
kemampuan Data Storage
- Memungkinkan
kerja lebih efisien
- Meningkatkan
End-user, manajemen punya otoritas lebih
Contoh Sistem Pengolahan Data terdistribusi :
1. Internet
- Jaringan
komputer dan aplikasi yang heterogen.
- Mengimplementasikan
protokol internet.
2. Intranet
- Jaringan
yang teradminitrasi secara lokal.
- Terhubung
ke internet melalui feriwall.
- Menyediakan
layanan internet dan eksternal.
3. Mobile Computing ( Sistem Komunikasi telepon seluler)
- Menggunakan
frekuensi radio sebagai media transmisi
- Perangkat
dapat bergerak kemanapun asal masih terjangkau dengan frekuensinya
- Dapat
menghandle/dihububngkan dengan perangkat lain
4. Sistem Telepon
- ISDN
atau yang biasa disebut jaringan telpon tetap (dengan kabel).
- PSTN
jaringan telepon/telekomunikasi yang semuanya digital.
5. Network File System (NTFS)
Arsitektur client server yang diterpakan dalam
infrastruktur internet
Contoh Impementasi Distributed Data Processing System
- Aplikasi facebook.Com yang biasa anda gunakan untuk
bersosialisai dengan saudara, kawan dan orang di seluruh dunia melalui
internet.
HANDHELD
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. Beberapa produsen mencoba untuk memecahkan
masalah keyboard yang terlalu kecil. Keyboard tersebut diganti dengan
electronic pen. Bagaimanapun,electronic pen ini masih bergantung pada teknologi
pengenalan tulisan tangan yang masih dalam tahap pengembangan.
Kelebihan dari komputer genggam ini adalah pengguna
dapat menyimpan serta mengatur data dengan lebih efisien dan akurat. Biasanya
komputer genggam dilengkapi dengan teknologi Bluetooth. Bluetooth memang tepat
untuk mencetak secara nirkabel, menghubungkan antara komputer genggam dengan
mobile printer. Tidak hanya dengan printer tetapi komputer genggam juga dapat
dihubungkan dengan alat-alat lain melalui koneksi Bluetooth.
Komputer genggam dapat meningkatkan produktivitas
pengguna dan memudahkan mereka untuk bekerja lebih efisien. Komputer genggam
yang paling banyak digunakan adalah komputer yang khusus dirancang untuk
menyediakan fungsi PIM (Personal Information Manager), seperti kalender,
agenda, dan buku alamat.
Contoh system handheld adalah Android, Symbian.
B. Perkembangan System Handheld
Sekitar tahun 1990-an dikembangkan sistem yang lebih
kecil dari mikrokompuer yang disebut dengan sistem handheld dalam bentuk
personal digital assistants (PDA). Pada beberapa sistem terdapat telepon
selular. Sistem ini mempunyai memory yang terbatas, prosessor dengan kecepatan
rendah dan display screen yang kecil
C. Sejarah Perkembangan System Handheld
Sistem operasi Handheld juga memiliki sejarah dalam
perkembangannya, adapun sejarah perkembangan system operasi Handheld adalah:
a. 1993
Ponsel pintar yang pertama, IBM Simon, memiliki fitur layar sentuh, email, dan
fitur PDA dirilis.
b. Palm Pilot 1000 personal digital assistant(PDA)
diperkenalkan pertama kali dengan sistem operasi Palm OS.
c. 1996 PC
handled pertama dengan sistem Windows CE diperkenalkan.
d. 2000 Symbian
menjadi sistem operasi genggam modern pertama pada ponsel pintar dengan
munculnya Ericsson R380.
e. 2001 The
Kyocera 6035 menjadi ponsel pintar pertama yang menggunakan Palm OS.
f. 2002
Microsoft Windows CE versi Pocket PC untuk ponsel pintar diperkenalkan.
g. 2002
BlackBerry merilis ponsel pintar pertamanya.
h. 2007 Apple
iPhone dengan iOS pertama kali diperkenalkan.
i. 2008 OHA
merilis Android 1.0 dengan HTC Dream (T-Mobile G1) sebagai ponsel Android yang
pertama.
j. 2009
Palm memperkenalkan webOS melalui Palm Pre.
k. 2009
Samsung memperkenalkan Bada OS melalui Samsung S8500.
l. 2010
Windows Phone OS dirilis.
C. Perkembangan Sytem Handheld (PDA)
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 bertambah 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.
Bertahun-tahun dunia PDA membeku. Lalu Palm Inc.
meluncurkan PDA pertamanya di tahun 1996. Peluncuran inilah yang kemudian
mengubah nasib PDA dan sekaligus mendongkrak popularitas PDA di jagad
elektronik.
Alat genggam yang disinergikan dengan operating system
(OS) Palm ini menuai sukses luar biasa. Kemudahan sinkronisasi dengan PC dan
pendekatan pengoperasian berbasis ikon membuat banyak pengguna merasakan
kegunaan alat yang satu ini, lebih daripada sekedar sebuah piranti genggam
biasa.
Dalam jangka waktu enam tahun, pertumbuhan PDA sendiri
boleh dikatakan luar biasa, meskipun tentu saja tak secepat perangkat komputer
pada umumnya. Selama kurun waktu tersebut, PDA terus tumbuh, baik dari sisi
teknologi maupun bisnis. contoh sistem operasi yang digunakan. Palm OS saat ini
masih merupakan pemain yang paling dominan. Merek-merek yang menggunakan OS ini
antara lain adalah Palm sendiri, Sony, IBM dan Handspring.
Berikutnya adalah WindowsCE atau sekarang disebut
PocketPC. Operating system khusus untuk PDA atau PocketPC ini dibuat oleh
Microsoft, karena itu tampilan pada versi PocketPC 2002 hampir mnyerupai
tampilan pada Windows XP. Sebagai catatan popularitas PocketPC kini terdongkrak
cukup kuat seiring dengan komitmen Microsoft yang besar terhadap perkembangan
sistem operasi ini. Merek yang menggunakan OS ini antara lain HP, Compaq,
Casio, dan Siemen.
D. Fungsi PDA
Pertama dan terutama fungsi dari sebuah piranti
genggam semacam PDA adalah untuk mengelola informasi atau data. Lebih spesifik
lagi karena namanya juga Personal Digital Assistant, maka data yang dikelolanya
pun bersifat personal. Diantaranya alamat, nomor telepon, alamat e-mail, jadwal
kegiatan dan daftar kegiatan yang harus kita kerjakan. Baru setelah fungsi itu
PDA dikembangkan sehingga lebih memainkan peran sebagai subnotebook. tentu saja
fungsi yang selama ini diperankan oleh organizer juga termasuk didalamnya,
seperti jam, kalkulator dan kalender.
Saat ini, handheld keluaran terbaru sudah mampu
berperan sebagai alat memainkan musik, pemutar musik MP3 (MP3 player), membaca
buku elektronik (eBook Reader) bahkan memainkan video streaming. Dengan
kemampuan grafis yang tidak lagi hitam putih, handheld ini sudah melebihi
tanggung jawabnya sebagai Asisten Pribadi sesuai dengan namanya, namun walau
begitu jangan sekali-kali menyamakan kemampuan PDA dengan notebook apalagi PC
desktop.
D. Sistem Kerja PDA
Sebagai komputer genggam, PDA memiliki processor dan
sistem operasi layaknya komputer biasa. Sistem operasi ini merupakan peranti
lunak utama pada PDA. Cara kerjanya sama seperti sitem operasi pada komputer
seperti Windows XP atau Mac OS, tetapi didesain khusus untuk PDA. Terdapat dua
kesamaan sistem operasi pada PDA yaitu Palm dan Pocket PC (Windows Mobile).
Keduanya bekerja dengan program piranti lunak yang berbeda, jadi walaupun
berisikan banyak dokumen seperti gambar, musik dan lainnya yang bisa dipakai
namun tidak pada pemrogaman. Pada penyimpanan data tanpa kartu memori, data
disimpan dalam RAM dengan ukuran puluhan MegaByte, sedangkan sumber energinya
berasal dari baterai (dulunya A3) isi ulang. Selain itu, bisa juga menggunakan
adaptor yang disambungkan ke stop kontak AC.
E. Kegunaan PDA
a.
Telekomunikasi
b. Informasi
c. Pendidikan
d. Olahraga
F. Fitur yang terdapat dalam PDA
- Layar
sentuh
- GPS
- PCPocket
- Koneksi
Nirkabel
- Agenda
- Memory
- LAN
- Surel
- HiburanKamera
- Sinkronisasi
THREAD
Thread adalah unit dasar dari penggunaan CPU, thread
mengandung Thread ID, program counter, register set, dan stack. Sebuah Thread
berbagi code section, data section, dan sumber daya sistem operasi dengan
Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut
lightweight process. Sebuah proses tradisional atau heavyweight process
mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara
proses dengan thread tunggal dengan proses dengan thread yang banyak adalah
proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada
satu satuan waktu. Banyak software yang berjalan pada PC modern didesain secara
multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang
terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya
sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan
sedangkan thread yang lain berfungsi sebagai penerima data dari network.
-
Kadang kala ada situasi dimana sebuah aplikasi
diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya
sebuah web server bisa mempunyai ratusan klien yang mengaksesnya secara
concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai
thread tunggal maka ia hanya bisa melayani satu klien pada pada satu satuan
waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus
menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan
membuat web server menjadi multithreading. Dengan ini maka sebuah web server
akan membuat thread yang akan mendengar permintaan klien, ketika permintaan
lain diajukan maka web server akan menciptakan thread lain yang akan melayani
permintaan tersebut.
Java mempunyai pengunaan lain dari thread. Perlu
dikeahui bahwa java tidak mempunyai konsep asynchronous. Sebagai contohnya
kalau program java mencoba untuk melakukan koneksi ke server maka ia akan
berada dalam keadaan block state sampai koneksinya jadi(bisa dibayangkan apa
yang terjadi apabila servernya mati). Karena java tidak memiliki konsep
asynchronous maka solusinya adalah dengan membuat thread yang mencoba untuk
melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap
waktu(misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia
akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih
mencoba untuk melakukan koneksi ke server, kalau thread tersebut masih dalam
keadaan mencoba untuk melakukan koneksi ke server maka ia akan melakukan
interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi ke
server.
Keuntungan
Keuntungan dari program yang multithrading dapat
dipisah menjadi empat kategori :
1. Responsi
Membuat aplikasi yang interaktif menjadi
multithreading dapat membuat sebuah program terus berjalan meskipun sebagian
dari program tersebut diblok atau melakukan operasi yang panjang, karena itu
dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser
yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara
thread lain berusaha menampilkan image.
2. Berbagi sumber daya
thread berbagi memori dan sumber daya dengan thread
lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan
sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi
memori yang sama.
3. Ekonomi
dalam pembuatan sebuah proses banyak dibutuhkan
pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan
thread, karena thread berbagi memori dan sumber daya proses yang memilikinya
maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah
untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan
pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama
dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali
dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama
dibandingkan context switch thread.
4. Utilisasi arsitektur multiprocessor
Keuntungan dari multithreading bisa sangat meningkat
pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara
pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU
menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat
cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu
thread yang dijalankan CPU pada satu-satuan waktu(satu -satuan waktu pada CPU
biasa disebut time slice atau quantum).
User Threads
User thread didukung diatas kernel dan diimplementasi
oleh thread library pada user level. Library meneyediakan fasilitas untuk
pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari
kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan
dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel.
Oleh karena itu, user -level thread biasanya cepat untuk dibuat dan diatur.
Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread
tunggal maka apabila salah satu user-level thread menjalankan blocking system
call maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain
yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah
POSIX Pthreads, Mach C-threads, dan Solaris threads.
Kernel Threads
Kernel thread didukung secara langsung oleh sistem
operasi: pembentukan thread, Penjadwalan, dan managemen dilakukan oleh kernel
dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem
operasi, kernel thread biasanya lebih lambat untuk membuat dan mengelola
daripada pengguna thread. Windows NT, Solaris, dan Digital UNIX adalah sistem
operasi yang mendukung kernel thread.
Kelebihan :
1. Jika sebuah thread menjalankan blocking system call
maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan
eksekusi.
2. Pada lingkungan multiprocessor, kernel dapat
menjadual thread-thread pada processor yang berbeda.
Kekurangan :
1. Pengaturan dan pembuatan thread lebih lambat.
Model Multithreading
Multithreading adalah suatu kemampuan yang
memungkinkan beberapa kumpulan instruksi atau proses dapat dijalankan secara
bersamaan dalam sebuah program. Satu kumpulan instruksi yang akan dieksekusi
secara independen dinamakan thread.
thread adalah alur kontrol dari suatu proses.atau sekumpulan
perintah(instruksi) yang dapat dilaksanakan(dieksekusi) secara teratur dengan
proses lainnya.Proses melakukan setiap langkah-langkah/intruksi yang berurutan,
setiap intruksi untuk mengeksekusi baris kode/listing – listing program.Nah
Karena langkah-langkah yang berurutan itu, setiap langkah membutuhkan jumlah
waktu tertentu.
Model Many to One
Yaitu memetakan beberapa tingkatan thread user hanya
ke satu buah kernel thread.
Kelebihan :
1. Managemen proses thread dilakukan oleh(di ruang)
pengguna, sehingga menjadi lebih efisien.
Kekurangan :
1. Multithread tidak dapat berjalan atau bekerja
secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa
mengakses kernel dalam suatu waktu. Model ini ada pada Solaris Green dan GNU
Portable.
Model One to One
Yaitu memetakan setiap user thread ke dalam 1 kernel
thread.
Kelebihan :
1. Model one-to-one lebih sinkron daripada model
many-to-one karena mengizinkan thread lain untuk berjalan ketika suatu thread
membuat pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple
thread bisa berjalan secara parallel dalam multiprosesor.
Kekurangan :
1. Dalam pembuatan user thread diperlukan pembuatan
korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread
dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi
model ini membatasi jumlah thread yang didukung oleh sistem. Model ini ada pada
Windows NT dan OS/2.
Model Many to Many
Yaitu membolehkan setiap tingkatan user thread
dipetakan ke banyak kernel thread.
Kelebihan :
1. Developer dapat membuat user thread sebanyak yang
diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel
pada multiprocessor.
2. Dan ketika suatu thread menjalankan blocking system
call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan :
1. Developer dapat membuat user thread sebanyak
mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang
dapat dijadwalkan oleh kernel pada suatu waktu. Model ini ada pada Solaris,
IRIX, dan Digital UNIX.
Thread Dalam Solaris 2
Solaris 2 merupakan salah satu versi dari UNIX yang
sampai dengan tahun 1992 hanya masih mendukung proses berat(heavyweight) dengan
kontrol oleh satu buah thread. Tetapi sekarang Solaris 2 sudah berubah menjadi
sistem operasi yang modern yang mendukung threads di dalam level kernel dan
pengguna, multiprosesor simetrik(SMP), dan Penjadwalan real-time.
Threads di dalam Solaris 2 sudah dilengkapi dengan
library mengenai API-API untuk pembuatan dan managemen thread. Di dalam Solaris
2 terdapat juga level tengah thread. Di antara level pengguna dan level kernel
thread terdapat proses ringan/ lightweight(LWP). Setiap proses yang ada
setidaknya mengandung minimal satu buah LWP. Library thread memasangkan
beberapa thread level pengguna ke ruang LWP-LWP untuk diproses, dan hanya satu
user-level thread yang sedang terpasang ke suatu LWP yang bisa berjalan.
Sisanya bisa diblok mau pun menunggu untuk LWP yang bisa dijalankan.
1. 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.
2. 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.
3. 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.
4. 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.
5. 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.
6. 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.
Sumber :