Mengenal Sistem Operasi Solaris - 1

    Sejarah Opensolaris dari berbagai sumber memang tak lepas dari sejarah UNIX pada mulanya. Pada tahun 1969, Ken Thompson di Lab AT&T Bell menulis versi pertama dari sistem operasi UNIX. UNIX dari awal memang dirancang untuk multitasking dan multiuser dengan interaktif shell yang masih terlihat akrab untuk pengguna UNIX dan Linux sampai hari ini. Selama beberapa tahun, Ken Thompson dan Dennis Ritchie terus menyempurnakan UNIX, yang umumnya digunakan di dalam Lab AT&T Bell. Namun, pada pertengahan akhir tahun 1970-an, UNIX versi 6 dan 7 didistribusikan cukup banyak dan digunakan di berbagai instansi pemerintah dan akademik, termasuk Universitas California di Barkeley. Karena licensi nya yang ringan pada awal versi AT&T’s UNIX, organisasi lainnya secara signifikan mulai mengubah dan ikut meningkatkan sistem operasi tersebut. Project inilah yang menyebabkan beberapa cabang utama UNIX, dan yang paling relevan dengan Opensolaris adalah keluarga BSD (Barkeley Software Distribution).

    Pada tahun 1978, Bill Joy dan rekan-rekannya di Berkeley menambahkan virtual memory, demand paging, dan lain-lain untuk UNIX Versi 7 untuk menciptakan sebuah versi UNIX yang disebut 3BSD. Joy dan rekanrekannya terus meningkatkan BSD UNIX selama beberapa tahun, menambahkan TCP / IP networking, C shell, editor VI, dan fitur penting lainnya. Pada tahun 1982, Bill Joy mendirikan Sun Microsystems dan pada 1984 telah menggunakan UNIX BSD sebagai dasar bagi sistem operasi SunOS yang dijalankan di Sun workstation. Sementara itu, AT & T terus mengembangkan mini UNIX, yang biasa disebut System V, dan perusahaan lain mengembangkan distro mereka sendiri, seperti Microsoft Xenix (yang kemudian menjadi SCO UNIX).

    Pada akhir tahun 1980-an, Sun dan AT & T mulai mengerjakan sebuah proyek bersama untuk remerge beberapa varian populer UNIX untuk menciptakan System V Release 4. Hasilnya, selesai pada tahun 1990, berisi fitur terbaik dari AT & T’s sebelumnya System V Release 3, Sun SunOS, 4.3BSD, dan Xenix 5, termasuk dukungan TCP / IP, Network File System (NFS), Unix File System (UFS), dan Virtual File System (VFS) interface. Selain itu, System V Release 4 (SVR4) benar-benar dipenuhi standar Portable Operating System Interface (POSIX), yang mendefinisikan pemrograman aplikasi interface, utilitas, dan aspek-aspek lain dari sistem operasi. Secara teori, sebuah program POSIX interface ditulis untuk dapat berjalan pada POSIX-compliant sistem operasi. Pada tahun 1992, SVR4 menjadi dasar dari Sun sistem operasi baru,Solaris 2.0. Sejak itu, Sun terus-menerus memperkuat Solaris dengan fitur seperti kernel lab pengalokasi memori, multithreaded kernel dan dukungan proses multithreaded, kernel 64-bit dan banyak lainnya. Rilis terbaru Solaris, Solaris 10, memperkenalkan beberapa fitur baru yang menarik seperti dynamic tracing facility (DTrace), Service Management Facility (SMF), zone, dan ZFS file system.

    Solaris terdaftar sebagai sistem operasi yang kompatibel dan memenuhi spesifikasi Single Unix Specification. Solaris dalam sejarahnya dikenal sebagai sistem operasi proprietary dengan kata lain dikembangkan berbasis closed source, kemudian pada bulan Juni 2005 Sun Microsystem merilis sebagian besar basis kode di bawah lisensi Common Development and Distribution License (CDDL) dan mendirikan proyek sumber terbuka OpenSolaris. Melalui OpenSolaris Sun ingin membuat sebuah komunitas pengembang dan pengguna atas sistem operasi tersebut. Setelah Oracle melakukan akuisisi Sun Microsystem pada bulan Januari 2010, Oracle memutuskan untuk menghentikan distribusi OpenSolaris dan model pengembangannya. Atas keputusan oracle tersebut, komunitas OpenSolaris kemudian menanggapinya dengan membuat turunan distribusi OpenSolaris melalui proyek OpenIndiana yang merupakan bagian dari yayasan Illumos. Namun meski demikian, di mulai dari rilis Solaris 11, pembaruan atas kode-kode sumber Solaris akan tetap didistribusikan oleh Oracle dibawah lisensi CCDL setelah versi penuh biner dirilis dengan nama Oracle Solaris. Oracle juga akan memulai program mitra teknologi seperti yang telah dilakukan pada produk-produk oracle lainnya dengan nama Oracle Technology Network (OTN) yang memberikan akses serta izin atas kode sumber solaris yang tengah dikembangkan kepada para mitra bisnis.

    Kernel Solaris memiliki kemampuan fully preemtible yang artinya semua thread, termasuk thread yang mendukung aktifitas kernel itu sendiri dapat ditunda untuk menjalankan thread dengan prioritas yang lebih tinggi; memiliki penjadwalan secara soft realtime; mendukung symmetrically multiprocessing yang mengoptimalkan kerja semua processornya dalam tingkatan yang sama, sehingga memberikan kualitas akses yang sama pada hardware computer yang lain dan; mendukung juga user-level multithreading.

    Dukungan multiprocessor pertama kali ditambahkan pada kernel Solaris, pengembang lebih mengutamakan pada kemampuan kernel, karena dengan kernel yang stabil, mampu meningkatkan concurrency, dan juga mampu mendukung dan mengontrol lebih dari satu thread dalam satu proses user. Thread sendiri mampu melaksanakan system calls dan menangani page faults secara independent. Untuk membuat kernel mendukung pengoperasian multiprocessor, thread mengontrol untuk menjalankan proses secara bersamaan pada processor yang berbeda. Para pengembang juga ingin kernel yang dibangun tersebut dapat beroperasi secara soft realtime, yang diperlukan untuk mengontrol penjadwalan yang berlebihan dan preemption adalah tindakan sementara pada proses yang sedang dilakukan oleh system computer, untuk melanjutkan proses di lain waktu. Dan preemption ini memungkinan untuk mengeksekusi pada banyak titik proses.


Proses pada Solaris
 
Kernel thread menggunakan resources yang sangat sedikit, dan peralihan kernel threadnya relative sangat sedikit karena tidak memerlukan sebuah perubahan space pada virtual memory. Kernel thread juga memiliki kemampuan fully preemptible dan dapat menjadwalkan berdasarkan prioritas pada realtime. Solaris mampu menggunakan kernel threads untuk memungkinkan asynchronous aktifitas kernel, seperti menulis asynchronous disk. Hal ini menghilangkan berbagai komplikasi dari idle loop dan menggantikannya dengan penjadwalan thread secara independent. Hal ini meningkatkan  concurrency karena tindakan yang ditangani oleh CPU terpisah dan memberikan aktifitas pada prioritas asynchronous sehingga dapat dijadwalkan secara tepat. Kernel thread juga menangani interrupt. Jika thread ditemukan interrupt, maka akan menguncinya pada blok-blok yang mengalami interrups tersebut dan memungkinkan untuk menghapus dan mencegah terjadinya deadlock. Karena membuat thread baru setiap kali terjadi interrupt itu sangat memakan waktu, maka kernel menyiapkan bagian-bagian untuk menginisialisasi thread interrupt tersebut, dan ketika interrupt terjadi maka satuan kerja tersebut memindahkannya pada tumpukan thread interrupt.

    Fitur utama pada multiprocessor kernel Solaris adalah dengan dukungan Lightweight Processes (LWPs). Dukungan LWPs sendiri adalah mendukung beberapa control dari kernel thread pada banyak proses user, seperti yang ditunjukan pada Gambar 2. Mereka berbagi space dengan proses, dan resources proses. Kernel mendukung pelaksanaan LWPs dengan menghubungkan penggunaan kernel thread dengan LWP masing-masing. Tiap-tiap user level library menggunakan LWPs untuk mengimplementasikan user level threads. Hal ini memungkinkan proses user memiliki ribuan thread tanpa membebankan kernel.

    Seperti yang dibahas sebelumnya, kernel Solaris dirancang untuk mencegah deadlocks yang disebabkan oleh thread interrupt. Hal ini dilakukan dengan memblokir thread-thread interrupt, jika ditemukan maka variable sinkronisasi akan terkunci dan menunggu sampai bagian yang critical sudah selesaikan. Strategi penguncian kernel ini digunakan untuk mengunci yang berbasis data. Didalam metode ini, setiap data dilindungi oleh objek sinkronisasi.

    Kernel juga mengimplementasikan pencegahan deadlocks menggunakan penguncian Mutual Exclusion (mutexes) untuk mencegah lebih dari satu thread dari tiap-tiap proses ketika ditemukan penguncian. Ini menghindari race condition ketika mengakses data secara bersamaan. Jika mutex tidak dapat mengatur penguncian tersebut, maka kebijakan pemblokiran defaultnya adalah dengan cara memutari penguncian tersebut ke arah processor. Status ini akan terus berulang jika tidak menjalankan suatu proses dan menghentikan putaran tersebut, maka statusnya pun akan idle. Hal ini memberikan respon yang cepat dengan tingkat overhead yang rendah.

    Deadlocks Detection juga diimplementasikan, deadlocks ini disebabkan oleh hierarchy violations yang mendeteksi pada saat runtime dengan menggunakan mekanisme prioritas inheritance. Karena mekanisme ini tidak mampu mendeteksi semua deadlocks, beberapa deadlocks yang tidak dapat terdeteksi adalah dengan kondisi yang bervariasi. Kernel Solaris menggunakan banyak pendekatan-pendekatan yang berkaitan dengan deadlocks seperti: pencegahan (prevention), pendeteksian(detection) dan resolution.

Leave a Reply