Sabtu, 24 Maret 2018

Proses dan Threads

Nama : Novarita Milianti Putri
NRP : 2103171016
Kelas : 1 D3 Teknik Informatika A
Dosen : Bpk. Ferry Astika Saputra
Mata Kuliah : Teori Sistem Operasi


Proses dan Thread Dalam Sistem Operasi


Proses
Proses adalah konsep pokok dari sistem operasi yang dapat diartikan sebagai sebuah program yang dieksekusi. Proses merupakan unit kerja terkecil yang secara individu memiliki sumber daya-sumber daya dan dijadwalkan sistem operasi. Sistem operasi mengelola seluruh proses sesuai kebutuhan.
Adapun proses dalam Sistem Operasi antara lain :
Proses State
Status proses selalu berubah-ubah selama suatu program dieksekusi atau dijalankan. Beberapa status tersebut ialah :
New : Proses baru diciptakan.
Running : Proses sedang dijalankan.
Waiting : Proses sedang menunggu suatu kondisi tertentu untuk bisa berjalan. (misalkan menunggu respon dari perangkat I/O)
Ready : Proses menunggu untuk dilayani processor.
Terminated : Proses telah menyelesaikan eksekusi.









Process Control Block (PCB)
Sistem operasi membutuhkan banyak informasi mengenai proses guna pengelolaan proses. Semua informasi ini ada pada PCB. PCB mengandung beberapa informasi seperti berikut :
Process State : Berisi informasi suatu proses (new, running, waiting, ready, terminated)
Program Counter : Berisi informasi mengenai alamat intruksi yang akan digunakan selanjutnya.
CPU Register : Berisi register-register CPU apa saja yang digunakan.
CPU scheduling information : Berisi penjadwalan proses beserta algoritmanya.
Memori management information : Berisi informasi tentang berapa jumlah memory yang digunakan, limit register, tabel segment, dll berkenaan dengan penggunaan memory.
I/O status information : Berisi informasi  tentang perangkat apa saja yang digunakan dalam proses.
Accounting : Berisi informasi tentang statistik eksekusi proses seperti waktu yang diperlukan, jumlah proses, dll.



















Thread
Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
Merupakan sebuah status eksekusi (ready, running, suspend, block, queue, dll)
Kadang disebut sebagai proses ringan (lightweight).
Unit dasar dari dari sistem utilisasi pada processor (CPU).
Dalam thread terdapat: ID Thread, Program Counter, Register dan Stack.
Sebuah thread berbagi code section, data section dan resource sistem operasi dengan thread yang lain yang memiliki proses yang sama.










Single-Threading dan Multi-Threading
Single-Threading adalah sebuah lightweight process (proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller.
Multi-Threading adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.




Keuntungan  Multi-Threading
Responsive; tanggap: Multi-Threading mengizinkan program untuk berjalan terus walau-pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.

Kerugian Multi-Threading

Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya chace memory.
Execution time (waktu proses) dari sebuah single-thread tidak dapat diimprove (ditambah), tapi malah bisa diturunkan. Ini terjadi karena penurunan frequensi yang dibutuhkan ketika terjadi pergantian thread yang berjalan.
Harus ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.
Model-Model Threading

Kernel-level threading; thread ini dibuat oleh pengguna yang berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada di kernel. Ini merupakan implementasi (penerapaan) paling sederhana dari threading.
Thread kernel didukung langsung oleh sistem operasi.
Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space.
Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
User-level threading; sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi threaddipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat dilakukan dengan sangat cepat.
Thread pengguna didukung kernel serta diimplementasikan dengan pustaka (library) thread pada tingkatan pengguna.
Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel.
Thread pengguna biasanya dapat cepat dibuat dan dikendalikan

Hybrid threading;  sebuah pemetaan M-N, yang berarti beberapa jumlah N-thread aplikasi dipetakan ke beberapa entitas di kernel.

Thread dalam Sistem Operasi
Sistem operasi telah mendukung proses multithreading.
Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya.
Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna.
Model Multi-Threading
Many-to-One
Memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel.
Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien.
Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat.

One-to-One
Memetakan setiap thread tingkatan pengguna ke thread kernel.
Model ini menyediakan lebih banyak concurrency dibandingkan model Many-to-One.




Many-to-Many
Mengelompokkan banyak thread pengguna untuk dipetakan ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna.
Mengijinkan sistem operasi untuk membuat sejumlah thread kernel.





Thread cancellation
Thread cancellation/ pembatalan thread ialah pemberhentian thread sebelum tugasnya selesai. Misalnya 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 disebut sebagai target thread. Pembatalan Thread terdiri dari 2 jenis:
Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
Deffered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Thread Pools
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools.
• Keuntungan menggunakan Thread Pools
Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.


Jumat, 23 Maret 2018

Boot Process

Nama : Novarita Milianti Putri
NRP           : 2103171016
Kelas : 1 D3 Teknik Informatika A
Dosen : Bpk. Ferry Astika Saputra
Mata Kuliah : Sistem Operasi


                             BOOT PROCESS

Boot Process atau Proses Booting adalah suatu proses yang terjadi pada saat seseorang menghidupkan komputer, dimana masuknya arus listrik ke dalam peralatan komputer dan kemudian sistem memeriksa ada atau tidaknya perangkat keras (hardware) yang terhubung pada komputer, agar dapat berkomunikasi dengan pengguna (user).
Adapun tahapan Booting pada Sistem Operasi linux yakni ada 5 yaitu :













Keterangan lebih lanjut :
POST (Power On Self Test)
Adalah serangkaian proses test yang dilakukan oleh komputer pada saat booting atau komputer pertama kali dihidupkan untuk mengetahui kondisi komponen perangkat keras komputer dan komponen pendukungnya. Dengan adanya proses POST memungkinkan pengguna komputer dapat mengidentifikasi, menganalisis, mengisolasi menentukan letak kesalahan atau permasalahan pada komputer sehingga dapat menentukan langkah perbaikan yang paling tepat.

BIOS (Basic Input Output System)
Adalah interface level paling bawah yang menghubungkan antara komputer dan periperalnya. BIOS melakukan pengecekan intergritas memori dan mencari intruksi pada MBR yang terdapat pada floopy drive atau harddisk.



MBR (Master Boot Record)
MBR bertugas menjalankan boot loader. Pengertian MBR sendiri adalah tipe spesial dari boot sector saat awal harddisk komputer di partisi. MBR memegang informasi tentang logical partisi, yang berisi file system, yang mengatur sistem tersebut. Selain itu, MBR juga berisi kode exe yang berfungsi sebagai sistem operasi yang berdiri sendiri sebagai rantai pengatur partisi dari Volume Boot Record (VBR).

 LILO/GRUB
LILO atau GRUB akan membaca label sistem operasi yang kernelnya akan dijalankan. Pada boot loader inilah sistem operasi mulai dipanggil.

LILO (Linux Loader) = loader boot, yang dapat digunakan untuk memilih Linux, MS-DOS atau sistem operasi lain pada saat boot.
GRUB (Grand Unified Bootloader) = program kecil yang menampilkan pilihan sistem operasi pada saat proses booting sehingga nantinya dapat melakukan multiple boot.

Kernel
Setelah itu, tanggung jawab untuk booting diserahkan ke kernel.
Kernel adalah sebuah perangkat lunak bagian dari sistem operasi yang berfungsi melayani berbagai macam aplikasi untuk dapat mengakses perangkat keras komputer secara aman. Dengan kata lain, Kernel bisa difungsikan sebagai perantara anatara perangkat lunak aplikasi dan perangkat keras komputer.
Setelah itu, kernel akan menampilkan versi dari kernel yang dipergunakan, mengecek status SELinux, mengecek partisi swap, mengecek memory, dan sebagainya.

Init
Kernel yang dipanggil oleh bootloader kemudian menjalankan program init, yaitu proses yang menjadi dasar dari proses-proses yang lain. Ini dikenal dengan nama The First Process. Proses ini mengacu pada script yang ada di file /etc/rc.d/rc.sysinit.

Program init kemudian menentukan jenis runlevel yang terletak pada file /etc/inittab. Berdasarkan pada run-level, script kemudian menjalankan berbagai proses lain yang dibutuhkan oleh sistem sehingga sistem dapat berfungsi dan digunakan. Runlevel adalah suatu parameter yang mengatur servis yang akan dijalankan misalnya single user, reboot, shutdown, dan sebagainya. Program yang mengatur runlevel ini adalah init yang terletak pada direktori /etc/inittab.



PERBEDAAN PROCESS DAN THREAD


PROCESS :
Merupakan program yang sedang di eksekusi
Proses mencakup  program counter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang selanjutnya akan di ekseskusi dan di registrasi
Memiliki ruang alamat atau IP address masing-masing
Dari satu proses dengan proses lainnya harus menggunakan komunikasi
Memiliki overhead
Hanya dapat mengendalikan proses turunannya
Perubahan pada parent proses tidak mempengaruhi proses turunannya
Pembentukan proses membutuhkan waktu yang lebih lama
Waktu yang dibutuhkan untuk mengakhiri proses lebih lama

THREAD :
Merupakan alur kontrol dari suatu proses
Merupakan unit dasar dari prnggunaan CPU dan sering disebut dengan lightweight process
Ruang alamat atau IP address digunakan secara bersama-sama dari proses yang menciptakannya
Memiliki akses langsung ke segmen data dari prosesnya
Dapat saling berkomunikasi dengan thread lain dalam satu proses
Pembentukan thread dibutuhkan waktu yang lebih sedikit
Waktu yang digunakan untuk mengakhiri thread lebih sedikit
Lebih mudah dan cepat dalam melakukan switch antar thread daripada antar proses.