Pages

Minggu, 11 Maret 2012

Cara Kerja Sistem Operasi agar Aplikasi dapat Berjalan

Mengulang kembali apa yang dimaksud dengan Sistem Operasi (SO), SO adalah perangkat lunak sistem yang bertugas untuk melakukan kontrol dan manajemen perangkat keras serta operasi-operasi dasar sistem, termasuk menjalankan software aplikasi seperti program-program pengolah kata dan browser web. Sedangkan pengertian SO secara umum yaitu software pada lapisan pertama yang ditaruh pada memori komputer pada saat komputer dinyalakan. Sistem Operasi juga bisa disebut sebagai  pengatur aktivitas pada setiap komponen computer dan selanjutnya akan menampilkan aktifitas tersebut sebagai user-friendly interface (GUI).
Fungsi dari SO adalah untuk bertanggung jawab melakukan translasi atau penerjemah perintah yang dikeluarkan oleh alat input ke kode biner sehingga dapat melakukan kumunikasi dengan alat output. SO juga sebagai perantara antara user dengan perangkat keras computer dikarenakan SO sebagai eksekutor program user dan memudahkan menyelesaikan permasalahan user.
Naah, bagaimana cara SO mengendalikan kinerja sehingga operasi pada aplikasi itu berjalan ? Di sini saya akan membahas mengenai permasalahan tersebut. Check it out J
CARA KERJA SISTEM OPERASI (SO)
Dalam sebuah perangkat komputer, kernel merupakan komponen inti dari Sistem Operasi yang berjalan dalam perangkat tersebut. Kernel bertugas untuk mengatur pembagian sumber daya system komunikasi antara komponen hardware dan software. Kernel menghubungkan antara software aplikasi dan hardware komputer. Ia menyediakan abstraction layer pada level terendah untuk resource-resource seperti memori, prosesor dan perangkat I/O di mana suatu software aplikasi harus mengontrol resource-resource tersebut agar dapat berfungsi. Kernel mampu menyediakan fasilitas seperti ini bagi proses-proses aplikasi melalui mekanisme IPC (Inter Process Communication) dan System call.
Dalam banyak kasus, boot loader mulai mengeksekusi kernel dalam mode supervisor. Kernel kemudian menginisialiasi diri sendiri dan memulai proses pertama. Setelah itu, kernel tidak mengekseskusi secara langsung, tapi hanya merespon kepada even eksternal. Sebagai tambahan, kernel biasanya menyediakan loop yang dieksekusi ketika tidak ada proses yang tersedia untuk dijalankan; hal ini biasnya disebut idle process.
Tujuan utama dari adanya kernel adalah untuk mengatur pembagian sumber daya dan program mana yang boleh mengakses dan menggunakan sumber daya tersebut. Pada umumnya, sumber daya tersebut antara lain adalah CPU, memori dan Perangkat I/O.

·         Central Processing Unit (CPU). Sebagai bagian utama komputer, CPU bertugas dalam mengeksekusi program atau proses. Dalam hal ini, kernel bertugas menentukan setiap saat berapa banyak program yang harus dialokasikan ke CPU.
·         Memori Komputer. Memori digunakan untuk menyimpan instruksi program dan juga data. Keduanya dibutuhkan oleh memori agar suatu program dapat dieksekusi. Biasanya beberapa program akan berusaha mengakses memori, bahkan seringkali meminta memori melebihi yang dimiliki komputer. Di sinilah kernel bertugas untuk menentukan porsi pemakaian memori yang dapat dipakai oleh tiap program dan menentukan apa yang akan dikerjakan ketika tidak cukup tersedia memori.
·         Perangkat I/O. Beberapa perangkat I/O yang umumnya dipakai, misalnya: keyboard, mouse, monitor, Hard Disk, printer, scanner, dsb. Kernel melanjutkan request dari suatu aplikasi yang ingin melakukan suatu aksi I/Okepada perangkat yang sesuai dan menyediakan metode yang sesuai untuk memakai perangkat tersebut.
a.      Pengaturan Proses
Tugas utama kernel adalah membantu eksekusi aplikasi dan mendukungnya dengan fitur seperti abstraksi hardware. Suatu proses mendefinisikan seberapa porsi memori yang dapat diakses oleh suatu aplikasi. Pengaturan proses kernel harus memperhitungkan perangkat yang dibawa oleh hardware untuk perlindungan memori. Untuk menjalankan aplikasi, sebuah kernel pertama kali harus menyediakan space address untuk aplikasi, lalu me-load file yang berisi kode aplikasi ke dalam memori, mempersiapkan stack untuk program dan percabangan ke lokasi lain dalam program, dan kemudian baru memulai eksekusi program.
Dalam sebuah sistem pre-emptive multitasking, kernel akan memberi slot waktu kepada setiap program dan berpindah dari satu proses ke proses yang lain dengan cepat hingga terlihat seperti proses-proses ini dieksekusi secara bersamaan. Kernel menggunakan algoritma penjadwalan untuk menentukan proses mana yang akan dikerjakan berikutnya dan berapa lama waktu yang akan diberikan. Algoritma yang dipilih mungkin akan mengijinkan beberapa proses memiliki prioritas yang lebih tinggi daripada yang lain. Umumnya kernel juga menyediakan cara agar proses-proses ini dapat saling berkomunikasi; hal ini dikenal sebagai Inter-Process Communication (IPC). Pendekatan utama IPC ini adalah untuk shared memory, message passing dan remote procedure call.

b.      Pengaturan Memori
Kernel memiliki akses penuh ke memori sistem dan harus memberikan ijin kepada proses-proses untuk mengakses memori secara aman ketika membutuhkan. Langkah pertama yang dilakukan untuk melakukan hal ini di antaranya adalah virtual addressing. Virtual addressing menijinkan kernel untuk menjadikan suatu alamat fisik untuk tampil sebagai alamat lain, alamat virtual. Space alamat virtual mungkin berbeda untuk masing-masing proses; memori yang diakses suatu proses pada alamat virtual tertentu mungkin berbeda dengan memori
yang diakses proses lain pada alamat yang sama. Hal ini menyebabkan tiap program
seakan menjadi satu-satunya program yang berjalan dan karenanya dapat mencegah
terjadinya crash antar program.
Dalam kebanyakan sistem, alamat virtual suatu program dapat berupa data yang sebenarnya tidak ada dalam memori. Layer abstraksi yang disediakan virtual addressing mengijinkan Sistem Operasi untuk menggunakan penyimpan data, seperti Hard Disk, untuk menyimpan apa yang mestinya ada di memori utama (RAM).
Akibatnya, Sistem Operasi dapat mengijinkan program untuk memakai memori melebihi memori fisik yang yang dimiliki oleh komputer. Virtual addressing juga mengijinkan dibuatnya partisi vritual memori di dua area yang terpisah, satu dipakai oleh kernel (kernel space) dan yang lain untuk aplikasi (user space). Aplikasi tidak diijinkan oleh CPU untuk memakai alamat kernel, yang akhirnya hal ini akan mencegah agar aplikasi tidak merusak kernel.

c.       Pengaturan perangkat
Untuk menjalankan fungsinya, aplikasi membutuhkan akses ke perangkat-perangkat yang terhubung ke komputer, yang dikontrol oleh kernel melalui device driver. Sebagai contoh, untuk menampilkan sesuatu di layar, sebuah aplikasi harus membuat request ke kernel. Kernel lalu akan melanjutkan request tersebut ke driver display yang kemudian akan bertanggung jawab mem-plot karakter/pixel. Kernel harus memelihara sejumlah perangkat yang tersedia. Daftar perangkat ini dapat berupa plug and play (dideteksi oleh Sistem Operasi saat perangkat dijalankan), di-configure oleh user, atau bahkan advance (misal dalam system embedded di mana kernel akan diubah jika hardware diubah).

d.      System calls
Untuk mengakses layanan yang disediakan oleh kernel, biasanya kernel menyediakan library C atau API (Application Programming Interface) yang selanjutnya akan melibatkan fungsi kernel yang berhubungan.
Metode untuk melibatkan fungsi kernel berbeda-beda antar kernel. Jika isolasi memori sedang dipakai, tidak mungkin bagi proses untuk memanggil kernel secara langsung, karena hal itu merupakan pelanggaran aturan akses kontrol dari prosesor.
Beberapa kemungkinan antara lain;
·         Menggunakan interrupt software-simulated. Metode ini tersdia dalam hampir
semua hardware, karenanya sangat umum.
·         Menggunakan call gate. Call gate adalah address khusus di mana alamat tersebut ditambahkan dalam daftar yang disimpan dalam memori kernel yang diketahui prosesor. Ketika prosesor mendeteksi call ke lokasi tersebut, prosesor kemudian mengalihkannya ke lokasi target tanpa menyebabkan pelanggaran akses.
·         Menggunakan instruksi system call khusus. Teknik ini membutuhkan dukungan
hardware khusus, yang mana arsitektur umum (khususnya x86) mungkin kesulitan.
·         Menggunakan memory-based queue. Sebuah aplikasi yang membuat request dalam jumlah besar tapi tidak perlu menunggu hasilnya dapat menambahkan detil request-nya ke suatu area memori yang di-scan secara priodik oleh kernel untuk menemukan request.

Referensi :

0 komentar:

Posting Komentar