Perbedaan Kernell Linux dan Windows

advertisement
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
Download