Thread, SMP, dan Microkernel (Pertemuan ke-5) Agustus 2010 Pokok Bahasan • Pokok Bahasan: – Thread, SMP, dan Microkernel • Sub Pokok Bahasan: – Multithreading – Fungsionalitas thread – Jenis-jenis thread • TIU: – Mahasiswa dapat memahami konsep dasar Thread, SMP, dan Microkernel • TIK: – Mahasiswa dapat menjelaskan prinsip multithreading – Mahasiswa dapat menjelaskan fungsionalitas thread – Mahasiswa dapat menjelaskan jenis-jenis thread Bahasan: Proses dan Thread SMP Microkernel Bedah OS: Windows Solaris Linux Sistem Operasi/20100830 #3 Agenda: • Proses dan Thread – Multithreading – Fungsionalitas thread • Status thread • Sinkronisasi thread – Contoh aplikasi: Adobe PageMaker – Jenis thread: • User-Level Thread (ULT) • Kernel-Level Thread (KLT) • Kombinasi ULT dan KLT – Model thread lainnya • Relasi Satu ke Banyak • Relasi Banyak ke Banyak • SMP • Microkernel • Bedah OS Sistem Operasi/20100830 #4 Konsep Proses • Kepemilikan resource: – Process memerlukan ruang alamat virtual untuk menyimpan process image – Process image = program + data + stack + PCB – Unit terkecil yang dapat memiliki resource adalah proses atau task – Resource = memori, I/O channel, I/O device, file, CPU, dll • Penjadualan/eksekusi: – Mengikuti jalur eksekusi (trace) – Eksekusi suatu proses bisa secara interleaving (selang-seling) dengan proses lain Thread = pecahan dari suatu proses yang dapat dijadualkan atau dieksekusi = lightweight process (LWP) Sistem Operasi/20100830 #5 Multithreading (1) • Merupakan kemampuan sistem operasi dalam mengeksekusi banyak thread yang berasal dari sebuah proses • OS tradisional: – Satu proses hanya terdiri dari satu thread – MS-DOS: hanya satu proses dan tiap proses hanya satu thread – UNIX tradisional: banyak proses, tetapi tiap proses hanya satu thread • OS modern: – Banyak proses dan tiap proses terdiri dari banyak thread – Misal: Windows, Solaris, Linux, Mach, dan OS/2 Sistem Operasi/20100830 #6 Multithreading (2) Sistem Operasi/20100830 #7 Apa yang dimiliki oleh Thread ? • Status eksekusi thread (running, ready, dll.) • Simpanan konteks thread (pada saat tidak running) • Stack eksekusi • Beberapa storage statis untuk menyimpan variabel lokal • Hak akses ke memori dan resource yang dimiliki oleh proses – Memori dan resource digunakan bersamasama oleh semua thread dari sebuah proses (share) Sistem Operasi/20100830 #8 Model Thread • Thread Control Block (TCB) = isi register + prioritas + info thread lainnya Sistem Operasi/20100830 #9 Threads sharing • Thread menempati ruang alamat memori yang sama • Tiap thread dapat mengakses data yang sama • Jika suatu thread mengubah data di memori, maka thread yang lain dapat mengetahui perubahan data tersebut • Jika sebuah thread sedang membuka suatu file, maka thread yang lain juga dapat membaca isi file tersebut Sistem Operasi/20100830 #10 Apa keuntungan dari penerapanThread • Pembentukan suatu thread jauh lebih cepat daripada pembentukan proses baru – Penelitian menunjukkan pembentukan thread 10x lebih cepat daripada pembentukan proses • Terminasi suatu thread jauh lebih cepat daripada terminasi proses • Perpindahan eksekusi antar thread jauh lebih cepat • Antar thread dapat berkomunikasi tanpa melibatkan kernel – Sebagai efek dari penggunaan share memori dan file Sistem Operasi/20100830 #11 Contoh Penggunaan Thread (1) • Aktifitas foreground dan background – MS Excell: tiap satu tugas dilakukan oleh satu thread: • • • • Tampilkan menu Baca inputan dari user Eksekusi perintah user Update data • Pemrosesan Asynchronous – MS Word: proteksi data jika listrik tiba-tiba padam • Ada thread yang tugasnya khusus untuk melakukan penyimpanan data dari RAM ke harddisk secara periodik • Jadual thread langsung dikendalikan oleh sistem operasi Sistem Operasi/20100830 #12 Contoh Penggunaan Thread (2) • Percepatan eksekusi – Ada thread yang bertugas melakukan pengolahan data dan dalam waktu bersamaan ada thread yang bertugas mengambil data berikutnya yang akan diolah – File server • Setiap ada request dari user dibentuk sebuah thread baru • Bila request telah selesai, maka thread diterminasi • Struktur program Modular – Thread diterapkan pada aplikasi dengan berbagai macam aktifitas dan bermacam-macam input dan output Sistem Operasi/20100830 #13 Bagaimana OS mengatur Thread ? • Level thread: – Eksekusi setiap thread diatur dengan penjadualan • Level proses: – Suatu proses yang di-suspend akan menyebabkan semua thread proses tersebut juga di-suspend bersama-sama • Sebagai konsekuensi dari penggunaan ruang memori bersama (share) – Terminasi suatu proses akan berakibat semua threadnya juga diterminasi Sistem Operasi/20100830 #14 Apakah status Thread sama dengan status Proses ? • Mirip (ready, running, blocked), kecuali status suspend • Operasi pada thread: – Spawn = pembentukan thread • Otomatis thread terbentuk saat proses terbentuk • Thread bisa dibentuk oleh thread lain dalam satu proses • Thread baru berada pada antrian ready – Block • Thread diblok bila menunggu suatu event • Register user, PC, dan stack pointer disimpan – Unblock • Bila event datang thread menjadi ready – Finish • Tugas thread telah selesai register dan stack dihapus Sistem Operasi/20100830 #15 Remote Procedure Call (RPC) dengan Single Thread pada Uniprocessor • RPC merupakan cara berinteraksi antara 2 buah program yang dieksekusi pada mesin yang sama/berbeda dengan menggunakan semantik dan sintaks procedure call/return • Keterangan gambar: – Sebuah program melakukan 2 buah RPC pada 2 buah host/server berbeda untuk mendapatkan suatu hasil gabungan – Kedua RPC harus dilakukan secara bergantian lama Sistem Operasi/20100830 #16 Remote Procedure Call (RPC) dengan banyak Thread pada Uniprocessor • Request dari thread A dan thread B dapat dieksekusi hampir bersamaan pada server yang berbeda • Hasil lebih cepat dibanding hanya dengan single thread Sistem Operasi/20100830 #17 Multithreading pada Uniprocessor • Pada uniprogramming suatu thread bisa dieksekusi bila thread yang sedang dieksekusi ter-blok atau karena time out • Mirip dengan proses Sistem Operasi/20100830 #18 Sinkronisasi Thread • Thread menggunakan ruang alamat memori yang sama bila terjadi perubahan data pada suatu resource dapat mempengaruhi thread yang lain • Bagaimana agar antar thread tidak saling mengganggu dan tidak saling memperebutkan resource ? – Digunakan metode sinkronisasi yang mirip dengan sinkronisasi yang digunakan pada proses Sistem Operasi/20100830 #19 Agenda: • Proses dan Thread – Multithreading – Fungsionalitas thread • Status thread • Sinkronisasi thread – Contoh aplikasi: Adobe PageMaker – Jenis thread: • User-Level Thread (ULT) • Kernel-Level Thread (KLT) • Kombinasi ULT dan KLT – Model thread lainnya • Relasi Satu ke Banyak • Relasi Banyak ke Banyak • SMP • Microkernel • Bedah OS Sistem Operasi/20100830 #20 Contoh aplikasi multithread: Adobe PageMaker • Adobe PageMaker merupakan aplikasi untuk menulis, merancang, dan menghasilkan desktop publishing • Aplikasi berjalan pada shared system pada sistem operasi OS/2 • Terdiri dari 3 thread yang selalu aktif: – Service thread – Event-handling thread – Screen-redraw thread Sistem Operasi/20100830 #21 Mengapa Adobe PageMaker dirancang terdiri dari beberapa Thread ? • Sistem operasi OS/2 kurang responsif dalam menangani window (jendela) jika terdapat data (message) masuk yang memerlukan pemrosesan serius – Aplikasi yang memanggil subroutine untuk nge-print akan menyebabkan data (message) yang dibutuhkan oleh aplikasi lain terlambat diterima performansi menurun – Solusi pada Adobe PageMaker: • Beberapa operasi yang memerlukan banyak waktu ditangani oleh service thread (initialization, import, autoflow, dan printing) Sistem Operasi/20100830 #22 Agenda: • Proses dan Thread – Multithreading – Fungsionalitas thread • Status thread • Sinkronisasi thread – Contoh aplikasi: Adobe PageMaker – Jenis thread: • User-Level Thread (ULT) • Kernel-Level Thread (KLT) • Kombinasi ULT dan KLT – Model thread lainnya • Relasi Satu ke Banyak • Relasi Banyak ke Banyak • SMP • Microkernel • Bedah OS Sistem Operasi/20100830 #23 Jenis Thread • User-Level Thread (ULT) – Semua manajemen thread dilakukan oleh program aplikasi – Tidak ada code program untuk mengatur thread pada program kernel • Kernel-Level Thread (KLT) = kernel supported threads = lightweight process – Semua manajemen thread dilakukan oleh kernel – Tidak ada code program untuk mengatur thread pada program aplikasi Sistem Operasi/20100830 #24 User-Level Thread (ULT) – – – – (1) • Jumlah thread sudah direncanakan sejak membuat program aplikasi • Terdapat thread library pada kode program • Relasi antara thread user:thread kernel adalah M:1 • Isi thread library adalah kode program untuk: Membentuk dan menghapus thread Melewatkan pesan dan data antar thread Menjadualkan eksekusi thread Menyimpan dan mengambil konteks thread • Contoh OS: POSIX (Pthread), Mach (C-thread), dan Solaris 2 (UI-thread) Sistem Operasi/20100830 #25 User-Level Thread (ULT) (2) • Prosedur eksekusi ULT – Mula-mula program aplikasi dieksekusi hanya dengan satu thread – Pada saat aplikasi tersebut dieksekusi thread berikutnya dibuat (bila diperlukan) • Pembuatan thread baru dilakukan dengan cara memanggil utility yang ada di thread library • Pada saat library dieksekusi konteks (user register, PC, dan stack pointer) thread yang sedang running disimpan – Thread library membuat struktur data baru untuk setiap thread yang dibentuk • Setelah thread library selesai konteks thread yang akan dieksekusi diambil Sistem Operasi/20100830 #26 Contoh hubungan antara status ULT dengan status Proses Sistem Operasi/20100830 #27 Keterangan • Gambar a: – – • (1) Proses B terdiri dari 2 thread (thread 1 dan thread 2) Status proses B adalah running sama dengan status thread 2, sedangkan status thread 1 adalah ready Gambar b: – – – Proses B terblok akibat thread 2 yang sedang running melakukan system call Status thread 2 masih tetap berstatus running dilihat dari sisi thread library Saat proses B kembali running, thread mana yang akan dieksekusi ??? Sistem Operasi/20100830 #28 Keterangan • (2) Gambar c: Proses B berubah status dari running ke ready akibat jatah waktunya telah habis Status thread 1 dan thread 2 tidak berubah Thread 2 masih tetap berstatus running dilihat dari sisi – – – thread library – • Saat proses B kembali running, thread mana yang akan dieksekusi ??? Gambar d: – – – Eksekusi thread 2 telah sampai pada tahap dimana diperlukan hasil dari thread 1, maka status thread 2 berubah dari running menjadi blocked Giliran eksekusi diberikan pada thread 1 Status proses B tetap running Sistem Operasi/20100830 #29 Kelebihan ULT dibanding KLT • Pergantian thread (thread switching) tidak melibatkan kernel, sehingga overhead akibat perubahan 2 buah mode switch (user ke kernel dan kernel ke user) dapat dihindari • Algoritma penjadualan eksekusi thread suatu aplikasi bisa berbeda dengan aplikasi yang lain – Lebih fleksibel – Tidak tergantung dengan algoritma penjadualan untuk proses • ULT dapat dijalankan pada sistem operasi berbeda-beda, karena tidak bergantung pada kernel Sistem Operasi/20100830 #30 Kekurangan ULT dibanding KLT • Jika sebuah thread pada sebuah proses melakukan system call akan menyebabkan semua thread pada proses tersebut tidak dapat dieksekusi (semua terhenti) • Penggunaan multiprocessor tidak dapat dimanfaatkan secara maksimal – Dalam satu saat kernel hanya mengijinkan satu thread saja yang dapat dieksekusi untuk setiap proses Sistem Operasi/20100830 #31 Solusi terhadap kekurangan ULT • Aplikasi dipecah-pecah menjadi banyak proses, setiap satu proses satu thread saja – Kerugian: overhead akibat mode switching meningkat – Apa manfaat solusi ini ? • Mengubah system call yang menyebabkan proses terblok menjadi system call yang tidak menyebabkan proses terblok – Ada routine yang khusus untuk memeriksa status I/O device sibuk atau tidak (disebut dengan jacket routine) – Thread yang memerlukan I/O device cukup memanggil jacket routine – Bila I/O sibuk, thread masuk ke status blocked dan giliran eksekusi diberikan pada thread lainnya (status proses tetap running) – Demikian seterusnya hingga didapatkan status I/O device ready Sistem Operasi/20100830 #32 Agenda: • Proses dan Thread – Multithreading – Fungsionalitas thread • Status thread • Sinkronisasi thread – Contoh aplikasi: Adobe PageMaker – Jenis thread: • User-Level Thread (ULT) • Kernel-Level Thread (KLT) • Kombinasi ULT dan KLT – Model thread lainnya • Relasi Satu ke Banyak • Relasi Banyak ke Banyak • SMP • Microkernel • Bedah OS Sistem Operasi/20100830 #33 Kernel-Level Thread (KLT) • Jumlah thread sudah direncanakan sejak membuat program aplikasi • Kernel menangani isi konteks proses dan setiap thread • Penjadualan bukan berbasis pada proses tetapi berbasis pada thread • Relasi antara thread user : thread kernel adalah 1:1 • Model KLT digunakan pada sistem operasi Windows NT, Windows 2000, Solaris 2, BeOS, Tru64 UNIX, OS/2 Sistem Operasi/20100830 #34 Kelebihan KLT dibanding ULT • Thread-thread yang berasal dari sebuah proses dapat dieksekusi pada prosesor berbeda secara bersamaan • Thread yang melakukan service call tidak menyebabkan proses terblok, thread lainnya dalam satu proses masih dapat dieksekusi • Routine kernel dapat terdiri dari banyak thread Sistem Operasi/20100830 #35 Kekurangan KLT dibanding ULT • Perpindahan eksekusi dari satu thread ke thread lainnya menyebabkan overhead akibat mode switch • Algoritma penjadualan eksekusi suatu aplikasi harus mengikuti algoritma penjadualan sistem operasi – Tidak fleksibel • KLT tidak dapat dijalankan pada sistem operasi berbeda-beda, karena tergantung pada kernel masing-masing Sistem Operasi/20100830 #36 Perbandingan Latency (µS) antara ULT, KLT, dan Single Process/thread (1) • Hasil diperoleh dengan uniprocessor VAX dan sistem operasi UNIX-like • Benchmark yang digunakan: – Null Fork • Waktu yang diperlukan untuk membuat, menjadualkan, mengeksekusi sebuah proses/thread yang memanggil prosedur null secara lengkap • Prosedur null = prosedur fork (membuat proses/thread baru) – Signal-Wait • Waktu yang diperlukan oleh sebuah proses/thread untuk memberi signal pada proses/thread yang sedang menunggu kondisi Sistem Operasi/20100830 #37 Perbandingan Latency (µS) antara ULT, KLT, dan Single Process/thread (2) • Analisis: – Latency pada KLT jauh lebih baik daripada latency pada sebuah proses/thread tunggal – Latency pada ULT jauh lebih baik daripada latency pada KLT – Hasil bergantung pada jenis aplikasi yang diujikan – Bila digunakan aplikasi yang lebih banyak memerlukan kernel mode bisa jadi KLT lebih baik daripada ULT Sistem Operasi/20100830 #38 Agenda: • Proses dan Thread – Multithreading – Fungsionalitas thread • Status thread • Sinkronisasi thread – Contoh aplikasi: Adobe PageMaker – Jenis thread: • User-Level Thread (ULT) • Kernel-Level Thread (KLT) • Kombinasi ULT dan KLT – Model thread lainnya • Relasi Satu ke Banyak • Relasi Banyak ke Banyak • SMP • Microkernel • Bedah OS Sistem Operasi/20100830 #39 Kombinasi ULT dan KLT • Pembentukan thread dilakukan pada aplikasi (user space) • Penjadualan dan sinkronisasi dilakukan pada level aplikasi • Beberapa thread ULT dari sebuah aplikasi dipetakan ke sejumlah thread KLT (jumlahnya sama atau lebih kecil) • Relasi antara thread user : thread kernel adalah M:N • Model kombinasi digunakan pada sistem operasi Solaris 2, IRIX, HP-UX, dan Tru64 UNIX Sistem Operasi/20100830 #40 Kelebihan kombinasi ULT dan KLT • Programmer dapat mengatur jumlah KLT berdasarkan aplikasi atau mesin yang akan digunakan untuk mendapatkan hasil optimum • Beberapa thread dari sebuah aplikasi dapat dieksekusi secara bersamaan pada sistem multiprocessor • Thread yang melakukan system call (perlu I/O device) tidak menyebabkan proses terblok • Performansinya lebih baik dibanding ULT maupun KLT Sistem Operasi/20100830 #41 Relasi antara Thread dan Proses • Macam-macam relasi antara thread:proses adalah sbb: Sistem Operasi/20100830 #42 Relasi Satu ke Banyak (1:M) • Satu thread dapat berpindah-pindah dari satu ruang alamat memori yang satu ke ruang alamat memori yang lain – Bahkan bisa berpindah dari satu komputer ke komputer yang lain • Digunakan pada sistem terdistribusi • Contoh sistem operasi: Clouds (Ra) dan Emerald • Dari sisi user, thread dipandang sebagai unit aktifitas, sedangkan proses merupakan ruang alamat virtual yang dilengkapi dengan PCB • Informasi yang dibawa saat thread berpindah tempat adalah: controlling terminal, parameter global, dan petunjuk penjadualan (misal prioritas) • Kelebihan: – User atau programmer tidak perlu tahu detail dari lingkungan distribusi yang akan digunakan Sistem Operasi/20100830 #43 Relasi Banyak ke Banyak (M:N) • Digunakan konsep domain dan thread: – Domain: entitas statis yang terdiri dari ruang alamat dan port sebagai pintu masuk/keluar pesan – Thread: eksekusi tunggal yang terdiri dari stack eksekusi, status prosesor, dan informasi penjadualan • Banyak thread dapat dieksekusi ke dalam sebuah domain • Sebuah thread dapat berpindah dari satu domain ke domain yang lain • Diterapkan pada sistem operasi eksperimen TRIX Sistem Operasi/20100830 #44 Referensi: [STA09] Stallings, William. 2009. Operating System: Internal and Design Principles. 6th edition. Prentice Hall Sistem Operasi/20100830 #45