Nama : Tasya Marisya Agusena
NIM
: 8040190232
Kelas
: 05PS3
1. 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 masih belum dilengkapi oleh sebuah sistem operasi. Tapi, dalam 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-update master file yang berkaitan.
Ada 2 cara dalam Batch System, yaitu :
1.
Resident
Monitor
·
Operator
bertugas mengatur urutan job
·
Job-job yang
sama cukup dicetak sekali saja, cara inilah yang disebut “Batch System”
Teknik pengurutan job secara manual begini akan
menyebabkan tingginya waktu menganggur CPU. Muncul teknik pengurutan job
otomatis yang mampu mentransfer secara otomatis dari suatu proses ke proses
lainnya. Program kecil dan bersifat residen dimemori sera berisi urutan-urutan
job yang akan berpindah secara otomatis, inilah “Resident Monitor”
2.
Overlap
Operasi antara I/O dengan CPU
·
Offline
Processing, data yang dibaca dari card reader disimpan dulu dalam tape drover
sebelum dibawa ke CPU, demikian pula informasi yang 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.
Sumber : https://hartantydwikurnia.wordpress.com/2018/11/05/batch-system-dan-contohnya/
2. Critical Section
Critical Section adalah bagian dari suatu proses yang akan melakukan
akses dan manipulasi data. Ketika
sebuah proses sedang dijalankan dalam critical sectionnya, 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.
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 :
a) Solusi Perangkat Lunak
Solusi ini menggunakan algoritma-algoritma untuk mengatasi
masalah critical section.
b)
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:
a)
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.
b) 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 ;
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.
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.
c) 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. 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.
Contoh :
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.
Contoh:
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.
d) 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.
Contoh :
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
Sumber :
http://teknikkom15.blogspot.com/2012/04/critical-section.html
https://mediekaputra.wordpress.com/2011/03/26/critical-section/
3. Process Control Block
Process
Control Block (PCB) adalah struktur data yang dipakai oleh OS untuk mengelola
proses. Hampir semua OS yang modern telah memuat PCB (Process Control Block),
namun strukturnya berbeda-beda pada setiap OS tersebut. PCB juga memuat
informasi tentang proses, yaitu : sebuah tanda pengenal proses (Process ID)
yang unik dan menjadi nomor identitas, status proses, prioritas eksekusi proses
dan informasi lokasi proses dalam memori.prioritas proses merupakan suatu nilai
atau besaran yang menunjukkan seberapa sering proses akan harus dijalankan oleh
prosesor. Proses yang memiliki prioritas lebih tinggi, akan dijalankan lebih
sering atau dieksekusi lebih dulu dibandingkan dengan proses yang berprioritas
lebih rendah. Sebuah PCB ditunjukkan dalam gambar berikut.
Setiap proses digambarkan dalam sistem
operasi oleh sebuah process control block (PCB). PCB berisikan banyak bagian
dari informasi yang berhubungan dengan sebuah proses yang spesifik. PCB hanya
berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari
proses yang satu dengan yang lain.
Contoh, struktur data yang
mengendalikan beberapa PCB adalah process table. Bisa saja beberapa PCB ditaruh
pada daftar dalam waktu yang bersamaan.Process table ini menggambarkan sistem
tersebut ketika OS menemukan tiap-tiap PCB melalui proses ID.
Elemen-elemen PCB Running
Elemen
|
Uraian
|
Identifier
|
Identitas unik untuk
membedakan suatu proses dengan proses lainnya.
|
State
|
Status (kondisi) suatu proses
(sedang dieksekusi, sedang diblok, dll).
|
Priority
|
Status (kondisi) suatu proses
(sedang dieksekusi, sedang diblok, dll) Priority.
|
Program counter
|
Alamat instruksi berikutnya
yang akan dieksekusi Memory pointers.
|
Memory pointers
|
Pointer yang menunjuk pada
alamat memori kode program dan data yang berhubungan dengan proses dan blok
memori yang di-shared dengan proses lain (jika ada).
|
Context data
|
Data yang terdapat pada
register prosesor ketika suatu proses sedang dieksekusi.
|
I/O status information
|
Informasi tentang permintaan
terhadap I/O device yang belum terpenuhi (misal akses ke harddisk), daftar
file yang sedang digunakan oleh proses, dll.
|
Accounting information
|
Informasi tentang jumlah
waktu prosesor yang telah digunakan, jumlah waktu proses, batas waktu proses,
nomor urutan, dsb.
|
PCB dibagi 3
kelompok yaitu :
Process identification data selalu menyertakan
sebuah identifier unik untuk prosesnya (hampir selalu bernilai integer) dan,
dalam sebuah sistem multiuser-multitasking, data seperti identifier proses
induk, identifier pengguna, identifier grup pengguna, dll. Proses ini sangan
relevan, karena itu sering digunakan untuk referensi silang tabel OS, misalnya
memungkinkan untuk mengidentifikasi proses yang menggunakan device I/O, atau
daerah memori.
Processor state data adalah
potongan-potongan informasi yang mendefinisikan status dari suatu proses ketika
proses itu ditangguhkan, yang memungkinkan OS untuk melakukan restart proses
nantinya dan masih dapat mengeksekusinya dengan benar. Hal ini selalu
menyertakan isi dari register CPU tujuan.
·
Process
control data; digunakan oleh OS untuk mengelola proses itu sendiri.
PCB berisikan banyak bagian dari
informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal
di bawah ini:
·
Status
Proses.
·
Program
counter.
·
CPU
Register.
·
Informasi
Manajemen Memori.
·
Informasi
pencatatan.
Sumber : http://stefhannylourensia.blogspot.com/2018/11/pengertian-dan-contoh-process-control.html
4. Distributed Processing
Distributed data processing (DDP) system merupakan bentuk yang sering digunakan
sekarang sebagai perkembangan dari time sharing system. Bila beberapa sistem
komputer yang bebas tersebar yang masing-masing dapat memproses data sendiri
dan dihubungkan dengan jaringan telekomunikasi, maka istilah time sharing sudah
tidak tepat lagi. DDP system dapat didefinisikan sebagai suatu sistem komputer
interaktif yang terpencar secara geografis dan dihubungkan dengan jalur
telekomunikasi dan seitap komputer mampu memproses data secara mandiri dan mempunyai
kemampuan berhubungan dengan komputer lain dalam suatu sistem.
Contoh :
1)
Internet
·
Jaringan komputer dan aplikasi yang heterogen.
·
Mengimplementasikan protokol internet.
2)
Intranet
·
Jaringan yang teradministrasi secara lokal.
·
Terhubung ke internet melalui firewall.
·
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/dihubungkan dengan perangkat lain.
4)
Sistem Telepon
·
ISDN atau yang biasa disebut jaringan telepon tetap (dengan kabel).
·
PSTN jaringan telepon/telekomunikasi yang semuanya digital.
5)
Network File System
·
WWW
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. Bila kita lihat aplikasi tersebut,
database tidak didistribusikan, tetapi proses sistem dan penggunaan fungsi-fungsi
atau feature pada sistem terpisah-pisah prosesnya tidak satu
proses saja dalam satu waktu. Pada waktu tertentu ada orang yang sedang isi
status, dan mungkin di waktu yang sama ada sedang mencari teman, ada yang
mengupload foto dan sebagainya. Tampak disini beberapa proses pada sistem
terdistribusi pada setiap client yang berbeda.
Pada
penggunaan aplikasi pembayaran/transaksi online pada suatu
perusahaan, misalnya saja tiket pesawat terbang. Aplikasi tersebut juga contoh
dari aplikasi pengolahan data terdistribusi, dimana data pembayaran ada
tersimpan di database bank, sementara data tiketnya tersimpan di database
server maskapai yang menyediakan aplikasi tiket online tersebut. Jadi dapat
dikatakan bila aplikasi yang digunakan menggunakan database yang terpisah tidak
satu database saja, maka dapat dikatakan itu adalah aplikasi pengolahan data
terdistribusi atau dikenal juga dengan distributed data
processing system.
SUMBER : http://willygunawanlim.blogspot.com/2018/11/pengertian-distributed-processing.html
http://briyandhatama1.blogspot.com/2019/08/contoh-dan-pengertian-distributed.html
5. 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 dari system handheld ini adalah Android dan
Symbian.
Sumber : http://stefhannylourensia.blogspot.com/2018/11/pengertian-dan-contoh-handheld.html
http://muhammadmiftahpratama.blogspot.com/p/pengertian-sistem-operasi-handheld.html#:~:text=Contoh%20system%20handheld%20adalah%20Android%2C%20Symbian.&text=Sistem%20operasi%20Handheld%20juga%20memiliki,email%2C%20dan%20fitur%20PDA%20dirilis.
6. Thread
Proses
merupakan sebuah program yang mengeksekusi thread tunggal. Kendali thread
tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu
waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan
agar memungkinkan sebuah proses untuk mengeksekusi multi-threads. Misalnya user
melakukan pekerjaan secara bersamaan yaitu mengetik dan menjalankan pemeriksaan
ejaan didalam proses yang sama.
Thread
merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread ID, program
counter, register set, dan stack. Sebuah threadberbagi 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. Perbedaannya ialah proses dengan thread yang banyak mengerjakan lebih dari satu tugas pada satu satuan
waktu.
Pada umumnya, perangkat lunak yang berjalan pada komputer modern dirancang
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.
Terkadang
ada sebuah aplikasi yang perlu menjalankan beberapa tugas yang serupa. Sebagai
contohnya sebuah web server dapat mempunyai ratusan klien yang mengaksesnya
secara concurrent. Kalau web server berjalan sebagai proses yang hanya
mempunyai thread tunggal maka ia hanya dapat 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 multi-threading. 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 [MDGR2006].
a.
Single Thread dan Multi Thread
1.
Single Thread : process hanya mengeksekusi satu thread saja pada satu
waktu.
2.
Multi Thread : process dapat mengeksekusi sejumlah thread dalam satu waktu
b.
Model Multi Threading
Dukungan
thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk
kernel threads. User Threads disediakan oleh kernel dan diatur tanpa dukungan
kernel, sedangkan kernel therads didukung dan diatur secara langusng oleh
sistem operasi. Hubungan antara user threads dan kernel threads terdiri dari
tiga model relasi, yaitu:
·
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. 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.
·
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. Contoh sistem operasi yang mendukung model
One-to-One ialah Windows NT dan OS/2.
·
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. 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.
Sumber : http://rikocaplew.blogspot.com/2017/10/contoh-thread.html