A.
PROSES-PROSES
SISTEM OPERASI
1)
Pengertian
proses pada system operasi
Proses
dalam system operasi berisi intruksi, data, program counter, register pemroses,
stack data alamat pengirim dan variabel pendukung lainnya.
Definisi mengenai
proses system operai :
·
Konsep pokok dalam system operasi,
sehingga masalah manejemen proses adalah masalah utama dalam perancangan system
operasi.
·
Proses adalah program yang sedang
dieksekusi.
·
Proses adalah unit kerja terkecil yang
secara individu memiliki sumber daya dan dijadwalkan oleh system operasi.
Peran system opersi dalam kegiatan
proses adalah mengelola semua proses di sitem dan mengalokasikan sumber daya ke
proses tersebut. Banyak proses yang di jalankan bersamaan, sehingga setiap
proses memiliki prinsip :
·
Independent : program tersebut berdiri
sendiri, terpisah dan tidak bergantungan.
·
One program at any instant : hanya satu
proses yang dilayani pemroses pada satu saat.
Dalam multiprogramming, teknik
penanganan proses adalah dengan mengeksekusi satu proses dan secara cepat
berahli ke proses lainnya (bergiliran), sehingga menimbulkan efek parallel semu
(pseudoparallelism).
2)
Status
proses
Pada
setiapa proses terdiri dari suatu kesatuan yang terpisah, tapi proses-proses
tersebut butuh saling berinteraksi. Satu proses dapat dibangkitkan dari output
proses lainnya sebagai input.
Saat proses diesekusi,
terjadilah perubahan status. Status proses diartikan sebagai bagian dari
aktivitas proses yang sedang berlangsung pada saat itu. Status-status proses
terdiri dari :
·
New : proses yang sedang dibuat.
·
Running : proses yang sedang dijalankan.
·
Waiting : proses sedang menunggu
beberapa evet (kejadian) yang akan terjadi (seperti penyelesaian input output
atau penerimaan sebuah signal/tanda).
·
Ready : proses sedang menunggu untuk
diproses oleh prosesor.
·
Terminated : proses telah selesai
menjalankan tugas (selesai dieksekusi).
Gambar perubahan status
proses :
3)
Proses
control block (PCB)
Setiap
proses direpresentasikan / digamabarkan oleh system operasi dengan menggunakan
Proses Control Block (PCB), seperti pada gambar di bawah ini.
Informasi yang terdapat
pada setiap proses meliputi :
·
Status proses : New, Ready, Running,
Witing dan terminated.
·
Program couter : Mengindikasikan alamat
(address) dari perintah selanjutnya untuk dijalankan untuk proses.
·
CPU Registers : Register beragam dalam
jumlah dan jenisnya tergantung pada rancangan arsitektur computer yang
bersangkutan. Register tersebut terdiri dari accumulator, stack pointer, index
register, general-purposes register, ditambah ide code information pada kondisi
apapun.
Selama
Program Counter berjalan, status informasi harus disimpan pada saat terjadi
interrupt. Pada gambar dibawah ini, ditunjukkan switching proses dari satu
proses ke proses selanjutnya.
·
Informasi penjadwalan CPU : informasi
ini berisikan prisoritas dari sebuah proses, pointer ke antrian penjadwalan,
dan beberapa parameter penjadwalan yang lainnya.
·
Informasi Manajemen Memori : informasi ini
berisikan nilai (basis) dan limit register, page table, atau segment table
tergantung dari system memori yang digunakan oleh sisitem operasi.
·
Informasi Accounting : informasi ini
berisikan jumlah CPU dan real time yang digunakan, account numbers, time limits,
jumlah job maupun proses, dan lain sebagainya.
·
Informasi Status Input Output :
informasi ini berisikan deretan input output device (seperti tape driver) yang
dialokasikan untuk proses tersebut, deretan file yang dibuka, dan lain
sebagainya.
4)
Antrian
Penjadwalan
Penjadwalan
di persentasikan dalam bentuk antrian yang disimpan sebagai linkedlis dan berisi
pointer awal dan akhir PCB. Jenis-jenis antrian penjadwalan sebagai berikut :
·
Job Queue. Semua proses masuk pada suatu
system akan diletakkan ke dalam job queue.
·
Ready Queue. Proses yang ada di memori
utama menunggu untuk dieksekusi diletakkan di list yang disebut ready queue.
·
Device Queue. Proses yang sedang
menungguperalatan I/O tertentu.
Setiap
proses dapat berpindah dari satu atrian ke antrian lain. Gambar dibawah ini
menunjukan contoh ready queue dan device queue.
Representasi dari
penjadwalan proses dapat dilihat dibawah ini.
5)
Penjadwalan
(scheduler)
Dua bentuk penjadwalan
:
·
Longterm-Scheduler (jib scheduler),
menyeleksi proses yang harus dibawa ke
ready queue.
·
Short-term Scheduler (CPU
scheduler),proses yang siap untuk dieksekusi, dan mengalokasi CPU kesatu ke
proses tersebut.
Dari
kedua penjadwalan tersebut ada satu jenis penjadwalan yang disebut medium-term
scheduler terdapat gambar di bawah ini.
Short-term
scheduler terjadi sangat sering (dalam milidetik), setiap proses dijadwal
dengan cepat, sedangkan long-term scheduler terjadi sangat jarang (dalam detik
atau menit), proses setiap proses dijadwalkan dengan lambat. Long-term scheduler
digunakan untuk mengontrol tingkat multiprogramming.
Secara umum, proses :
·
I/O bound process, yaitu proses yang
membutuhkan lebih banyak waktu untuk menjalankan I/O daripada komputasi,
sehingga CPU burst yang dibutuhkan lebih singkat.
·
CPU bound process, yaitu proses yang
membutuhkan lebih banyak waktu untuk melakukan komputasi dari pada menjalankan
I/O sehingga CPU burt yang dibutuhkan lebih lama.
6)
Context
Switch
Ketika
CPU berpindah dari proses satu ke proses lainnya, system harus menyimpan status
dari proses yang lama dam membuka state proses baru yang sudah disimpan.
Context switch adalah penyimpanan status proses dan mengambil status proses
yang baru pada saat terjadi switching. Saat perpindahan proses, system tidak
berkerja. Waktunya tergantung perangkat keras yang digunakan.
7)
Pembuatan
Proses
Aktifitas dengan
pembuatan proses, antara lain :
§ Memberi
identitas (nama) pada proses yang dibuat.
§ Menyisipkan
proses list proses atau label proses.
§ Menentukan
prioritas awal proses.
§ Membuat
PCB.
§ Mengalokasi
resource awal bagi proses tersebut.
Bebrapa kejadian yang
menyebabkan pembuatan suatu proses baru, antara lain :
§ Pada
lingkungan betch sebagai tambahan atas pemberian job. Setelah menciptakan
proses baru, system opersi melanjutkan untuk membaca jab selanjutnya.
§ Pada
lingkungan interaktif, pada saat user baru saja.
§ Sebagai
tanggapan atas suatu aplikasi (seperti mencetak file, system operasi dapat
menciptakan proses yang akan mengelola pencetakan itu).
§ Proses
menciptakan proses lain (child).
Selama
eksekusi, proses mungkin akan membuat membuat proses yang baru.proses itu
dinamakan parent, proses yang dibuat dinamkan child. Proses pembuatan proses
anak membentuk pohon proses.
Pembagian sumber daya :
·
Parent dan child membagi semua sumber
daya yang ada.
·
Child menggunakan sebagian dari sumber
daya yang digunakan parent.
Bentuk eksekusi :
·
Parent melanjutkan eksekusi beriringan
dengan child.
·
Parent menunggu hingga bebrapa atau
seluruh child selesai.
Pada
UNIX, perent akan membentuk child dengan menggunakan system call fork. Setelah
pemanggilan fork, perent kembali berjalan secara parallel dengan child. Child
dapat memanggil fork untuk membentuk child lainnya. System call exec digunakan
setelah system callfork mengganti alamat memori proses dengan program baru.
Lain halnya DOS, pada MS-DOS, sisitem call akan memanggil binary file tertentu
yang ada pada memori dan mengeksekusinya sebagai child. Perent akan running
kembali seyelah child selesai eksekusi. Dengan begitu perent dan child tidak
dapat berjalan secara parallel. Gambar bentuk pohon pada UNIX.
8)
Penghentian
Proses
Proses
berhenti jika meyelesaikan pernyataan terakhir,dan meminta pada system operasi
untuk menghapus dengan menggunakan system call exit. Proses pengembalian semua
data (output) ke perent proses melalui system call wait. Kemudian proses
dihapus dari list atau tabel system, dilanjutkan dengan menghapus PCB.
Penghapusan
menjadi sangat kompleks jika proses yang akan dihentikan tersebut mempengaruhi
proses yang lain. Pada system, proses anak akan dihentikan secara otomatis jika
proses induk berhenti. Tapi, beberapa system menggangap bahwa proses anak ini
terpisah dengan induknya, sehingga proses anak tidak ikut dihentikan secara
otomatis pada saat proses induk dihentikan.
Perent dapat menghentikan
eksekusi proses child denga menggunakan system call abort. Proses di hentikan
karena bebrapa alas an :
·
Child mengalokasi sumber daya melampaui
batas.
·
Tugas child tidak dibutuhkan lebih
lanjut.
·
Parent berhenti, karena system aperasi
tidak mengijinkan child unyuk melanjutkan jika parent berhenti dan terminasi
dilanjutkan.
9)
Proses
Yang Saling Bekerja Sama (Cooperating Process)
Proses yang dieksekusi oleh system operasi mungkin berupa proses yang terpisah (independence)atau
proses yang saling bekerja sama (cooperate). Proses yang terpisah adalah
proses yang tidak berakibat atau diakibatkan oleh eksekusi dari proses lain.
Sedangkan proses yang saling bekerja sama adalah proses yang dapat berakibat
atau diakibatkan oleh Eksekusi dari proses lain. Contoh :
P0 menunggu printer
P1 menunggu disk drive
Apabila proses terpisah, meskipun P1 ada dibelakang P0,
namun jika disk drive tidak brkerja, P1 bisa dieksekusi terlebih
dahulu. Sebaliknya jika proses tersebut
saling bekerjasama maka eksekusi pada suatu proses akan sangat berpengaruh pada
proses yang lain, karena mereka saling berbagi data. Contoh :
P1: ..., ..., ..., ..., P2,
...
P2: ..., ..., ..., ..., ..., ...
Misalkan P1 adalah program dalam MS-Word dan P2
adalah program Paintbrush. MSWord memanggil Paintbrush.
Hal ini akan membutuhkan waktu penyimpanan yang cukup besar.
Sehingga perlu swapping (memindahkan data yang tidak segera dipakai dari
memori utama ke memori sekunder. Keuntungan proses yang saling bekerja sama
adalah terjadi pembagian informasi, meningkatkan kecepatan komputasi, proses
dapat dibagi dalam modul dan lebih memberikan kenyamanan pada programmer.
Untuk mengillustrasikan proses yang saling bekerjasama ini
digunakan producer-consumer problem. Producer adalah suatu proses yang
menghasilkan informasi yang akan dikonsumsi oleh consumer. Sebagai contoh:
program untuk mencetak menghasilkan karakter yang akan dikonsumsi oleh printer
driver, compiler menghasilkan kode assembly yang akan dikonsumsi
oleh assembler, assembler menghasilkan objek modul yang akan
dikonsumsi oleh leader. Kerja producer dan consumer ini
harus disinkronkan sehingga consumer tidak akan meminta item yang
belum diproduksi oleh producer. Unbounded-buffer producer-consumer
problem tidak menggunakan batasan ukuran di buffer. Consumer dapat
selalu meminta item baru, dan producer dapat selalu menghasilkan item
baru. Permasalahan Terjadi pada bounded-buffer producer-consumer dimana
buffer yang digunakan mempunyai ukuran tertentu. Consumer harus
menunggu jika buffer kosong, Dan producer harus menunggu jika buffer
penuh. Penyelesaian permasalahan Boundedbuffer producer-consumer dengan
solusi shared memory menggunakan data shared.
Berikut :
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
Proses producer :
item nextProduced;
while (1) {
while (((in + 1) %
BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) %
BUFFER_SIZE;
}
Proses consumer :
item nextConsumed;
while (1) {
while (in == out)
; /* do nothing */
nextConsumed =
buffer[out];
out = (out + 1) %
BUFFER_SIZE;
}
Variabel in dan out diinisialisasikan dengan nilai nol.
Buffer yang digunakan secara bersama diimplementasikan sebagai larik sirkular
dengan 2 pointer logika: in dan out. Variabel in menunjukkan posisi
kosong berikutnya pada buffer; out menunjukkan posisi penuh pertama pada
buffer. Buffer kosong jika in == out dan buffer penuh jika in = (in + 1) %
BUFFER_SIZE = out.
10)
Komunikas Antar Proses (Interprocess Communication)
Komunikasi antar proses
adalah mekanisme proses untuk berkomunikasi
dan melakukan sinkronisasi aksinya. Komunikasi dilakukan dengan sistem pesan,
dimana proses berkomunikasi dengan proses lain tanpa menggunakan
variabel yang dishare. Fasilitas Interprocess communication (IPC)
terdiri Dari dua operasi :
send(pesan) dimana ukuran
pesan bisa tetap atau berbeda-beda
receive(pesan)
Apabila proses P dan proses Q akan melakukan
komunikasi, maka Kedua proses ini memerlukan :
·
Tersedia saluran komunikasi
antara kedua proses tersebut.
·
Menukar pesan menggunakan
send atau receive
Sedangkan
implementasi saluran komunikasi dalam bentuk :
·
Fisik , misalnya shared
memory, hardware bus
·
Logika, misalnya properti
logika
Terdapat
dua bentuk komunikasi antar proses yaitu komunikasi langsung (direct
communication) dan komunikasi tak
langsung (indirect communication).
Ø Komunikasi Langsung
Bentuk komunikasi langsung adalah proses melakukan komunikasi
langsung ke
proses lain. Pada
komunikasi langsung, harus disebutkan nama proses secara eksplisit.
send(P,pesan);
mengirim pesan ke proses P.
receive(Q,pesan);
menerima pesan dari proses Q.
Properti yang harus terdapat pada saluran komunikasi terdiri dari
:
a. Terdapat sambungan yang
dapat bekerja secara otomatis antara tiap
pasangan proses yang ingin berkomunikasi.
b. Sambungan tersebut menghubungkan tepat satu pasangan proses
yang akan
berkomunikasi.
c. Antar tiap-tiap pasangan proses terdapat tepat satu saluran.
d. Sambungan tersebut mungkin bersifat unidirectional,
namun biasanya bidirectional.
Ø Komunikasi Tidak Langsung
Pada komunikasi tak langsung pengiriman atau penerimaan pesan
dilakukan
melalui mailbox (port). Mailbox adalah suatu objek yang mana
pesan-pesan
ditempatkan oleh proses atau dapat dihapus. Tiap-tiap mailbox
memiliki identitas unik. Dua buah proses dapat saling berkomunikasi hanya jika
mereka saling menggunakan mailbox secara bersama-sama. Properti yang harus
disediakan pada saluran komunikasi adalah :
a. Sambungan antara 2 proses diberikan jika antara kedua proses
tersebut saling
menggunakan mailbox secara bersama-sama.
b. Sambungan tersebut dihubungkan dengan beberapa proses.
c. Antar tiap-tiap pasangan proses yang saling berkomunikasi, ada
sejumlah
sambungan yang berbeda, tiap-tiap link berhubungan dengan satu
mailbox.
d. Sambungan tersebut mungkin bersifat unidirectional,
namun biasanya bidirectional.
Operasi yang terdapat pada system mailbox adalah membuat mailbox
baru,
mengirim dan menerima pesan melalui mailbox dan menghapus
mailbox. Primitif yang terdapat pada
komunikasi tak langsung adalah :
send(A,pesan);
mengirim pesan ke mailbox A.
receive(A,pesan);
menerima pesan dari mailbox A.
Sambungan mempunyai beberapa kapasitas yang menentukan jumlah
pesan
yang dapat
ditampung sementara. Bentuknya berupa
antrian pesan yang dilewatkan ke
sambungan. Terdapat tiga cara implementasi antrian pesan
tersebut yaitu :
1. Zero Capacity: Antrian memiliki panjang
maksimum nol, sehingga tidak ada pesan yang menunggu di link. Pada kasus ini,
pengirim pesan harus menunggu penerimapesan menerima pesan yang disampaikan
sebelum ia mengirim pesan lagi. Kedua proses ini harus berjalan secara sinkron.
Sinkronisasi ini sering disebut dengan istilah rendezvous.
2. Bounded
Capacity. Antrian memiliki panjang tertentu (n), sehingga ada palingbanyak
n pesan yang menunggu di link. Jika antrian tidak dalam keadaan penuh, maka
jika ada pesan baru dapat menempati antrian yang paling akhir, sehingga pengirim
tidak perlu menunggu lagi untuk melanjutkan eksekusi. Jika antrian dalam keadaan
penuh, maka pengirim harus menunggu sampai ada tempat kosong.
3. Unbounded
Capacity. Antrian memiliki panjang yang tidak tertentu, sehingga ada sejumlah
pesan yang dapat menunggu di link. Pengiriman tidak pernah menunda pekerjaan.
Contoh
komunikasi antar proses adalah pada system client server. Komunikasi
client
server menggunakan berbagai bentuk antara lain socket, remote procedure call
(RPC) dan remote
method invocation (RMI).
Sebuah
socket didefinisikan sebagai endpoint for communication. Socket
didefinisikan dengan gabungan antara alamat IP dan port, misalnya
socket 161.25.19.8:1625 mengacu ke port 1625 pada host 161.25.19.8.
yang terdapat pada gambar di bawah ini :
Remote procedure call (RPC)
merupakan prosedur pemanggilan abstrak antar proses pada system jaringan. Pada RPC terdapat stub yaitu proxy
pada sisi
client
untuk prosedur aktual ke server. Stub
pada sisi client menghubungi server dan melewatkan parameter, kemudian stub
pada sisi server menerima pesan tersebut, menerima parameter dan membentuk
prosedur untuk proses server pada gambar di atas.
Pada bahasa pemrograman Java terdapat remote method invocation
(RMI) yang merupakan mekanisme untuk berkomunikasi pada jaringan yang mempunyai bentuk yang sejenis dengan
RPC. RMI memungkinkan program Java pada
satu mesin mengirim dan menerima method dari obyek secara remote, yang terdapat
gambar di bawah ini.
11)
Thread
Suatu proses didefinisikan
oleh resource yang digunakan dan lokasi yang akan dieksekusi. Namun
adakalanya proses-proses akan menggunakan resource secara bersama-sama. Suatu
unit dasar dari CPU utilization yang berisi program counter, kumpulan register,
dan ruang stack disebut dengan thread atau lighweight process (LWP).
Thread akan bekerjasama dengan thread yang lainnya dalam hal
penggunaan bagian kode, bagian data, dan resource sistem operasi,
seperti open file dan sinyal secara kolektif yang sering disebut dengan task.
Apabila dilakukan perbandingaan antara sistem multi thread dengan system
multi proses dapat disimak berikut. Pada
multi proses, setiap proses secara terpisah melakukan operasi tidak bekerja
sama dengan proses lain, setiap proses mempunyai program counter, stack
register dan ruang alamat sendiri.
Organisasi jenis ini berguna jika job dibentuk oleh proses-proses
yang tidak saling berhubungan. Multi
proses membentuk task yang sama.
Sebagai contoh, multi proses dapat menyediakan data untuk mesin secara remote
pada implementasi system file jaringan.
Hal ini lebih efisien apabila satu proses terdiri dari multi thread
melayani tugas yang sama. Pada
implementasi multiproses, setiap proses mengeksekusi kode yang sama tetapi
mempunyai memori dan resource file sendiri. Satu proses multi thread menggunakan resource
lebih sedikit daripada multi proses, termasuk memory, open file dan
penjadwalan CPU. Seperti halnya proses, thread memiliki status: ready,
blocked, running dan terminated, dan hanya satu thread
yang aktif dalam satu waktu. Thread dapat membuat child thread.
Jika satu thread dalam keadaan blocked, maka thread yang
lainnya dapat dijalankan. Namun, tidak saling bebas, Sebab semua thread dapat
mengakses setiap alamat dalam satu task, thread dapat membaca dan
menulisi stack dari thread yang lainnya. Sehingga tidak ada proteksi
antara satu thread terhadap thread yang lainnya. Suatu proses
dapat terdiri dari satu thread (single thread) dan beberapa thread (multi
thread) seperti pada gambar.
Keuntungan sistem thread adalah pada respon lebih cepat,
menggunakan
resource bersama-sama, lebih ekonomis dan meningkatkan utilitas arsitektur
mikroprosessor.
Thread terdiri dari dua bentuk yaitu user thread dan kernel thread. User thread
adalah thread
yang diatur dengan menggunakan pustaka user level thread. Contoh sistem yang menggunakan user thread
adalah POSIX Pthreads, Mach C-threads dan Solaris threads. Sedangkan kernel thread adalah thread
yang didukung oleh Kernel. Contoh sistem yang menggunakan kernel thread
adalah Windows 95/98/NT/2000,Solaris, Tru64 UNIX, BeOS dan Linux.
Model multi
thread terdiri dari model Many-to-One, One-to-One dan Many-toMany.
Pada model Many-to-One, beberapa User level thread Dipetakan ke
satu kernel thread dan digunakan pada system
yang tidak mendukung kernel Threads seperti pada
gambar. Pada model One-to-One, setiap user-level thread dipetakan
ke kernelthread seperti pada gambar, misalnya pada Windows 95/98/NT/2000
dan OS/2. Pada model Many-to-Many, user level thread dipetakan ke
beberapa kernel threads. Pada sistem operasi ini akan dibuat sejumlah kernel
thread seperti gambar, contohnya Solaris 2 dan Windows NT/2000 dengan ThreadFiber
package.
Contoh
sistem operasi yang menggunakan sistem thread adalah Solaris 2.
Solaris 2 mendukung user-level
thread dan kernel thread.
Pembuatan dan penjadwalan
Gambar :
model Many to Many user level thread didukung oleh pustaka dan
kernel tidak mempunyai pengetahuan tentang user level thread. Antara user level thread dan kernel
thread terdapat perantara
yang disebut dengan lightweight
process (LWP). Setiap task
terdapat setidaknya satu LWP seperti pada gambar. Semua operasi pada kernel dieksekusi oleh kernel
level thread. Terdapat satu kernel level thread
untuk setiap LWP dan terdapat beberapa kernel level thread yang
menjalankan kernel baik yang dihubungkan maupun tidak dengan LWP.
Kernel thread mempunyai
struktur data yang kecil dan sebuah stack.
Perpindahan antar kernel
thread tidak mengubah informasi akses memori sehingga relatif cepat. LWP berisi process control block
dengan register data, informasi akutansi dan informasi memori. Perpindahan antar LWP membutuhkan tambahan
pekerjaan dan relatif lambat. User
level thread hanya memerlukan sebuah stack dan sebuah program
counter, tanpa resource dari kernel. Kernel tidak dilibatkan dalam penjadwalan user
level thread, sehingga perpindahan antar user level thread sangat
cepat. Terdapat ratusan user level
thread, tetapi semua kernel yang terlihat dalam bentuk LWP yang mendukung user-level
thread. Proses thread pada
Solaris 2 dapat dilihat pada gambar di bawah ini.
Thread
pada Windows 2000 mengimplementasikan pemetaan one-to-one.
Setiap thread terdiri dari thread
id, kumpulan register, stack user dan kernel yang
terpisat serta ruang data
privat. Thread pada Linux sering disebut sebagai task daripada thread. Pembuatan thread dilakukan dengan
menggunakan system call clone().
Clone() memungkinkan task anak menggunakan ruang alamat
dari task (proses) parent. Bahasa pemrograman Java menggunakan Java
thread yang dibuat dengan menggunakan class Thread dan mengimplementasikan
antar muka yang bersifat runnable (dapat dijalankan). Java thread diatur oleh Java
virtual machine (JVM). Java thread
terdiri dari state new, runnable, blocked dan dead
seperti gambar di bawah ini.
Tidak ada komentar:
Posting Komentar