Pertemuan #2: Proses dan Thread Lecturer: Abdusy Syarif Prodi Teknik Informatika Fakultas Ilmu Komputer
Tujuan Memahami konsep dasar dan definisi dari proses Menjelaskan keadaan/status proses Memahami Process Control Block Memahami operasi-operasi Proses Memahami Hubungan antar Proses Memahami konsep Thread Memahami konsep dasar Penjadualan CPU Memahami algoritma-algoritma Penjadualan CPU, meliputi FCFS, SJF, Prioritas, Round Robin, Multiprocessor Slide - 2
Proses Dalam banyak hal, seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program itu proses-proses (processes). Secara informal; proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan Slide - 3
Keadaan Proses New: Proses sedang dikerjakan/ dibuat. Running: Instruksi sedang dikerjakan. Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/Oatau penerimaan sebuah tanda/ signal). Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor. Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi Slide - 4
Slide - 5
Informasi Status Proses Status Proses biasanya termasuk (tetapi tidak keharusan): Register Stack Memory (global variables and dynamically allocated memory) Open file tables Signal management information Slide - 6
Proses adalah kunci abstraksi SO Penglihatan Pengguna lingkungan tempat berinteraksi ~>Proses. Perintah yang diketikan. Mengeksekusi program. WWW browser. Slide - 7
Studi Kasus : Proses di Linux - Pada Linux, ketika kita memulai sebuah proses, Linux akan memberikan sebuah nomer unik yg disebut PID atau Process-ID. - PID mulai dari 0 sampai 65535. - PID 1 selalu dimiliki oleh proses 'init', yg menjadi proses pertama saat booting. - ketik perintah ini pada CLI : ps -C init -o pid=,cmd Maka output sistem akan seperti ini : CMD 1 /sbin/init Slide - 8
Studi Kasus : Proses di Linux - Untuk melihat seluruh Proses : ~$ sudo ps -aux - Untuk melihat single proses : ~$ sudo ps -C chrome -o pid=,cmd,stat - Untuk memfilter proses : ~$ sudo ps -aux grep chrome - Untuk melihat pohon proses : ~$ pstree - Untuk mematikan sebuah proses : ~$ sudo kill 2222 Slide - 9
Uniprogramming Hanya 1 proses dalam 1 waktu. Contoh : DOS. Problem: user sering meminta lebih dari 1 aktifitas dalam satu waktu (contoh : memanggil remote file ketika sedang mengedit program), dan uniprogramming tidak memungkinkan hal ini. Jadi DOS dan uniprogrammed lain meletakkan sesuatu seperti program memory-resident. Satu kunci masalah DOS adalah tidak adanya proteksi memori satu program bisa menulis memori program lain. Slide - 10
Multiprogramming Multiple proses pada satu waktu. Linux/unix saat ini telah menerapkannya. Memungkinkan sistem untuk memisahkan aktifitas. Slide - 11
Multiprogramming dan resource sharing Proses apa yang menggunakan sumber daya mesin? Kapan? CPU. Solusi dasar adalah memanfaatkan preemptive multitasking SO menjalankan proses sesaat, kemudian CPU meninggalkannya serta mengizinkan proses lain berjalan. Harus 'save and restore' status proses. Kunci : kelayakan (fairness). Harus dipastikan bahwa semua proses mendapatkan pembagian CPU yang layak. Slide - 12
Implementasi proses abstraksi Q: Bagaimana SO mengimplementasikan proses abstraksi? A: Menggunakan 'context switch' untuk beralih dari menjalankan 1 proses ke yang lain. Slide - 13
Implementasi 'Context Switch' Q: Bagaimana mesin mengimplementasikan 'context switch'? Prosesor memiliki sumber daya fisik terbatas. Contoh, keterbatasan set register. Tetapi setiap proses pada mesin memiliki set register tersendiri. S: 'save and restore' status hardware pada 'context switch'. Save status pada 'Process Control Block (PCB)'. Slide - 14
Proses Control Block (PCB) & CPU Register Slide - 15
Thread Model proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses adalah sebuah program yang menjalankan eksekusi thread tunggal. Sebagai contoh, jika sebuah proses menjalankan sebuah program Word Processor, ada sebuah thread tunggal dari instruksi-instruksi yang sedang dilaksanakan. Slide - 16
Multithreading vs. Single threading Single threading: when the OS does not recognize the concept of thread. Multithreading: when the OS supports multiple threads of execution within a single process. MS-DOS supports a single user process and a single thread. Older UNIXs supports multiple user processes but only support one thread per process. Solaris and Windows NT support multiple threads. Slide - 17
Multithreading Levels Multithreading Models Threading Issues A. Frank - P. Weisberg Slide - 18
Multithreading Levels Thread library provides programmer with API for creating and managing threads. Three multithreading levels:» User-Level Threads (ULT) Library entirely in user space.» Kernel-Level Threads (KLT) Kernel-level library supported by the OS.» Hybrid ULT/KLT Approach Slide - 19
1) User-Level Threads (ULT) Thread management done by user-level threads library The kernel is not aware of the existence of threads. All thread management is done by the application by using a thread library. Slide - 20
Implementing Threads in User Space Slide - 21
2) Kernel-Level Threads (KLT) All thread management is done by kernel. No thread library but an API to the kernel thread facility. Kernel maintains context information for the process and the threads. Switching between threads requires the Slide - 22
Implementing Threads in the Kernel A. Frank - P. Weisberg Slide - 23
KLT Idea Threads supported by the Kernel. Examples: Windows 2000/XP OS/2 Linux Solaris Tru64 UNIX Mac OS X A. Frank - P. Weisberg Slide - 24
3) Hybrid ULT/KLT Approaches Thread creation done in the user space. Bulk of scheduling and synchronization of threads done in the user space. The programmer may adjust the number of KLTs. May combine the best of both approaches. Example is Solaris prior Sistem to Operasi version #2 9. A. Frank - P. Weisberg Slide - 25
Studi Kasus: Thread di Linux - Instal terlebih dahulu tools 'htop' ~$ sudo apt-get install htop - Menjalankan htop ~$ htop Slide - 26
Sistem Operasi adalah event-driven SO menunggu sebuah 'event' terjadi, meresponnya, lalu menunggu 'event' berikutnya. User menekan tombol. Program mengeluarkan 'system call' untuk membaca sebuah file. SO mecari 'disk blocks' ke dalam, dan membuat permintaan (request) kepada 'disk controller' untuk membaca 'disk blocks' kedalam memori. Disk controller selesai membaca dan menginterupsi. SO bergerak membaca data kedalamprogram dan restarts program. Slide - 27
Event-driven Slide - 28
Contoh event-driven Sebuah web browser meminta URL. Hal ini akan meminta SO untuk mengirim permintaan (request) melalui jaringan ke WWW server. SO akan mengirim paket. Response packet datang dari WWW server, menginterupsi prosesor. SO menterjemahkan proses mana yang akan mendapatkan paket, lalu menghantarkan paket tersebut ke proses. Slide - 29
Event-driven dan threads Ketika sebuah 'event-driven' terbuat, dengan beberapa aktifitas, thread adalah sebuah kunci mekanisme terstruktur pada SO. Slide - 30
Penjadwalan Proses & Antrian Slide - 31
Penjadwalan (Scheduler) Slide - 32
Operasi pada Proses Slide - 33