Minggu, 29 Desember 2019

PROSES-PROSES PADA SISTEM OPERASI


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