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 Sistem Operasi #2 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 Sistem Operasi #2 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 Sistem Operasi #2 Slide - 4 Sistem Operasi #2 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 Sistem Operasi #2 Slide - 6 Proses adalah kunci abstraksi SO Penglihatan Pengguna – lingkungan tempat berinteraksi ~>Proses. Perintah yang diketikan. Mengeksekusi program. WWW browser. Sistem Operasi #2 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 Sistem Operasi #2 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 Sistem Operasi #2 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. Sistem Operasi #2 Slide - 10 Multiprogramming Multiple proses pada satu waktu. Linux/unix saat ini telah menerapkannya. Memungkinkan sistem untuk memisahkan aktifitas. Sistem Operasi #2 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. Sistem Operasi #2 Slide - 12 Implementasi proses abstraksi Q: Bagaimana SO mengimplementasikan proses abstraksi? A: Menggunakan 'context switch' untuk beralih dari menjalankan 1 proses ke yang lain. Sistem Operasi #2 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)'. Sistem Operasi #2 Slide - 14 Proses Control Block (PCB) & CPU Register Sistem Operasi #2 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. Sistem Operasi #2 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. Sistem Operasi #2 Slide - 17 Multithreading Levels Multithreading Models Threading Issues A. Frank - P. Weisberg Sistem Operasi #2 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 Sistem Operasi #2 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. Sistem Operasi #2 Slide - 20 Implementing Threads in User Space Sistem Operasi #2 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 Sistem Operasi #2 Slide - 22 Implementing Threads in the Kernel Sistem Operasi #2 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 Sistem Operasi #2 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. A. Frank - P. Weisberg Example is Solaris Sistemto Operasi #2 prior version 9. Slide - 25 Studi Kasus: Thread di Linux - Instal terlebih dahulu tools 'htop' ~$ sudo apt-get install htop - Menjalankan htop ~$ htop Sistem Operasi #2 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. Sistem Operasi #2 Slide - 27 Event-driven Sistem Operasi #2 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. Sistem Operasi #2 Slide - 29 Event-driven dan threads Ketika sebuah 'event-driven' terbuat, dengan beberapa aktifitas, thread adalah sebuah kunci mekanisme terstruktur pada SO. Sistem Operasi #2 Slide - 30 Penjadwalan Proses & Antrian Sistem Operasi #2 Slide - 31 Penjadwalan (Scheduler) Sistem Operasi #2 Slide - 32 Operasi pada Proses Sistem Operasi #2 Slide - 33