Process

Dalam menyelesaikan tugas secara digital, kita dibantu oleh aplikasi komputer agar hasil tugas kita dapat di selesaikan secara efisien dan akurat seperti Microsoft Word, Microsoft Excel, calculator, notetaking Evernote, dan lain-lain. Dengan ini kita akan selalu menggunakan aplikasi maupun di komputer pribadi, ponsel, ataupun di tablet. Seluruh aplikasi tersebut memliki kegunaan masing-masaing secara berbeda yang memilki fungsional yang spesifik. Namun dalam sudut padang sistem operasi, setiap aplikasi hanyalah suatu proses. setiap proses akan diatur oleh sistem operasi yang berstruktur Proses Control Block (PCB). setiap proses yang berada dalam PCB ini memilki komponen-komponen yang berisi informasi penting mengai proses seperti. dengan ini sistem operasi dapat mengidentifikasi setiap proses menggunakan PID.

Ketika sistem operasi mengekseksui suatu aplikasi (program), proses yang mewakali aplikasi tersebut akan dikomputasi oleh processor. Jika proses tersbut merupakan program yang simple, contohnya sebuah Command Line Interface Program (CLI), maka proses tersebut dalam sudut pandang processor hanyalah sebuah thread. Jika lebih, seperti multitasking program, makan proses tersesbut dapat memilki lebih dari satu thread.

Definition

Thread adalah unit dasar dari pemanfaatan CPU. Sebuah thread dalam proses akan menjalankan satu tugas (job) pada satu waktu. pada proses tradisional, setiap proses hanya memilki satu thread, sehingga program hanya dapat menjalankan satu tugas dalam satu waktu. namun jika proses memilki beberapa thread, maka prosesnya dapat menjalakan kan beberapa tugas pada satu waktu dan hal ini disebut multithreading.

Contohtohnya, jika suatu program terdiri dari proses yang memilki satu thread dapat memperbolehkan  pengguna untuk pengetikan tulisan (word processing) dan pemeriksaan ejaan (spellchecker). Ketika pengguna sedang sedang mengetik tulisan pada program maka fitur pemeriksaan ejaan akan berjalan setelah pengguna selesai menulis. lalu pengguna dapat menulis kembali tulisan jika thread telah selesai menjalkankan komputasi algoritma pengejaannya. Lalu jiga program tersebut memliki proses dengan dua thread, maka fitur pengejaan dapat berjalan secara bersamaan ketika pengguna sedang menulis tulisan pada program. Dengan ini setiap tutgas tidak harus bergantian dalam menunggu tugas lainnya.

Pada prosesor dengan singlecore mengeksekusi proses yang memilki thread lebih dari satu, maka CPU akan mengeksekusi thread-thread tersebut akan bergantian secara bersisipan dalam mengeksesusi setiap threadnya. Seakan-akan sistem terdapat processing unit yang banyak namun kenyataannya processing unit bergantian menjalankan tugas secara cepat tanpa menyelesaikan masing-masing tugas. Hal ini disebut dengan concurrency.

Upaya dalam membantu proses yang memliki thread yang banyak, mulailah berkembangnya teknologi baru yaitu multicoreprocessor. Prosesor ini adalah adalah dimana satu chip prosesor memliki prosesing unit yang lebih dari satu. Sehingga sistem operasi ini melihat sistem terdapat lebih dari satu processing unit dan dapat memanfaatkan prosesor tambahan tersesbut dalam menjalankan program dan proses. teknologi ini dibuat karena permintaan tenaga proses yang lebih tinggi pada waktunya. Multicore sistem ini dapat menjalankan concurrency lebih efektif dan efisien dalam menjalankan proses. peran multicore dalam proses yang memilki thread yang banyak adalah membagi rata thread di proses kepada masing-masing processing unit dengan rata. Contohnya jika suatu proses memilki 6 thread dalam eksekusinya dan dieksekusi dengan 2 core prosesor, maka setiap corenya dalam processornya akan mengeksekusi 3 thread secara concurrent. Proses pembagian thread dalam proses kepada beberapa prosesing unit disebut dengan parallelism, mengekseksi beberapa tugas secara bersamaan.

Benefits

Dari penjeleasan diatas bahwa multithreading sangat berguna untuk memperbolehkan processing unit unutk mengerjakan tugas yang lebih banyak dan multicore system berguna untuk membagi tugas dari proses secara bagi rata, berikut adalah 4 bagian alasan besar untuk menjalankan sistem dengan kemampuan multithreading.

Responsiveness

Program dengan kemampuan untuk multithread dapat memperbolehkan program untuk melakukan beberaka tugas secara bersamaan atau disebut multitasking. Hal ini sangat memperbolehkan pengguna dapat menggunakan fungsi utama program dan secara bersamaan program dapat memberikan fitur tambahan yang membantu pengguna dalam melesaikan tugasnya tanpa menunggu pengguna berhenti menggunakn program. Hal ini yang disebut responsive yang dimana penggua dapat menerima informasi secara instan dari hasil inputnya. Contohnya pada dimana suatu website memiliki kegunaan untuk menampilkan suatu teks pdf dan dalam website tersebut terdapat tombol untuk me-request suatu gambar dari server. Ketika pengguna memencet tombol tersebut, proses akan menjalankan thread yang berperan dalam mengatur request dari server tanpa harus memberhentikan thread yang memperbolehkan untuk scrolling dalam menampilkan document.

Resource Sharing

Sebuah proses yang terdiri dari banyak thread akan memilki resource yang sama. resource ini adalah termasuk data di storage, ruang memory dan proses heap dan stack. Dengan ini setiap tugas yang dijalankan oleh thread tidak perlu memesan resources tambahan dari sistem memory namun mengunakan resource yang telah berada dalam memory yang telah diambil oleh thread yang lain. saling membagi resource ini juga memungkinkan untuk efesiensi dalam dalam komputasi data yang sama. jika ada suatu data yang diperlukan untuk digunakan oleh beberapa tugas, maka thread-thread tersebut dapat mengakses data yang sama tanpa komputasi atau mengambil dari storage tanpa mengambil data dari storage.

Economy

Mengalokasikan memory dan resource lainnya untuk membuat proses sangatlah mahal. dengan itu, membuat proses baru sangat tidak efisien. Sebaliknya, membuat thread lebih murah dan lebih cepat. Sebuah thread juga lebih mudah untuk berpindah antara proses, dengan itu lebih efisien untuk saling beralih thread antara tugas dibandingakn untuk membuat proses baru untuk membuat tugas.

Scalability

Ketika jumlah beban dalam komputasi proses meningkat dalam sistem kita, kita memerlukan tenaga komputasi yang lebih dalam sistem kita. Bila sistem kita dan program mendukung multithreading, maka kita dapat menambahkan jumlah core dalam processor kita atau jumlah processor dalam sistem. hal ini memperbolehkan untuk membagi thread-thread proses kepada setiap core secara paralel. Namun jika sistem hanya memliki satu thread proses, maka proses tersebut hanya akan dapat di eksekusi oleh satu core, tidak peduli jumlah core yang tersedia dalam sistem atau processor sistem memerlukan menambahkan frekuensi core yang dimana lebih sulit di buat dan lebih banyak menggunakan tenaga listrik.

Parallelism

Seperti pernyataan yang di atas, multithreading sangat berguna untuk mempercepat eksekusi proses secara pararel. Parallel yang dimasud ini terdapat dua tipe, yaitu parallel data dan parallel tugas (task).

Parallel Data

Paralel adalah dimana beberapa core saling membagi data sama secara rata dengan komputasi yang sama di thread yang berbeda demi mencapai satu tujuan. contohnya jika ada sistem dengan prosesor dua core lalu ingin komputasi penjumlahan dari seluruh data array dari 1 ke N. Dalam komputasi, core 0 akan menjumlakan dari array 1 hingga N/2, secara bersamaan, core 1 menjumlakan array dari +1 ke N. lalu setelah kedua komputasi selesai, salah satu core menjumlahkan hasil dari komputasi thread di core 0 dan 1.

Parallel Task

Parallel tugas adalah dimana beberapa core membagi tugas yang banyak kepada core yang ada. data yang digunakan masing-masing core mungkin bisa sama atau berbeda. Dengan contoh sama yang diatas. Dimana terdapat 2 core yang ingin mengkomputasi dari sebuah array yang sama. ketika core 0 melakukan sebuat komputasi, secara bersamaan core 1 melakukan komputasi yang berbeda namun core tersebut dapat menggunakan atau tidak menggunakan array yang sama dengan core 0. den

Multithread Models

Pada sebenarnya, terdapat dua macam thread, yaitu user thread dan kernel thread. user thread adalah thread yang mejalankan proses milih pengguna, dan kernel thread adalah thread yang di atur langusung oleh sistem operasi. Dengan itu terdapat bergai macam relasi antara thread space tersebut.

Many to One Model

Model ini dimana beberapa user thread memilki relasi dengan satu kerel thread. dengan ini thread kernel kan menjalankan satu user thread pada satu saat. Namun kelemahan model ini adalah ketika kernel thread terkena lock oleh user thread, dan user thread lainnya harus menunggu kernel thread untuk menyelesakan tugas pada thread yang saat itu. Contoh library Green thread yang menggunakan model ini dan berjalan di pada Java Runtime Environment. Namun karena thread blocking tersebut model ini mulai di tinggalkan.

One to One Model

Model ini dimana setiap user thread memilki relasi dengan hanya satu kernel thread. sehinggal user thread memiliki jumlah yang sama dengan jumlah kernel thread. dengan ini jika salah satu thread kernel sedang di block, thread lain bisa berjalan secara parallel. Namun kekurangan dari model ini adalah sistem akan menanggung beban yang berat jika jumlah kernel thread terlalu banyak. Model ini banyak digunakan oleh sistem operasi Microsoft Windows, Linux/GNU, dan Apple MacOS.

Many to Many Model

Model ini dimana terdapat banyak user thread dan setiap threadnya dapat dijalankan oleh salah satu thread yang di kernel space. Kernel thread memilki jumlah yang sama atau lebih sedikit dari jumlah user thread. dalam model ini sangat flexible dibandingkan dengan model sebelumnya namun untuk programmer untuk mengimplementasikannya lebih sulit.

REFERENCE

Operating System Concept 10th Edition by A. Silberschatz, P. Bear Galvin, G. Gage (ch. 3 and 4)