Manajemen Proses Sistem Operasi

Konsep Proses

Proses didefinisikan sebagai program yang sedang dieksekusi. Menurut Silberschatz proses tidak hanya sekedar suatu kode program (text section), melainkan meliputi beberapa aktivitas yang bersangkutan seperti program counter dan stack. Sebuah proses juga melibatkan stack yang berisi data sementara (parameter fungsi/metode, return address, dan variabel lokal) dan data section yang menyimpan variabel-variabel global. Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mencakup program counter, register, dan variabel di dalamnya. Keterkaitan hubungan antara proses dengan Sistem Operasi terlihat dari cara Sistem Operasi menjalankan/mengeksekusi proses. Sistem Operasi mengeksekusi proses dengan dua cara yaitu Batch System yang mengeksekusi jobs dan Time-shared System yang mengatur pengeksekusian program pengguna (user) atau tasks. Bahkan pada sistem pengguna tunggal (single user) pun seperti Microsoft Windows dan Mac OS, seorang pengguna mampu menjalankan beberapa program pada saat yang sama, seperti Spread Sheet, Web Browser, dan Web Email. Bahkan jika pengguna hanya menggunakan satu program saja pada satu waktu, sistem operasi perlu mendukung program internalnya sendiri, seperti manajemen memori. Dengan kata lain, semua aktivitas tersebut adalah identik sehingga kita menyebutnya ”Proses”.

Pembentukan Proses

Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call create-process membentuk proses turunan (child process) yang dilakukan oleh proses induk parent process. Proses turunan tersebut juga mampu membuat proses baru sehingga kesemua proses-proses ini pada akhirnya membentuk pohon proses. Ketika sebuah proses dibuat maka proses tersebut dapat memperoleh sumber-daya seperti ”waktu CPU”, ”memori”, ”berkas” atau perangkat ”M/K”. Sumber daya ini dapat diperoleh langsung dari Sistem Operasi, dari Proses Induk yang membagi-bagikan sumber daya kepada setiap proses turunannnya, atau proses turunan dan proses induk berbagi sumber-daya yang diberikan Sistem Operasi. Ada dua kemungkinan bagaimana jalannya (running) proses induk dan turunan berjalan (running). Proses-proses tersebut berjalan secara konkuren atau proses induk menunggu sampai beberapa/seluruh proses turunannya selesai berjalan. Juga terdapat dua kemungkinan dalam pemberian ruang alamat (address space) proses yang baru. Proses turunan dapat merupakan duplikasi. Sistem operasi UNIX mempunyai system call fork yang berfungsi untuk membuat proses baru. Proses yang memanggil system call fork ini akan dibagi jadi dua, proses induk dan proses turunan yang identik. Analoginya seperti pembelahan sel, dimana satu sel membelah jadi dua sel yang identik. Proses induk dan turunan independen satu sama lain dan berjalan bersamaan. Return code dari system call ini adalah suatu integer. Untuk proses anak return code-nya adalah 0 sementara untuk proses induk return code-nya adalah nomor identifikasi proses (PID) dari turunannya. Ada juga system call exec yang berguna untuk membuat proses turunan yang terbentuk memiliki instruksi yang berbeda dengan proses induknya. Dengan kata lain, proses induk dan proses turunan tidak lagi identik tapi masing-masing punya instruksi berbeda. Bila UNIX menggunakan kemungkinan pertama (proses baru merupakan duplikasi induknya) maka sistem operasi DEC VMS menggunakan kemungkinan kedua dalam pembuatan proses baru yaitu setiap proses baru memiliki program yang diload ke ruang alamatnya dan melaksanakan program tersebut. Sedangkan sistem operasi Microsoft Windows NT mendukung dua kemungkinan tersebut. Ruang alamat proses induk dapat diduplikasi atau proses induk meminta sistem operasi untuk me-load program yang akan dijalankan proses baru ke ruang alamatnya.

Terminasi Proses

Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir serta

meminta sistem operasi untuk menghapus perintah tersebut dengan menggunakan system call exit. Pada saat itu, proses dapat mengembalikan data keluaran kepada proses induk-nya melalui system call wait. Semua sumber-daya yang digunakan oleh proses akan dialokasikan kembali oleh system operasi agar dapat dimanfaatkan oleh proses lain. Suatu proses juga dapat diterminasi dengan sengaja oleh proses lain melalui system call abort. Biasanya proses induk melakukan hal ini pada turunannya. Alasan terminasi tersebut seperti:

  • Turunan melampaui penggunaan sumber-daya yang telah dialokasikan. Dalam keadaan ini, proses induk perlu mempunyai mekanisme untuk memeriksa status turunannya-nya.
  • Task yang ditugaskan kepada turunan tidak lagi diperlukan.
  • Proses induk selesai, dan sistem operasi tidak mengizinkan proses turunan untuk tetap berjalan.

Jadi, semua proses turunan akan berakhir pula. Hal ini yang disebut cascading termination.

Status Proses

  • Sebuah proses dapat memiliki tiga status utama yaitu:
  • Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi.
  • Waiting: status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses M/K.
  • Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor. Terdapat dua status tambahan, yaitu saat pembentukan dan terminasi:
  • New: status yang dimiliki pada saat proses baru saja dibuat.
  • Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi.

Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus Ready atau Waiting. Ada tiga kemungkinan bila sebuah proses memiliki status Running:

  • Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
  • Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.
  • Jika suatu event terjadi pada saat proses dieksekusi (seperti ada permintaan M/K) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting.

Process Control Block

Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) – juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 10.2, “Process Control Block”. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:

  • Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
  • Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.
  • Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
  • Informasi manajemen 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 Bagian V, “Memori”).
  • Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun jumlah job atau proses, dan banyak lagi.
  • Informasi status M/K: Informasi termasuk daftar dari perangkat M/K yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
  • PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.

Konsep Thread

Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya system 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 multi-threading. 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.

Keuntungan Thread

Keuntungan dari program yang multithreading terbagi menjadi empat kategori:

  • Responsif. Aplikasi interaktif menjadi tetap responsif meski pun sebagian dari program sedang diblok atau melakukan operasi yang panjang kepada pengguna. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan gambar.
  • Berbagi sumber daya. thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
  • Ekonomis. Pembuatan sebuah proses memerlukan 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.
  • Utilisasi arsitektur multiprocessor. Keuntungan dari multithreading dapat 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).

Model Multithreading

  • 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.

  • 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.

  • Model Many-to-Many

Model Many-to-Many memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna thread. Jumlah thread kernel dapat spesifik untuk sebagian aplikasi atau sebagian mesin.

Thread cancellation

Thread cancellation ialah pemberhentian thread sebelum tugasnya selesai. Umpama, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan biasa disebut target thread. Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda:

  • Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
  • Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.

Penjadwal

Sebuah proses berpindah-pindah di antara berbagai penjadwalan antrian seumur hidupnya. Sistem operasi harus memilih dan memproses antrian-antrian ini berdasarkan kategorinya dengan cara tertentu. Oleh karena itu, proses seleksi ini harus dilakukan oleh scheduler yang tepat. Terdapat dua jenis scheduler pada CPU yang umum dipakai, yaitu:

  • Long-Term Scheduler atau Job Scheduler yang bertugas memilih proses dari tempat ini dan mengisinya ke dalam memori.
  • Short-Term Scheduler atau CPU scheduler yang bertugas memilih proses yang sudah siap untuk melakukan eksekusi,dan dialokasikan di CPU untuk proses tersebut.

Perbedaan signifikan pada kedua scheduler ini adalah frekuensi dari eksekusinya. Short-Term Scheduler harus sering memilih proses baru untuk CPU dan eksekusinya paling sedikit 1 kali dalam 100 milidetik. Jadi,sudah seharusnya scheduler ini berjalan cepat. Sedangkan pada Long-Term Scheduler melakukan eksekusi lebih sedikit dengan selang waktu pada kisaran menit untuk tiap eksekusinya.

Hubungan Antara Proses

Ada dua model yang fundamental dalam hubungan antar proses yaitu:

  • Shared Memori. Dalam model ini, proses saling berbagi memori. Untuk menjaga konsistensi data, perlu diatur proses mana yang dapt mengakses memori pada suatu waktu.
  • Message Passing. Pada model ini proses berkomunikasi lewat saling mengirimkan pesan.

Komunikasi Proses Dalam Sistem

Cara lain yang bila dilakukan oleh sistem operasi untuk memungkinkan komunikasi antar proses yaitu dengan menyediakan alat-alat proses kooperatif untuk berkomunikasi lewat Inter-Process Communication (IPC). IPC menyediakan sebuah mekanisme untuk mengizinkan proses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama. IPC khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan. IPC adalah penyedia layanan terbaik dengan menggunakan sebuah system penyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara. Fungsi dari sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu dengan yang lain tanpa perlu menggunakan pembagian data. Sebuah fasilitas IPC menyediakan paling sedikit dua operasi yaitu “kirim” dan “terima”. Pesan dikirim dengan sebuah proses yang dapat dilakukan pada ukuran pasti atau variabel. Jika hanya pesan dengan ukuran pasti dapat dikirimkan, level system implementasi adalah sistem yang sederhana. Pesan berukuran variabel menyediakan system implementasi level yang lebih kompleks.

Jika dua buah proses ingin berkomunikasi, misalnya proses P dan proses Q, mereka harus mengirim pesan atau menerima pesan dari satu ke yang lainnya. Jalur ini dapat diimplementasikan dengan banyak cara, namun kita hanya akan memfokuskan pada implementasi logiknya saja, bukan implementasi fisik (seperti shared memory, hardware bus, atau jaringan). Berikut ini ada beberapa metode untuk mengimplementasikan sebuah jaringan dan operasi pengiriman/penerimaan secara logika:

  • Komunikasi langsung atau tidak langsung.
  • Komunikasi secara simetris/asimetris.
  • Buffer otomatis atau eksplisit.
  • Pengiriman berdasarkan salinan atau referensi.
  • Pesan berukuran pasti dan variabel.

3 thoughts on “Manajemen Proses Sistem Operasi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s