Pages

Minggu, 11 Maret 2012

Sistem Operasi Komputer UNIX

Unix atau UNIX adalah sebuah sistem operasi komputer yang diawali dari projectMultics (Multiplexed Information and Computing Service) pada tahun 1965 yang dilakukan American Telephone and Telegraph AT&T, General Electric (GE), danInstitut Teknologi Massachusetts (MIT), dengan biaya dari Departemen Pertahanan Amerika (Departement of Defence Advenced Research Project, DARPA atau ARPA), UNIX didesain sebagai Sistem operasi yang portable, multi-tasking dan multi-user.

Pendahuluan
Sistem operasi Unix digunakan secara luas baik sebagai server atau workstation. Arsitektur Unix dan model client/server merupakan elemen yang paling penting dalam perkembangan internet dan mengubah proses komputasi secara terpusat dalam jaringan dari pada proses tunggal di komputer. Linux, merupakan sistem operasi yang diadopsi dari Unix dan tersedia secara bebas mendapat popularitas sebagai alternatif dari sistem operasi proprietary seperti Microsoft Windows
Sejarah
Unix berkembang dari MULTICS, sebuah proyek sistem operasi yang multiuser. Pada tahun 1969, proyek MULTICS dihentikan oleh AT&T karena terlambat, tidak sesuai dengan jadwal yang telah ditentukan, juga karena jauhnya jarak antara periset yang mengembangkannya, antara laboratorium New Jersey dan MIT.
Pada tahun 1969, Ken Thompson berkerja sama dengan Dennis Ritchie, dua peneliti yang sebelumnya bekerja pada proyek MULTICS, mencoba merealisasikan ide MULTICS menggunakan komputer PDP-7. Peter Neuman menyarankan menggunakan nama Unix untuk sistem yang baru ini. Pada tahun 1971, Unix di-port-kan untuk PDP-11 dari Digital. Kemudian pada tahun 1970, ilmuwan AT&T banyak menambahkan kemampuan UNIX sehingga banyak program-program kecil, yang disebut tools di UNIX, yang mana masing-masing tool digunakan untuk melakukan suatu fungsi.
Tahun 1973, Unix ditulis ulang oleh Ken Thompson dengan menggunakan Bahasa C yang baru dikembangankan oleh Dennis Ritchie. Bahasa C dirancang untuk dapat dibawa portable dari komputer satu ke komputer lainnya.
Tahun 1977, Mike Lesk mengembangkan "ported I/0 library", pustaka untuk mengatasi kesulitan membawa UNIX dari satu komputer ke komputer lain karna perbedaan penanganan sistem masukan dan keluaran dari setiap komputer. Unix pertama kali dibawa kedalam laboratorium Interdata 8/32, komputer mikro yang sama dengan PDP-11. Tahun 1978, sistem operasi UNIX dibawa kedalam komputer mini VAX. Hingga saat ini, Unix masih banyak sebagai sistem eksperimental.
Awal 1973 lebih dari 16 AT&T atau Western Electric di luar laboratorium Bell menjalankan sistem operasi Unix, Unix kemudian menyebar. Perusahaan-perusahaan mulai melakukan port terhadap Unix untuk mesinnya sehingga bermunculan beberapa varian Unix. Tahun 1977 sedikitnya 500 tempat menggunakan sistem operasi Unix, 125 diantaranya adalah perguruan tinggi dan lebih dari 10 negara asing. Pada tahun 1977 juga keluar Unix Versi 6 yang memiliki dukungan komersial.
Universitas California di Berkeley membayar 400 (dalam satuan dollar) untuk mendapatkan sumber Unix yang didalamnya terdapat kode sumber Unix yang lengkap. Bill joy dan Chuck Haley, lulusan dari Berkeley, mulai mengubah. Tahun 1978 Bill Joy mengeluarkan 30 salinan koleksi program dan modifikasi Unix dengan biaya pengganti media dan pengiriman seharga 50 (dalam satuan dollar). Lebih dari 6 tahun Berkeley mendapat dana dari ARPA untuk mengembangkan Unix yang kemudian disebut dengan BSD Unix. banyak pengembangan yang telah dilakukan seperti multitasking, penamaan file dengan jumlah karakter sampai dengan 255 karakter, dan kemampuan untuk digunakan di komputer lokal. pada tahun yang sama AT&T tetap mengembangkan Unix versinya, dan mulai khawatir akan kepopuleran BSD Unix. AT&T mengembangkan produk komersial Unix, yang disebut UNIX System V dan menyatakan sebagai standart Unix, dan menyatakan bahwa BSD Unix bukan merupakan produk Unix yang standart dan tidak kompetible, Pernyataan ini dikeluarkan oleh AT&T untuk meredam kepopuleran BSD Unix, juga karna hak cipta ada pada AT&T, BSD Unix dinyatakan sebagai BSD 4.2. dengan lisensi Berkeley dengan AT&T Universitas dapat secara bebas
Jenis-jenis UNIX
UNIX adalah sebuah sistem operasi yang dikembangkan oleh banyak pihak. Setiap pihak yang mengembangkan UNIX, menambahkan teknologi miliknya ke dalam UNIX, yang meskipun hal itu di luar standar, mampu menjadikan sistem operasi UNIX lebih kuat atau lebih andal. Tabel berikut menyebutkan beberapa jenis-jenis UNIX.
Nama varian UNIX
Dikembangkan oleh (vendor/organisasi)
Darwin
Apple Computer (modifikasi yang dilakukan oleh Apple darikernel BSD dan diaplikasikan pada Mac OS/X).
Convergent Technology
Digital Equipment Corporation (DEC) (dibeli oleh Compaq, sekarang bagian dari Hewlett-Packard)
Digital Equipment Corporation (DEC) (dibeli oleh Compaq. sekarang bagian dari Hewlett-Packard)
Compaq (sekarang bagian dari Hewlett-Packard)
Microsoft Corporation (lalu dijual ke SCO)
Santa Cruz Operation (SCO) Corporation
Santa Cruz Operation (SCO) Corporation
Santa Cruz Operation (SCO) Corporation
BSD UNIX
BSD/I
OSF/1
Universitas Terbuka Amsterdam (Vrije Universiteit Amsterdam),Belanda
Universitas Carnegie Mellon (Carnegie Mellon University),Amerika Serikat
Lucent Technologies (Bell Labs)
Prinsip Pemrograman UNIX
UNIX memiliki suatu budaya pemrograman yang menarik. Salah satunya adalah yang seperti dikatakan oleh Douglas Mcllroy.
Buatlah program yang hanya melakukan satu tujuan tetapi benar-benar melakukannya dengan baik. Buatlah program-program yang saling bekerja sama. Buatlah program dengan interface teks, karena teks adalah interface yang universal.

REFERENSI



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 :