Perbedaan Kernell Linux dan Windows Secara umum kernel itu fungsinya me-manage resource yang ada di komp dan me-manage semua proses. kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi .Tugasnya melayani bermacam program aplikasi untuk mengakses perangkat keras komputer secara aman. Kernel monolitik mengintegrasikan banyak fungsi di dalam kernel dan menyediakan lapisan abstraksi perangkat keras secara penuh terhadap perangkat keras yang berada di bawah sistem operasi. Di bawah ini ada beberapa sistem operasi yang menggunakan Monolithic kernel: Kernel sistem operasi UNIX tradisional, seperti halnya kernel dari sistem operasi UNIX keluarga BSD (NetBSD, BSD/I, FreeBSD, dan lainnya). Kernel sistem operasi GNU/Linux, Linux. Kernel sistem operasi Windows (versi 1.x hingga 4.x; kecuali Windows NT). linux : Open source code kernelna / kodenya dibuka,Linux memiliki kernel yang stabil. Dia dapat berjalan 24 jam sehari 7 hari seminggu tanpa harus restart. Ini yang membuat Linux menjadi unggul jika dibandingkan dengan MS Windows yang kadang minimal dalam satu hari kita harus me-restart ulang untuk menyegarkannya. Kernel Linux memiliki interface untuk mengakses sistem, library, dan user interface. Interface untuk sistem berperan penting karena secara umum bertanggung jawab atas proses-proses. Melalui sebuah perintah khusus proses diganti dari mode pengguna ke mode kernel. Seperti dalam Windows, kernel bekerjasama dengan perangkat I/O dan menangani pengelolaan kapasitas. Bagian yang besar mengurusi manajemen proses, memilih tugas mana yang menjadi prioritas, dan mendapatkan giliran yang mana yang harus dikerjakan. Untuk itu, pada level terbawah terdapat fungsi-fungsi untuk mengendalikan interupsi. Kernel Linux pada mulanya ditulis sebagai hobi oleh pelajar universitas Finland Linus Torvalds yang belajar di Universitas Helsinki, untuk membuat kernel Minix yang bebas dan dapat sunting. (Minix adalah projek pelajaran menyerupai UNIX direka untuk mudah dan bukannya untuk kegunaan perniagaan.) Versi 0.01 dikeluarkan ke Internet pada September 1991, Versi 0.02 pada 5 Oktober 1991. windows : Kernelnya bersifat close source / kodenya ditutup,kernel windows…itu adalah bagian dalam dari sistem operasi windows seperti registry, library nya..kita hanya bisa mengedit sedikit saja tidak bisa dalam seperti nix..makanya disebut sebagai sistem cathedral..tidak seperti opensources Hal ini bertujuan untuk menjadi yang paling komprehensif kernel1, 2 perbandingan terbaru gaya Unix yang paling populer versus kernel terbaru kernel yang paling populer. Saat ini adalah kernel 2.6.28 Linux dan Windows Vista SP1 kernel. Datang di 2009 adalah 2.6.29 versus Windows Vista SP1. Pada 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 1 Sandya Ratna M 115060801111059 ada aplikasi yang mencoba mengambil spasi memori kernel32.dll, akan muncul pesan kesalahan “invalid page fault”. THREADS PADA WINDOWS Windows mengunakan Win32 API sebagai API utama dalam hampir semua sistem operasi Microsoft. Selain itu windows mengimplementasi model relasi One-to-One, dimana terdapat satu kernel thread yang berasosiasi dengan masing – masing user thread. Thread pada windows secara umum mempunyai komponen sebagai berikut : · Thread ID · Register set · User stack dan kernel stack · Private storage area. Register set, stacks dan private data storage disebut sebagai context dari sebuah thread. Struktur data utama dari sebuah thread : · ETHREAD (executive thread block) · KTHREAD (kernel thread block) · TEB (thread environment block) KESIMPULAN Windows dalam mengimplementasikan thread memakai model One-to-One. Sehingga windows mendukung multithreading. Win32 API adalah pustaka thread yang digunakan oleh windows. Struktur data utama dalam thread windows : ETHREAD (executive thread block), KTHREAD (kernel thread block) yang keduanya berada pada kernel-level dan TEB (thread environment block) yang berada pada user-level. THREAD 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 call clone() 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 memungkinkan cloned 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 process yang memungkinkan child process untuk berbagi memori dan sumber daya dari parent processnya. Project LinuxThread menggunakan system call ini untuk mensimulasi 2 Sandya Ratna M 115060801111059 thread di user space. Sayangnya, pendekatan ini mempunyai beberapa kekurangan, khusunya di area signal handling, scheduling, dan interprocess 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. 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. Dengan menggunakan fungsi prosesor afinitas dalam winbase.h, Anda dapat mengontrol yang core yang tersedia untuk digunakan sistem dan mana yang dicadangkan untuk thread tertentu. Ada dua fungsi utama yang dapat Anda gunakan untuk mempengaruhi ketersediaan core tertentu pada Windows: Bool WINAPI SetProcessAffinityMask ( __in HANDLE hProcess, __in DWORD_PTR dwProcessAffinityMask ); Sebuah topeng afinitas prosesor adalah vektor bit yang setiap bit merupakan prosesor yang benang proses yang diizinkan untuk berjalan di. Nilai topeng afinitas prosesor harus merupakan bagian dari nilai-nilai sistem afinitas masker diperoleh oleh fungsi GetProcessAffinityMask. DWORD_PTR WINAPI SetThreadAffinityMask ( __in HANDLE hThread, __in DWORD_PTR dwThreadAffinityMask ); 3 Sandya Ratna M 115060801111059 Sebuah topeng afinitas benang adalah vektor bit yang setiap bit merupakan prosesor yang thread diperbolehkan untuk berjalan di. Sebuah topeng afinitas benang harus merupakan bagian dari topeng afinitas prosesor untuk proses yang mengandung benang. Sebuah thread dapat berjalan hanya pada prosesor yang prosesnya dapat berjalan pada. Catatan: Pada Windows, pengaturan masker afinitas untuk proses atau thread dapat mengakibatkan benang menerima waktu prosesor kurang karena sistem ini dibatasi dari menjalankan benang pada prosesor tertentu Dalam kebanyakan kasus, lebih baik membiarkan OS Windows pilih tersedia. prosesor. Symmetric Multiprocessing (SMP) SMP Arsitektur Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk mendukung perangkat keras symmetric multiprocessor (SMP). Proses mau pun thread yang berbeda dapat dieksekusi secara paralel dengan processor yang berbeda. Tapi bagaimana pun juga untuk menjaga kelangsungan kebutuhan sinkronisasi yang tidak dapat di-preemptive dari kernel, penerapan SMP ini menerapkan aturan dimana hanya satu processor yang dapat dieksekusi dengan kode mode kernel pada suatu saat. SMP menggunakan kernel spinlock tunggal untuk menjalankan aturan ini. Spinlock ini tidak memunculkan permasalahan untuk pekerjaan yang banyak menghabiskan waktu untuk menunggu proses komputasi, tapi untuk pekerjaan yang melibatkan banyak aktifitas kernel, spinlock dapat menjadi sangat mengkhawatirkan. Sebuah proyek yang besar dalam pengembangan kernel Linux 2.1 adalah untuk menciptakan penerapan SMP yang lebih masuk akal, dengan membagi kernel spinlock tunggal menjadi banyak kunci yang masing-masing melindungi terhadap masuknya kembali sebagian kecil data struktur kernel. Dengan menggunakan teknik ini, pengembangan kernel yang terbaru mengizinkan banyak processor untuk dieksekusi oleh kode mode kernel secara bersamaan. Hal ini berguna untuk melihat di mana SMP arsitektur muat ke dalam kategori keseluruhan paralel prosesor. Sebuah taksonomi yang menyoroti sistem prosesor paralel pertama kali diperkenalkan oleh Flynn [FLYN72] masih merupakan cara paling umum mengkategorikan sistem tersebut. Flynn diusulkan dengan kategori sebagai berikut sistem komputer: • instruksi tunggal data tunggal (SISD) stream: Sebuah prosesor tunggal menjalankan sebuah aliran instruksi untuk beroperasi pada data yang tersimpan dalam memori tunggal. • Single instruksi multiple data (SIMD) stream: Sebuah mesin tunggal instruksi mengontrol eksekusi simultan dari sejumlah elemen pengolahan pada dasar berbaris. Setiap elemen pemrosesan memiliki memori data yang terkait, sehingga bahwa setiap instruksi dieksekusi pada satu set data yang berbeda oleh berbagai prosesor. Array prosesor vektor dan termasuk dalam kategori ini. • Beberapa instruksi data tunggal (MISD) stream: Sebuah urutan data ditransmisikan ke satu set prosesor, masing-masing melaksanakan instruksi yang berbeda urutan. Struktur ini tidak pernah dilaksanakan. 4 Sandya Ratna M 115060801111059 • Beberapa instruksi multiple data (MIMD) stream: Satu set prosesor secara simultan mengeksekusi urutan instruksi yang berbeda pada set data yang berbeda. Organisasi SMP Ada multiprosesor, masing-masing berisi kontrol unit sendiri, unit aritmatika-logika, dan register. Setiap prosesor memiliki akses ke memori utama bersama dan perangkat I / O melalui beberapa bentuk mekanisme interkoneksi; bus bersama adalah fasilitas umum. Itu prosesor dapat berkomunikasi satu sama lain melalui memori (pesan dan status informasi yang tersisa dalam ruang alamat bersama-sama). Hal ini juga dapat dibuat untuk prosesor untuk pertukaran sinyal secara langsung. memori ini sering diselenggarakan simultan sehingga akses ganda untuk blok terpisah dari memori yang mungkin. Pada komputer modern, prosesor umumnya memiliki setidaknya satu tingkat cache memori yang swasta untuk prosesor. Penggunaan cache ini memperkenalkan beberapa pertimbangan desain baru. Karena setiap cache lokal berisi gambar sebagian utama memori, jika sebuah kata berubah dalam satu cache, itu menurut pikiran bisa membatalkan kata dalam cache lain. Untuk mencegah hal ini, prosesor lain harus diberitahu bahwa pembaruan telah terjadi. Masalah ini dikenal sebagai masalah koherensi cache dan biasanya dibahas dalam perangkat keras daripada oleh OS.7 5 Sandya Ratna M 115060801111059