Proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor’s register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global. suatu program adalah satu entitas pasif, seperti isi dari sebuah berkas yang disimpan didalam disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang mengkhususkan pada instruksi selanjutnya untuk dijalankan dan seperangkat sumber daya/ resource yang berkenaan dengannya.
Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian tulisan-text adalah sama, data section bervariasi. Juga adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja.
Prioritas proses merupakan suatu nilai atau besaran yang menunjukkan seberapa sering proses 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. Suatu sistem operasi dapat saja menentukan semua proses dengan prioritas yang sama, sehingga setiap proses memiliki kesempatan yang sama. Suatu sistem operasi dapat juga merubah nilai prioritas proses tertentu, agar proses tersebut akan dapat memiliki kesempatan lebih besar pada eksekusi berikutnya. Misalnya: pada proses yang sudah sangat terlalu lama menunggu eksekusi, sistem operasi menaikkan nilai prioritasnya.
Meskipun tiap-tiap proses terdiri dari suatu keastuan yang terpisah, namun ada kalanya proses-proses tersebut butuh untuk saling berkomunikasi. Satu proses bisa dibangkitkan dari output prosess lainnya sebagai input.
Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses didefinisikan sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu. Gambar 3.1 menunjukkan diagram status proses. Tipa-tiap proses dapat memiliki salah satu status di bawah ini:
- New : Proses sedang dibuat
- Running : Proses bisa dieksekusi, karena CPU tidak sedang mengerjakan tugas yang lain
- Waiting : Proses sedang menunggu beberapa event yang akan terjadi ( seperti menunggu untuk menyelesaikan I/O atau menerima sinyal)
- Ready : Proses menunggu jatah waktu dari prosesor
- Terminated : Proses selesai dieksekusi
Komunikasi antar proses
· Beberapa proses biasanya berkomunikasi dengan proses lainnya.
· Contohnya pada shell pipe line : output dari proses pertama harus diberikan kepada proses ke dua dan seterusnya.
· Pada beberapa sistem operasi, proses-proses yang bekerja bersama sering sharing (berbagi) media penyimpanan, dimana suatu proses dapat membaca dan menulis pada shared storage (main memory atau files).
Mekanisme proses untuk komunikasi dan sinkronisasi aksi
- Sistem Pesan – komunikasi proses satu dengan yang lain dapat dilakukan tanpa perlu pembagian data.
- IPC menyediakan dua operasi :
- send(message) – pesan berukuran pasti atau variabel
- receive(message)
- Jika P dan Q melakukan komunikasi, maka keduanya memerlukan :
- Membangun jalur komunikasi diantara keduanya
- Melakukan pertukaran pesan melaui send/receive
- Implementasi jalur komunikasi
- physical (shared memory, hardware bus)
- logical (logical properties)
A. Process Control Block(PCB)
Masing-masing proses direpresentasikan oleh Sistem Operasi dengan menggunakan Processs Control Block(PCB).
- Status Proses. New, Ready, running, waiting, terminated, dll.
- Program Counter, Menunjukkan alamat berikutnya yang akan dieksekusi oleh proses tersebut.
- CPU Registers. Registyer bervariasi tipe dan jumlahnya tergantung arsitektur computer yang bersangkutan. Register-register tersebut terdiri atas:accumulator, index register, stack pointer, dan register serbaguna dan beberpa informasi tentang kode kondisi. Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt.
Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan bebarpa parameter penjadwalan yang lainnya.
1. Informasi Manajemen Memori
Informasi tersebut berisi nilai(basis) dan limit register, page table atau segment table tergantung pada system memory yang digunakan oleh SO.
2. Informasi Accounting
Informasi tersebut berisi jumlah CPU dan real time yang digunakan, time limits, account numbers, jumlah job atau proses, dll.
3. Informasi Status I/O
Informasi tersebut berisi deretan I/O device(sperti tape driver) yang dialokasikan untuk proses tersebut, deretan file yang dibuka, dll.
B. Scheduling Queue
Proses-proses yang masuk pada suatu proses akan diletakkan ke dalam job queue. Sedangkan proses-proses yang ada di memori utama dan menunggu untuk dieksekusi diletakkan pada suatu list yang disebut dengan ready queue. Queue ini disimpan sebagai linked list dan berisi pointer awal dan akhir PCB. Tiap-tiap PCB memiliki suatu pointer field yang menunjukkan ke proses berikutnya dalam ready queue. Deretan proses yang sedang menunggu peralatan I/O tertentu disebut dengan device queue. Gambar 3.4 menunjukkan contoh ready queue dan device queue.
C. Schedulers
Ada 2 bentuk scheduler, yaitu:
- The Longterm Scheduler(job scheduler), menyeleksi proses-proses dari suatu pool dan membawanya ke memori utama untuk dieksekusi.
- The Short-term Scheduler(CPU scheduler). Menyeleksi proses-proses yang siap untuk dieksekusi, dan mengalokasikan CPU ke salah satu dari proses-proses tersebut.
D. Context Switch
Context Switch adalah proses penyimpanan status proses dan mengambil status proses yang baru pad asst terjadi switching.
E. Pembuatan Proses
Ada beberapa aktifitas berkenaan dengan pembuatan proses, antara lain:
- Memberi identitas(nama) pada proses yang dibuat
- Menyisipkan proses pada list proses atau table proses
- Menentukan prioritas awal proses
- Membuat PCB
- Mengalokasikan resource awal bagi proses tersebut
Ada beberapa kejadian yang menyebabkan pembuatan suatu proses baru, antara lain:
- Pada lingkungan batch sebagai tambahan atas pemberian job. Setelah menciptakan proses baru, system operasi melanjutkan untuk membaca job selanjutnya.
- Pada lingkungan interaktif, pada saat user baru saja login
- Sebagai tanggapan attas suatu aplikasi(seperti:mencetak file, system operasi dapat menciptakan proses yang akan mengelola pencetakan itu).
- Proses menciptakan proses lain(child).
Selama eksekusi, suatu proses mungkin akan membuat suatu proses yang baru. Proses tersebut dinamakan parent, sedangkan proses yang dibuat dinamakan child.
Pada UNIX, parenta akan membentuk child dengan menggunakan FORK system call. Setelah pemanggilan FORK, paret kembali berjalan secara parallel dengan child. Demikian pula, child dapat meanggil FORK untuk membentuk child lainnya. Lain halnya dengan DOS, pada MS-DOS, system call akan memanggil binary file tertentu yang ada pada memori dan mengeksekusinya sebagai child. Parent akan running kembali setelah child selesai eksekusi. Dengan demikian parent dan child tidak dapat berjalan secara parallel.
Bentuk eksekusi:
- Parent melanjutkan eksekusi beriringan dengan children
- Parent menunggu hingga beberapa atau seluruh children selesai
Bentuk ruang alamat:
- Child proses adalah duplikat dari parent proses
- Child proses telah memanggil program ke dirinya
Pada akhir proses, child mengembalikan hasil proses pada parent-nya untuk mengantisipasi hal ini, suaut proses hanya boleh memiliki satu parent tapi satu parent boleh memiliki lebih dari satu child.
F. Penghentian Proses
Suatu proses berhenti jika telah menyelesaikan pernyataan terakhir, dan meminta pada system operasi untuk menghapusnya dengan menggunakan exit system call. Proses mengembailkan semua data (output) ke parent proses. Kemudian proses dihapus dari list atau table system, dilanjtukan dengan menghapus PCB.
Penghapusan proses ini akan menjadi sangat kompleks jika teryata proses yang akan dihentikan tersebut membuat proses-proses yang lain, Pada beberapa system, proses-proses anak akan dihentikan secara otomatis jika proses induknmya dihentikan. Namun, ada beberapa system yang menganggap bahwa proses anak ini tidak iktu dihentikan secara otomatis pada saat proses induk dihentikan.
Ada bebrapa alasan yang menyebabkan suatu proses harus dihentikan, antara lain:
- Proses memang sudah selesai mengerjakan tugasnya(selesai secara normal). Dalam hal ini akan mengeksekusi panggilan layanan system operasi untuk menandakan bahwa proses telah berjalan secara lengkap
- Proses berjalan melebihi batas waktu yang telah diberikan padanya
- Memori tidak tersedia. Proses membutuhkan ruang memori yang lebih besar daripada yag disediakan oleh system
- Proses mencoba untuk mengakses kawasam memori yang tidak diijinkan untuk diakses
- Terjadi kesalahan karena pelanggaran proteksi. Proses menggunakan resource yang tidak diijinkan
- Terjadi kesalahan penghitungan, seperti melakukan pembagian dengan nol atau menyimpan angka yang lebih besar dari pada yang dapat diakomodasikan oleh perangkat keras.
- Proses menunggu terlalu lama
- Terjadi kegagalan I/O, seperti tidak mampu menemukan file atau kegagalan membaca atau menulis setelah dilakukan perulangan beberapa kali.
- Proses berusaha mengeksekusi instruksi yang tidak ada. Hal ini sering diakibatkan oleh pencabangan ke daerah data dan berusaha mengeksekusi daerah tersebut
- Proses berusaha menggunakan instruksi yang disimpan untuk system operasi
- Terjadi kesalahan penggunaan data, karena bagian data mempunyai tipe data yang salah atau tidak diinisialisai
- Terjadi campur tangan(intervensi) dari operator atau system operasi, dengan suatu alas an tertentu(misalnya:terjadi deadlock)
- Proses induknya berakhit
- Atas permintaan dari proses induk
Tidak ada komentar:
Posting Komentar