Perbedaan Threads, SMP, Kernel di Windows dan Linux 1. Threads Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multi-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari pengguna, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Threads pada windows Diimplementasikan sebagai objek . Proses executable dapat terdiri dari satu thread atau lebih. Proses dan objek thread mempunyai kemampuan sinkronisasi built-in. Setya Uswatun Hasanah _115060801111076_TIF-E_UB 1 Status thread pada windows : • Ready • Standby • Running • Waiting • Transition • Terminated Threads pada linux Ketika pertama kali dikembangkan, Linux tidak didukung dengan threading di dalam kernelnya, tetapi dia mendukung proses-proses sebagai entitas yang dapat dijadwalkan melalui clone() system calls. Sekarang Linux mendukung penduplikasian proses menggunakan system callclone() dan fork(). Clone() mempunyai sifat mirip dengan fork(), kecuali dalam hal pembuatan copy dari proses yang dipanggil dimana ia membuat sebuah proses yang terpisah yang berbagi address space dengan proses yang dipanggil. Pembagian address space dari parent process memungkinkancloned task bersifat mirip dengan thread yang terpisah. Pembagian address space ini dimungkinkan karena proses direpresentasikan di dalam Kernel Linux. Di dalam Kernel Linux setiap proses direpresentasikan sebagai sebuah struktur data yang unik. Jadi, daripada menciptakan yang baru maka struktur data yang baru mengandung pointer yang menunjuk ke tempat dimana data berada. Jadi ketika fork() dipanggil, proses yang baru akan tercipta beserta duplikasi dari segala isi di struktur data di parent process, namun ketika clone() dipanggil, ia tidak menduplikasi parent processnya tetapi menciptakan pointer ke struktur data pada parent processyang memungkinkan child process untuk berbagi memori dan sumber daya dari parent processnya. Project LinuxThread menggunakan system call ini untuk mensimulasi thread di user space. Sayangnya, pendekatan ini mempunyai beberapa kekurangan, khusunya di area signal handling, scheduling, Setya Uswatun Hasanah _115060801111076_TIF-E_UB 2 daninterprocess synchronization primitive.Untuk meningkatkan kemampuan Thread Linux, dukungan kernel dan penulisan ulang pustaka thread sangat diperlukan. Dua project yang saling bersaing menjawab tantangan ini. Sebuah tim yang terdiri dari pengembang dari IBM membuat NGPT (Next Generation POSIX Threads). Sementara pengembang dari Red Hat membuat NPTL (Native POSIX Thread Library).Sebenarnya Linux tidak membedakan antara proses dan thread. Dalam kenyataannya, Linux lebih menggunakan istilah task dibandingkan proses dan thread ketika merujuk kepada pengaturan alur pengontrolan di dalam program. Status proses pada linux : Running Interruptable Uninterruptable Stopped Zombie 2. SMP ( Symetric Multiprosesing ) Symmetric multiprocessing (SMP) melibatkan multiprosesor arsitektur perangkat keras komputer dimana dua atau lebih prosesor identik yang terhubung ke satu shared memori utama dan dikendalikan oleh contoh OS tunggal. Most common multiprocessor systems today use an SMP architecture. Paling umum sistem multiprosesor saat ini menggunakan arsitektur SMP. In the case of multi-core processors, the SMP architecture applies to the cores, treating them as separate processors. Dalam kasus multi-core prosesor, arsitektur SMP berlaku untuk core, memperlakukan mereka sebagai prosesor terpisah. Processors may be interconnected using buses, crossbar switches or on-chip mesh networks. Prosesor mungkin saling berhubungan menggunakan bus, switch crossbar atau on-chip jaringan mesh. Setya Uswatun Hasanah _115060801111076_TIF-E_UB 3 The bottleneck in the scalability of SMP using buses or crossbar switches is the bandwidth and power consumption of the interconnect among the various processors, the memory, and the disk arrays. Hambatan dalam skalabilitas SMP menggunakan bus atau switch crossbar adalah konsumsi bandwidth dan kekuatan interkoneksi antara berbagai prosesor, memori, dan array disk. Mesh architectures avoid these bottlenecks, and provide nearly linear scalability to much higher processor counts at the sacrifice of programmability: Arsitektur Mesh menghindari kemacetan, dan menyediakan skalabilitas hampir linier untuk jumlah prosesor jauh lebih tinggi pada pengorbanan programabilitas. SMP pada windows Pada Windows, prosesor afinitas memberikan potensi kinerja cache dioptimalkan. Secara khusus, dengan mengisolasi benang yang mengakses data yang sama untuk satu prosesor, Anda dapat mengurangi jumlah invalidations data yang muncul dari utas swapping antara beberapa core. Multiprocessing simetris, atau SMP, adalah sistem operasi fitur yang memungkinkan prosesor multicore untuk menjalankan satu contoh dari sistem operasi, terhubung ke memori utama umum, dan mengeksekusi kode secara paralel. Dengan teknologi ini, kita dapat dengan mudah memindahkan benang antara prosesor untuk menyeimbangkan beban kerja secara efisien. Namun, real-time OS (RTOS) dukungan untuk SMP tidak sepele karena perilaku deterministik RTOS harus dilestarikan untuk memenuhi hard real-time kendala waktu sambil membagikan thread di prosesor yang berbeda. Sebagai salah satu dari beberapa yang RTOSs dukungan SMP, OS yang digunakan oleh LabWindows / CVI Real-Time ETS target sekarang membantu kita mengambil keuntungan penuh dari perangkat keras multicore terbaru. SMP pada linux kernel Linux untuk mengeksploitasi SMP, namun sistem operasi saja tidak cukup. Ingatlah bahwa kekuatan SMP terletak pada TLP. Tunggal monolitik (tanpa ulir) program tidak dapat mengeksploitasi SMP, tapi SMP dapat dimanfaatkan dalam program-program yang terdiri dari banyak benang yang dapat didistribusikan di seluruh core. Sementara satu thread tertunda menunggu penyelesaian O I /, thread lain dapat melakukan pekerjaan yang bermanfaat. Dengan cara ini, benang bekerja dengan satu sama lain untuk menyembunyikan latency masing-masing. Sistem Operasi portabel Interface (POSIX) benang adalah cara yang bagus untuk membangun aplikasi threaded yang mampu mengambil keuntungan dari SMP. Thread POSIX menyediakan mekanisme threading serta memori bersama. Ketika program dipanggil yang menciptakan beberapa jumlah thread, setiap thread disediakan tumpukan sendiri (variabel lokal dan negara) namun saham ruang data dari orangtua. Semua thread yang dibuat berbagi ruang data yang sama, tetapi ini adalah di mana masalahnya terletak. Untuk mendukung multi-threaded akses ke memori bersama, mekanisme koordinasi yang diperlukan. POSIX menyediakan fungsi mutex untuk membuat bagian kritis yang menegakkan akses eksklusif ke sebuah obyek (sepotong memori) dengan thread tunggal. Tidak melakukan hal dapat mengakibatkan memori rusak karena manipulasi tidak sinkron oleh beberapa thread. Setya Uswatun Hasanah _115060801111076_TIF-E_UB 4 3. Kernel Sistem operasi sering disebut kernel, yaitu suatu program yang berjalan sepanjang waktu (selain program aplikasi). Kernel pada windows Windows adalah sistem operasi yang didukung oleh kernel thread. Kernel thread disukung langsung oleh sistem operasi. Pembuatan , penjadwalan dan managemen thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel. Karena itu jika sebuah thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada suatu lingkungan multiprosesor, kernel dapat menjadwal thread – thread pada prosesor yang berbeda. Pada sistem operasi Windows, kernel ditangani oleh file kernel32.dll. Kernel ini menangani manajemen memori, operasi masukan / keluaran dan interrupt. Ketika boot Windows, kernel32.dll di-load ke dalam spasi protected memory sehingga spasi memorinya tidak digunakan oleh aplikasi lain. Apabila ada aplikasi yang mencoba mengambil spasi memori kernel32.dll, akan muncul pesan kesalahan "invalid page fault". Kernel pada Linux Kernel adalah inti dari sistem linux, yang mengontrol hardware dan membentuk berbagai fungsi beraras rendah. Fungsi – fungsi yang dilaksanakan oleh kernell, antara lain : pelayanan tunggal ( system call ) dan jam sistem, manajemen file, dan penanganan security, pelayanan operasi masukkan dan keluaran, manajemen dan penjadwalan proses, manajemen memori, melakukan kegiatan akutansi sistem, melakukan penanganan kesalahan dan interupsi ( interrupt ). Setya Uswatun Hasanah _115060801111076_TIF-E_UB 5 Gambar 1.4 mengilustrasikan operasi pemanggilan sistem ( system call ). Bagian – bagian lain dari linux, seperti apalikasi dan shell, memanggil kernell untuk membentuk layanan kepadanya. Linux menyediakan antarmuka antara bagian luar kernell dan kernell sendiri, berupa system call. Setiap pemanggilan sistem menginstrusikan kernell untuk membentuk layanan tertentu sesuai permintaan program yang memanggilnya. Sebagai contoh kalau suatu program hendak membaca data dari terminal, program menyampaikan permintaan ke kernell. Kernell akan melakukan tindakan yang sesuai dengan permintaan program kemudian menyampaikan hasilnya ke program. kernel adalah program yang dimuat pada saat boot yang berfungsi sebagai interface antara user-level program dengan hardware. Secara teknis linux hanyalah sebuah kernel. Pogram lain seperti editor, kompilator dan manager yang disertakan dalam paket (SuSE, RedHat, Mandrake, dll.) hanyalah distribusi yang melengkapi kernel menjadi sebuah sistem operasi yang lengkap. Kernel membutuhkan konfigurasi agar dapat bekerja secara optimal. Rujukan William Stallings: Operating Systems -- Fourth Edition, Prentice Hall, 2001. http://translate.googleusercontent.com/translate_c?hl=id&langpair=en|id&rurl=tra nslate.google.com&twu=1&u=http://en.wikipedia.org/wiki/Symmetric_multiprocess ing&usg=ALkJrhjBBYUpQnB4u6b3Nyfiooz3T_v5zA http://www.adipedia.com/2011/02/pentingnya-kernel-pada-sistem-operasi.html http://tugassosistemoperasi.blogspot.com/2011/04/thread-dengan-linux-threaddengan-java.html http://translate.google.co.id/translate?hl=id&langpair=en|id&u=http://zone.ni.com /devzone/cda/tut/p/id/6728 Setya Uswatun Hasanah _115060801111076_TIF-E_UB 6