Selasa, 02 Juni 2009

Merancang sebuah sistem operasi merupakan hal yang sulit. Merancang sebuah sistem sangat berbeda dengan merancang sebuah algoritma. Hal tersebut disebabkan karena keperluan yang dibutuhkan oleh sebuah sistem sulit untuk didefinisikan secara tepat, lebih kompleks dan sebuah sistem memiliki struktur internal dan antarmuka internal yang lebih banyak serta ukuran dari kesuksesan dari sebuah sistem sangat abstrak.
Sekumpulan kebutuhan dapat juga didefinisikan oleh orang-orang yang harus mendesain, membuat, memelihara dan mengoperasikan sistem operasi seperti: sistem operasi harus mudah didesain, diimplementasikan dan dipelihara, sistem harus fleksibel, dapat diandalkan, bebas eror dan efisien.

Pemeliharaan sistem operasi penting untuk dilakukan. Hal tersebut merupakan salah satu cara untuk menjaga agar sistem operasi dapat bekerja dengan baik. Pemeliharaan sistem operasi menyangkut bagaimana nantinya sistem operasi dapat bekerja untuk memenuhi tiga kebutuhan, yaitu: fungsionalitas: apakah sistem tersebut dapat bekerja dengan baik; kecepatan: apakah sistem tersebut dapat memproses dengan cepat?; dan fault-tolerant: apakah sistem dapat terus bekerja apabila terjadi kesalahan pada hardware.
Sebelum kita berbicara tentang bagaimana merancang sebuah sistem operasi, akan sangat baik apabila kita tahu apa yang harus dilakukan oleh sebuah sistem operasi. Hal tersebut dapat dijabarkan menjadi tiga, yaitu: abstraksi hardware, manajemen sumber daya dan user interface.
Abstraksi Hardware
Abstraksi Hardware adalah proses penyederhanaan dan penyembunyian informasi. Inti dari abstraksi hardware adalah mendapatkan hardware-hardware yang kompleks dan membuatnya sesuai untuk interface yang simple dan terdefinisi dengan baik. Abstraksi diperlukan karena meliputi bagaimana cara untuk berhadapan dengan failure apabila device harus fault tolerant. Ada dua alasan mengapa abstraksi hardware penting: simplicity dan compatibility.
• Simplicity adalah mengenali proses-proses kompleks sehingga tidak terjadi duplikasi. Proses-proses kompleks tersebut harus dilakukan satu kali, tetapi dalam sistem dimana banyak aplikasi yang melakukan proses tersebut, akan menjadi desain yang buruk apabila setiap developer aplikasi mengimplementasikan ulang proses tersebut. Dan sistem operasi mengatasi hal ini dengan baik. Sistem operasi menyediakan media antarmuka yang lebih sederhana untuk aplikasi.
• Compatibility, hampir semua tujuan umum sistem operasi adalah dapat mengoperasikan semua hardware. Akan sangat baik apabila setiap bagian kecil dari hardware yang melakukan hal yang sama berkomunikasi menurut standar interface, tetapi itu tidak benar. Beberapa bagian kecil dari sistem perlu untuk tahu apa tipe dan bagaimana cara berkomunikasi dengan suatu hardware. Sistem operasi melakukan hal tersebut, dan kemudian menampilkan aplikasi dengan interface yang sama, tidak bergantung dengan tipe hardware. Dengan begitu, aplikasi dapat bekerja dengan tipe hardware apa saja.
Manajemen Sumber Daya
Sebagai tambahan terhadap abstraksi hardware, umumnya sistem operasi mengatur sumber daya dari sistem dengan baik. Sumber daya adalah istilah umum yang dapat merujuk pada setiap komponen dari sistem yang sanggup melakukan perkerjaan. contohnya, processor adalah sumber daya, begitu juga RAM dan disk. Sound card dan network card juga sumber daya walaupun tidak semua hardware adalah sumber daya. Untuk pengaturan sumber daya yang lebih baik, sistem operasi dapat membagi sumber daya menjadi sub-sumber daya yang sejenis. Misalnya, disk adalah sumber daya, tetapi melalui file system, sistem operasi dapat membagi disk menjadi file, yang mana juga sumber daya. Manajemen sumber daya adalah proses pemberian sumber daya kepada aplikasi untuk digunakan. Hal tersebut dilakukan dengan cara yang berbeda-beda untuk sumber daya yang berbeda, dengan perbedaan utama terletak pada multiplexing, locking dan access control.
• Multiplexing adalah berbagi sebuah sumber daya antara akses-akses yang berlangsung bersamaan. ini adalah perhatian utama untuk multitasking sistem operasi. Banyak sumber daya dapat di share untuk menyediakan akses bagi aplikasi-aplikasi yang berbeda.
• Locking beberapa device mungkin tidak dapat di multiplexed. Contohnya, backup device tidak dapat segera di multiplex apabila dua aplikasi mau melakukan backup dalam waktu yang bersamaan. Ini adalah error. Tetapi sistem operasi tidak seharusnya membiarkan error ini terjadi dan berpengaruh besar pada sistem. Untuk memastikan hal ini, sistem operasi menyediakan beberapa jenis locking ketika device tidak dapat di multiplex. Locking menjamin bahwa hanya satu aplikasi saja yang mempunyai akses ke sebuah device dalam waktu yang ditentukan.
• Access Control kadang manajemen sumber daya tidak melibatkan pemecahan masalah dari beberapa proses pengaksesan hardware. Malahan, manajemen sumber daya melibatkan perlindungan proses dari proses lainnya. Security secara khas terimplementasikan di beberapa bentuk sebagai bagian dari manajemen sumber daya. Access control adalah kontrol sumber daya yang disediakan oleh sistem operasi untuk menguatkan batasan-batasan security. Contohnya, sebuah sistem operasi mungkin akan memperbolehkan sebuah aplikasi untuk membuat file yang secara spesifik hanya pengguna tertentu saja yang diperbolehkan untuk menggunakannya.
User Interface
Tujuan ketiga dari sistem operasi adalah untuk menyediakan beberapa jenis media tatap muka bagi pengguna untuk mempermudah mengontrol sistem dan menjalankan aplikasi-aplikasi. Tujuan ini membawa perancangan sistem operasi jauh dari pertanyaan-pertanyaan teknis yang umumnya ada di diskusi sistem operasi dan lebih ke arah pertanyaan psikologis mengenai cara terbaik untuk berinteraksi antara manusia dan sistem. User interface juga aspek yang sangat modular dari perancangan sistem operasi. dengan demikian, antarmuka pengguna dapat dipaksa ke urutan atas dari perancangan-perancangan lain dengan mudah.
Adapun prinsip-prinsip dalam merancang sistem operasi adalah:
1. Extensibility. Extensibility terkait dengan kapasitas sistem operasi untuk tetap mengikuti perkembangan teknologi komputer, sehingga setiap perubahan yang terjadi dapat difasilitasi setiap waktu, pengembang sistem operasi modern menggunakan arsitektur berlapis, yaitu struktur yang modular. Karena struktur yang modular tersebut, tambahan subsistem pada sistem operasi dapat ditambahkan tanpa mempengaruhi subsistem yang sudah ada.
2. Portability. Suatu sistem operasi dikatakan portable jika dapat dipindahkan dari arsitektur hardware yang satu ke yang lain dengan perubahan yang relatif sedikit. Sistem operasi modern dirancang untuk portability. Keseluruhan bagian sistem ditulis dalam bahasa C dan C++. Semua kode prosesor diisolasi di DLL (Dynamic Link Library) disebut dengan abstraksi lapisan hardware.
3. Reliability. Adalah kemampuan sistem operasi untuk mengatasi kondisi error, termasuk kemampuan sistem operasi untuk memproteksi diri sendiri dan penggunanya dari software yang cacat. Sistem operasi modern menahan diri dari serangan dan cacat dengan menggunakan proteksi perangkat keras untuk memori virtual dan mekanisme proteksi perangkat lunak untuk sumber daya sistem operasi.
4. Security. Sistem operasi harus memberikan keamanan terhadap data yang disimpan dalam semua drive.
5. High Performance. Sistem operasi dirancang untuk memberikan kinerja tinggi pada sistem desktop, server sistem multi-thread yang besar dan multiprosesor. untuk memenuhi kebutuhan kinerja, sistem operasi menggunakan variasi teknik seperti asynchronous I/O, optimized protocols untuk jaringan, grafik berbasis kernel, dan caching data sistem berkas.
Untuk merancang sistem operasi diperlukan persiapan-persiapan yang matang. persiapan-persiapan yang diperlukan dalam merencanakan perancangan sistem operasi yaitu:
1. Memikirkan dimana nantinya sistem operasi akan dijalankan. ini dikarenakan banyaknya sistem komputer dan masing-masing sistem komputer tidak saling mendukung.
2. Memikirkan kegunaan sistem operasi tersebut. fungsi sistem operasi sebagai pelayan bagi program aplikasi dan masing-masing program aplikasi mempunyai tujuan-tujuan tertentu yang saling berbeda. disinilah perlu dipikirkan kegunaan sistem operasi yang akan dirancang. akan tetapi, biasanya sistem operasi dirancang agar dapat menjalankan berbagai macam aplikasi. Sistem operasi ini disebut sistem operasi umum, tetapi kadang sistem operasi ditujukan bagi aplikasi-aplikasi tertentu saja, misalnya sistem operasi database.
3. Bahasa pemrograman yang akan digunakan. banyak bahasa pemrograman yang dapat digunakan untuk merancang sistem operasi dan tiap-tiap bahasa mempunyai kekurangan dan kelebihan, tetapi bahasa apapun yang jadi pilihan nantinya haruslah sudah dikuasai dengan baik.

Perancangan Antarmuka
Merancang antarmuka merupakan bagian yang paling penting dari merancang sistem. Biasanya hal tersebut juga merupakan bagian yang paling sulit, karena dalam merancang antarmuka harus memenuhi tiga persyaratan: sebuah antarmuka harus sederhana, sebuah antarmuka harus lengkap, dan sebuah antarmuka harus memilki kinerja yang cepat.
Alasan utama mengapa antarmuka sulit untuk dirancang adalah karena setiap antarmuka adalah sebuah bahasa pemrograman yang kecil: antarmuka menjelaskan sekumpulan objek-objek dan operasi-operasi yang bisa digunakan untuk memanipulasi objek.
Dalam proses pengembangan antarmuka, kita bisa atau mungkin saja tidak bisa memisahkannya dari seluruh proses pengembangan sebuah produk. Walaupun begitu, fokus dari dua proses tersebut sangatlah berbeda. Dalam proses pengembangan antarmuka, fokus haruslah terletak pada elemen-elemen antarmuka dan objek-objek yang pengguna lihat dan gunakan, dibandingkan dengan kemampuan sebuah program.
Elemen-Elemen dalam perancangan antarmuka adalah
1. Mendefinisikan konsep. Mengumpulkan kebutuhan-kebutuhan pengguna dan mendefinisikan desain secara konseptual.
2. Memvalidasi konsep. Mengevaluasi konseptual desain tersebut.
3. Merancang. Mengevaluasi prototype. Menandai dan memperbaiki masalah-masalah yang ditemukan.
4. Pengembangan. Melakukan pengujian secara berkala terhadap desain yang lebih dahulu dibuat dan desain yang paling terakhir dibuat. Menandai dan memperbaiki masalah-masalah yang ditemukan.
Gambar 1. Empat Tahap Proses Perancangan Antarmuka

Proses yang secara rinci menggambarkan bagaimana perancangan dan pengembangan antarmuka terlihat pada gambar di atas. Empat tahap utama dalam proses tersebut adalah:
• Mengumpulkan atau menganalisa informasi dari pengguna.
• Merancang Antarmuka.
• Mengembangkan Antarmuka.
• Memvalidasi Antarmuka.
Proses-proses tersebut independen dari hardware dan software, sistem operasi dan peralatan yang digunakan untuk merancang dan mengembangakan produk. IBM Common User Access (CUA) interface design guide adalah yang pertama kali mendeskripsikan proses perancangan antarmuka secara iteratif.
1. Mengumpulkan atau Menganalisa Informasi Pengguna. Proses perancangan antarmuka dimulai dari memahami pengguna. Sebelum merancang antarmuka, kita harus mengetahui masalah apa yang ingin pengguna selesaikan dan bagaimana mereka melakukan pekerjaan mereka. Pengumpulan dan penganalisaan aktivitas-aktivitas pada tahap pertama ini dapat dijabarkan dalam lima langkah:
• Menentukan profil pengguna.
• Melakukan analisa terhadap task-task pengguna.
• Mengumpulkan kebutuhan-kebutuhan pengguna.
• Menganalisa user environments.
• Mencocokan kebutuhan tersebut dengan task.
2. Merancang Antarmuka. Dalam merancang antarmuka ada beberapa tahapan yang harus dilalui, yaitu:
• Menjelaskan kegunaan dan tujuan.
• Menetapkan icon objek, views, dan representasi visual.
• Merancang objek dan jendela menu
• Memperbaiki rancangan visual.
3. Mengembangkan Antarmuka. Hal pertama yang bisa dilakukan dalam membangun antarmuka adalah membangun prototype. Membangun prototype adalah cara yang berharga dalam membuat rancangan awal dan membuat demonstrasi produk dan penting untuk pengujian kegunaan antarmuka. Dari prototype tersebut, perancang antarmuka dapat mulai membangun antarmuka secara utuh. Ketika membuat prototype, sangat penting untuk diingat bahwa prototype harus dapat di buang setelah digunakan (disposable). Jangan takut untuk membuang sebuah prototype. Tujuan dalam membuat prototype adalah untuk mempercepat dan mempermudah dalam memvisualisasikan desain alternatif dan konsep, bukan untuk membangun kode yang akan digunakan sebagai bagian dari produk.
4. Melakukan Validasi Terhadap Antarmuka. Evaluasi kegunaan adalah bagian penting dari proses pengembangan, untuk mengetahui bagaimana tanggapan pengguna terhadap antarmuka yang telah dibuat. Evaluasi ini akan digunakan untuk memperbaiki kekurangan pada antarmuka yang telah dibangun. Aturan emas dalam perancangan antarmuka:
• Buat Pengguna menguasai antarmuka.
• Kurangi user's memory load
• Buat antarmuka konsisten
Implementasi
Rancangan Sistem
Desain sistem memiliki masalah dalam menentukan tujuan dan spesifikasi sistem. Pada level paling tinggi, desain sistem akan dipengaruhi oleh pilihan hardware dan jenis sistem. Kebutuhannya akan lebih sulit untuk dispesifikasikan. Kebutuhan terdiri dari user goal dan system goal. User menginginkan sistem yang nyaman digunakan, mudah dipelajari, dapat diandalkan, aman, dan cepat. Namun itu semua tidaklah signifikan untuk desain sistem. Orang yang mendesain ingin sistem yang mudah didesain, diimplementasikan, fleksibel, dapat dipercaya, bebas error, efisien. Sampai saat ini belum ada solusi yang tepat untuk menentukan kebutuhan dari sistem operasi. Lain lingkungan, lain pula kebutuhannya.
Mekanisme dan Kebijakan
Mekanisme menentukan bagaimana melakukan sesuatu. Kebijakan menentukan apa yang akan dilakukan. Pemisahan antara mekanisme dan kebijakan sangatlah penting untuk fleksibilitas. Perubahan kebijakan akan membutuhkan definisi ulang pada beberapa parameter sistem, bahkan bisa mengubah mekanisme yang telah ada. Sistem operasi Microkernel-based menggunakan pemisahan mekanisme dan kebijakan secara ekstrim dengan mengimplementasikan perangkat dari primitive building blocks. Semua aplikasi mempunyai antarmuka yang sama karena antarmuka dibangun dalam kernel. Kebijakan penting untuk semua alokasi sumber daya dan penjadwalan problem. Perlu atau tidaknya sistem mengalokasikan sumber daya, kebijakan yang menentukan. Tapi bagaimana dan apa, mekanismelah yang menentukan.
Kinerja
Kinerja sebuah sistem ditentukan oleh komponen-komponen yang membangun sistem tersebut. Kinerja yang paling diinginkan ada pada sebuah sistem adalah bebas error, cepat dan fault-tolerant.
Fault-tolerant
Beberapa sistem perlu untuk tetap berjalan apapun yang terjadi. Sistem-sistem ini didesain untuk memulihkan secara sempurna dari masalah hardware dan tetap berjalan. Maka dari itu, fault-tolerant sistem operasi adalah menyembunyikan kegagalan hardware dari aplikasi yang sedang menggunakan hardware tersebut.
Pemeliharaan Sistem
Pemeliharaan sistem sangatlah penting bagi pengguna sistem. Karena, seringkali penggunaan sistem operasi menjadi tidak aman karena alasan-alasan seperti:
• Sistem terinfeksi malware aktif
• Sistem berkas corrupt
• Perangkat keras melemah
Untuk mencegah hal-hal tesebut, digunakanlah mOS(maintenance Operating system) yang berfungsi untuk:
• Manajemen Malware yang aktif
• Pemulihan data (recovery) dan perbaikan sistem berkas
• Diagnosa perangkat keras.
mOS tidak menulis ke disk atau menjalankan kode apapun dari disk, memiliki akses langsung ke perangkat keras, dan hanya membutuhkan sedikit bagian dari perangkat keras untuk bekerja dengan sempurna. Selain dengan mOS, kita juga dapat memelihara sistem (pada windows) dengan cara-cara yang sederhana seperti:
• Jangan pernah mematikan power sampai sistem benar-benar sudah shutdown.
• Buatlah backup data-data yang penting.
• Lakukan defragment setidaknya satu bulan sekali
• Sisakan sedikitspace kosong di partisi tempat sistem operasi berada.
• Gunakan firewall jika anda terkoneksi dengan jaringan.
• Lakukan pengecekan virus secara rutin.
Tunning
Tuning dengan tujuan optimisasi kinerja adalah proses memodifikasi sebuah sistem untuk membuat beberapa aspek bekerja lebih efisien atau menggunakan sumber daya lebih sedikit. Dengan kata lain, tuning berarti mencari titik kelemahan dari suatu sistem dan memperbaikinya agar bisa jauh lebih baik lagi.
Tuning akan terpusat pada meningkatkan hanya satu atau dua aspek dari kinerja: waktu eksekusi, penggunaan memori, kapasitas disk, bandwith, konsumsi power, atau sumber daya lainnya. Namun peningkatan tersebut diimbangi dengan penurunan kinerja lainnya. Misalnya memperbesar ukuran cache mempercepat kinerja, namun meningkatkan penggunaan memori.
Salah satu contoh tuning yang biasa kita lakukan adalah defragment. Defragmentation (atau defragging) adalah proses mengurangi jumlah fragmentasi dalam file system. Defragmentation menyusun kembali konten-konten dalam disk dan menyimpan bagian-bagian kecil dari setiap file untuk tetap saling berdekatan. Defragmentation juga berusaha untuk membuat area untuk free space lebih besar dengan menggunakan compaction untuk menghalangi kembalinya fragmentasi. Beberapa defragmenter juga mencoba untuk menjaga file-file yang lebih kecil tetap berada dalam singel directory, karena mereka sering kali diaskes secara berurutan.
Selain untuk optimasi kinerja, Adalah mungkin untuk mendesain, mengkode, dan megimplementasikan sebuah sistem operasi khusus untuk satu mesin saja. Pada umumnya sistem operasi dirancang untuk dapat dijalankan pada berbagai jenis mesin, sistemnya harus dikonfigurasikan untuk setiap komputer. Proses ini terkadang disebut sebagai System Generation. Program Sysgen mendapatkan informasi mengenai konfigurasi khusus tentang sistem perangkat keras dari sebuah data, antara lain sebagai berikut:
• CPU apa yang digunakan, pilihan yang diinstall.
• Berapa banyak memori yang tersedia
• Peralatan yang tersedia
• Sistem operasi pilihan apa yang diinginkan atau parameter apa yang digunakan.
Trend
Trend sistem operasi sangat dipengaruhi oleh penilaian dari pengguna sistem operasi. Pengguna biasanya lebih memilih sistem operasi yang user friendly, performanya bagus, tidak sering mengalami error, tampilannya cantik, dan lain lain. Trend sistem operasi sampai saat ini ternyata masih dikuasai oleh keluarga Windows. Namun bisa diprediksi bahwa trend sistem operasi pada tahun-tahun mendatang akan berkaitan dengan sistem operasi yang bersifat Open Source. Dalam sebuah artikel di web, Linus Torvalds mengatakan bahwa sistem operasi yang open source memungkinkan penggunanya untuk menciptakan sistem yang terbaik sesuai dengan kebutuhan mereka masing-masing.
Rangkuman
Sebelum merancang sistem operasi ada baiknya melakukan persiapan-persiapan terlebih dahulu. Persiapan-persiapan tersebut antara lain: memikirkan dimana nantinya sistem operasi akan dijalankan, memikirkan kegunaan sistem operasi tersebut dan menentukan bahasa pemrograman yang akan digunakan. Selain itu dalam merancang sistem operasi juga sebaiknya berpegangan dengan prinsip-prinsip merancang sistem operasi, yaitu: extensibility, portability, reliability, security dan high performance.
Pemeliharaan sistem operasi dilakukan untuk menjaga agar sistem operasi tetap stabil dan dapat berkerja sebagaimana mestinya.
Trend sistem operasi pada tahun-tahun mendatang akan berkaitan dengan sistem operasi yang bersifat Open Source. Dalam sebuah artikel di web, Linus Torvalds mengatakan bahwa sistem operasi yang open source memungkinkan penggunanya untuk menciptakan sistem yang terbaik sesuai dengan kebutuhan mereka

Kamis, 16 April 2009

Merancang sebuah sistem operasi merupakan hal yang sulit. Merancang sebuah sistem sangat berbeda dengan merancang sebuah algoritma. Hal tersebut disebabkan karena keperluan yang dibutuhkan oleh sebuah sistem sulit untuk didefinisikan secara tepat, lebih kompleks dan sebuah sistem memiliki struktur internal dan antarmuka internal yang lebih banyak serta ukuran dari kesuksesan dari sebuah sistem sangat abstrak.
Sekumpulan kebutuhan dapat juga didefinisikan oleh orang-orang yang harus mendesain, membuat, memelihara dan mengoperasikan sistem operasi seperti: sistem operasi harus mudah didesain, diimplementasikan dan dipelihara, sistem harus fleksibel, dapat diandalkan, bebas eror dan efisien.
Pemeliharaan sistem operasi penting untuk dilakukan. Hal tersebut merupakan salah satu cara untuk menjaga agar sistem operasi dapat bekerja dengan baik. Pemeliharaan sistem operasi menyangkut bagaimana nantinya sistem operasi dapat bekerja untuk memenuhi tiga kebutuhan, yaitu: fungsionalitas: apakah sistem tersebut dapat bekerja dengan baik; kecepatan: apakah sistem tersebut dapat memproses dengan cepat?; dan fault-tolerant: apakah sistem dapat terus bekerja apabila terjadi kesalahan pada hardware.
Sebelum kita berbicara tentang bagaimana merancang sebuah sistem operasi, akan sangat baik apabila kita tahu apa yang harus dilakukan oleh sebuah sistem operasi. Hal tersebut dapat dijabarkan menjadi tiga, yaitu: abstraksi hardware, manajemen sumber daya dan user interface.
Abstraksi Hardware
Abstraksi Hardware adalah proses penyederhanaan dan penyembunyian informasi. Inti dari abstraksi hardware adalah mendapatkan hardware-hardware yang kompleks dan membuatnya sesuai untuk interface yang simple dan terdefinisi dengan baik. Abstraksi diperlukan karena meliputi bagaimana cara untuk berhadapan dengan failure apabila device harus fault tolerant. Ada dua alasan mengapa abstraksi hardware penting: simplicity dan compatibility.
• Simplicity adalah mengenali proses-proses kompleks sehingga tidak terjadi duplikasi. Proses-proses kompleks tersebut harus dilakukan satu kali, tetapi dalam sistem dimana banyak aplikasi yang melakukan proses tersebut, akan menjadi desain yang buruk apabila setiap developer aplikasi mengimplementasikan ulang proses tersebut. Dan sistem operasi mengatasi hal ini dengan baik. Sistem operasi menyediakan media antarmuka yang lebih sederhana untuk aplikasi.
• Compatibility, hampir semua tujuan umum sistem operasi adalah dapat mengoperasikan semua hardware. Akan sangat baik apabila setiap bagian kecil dari hardware yang melakukan hal yang sama berkomunikasi menurut standar interface, tetapi itu tidak benar. Beberapa bagian kecil dari sistem perlu untuk tahu apa tipe dan bagaimana cara berkomunikasi dengan suatu hardware. Sistem operasi melakukan hal tersebut, dan kemudian menampilkan aplikasi dengan interface yang sama, tidak bergantung dengan tipe hardware. Dengan begitu, aplikasi dapat bekerja dengan tipe hardware apa saja.
Manajemen Sumber Daya
Sebagai tambahan terhadap abstraksi hardware, umumnya sistem operasi mengatur sumber daya dari sistem dengan baik. Sumber daya adalah istilah umum yang dapat merujuk pada setiap komponen dari sistem yang sanggup melakukan perkerjaan. contohnya, processor adalah sumber daya, begitu juga RAM dan disk. Sound card dan network card juga sumber daya walaupun tidak semua hardware adalah sumber daya. Untuk pengaturan sumber daya yang lebih baik, sistem operasi dapat membagi sumber daya menjadi sub-sumber daya yang sejenis. Misalnya, disk adalah sumber daya, tetapi melalui file system, sistem operasi dapat membagi disk menjadi file, yang mana juga sumber daya. Manajemen sumber daya adalah proses pemberian sumber daya kepada aplikasi untuk digunakan. Hal tersebut dilakukan dengan cara yang berbeda-beda untuk sumber daya yang berbeda, dengan perbedaan utama terletak pada multiplexing, locking dan access control.
• Multiplexing adalah berbagi sebuah sumber daya antara akses-akses yang berlangsung bersamaan. ini adalah perhatian utama untuk multitasking sistem operasi. Banyak sumber daya dapat di share untuk menyediakan akses bagi aplikasi-aplikasi yang berbeda.
• Locking beberapa device mungkin tidak dapat di multiplexed. Contohnya, backup device tidak dapat segera di multiplex apabila dua aplikasi mau melakukan backup dalam waktu yang bersamaan. Ini adalah error. Tetapi sistem operasi tidak seharusnya membiarkan error ini terjadi dan berpengaruh besar pada sistem. Untuk memastikan hal ini, sistem operasi menyediakan beberapa jenis locking ketika device tidak dapat di multiplex. Locking menjamin bahwa hanya satu aplikasi saja yang mempunyai akses ke sebuah device dalam waktu yang ditentukan.
• Access Control kadang manajemen sumber daya tidak melibatkan pemecahan masalah dari beberapa proses pengaksesan hardware. Malahan, manajemen sumber daya melibatkan perlindungan proses dari proses lainnya. Security secara khas terimplementasikan di beberapa bentuk sebagai bagian dari manajemen sumber daya. Access control adalah kontrol sumber daya yang disediakan oleh sistem operasi untuk menguatkan batasan-batasan security. Contohnya, sebuah sistem operasi mungkin akan memperbolehkan sebuah aplikasi untuk membuat file yang secara spesifik hanya pengguna tertentu saja yang diperbolehkan untuk menggunakannya.
User Interface
Tujuan ketiga dari sistem operasi adalah untuk menyediakan beberapa jenis media tatap muka bagi pengguna untuk mempermudah mengontrol sistem dan menjalankan aplikasi-aplikasi. Tujuan ini membawa perancangan sistem operasi jauh dari pertanyaan-pertanyaan teknis yang umumnya ada di diskusi sistem operasi dan lebih ke arah pertanyaan psikologis mengenai cara terbaik untuk berinteraksi antara manusia dan sistem. User interface juga aspek yang sangat modular dari perancangan sistem operasi. dengan demikian, antarmuka pengguna dapat dipaksa ke urutan atas dari perancangan-perancangan lain dengan mudah.
Adapun prinsip-prinsip dalam merancang sistem operasi adalah:
1. Extensibility. Extensibility terkait dengan kapasitas sistem operasi untuk tetap mengikuti perkembangan teknologi komputer, sehingga setiap perubahan yang terjadi dapat difasilitasi setiap waktu, pengembang sistem operasi modern menggunakan arsitektur berlapis, yaitu struktur yang modular. Karena struktur yang modular tersebut, tambahan subsistem pada sistem operasi dapat ditambahkan tanpa mempengaruhi subsistem yang sudah ada.
2. Portability. Suatu sistem operasi dikatakan portable jika dapat dipindahkan dari arsitektur hardware yang satu ke yang lain dengan perubahan yang relatif sedikit. Sistem operasi modern dirancang untuk portability. Keseluruhan bagian sistem ditulis dalam bahasa C dan C++. Semua kode prosesor diisolasi di DLL (Dynamic Link Library) disebut dengan abstraksi lapisan hardware.
3. Reliability. Adalah kemampuan sistem operasi untuk mengatasi kondisi error, termasuk kemampuan sistem operasi untuk memproteksi diri sendiri dan penggunanya dari software yang cacat. Sistem operasi modern menahan diri dari serangan dan cacat dengan menggunakan proteksi perangkat keras untuk memori virtual dan mekanisme proteksi perangkat lunak untuk sumber daya sistem operasi.
4. Security. Sistem operasi harus memberikan keamanan terhadap data yang disimpan dalam semua drive.
5. High Performance. Sistem operasi dirancang untuk memberikan kinerja tinggi pada sistem desktop, server sistem multi-thread yang besar dan multiprosesor. untuk memenuhi kebutuhan kinerja, sistem operasi menggunakan variasi teknik seperti asynchronous I/O, optimized protocols untuk jaringan, grafik berbasis kernel, dan caching data sistem berkas.
Untuk merancang sistem operasi diperlukan persiapan-persiapan yang matang. persiapan-persiapan yang diperlukan dalam merencanakan perancangan sistem operasi yaitu:
1. Memikirkan dimana nantinya sistem operasi akan dijalankan. ini dikarenakan banyaknya sistem komputer dan masing-masing sistem komputer tidak saling mendukung.
2. Memikirkan kegunaan sistem operasi tersebut. fungsi sistem operasi sebagai pelayan bagi program aplikasi dan masing-masing program aplikasi mempunyai tujuan-tujuan tertentu yang saling berbeda. disinilah perlu dipikirkan kegunaan sistem operasi yang akan dirancang. akan tetapi, biasanya sistem operasi dirancang agar dapat menjalankan berbagai macam aplikasi. Sistem operasi ini disebut sistem operasi umum, tetapi kadang sistem operasi ditujukan bagi aplikasi-aplikasi tertentu saja, misalnya sistem operasi database.
3. Bahasa pemrograman yang akan digunakan. banyak bahasa pemrograman yang dapat digunakan untuk merancang sistem operasi dan tiap-tiap bahasa mempunyai kekurangan dan kelebihan, tetapi bahasa apapun yang jadi pilihan nantinya haruslah sudah dikuasai dengan baik.

Perancangan Antarmuka
Merancang antarmuka merupakan bagian yang paling penting dari merancang sistem. Biasanya hal tersebut juga merupakan bagian yang paling sulit, karena dalam merancang antarmuka harus memenuhi tiga persyaratan: sebuah antarmuka harus sederhana, sebuah antarmuka harus lengkap, dan sebuah antarmuka harus memilki kinerja yang cepat.
Alasan utama mengapa antarmuka sulit untuk dirancang adalah karena setiap antarmuka adalah sebuah bahasa pemrograman yang kecil: antarmuka menjelaskan sekumpulan objek-objek dan operasi-operasi yang bisa digunakan untuk memanipulasi objek.
Dalam proses pengembangan antarmuka, kita bisa atau mungkin saja tidak bisa memisahkannya dari seluruh proses pengembangan sebuah produk. Walaupun begitu, fokus dari dua proses tersebut sangatlah berbeda. Dalam proses pengembangan antarmuka, fokus haruslah terletak pada elemen-elemen antarmuka dan objek-objek yang pengguna lihat dan gunakan, dibandingkan dengan kemampuan sebuah program.
Elemen-Elemen dalam perancangan antarmuka adalah
1. Mendefinisikan konsep. Mengumpulkan kebutuhan-kebutuhan pengguna dan mendefinisikan desain secara konseptual.
2. Memvalidasi konsep. Mengevaluasi konseptual desain tersebut.
3. Merancang. Mengevaluasi prototype. Menandai dan memperbaiki masalah-masalah yang ditemukan.
4. Pengembangan. Melakukan pengujian secara berkala terhadap desain yang lebih dahulu dibuat dan desain yang paling terakhir dibuat. Menandai dan memperbaiki masalah-masalah yang ditemukan.
Gambar 1. Empat Tahap Proses Perancangan Antarmuka

Proses yang secara rinci menggambarkan bagaimana perancangan dan pengembangan antarmuka terlihat pada gambar di atas. Empat tahap utama dalam proses tersebut adalah:
• Mengumpulkan atau menganalisa informasi dari pengguna.
• Merancang Antarmuka.
• Mengembangkan Antarmuka.
• Memvalidasi Antarmuka.
Proses-proses tersebut independen dari hardware dan software, sistem operasi dan peralatan yang digunakan untuk merancang dan mengembangakan produk. IBM Common User Access (CUA) interface design guide adalah yang pertama kali mendeskripsikan proses perancangan antarmuka secara iteratif.
1. Mengumpulkan atau Menganalisa Informasi Pengguna. Proses perancangan antarmuka dimulai dari memahami pengguna. Sebelum merancang antarmuka, kita harus mengetahui masalah apa yang ingin pengguna selesaikan dan bagaimana mereka melakukan pekerjaan mereka. Pengumpulan dan penganalisaan aktivitas-aktivitas pada tahap pertama ini dapat dijabarkan dalam lima langkah:
• Menentukan profil pengguna.
• Melakukan analisa terhadap task-task pengguna.
• Mengumpulkan kebutuhan-kebutuhan pengguna.
• Menganalisa user environments.
• Mencocokan kebutuhan tersebut dengan task.
2. Merancang Antarmuka. Dalam merancang antarmuka ada beberapa tahapan yang harus dilalui, yaitu:
• Menjelaskan kegunaan dan tujuan.
• Menetapkan icon objek, views, dan representasi visual.
• Merancang objek dan jendela menu
• Memperbaiki rancangan visual.
3. Mengembangkan Antarmuka. Hal pertama yang bisa dilakukan dalam membangun antarmuka adalah membangun prototype. Membangun prototype adalah cara yang berharga dalam membuat rancangan awal dan membuat demonstrasi produk dan penting untuk pengujian kegunaan antarmuka. Dari prototype tersebut, perancang antarmuka dapat mulai membangun antarmuka secara utuh. Ketika membuat prototype, sangat penting untuk diingat bahwa prototype harus dapat di buang setelah digunakan (disposable). Jangan takut untuk membuang sebuah prototype. Tujuan dalam membuat prototype adalah untuk mempercepat dan mempermudah dalam memvisualisasikan desain alternatif dan konsep, bukan untuk membangun kode yang akan digunakan sebagai bagian dari produk.
4. Melakukan Validasi Terhadap Antarmuka. Evaluasi kegunaan adalah bagian penting dari proses pengembangan, untuk mengetahui bagaimana tanggapan pengguna terhadap antarmuka yang telah dibuat. Evaluasi ini akan digunakan untuk memperbaiki kekurangan pada antarmuka yang telah dibangun. Aturan emas dalam perancangan antarmuka:
• Buat Pengguna menguasai antarmuka.
• Kurangi user's memory load
• Buat antarmuka konsisten

Implementasi
Rancangan Sistem
Desain sistem memiliki masalah dalam menentukan tujuan dan spesifikasi sistem. Pada level paling tinggi, desain sistem akan dipengaruhi oleh pilihan hardware dan jenis sistem. Kebutuhannya akan lebih sulit untuk dispesifikasikan. Kebutuhan terdiri dari user goal dan system goal. User menginginkan sistem yang nyaman digunakan, mudah dipelajari, dapat diandalkan, aman, dan cepat. Namun itu semua tidaklah signifikan untuk desain sistem. Orang yang mendesain ingin sistem yang mudah didesain, diimplementasikan, fleksibel, dapat dipercaya, bebas error, efisien. Sampai saat ini belum ada solusi yang tepat untuk menentukan kebutuhan dari sistem operasi. Lain lingkungan, lain pula kebutuhannya.
Mekanisme dan Kebijakan
Mekanisme menentukan bagaimana melakukan sesuatu. Kebijakan menentukan apa yang akan dilakukan. Pemisahan antara mekanisme dan kebijakan sangatlah penting untuk fleksibilitas. Perubahan kebijakan akan membutuhkan definisi ulang pada beberapa parameter sistem, bahkan bisa mengubah mekanisme yang telah ada. Sistem operasi Microkernel-based menggunakan pemisahan mekanisme dan kebijakan secara ekstrim dengan mengimplementasikan perangkat dari primitive building blocks. Semua aplikasi mempunyai antarmuka yang sama karena antarmuka dibangun dalam kernel. Kebijakan penting untuk semua alokasi sumber daya dan penjadwalan problem. Perlu atau tidaknya sistem mengalokasikan sumber daya, kebijakan yang menentukan. Tapi bagaimana dan apa, mekanismelah yang menentukan.
Kinerja
Kinerja sebuah sistem ditentukan oleh komponen-komponen yang membangun sistem tersebut. Kinerja yang paling diinginkan ada pada sebuah sistem adalah bebas error, cepat dan fault-tolerant.
Fault-tolerant
Beberapa sistem perlu untuk tetap berjalan apapun yang terjadi. Sistem-sistem ini didesain untuk memulihkan secara sempurna dari masalah hardware dan tetap berjalan. Maka dari itu, fault-tolerant sistem operasi adalah menyembunyikan kegagalan hardware dari aplikasi yang sedang menggunakan hardware tersebut.
Pemeliharaan Sistem
Pemeliharaan sistem sangatlah penting bagi pengguna sistem. Karena, seringkali penggunaan sistem operasi menjadi tidak aman karena alasan-alasan seperti:
• Sistem terinfeksi malware aktif
• Sistem berkas corrupt
• Perangkat keras melemah
Untuk mencegah hal-hal tesebut, digunakanlah mOS(maintenance Operating system) yang berfungsi untuk:
• Manajemen Malware yang aktif
• Pemulihan data (recovery) dan perbaikan sistem berkas
• Diagnosa perangkat keras.
mOS tidak menulis ke disk atau menjalankan kode apapun dari disk, memiliki akses langsung ke perangkat keras, dan hanya membutuhkan sedikit bagian dari perangkat keras untuk bekerja dengan sempurna. Selain dengan mOS, kita juga dapat memelihara sistem (pada windows) dengan cara-cara yang sederhana seperti:
• Jangan pernah mematikan power sampai sistem benar-benar sudah shutdown.
• Buatlah backup data-data yang penting.
• Lakukan defragment setidaknya satu bulan sekali
• Sisakan sedikitspace kosong di partisi tempat sistem operasi berada.
• Gunakan firewall jika anda terkoneksi dengan jaringan.
• Lakukan pengecekan virus secara rutin.
Tunning
Tuning dengan tujuan optimisasi kinerja adalah proses memodifikasi sebuah sistem untuk membuat beberapa aspek bekerja lebih efisien atau menggunakan sumber daya lebih sedikit. Dengan kata lain, tuning berarti mencari titik kelemahan dari suatu sistem dan memperbaikinya agar bisa jauh lebih baik lagi.
Tuning akan terpusat pada meningkatkan hanya satu atau dua aspek dari kinerja: waktu eksekusi, penggunaan memori, kapasitas disk, bandwith, konsumsi power, atau sumber daya lainnya. Namun peningkatan tersebut diimbangi dengan penurunan kinerja lainnya. Misalnya memperbesar ukuran cache mempercepat kinerja, namun meningkatkan penggunaan memori.
Salah satu contoh tuning yang biasa kita lakukan adalah defragment. Defragmentation (atau defragging) adalah proses mengurangi jumlah fragmentasi dalam file system. Defragmentation menyusun kembali konten-konten dalam disk dan menyimpan bagian-bagian kecil dari setiap file untuk tetap saling berdekatan. Defragmentation juga berusaha untuk membuat area untuk free space lebih besar dengan menggunakan compaction untuk menghalangi kembalinya fragmentasi. Beberapa defragmenter juga mencoba untuk menjaga file-file yang lebih kecil tetap berada dalam singel directory, karena mereka sering kali diaskes secara berurutan.
Selain untuk optimasi kinerja, Adalah mungkin untuk mendesain, mengkode, dan megimplementasikan sebuah sistem operasi khusus untuk satu mesin saja. Pada umumnya sistem operasi dirancang untuk dapat dijalankan pada berbagai jenis mesin, sistemnya harus dikonfigurasikan untuk setiap komputer. Proses ini terkadang disebut sebagai System Generation. Program Sysgen mendapatkan informasi mengenai konfigurasi khusus tentang sistem perangkat keras dari sebuah data, antara lain sebagai berikut:
• CPU apa yang digunakan, pilihan yang diinstall.
• Berapa banyak memori yang tersedia
• Peralatan yang tersedia
• Sistem operasi pilihan apa yang diinginkan atau parameter apa yang digunakan.
Trend
Trend sistem operasi sangat dipengaruhi oleh penilaian dari pengguna sistem operasi. Pengguna biasanya lebih memilih sistem operasi yang user friendly, performanya bagus, tidak sering mengalami error, tampilannya cantik, dan lain lain. Trend sistem operasi sampai saat ini ternyata masih dikuasai oleh keluarga Windows. Namun bisa diprediksi bahwa trend sistem operasi pada tahun-tahun mendatang akan berkaitan dengan sistem operasi yang bersifat Open Source. Dalam sebuah artikel di web, Linus Torvalds mengatakan bahwa sistem operasi yang open source memungkinkan penggunanya untuk menciptakan sistem yang terbaik sesuai dengan kebutuhan mereka masing-masing.
Rangkuman
Sebelum merancang sistem operasi ada baiknya melakukan persiapan-persiapan terlebih dahulu. Persiapan-persiapan tersebut antara lain: memikirkan dimana nantinya sistem operasi akan dijalankan, memikirkan kegunaan sistem operasi tersebut dan menentukan bahasa pemrograman yang akan digunakan. Selain itu dalam merancang sistem operasi juga sebaiknya berpegangan dengan prinsip-prinsip merancang sistem operasi, yaitu: extensibility, portability, reliability, security dan high performance.
Pemeliharaan sistem operasi dilakukan untuk menjaga agar sistem operasi tetap stabil dan dapat berkerja sebagaimana mestinya.
Trend sistem operasi pada tahun-tahun mendatang akan berkaitan dengan sistem operasi yang bersifat Open Source. Dalam sebuah artikel di web, Linus Torvalds mengatakan bahwa sistem operasi yang open source memungkinkan penggunanya untuk menciptakan sistem yang terbaik sesuai dengan kebutuhan mereka