Selasa, 18 April 2017

Pengantar Sistem Operasi

Pengertian Sistem Operasi
Saat menggunakan suatu komputer, kita pasti membutuhkan sistem operasi untuk mengoperasikan komputer kita. Apa itu sistem operasi ? Secara umum, pengertian sistem operasi adalah perangkat lunak (software) pada komputer yang bertugas dalam menggontrol dan memanajemen perangkat keras dan sebagai operasi-operasi dasar sistem, termasuk dalam menjalankan software aplikasi misalnya program-program pengolah data untuk mempermudah kegiatan manusia. Sistem operasi juga berfungsi sebagai penghubung antara lapisan hardware dan lapisan software. Selain dari itu sistem operasi komputer melakukan semua perintah penting dalam komputer, serta menjamin aplikasi-aplikasi yang berbeda fungsinya dapat berjalan lancar secara bersamaan tanpa adanya hambatan.

Seperti apa proses dalam sistem operasi ?
Proses adalah keadaan ketika sebua program sedang dieksekusi. Sebuah proses dibuat melalui system call create-prosess yang membentuk proses turunan atau child process yang dilakukan oleh proses induk atau parent process. Proses turunan tersebut mampu membuat proses baru sehingga semua proses ini akhirnya membentuk pohon prosess.
Saat suatu prosess dibuat, maka proses tersebut dapat memperoleh sumber daya seperti waktu CPU, berkas, perangkat input/output, dan memory. Sumber daya ini dapat langsung diperoleh dari sistem operasi, dari proses induk yang membagikan sumber daya ke setiap proses turunannya. Atau proses turunan dan proses induk berbagi sumber daya yang diberikan oleh sistem operasi.

Stack dan Heap
Stack adalah salah satu bagian yang digunakan untuk menyimpan data-data atau variabel yang pengalamatan memorinya telah dilakukan pada saat kompilasi (alamat pastinya sudah ditentukan dari awal). Dalam stack, data disimpan menggunakan metode Last In First Out (LIFO). Stack berarti tumpukan, maksudnya data yang tersimpan di memori akan dialokasikan dan didealokasikan hanya di akhir memori. Hal ini bisa kita analogikan seperti saat kita menumpuk piring. Pada saat kita menumpuk piring kita akan meletakkannya dalam satu susunan, piring yang pertama kali kita taruh pasti letaknya di bawah dan pasti akan kita ambil terakhir kali karena kita mengambilnya dari atas (konsep LIFO). Alokasi semacam inilah yang diimplementasikan dalam memori komputer.
Sedangkan Heap adalah area memori yang digunakan untuk alokasi secara dinamis. Bagian-bagian memori yang dialokasikan dilakukan secara sembarang atau tanpa pola awal (no pattern). Artinya kode-kode yang akan dieksekusi akan diletakkan pada lokasi penyimpanan dalam memori, namun lokasi ini tidak memiliki pattern atau tidak berpola (acak). Lokasi memori yang ditempati ini tidak akan diketahui sebelum runtime (saat dijalankan).

Untuk memesan alamat memori, program akan terlebih dahulu melakukan pengecekan terhadap kapasitas memori sesuai besar data yang diperlukan. Jika memori tersedia namun dalam ruang terpisah maka program akan memecah informasi tersebut menjadi bagian-bagian kecil yang dapat menempati memori yang tersedia.

Lalu apa perbedaan Stack dan Heap?
Dibandingkan dengan heap, stack lebih banyak digunakan dalam kaitannya untuk mengalokasikan memori bagi variabel-variabel yang digunakan di dalam fungsi dan stack digunakan untuk menyimpan data yang sifatnya “sementara”.

Sementara heap diperuntukkan bagi informasi yang menetap dan dialokasikan secara khusus oleh pengguna, heap digunakan untuk menyimpan data tambahan sesuai permintaan (request data).
Karena memori yang dipakai oleh stack bersifat sementara, maka informasi yang terdapat di alamat stack akan langsung didealokasi secara otomatis ketika scope (ruang lingkup) sebuah program sudah berakhir ini disebut lifetimes, sedangkan memori yang dialokasikan pada heap akan tetap bertahan sampai program benar-benar mendealokasikannya. 
Process Control Block (PCB) dan Thread
Process Control Back adalah informasi-informasi lain yang diperlukan SO untuk mengendalikan dan koordinasi beragam proses aktif, diantaranya (keadaan proses (new, ready, running, waiting), program counter, informasi manajemen memori, informasi pencatatan, informasi status I/O).

Sedangkan Thread (singkatan dari "thread of execution") diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan thread lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu thread ke thread lainnya) atau multiprocess (ketika thread tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem).

 

Bounded Buffer dan Unbounded Buffer
Dalam kamus Bahasa Inggris, kata buffer berarti penampung. Jadi, bounded buffer merupakan suatu struktur data yang mampu menyimpan (menapung) beberapa nilai dan mengeluarkannya kembali ketika diperlukan, dan penampung itu bersifat limited (terbatas). Berbeda dengan unbounded buffer yang merupakan tempat penyimapan atau penampungan data yang sifat unlimited (tidak terbatas).

Remote Procedure Calls (RPC)
Remote Procedure Calls adalah suatu protokol yang menyediakan suatu mekanisme komunikasi antar proses yang mengijinkan suatu program untuk berjalan pada suatu komputer tanpa terasa adanya eksekusi kode pada sistem yang jauh (remote system). RPC mengasumsi keberadaan dari low-level protokol transportasi seperti TCP atau UDP untuk membawa pesan data dalam komunikasi suatu program. Protokol RPC dibangun diatas protokol eXternal Data

RPC dirancang untuk mengurangi isu-isu kerumitan pada kompleksitas di OS dengan menyediakan suatu antar muka yang umum antar aplikasi. RPC bertindak sebagai suatu middle untuk komunikasi-komunikasi client/server. RPC dirancang untuk membuat client/server berinteraksi lebih aman dan lebih mudah seperti keamanan, sinkronisasi, dan data mengalirkan menangani, ke dalam suatu standar yang umum.

 

Batch
Batch adalah mengumpulkan job-job yang mirip dan dijalankan (dieksekuasi) secara kelompok kemudian setelah kelompok yang dijalankan tadi selesai maka secara otomatis kelompok lain dijalankan.

Contoh sebuah Batch adalah sebuah e-mail dan transaksi batch processing. Dalam suatu sistem batch processing, transaksi secara individual dientri melalui peralatan terminal, dilakukan validasi tertentu, dan ditambahkan ke transaction file yang berisi transaksi lain, dan kemudian dientri ke dalam sistem secara periodik. Di waktu kemudian, selama siklus pengolahan berikutnya, transaction file dapat divalidasi lebih lanjut dan kemudian digunakan untuk meng-up date master file yang berkaitan.


System Calls
System call adalah tata cara pemanggilan di program aplikasi untuk memperoleh layanan yang disediakan oleh sistem operasi. System call berupa rutin sistem operasi untuk keperluan tertentu yang sangat spesifik.

Proses dalam system calls
Pertama, kita dapat menulis suatu program sederhana untuk membaca satu file ke file lainnya. Program akan membutuhkan nama dari 2 file input dan output. Masukkan nama file input dan menampilkannya pada layar, menerima masukan seperti inputan data dari keyboard yang diketik, dan nama file output hasil dari ketikkan kita. Setelah dua nama file telah diperoleh, program harus membuka file input dan membuat file output. Masing-masing membutuhkan system call. Mungkin ada juga kondisi kesalahan yang dilakukkan operator.

Ketika program mencoba untuk membuka file input dan ternyata tidak ada nama file tersebut atau bahwa file tersebut dilindungi pengaksesannya, maka, kita harus membuat perintah di command interpreter yang terdapat di OS kita untuk membuka file tersebut. Jika file input ada, maka kita harus membuat file output baru. Kita mungkin akan menemukan file output dengan nama yang sama. Situasi tersebut dapat membuat program dibatalkan (system call), atau kita dapat menghapus file yang ada dan membuat yang baru.

Setelah dua file input dan output telah ditetapkan, maka program akan melooping membaca file input dan menulis ke file output sampai akhir file. Jika proses sudah selesai, program akan menutup kedua file dan akan terdapat pesan di layar bahwa proses telah selesai dan mengakhiri program dengan normal.

Shell dan Kernel
Shell adalah program (penerjemah perintah) yang menjembatani user dengan sistem operasi, umumnya shell menyediakan prompt sebagai user interface, tempat dimana user dapat mengetikkan perintah-perintah yang diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi file program (eksternal command). Selain itu, shell juga memungkinkan user menyusun sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program.

Shell ini adalah program bawaan Linux. Tetapi, bukan berarti windows tidak memiliki shell. Windows juga memiliki shell yang bernama cmd. Berikut tampilan cmd pada windows.

20 perintah shell yang banyak digunakan untuk mengelola sistem operasi Linux.
1. cat merupakan perintah yang digunakan untuk melihat isi file
2. uname -a perintah untuk melihat jenis OS serta versi
3. netstat -tnap perintah untuk melihat koneksi keluar/masuk, atau listen
4. rm -rf perintah untuk menghapus file atau direktori
5. cp perintah untuk mengcopy file
6. mv mengganti nama file atau memindah file
7. echo perintah yang digunakan untuk menampilkan kata yang dituliskan setelahnya
8. w perintah yang digunakan untuk menampilkan user yang sedang login
9. whoami perintah yang digunakan untuk menampilkan user kita sendiri
10. id perintah yang digunakan untuk menampilkan user kita sendiri
11. mkdir perintah yang digunakan untuk membuat direktori baru
12. touch perintah untuk membuat file kosong
13. pwd : menampilkan irektori aktif
14. chown : mengganti kepemilikan file
15. last : menampilkan daftar user-user yang pernah login
16. lwp-download : mengambil suatu data dari suatu situs
17. userdel : menghapus user (root)
18. tar -zxvf : mengekstrak file tgz atau tar.gz
19. su : ganti sebagai user lain
20. chmod adalah nama aplikasi yang digunakan untuk merubah hak akses suatu file atau direktori di system operasi Linux.

Kernel merupakan suatu inti yang menjadi bagian utama dari sebuah sistem operasi. Tugasnya melayani bermacam program aplikasi untuk mengakses perangkat keras komputer. Oleh karena akses terhadap perangkat keras terbatas, sedangkan program yang harus dilayani dalam waktu yang bersamaan bisa lebih dari satu, maka kernel juga bertugas untuk mengatur kapan dan berapa lama suatu program dapat menggunakan satu bagian perangkat keras tersebut. 

Perbedaannya adalah shell merupakan lapisan luar dari suatu sistem operasi. Sedangkan kernel sistem operasi merupakan lapisan dalam atau inti dari sistem operasi.

Mach
Mach adalah sebuah sistem operasi kernel yang dikembangkan di Carnegie Mellon University untuk mendukung penelitian sistem operasi, terutama komputasi terdistribusi dan paralel. Ini adalah salah satu contoh awal dari sebuah mikrokernel. Derivatif nya adalah dasar dari kernel sistem operasi modern di Mac OS X dan GNU Hurd. 

Mach merupakan penerus logis untuk Carnegie Mellon kernel Accent . Pengembang pemimpin proyek Mach, Richard Rasyid , telah bekerja di Microsoft sejak tahun 1991 di posisi tingkat atas berbagai seputar Microsoft Research divisi. Lain dari pengembang Mach asli, Avie Tevanian , adalah mantan kepala perangkat lunak di NeXT , lalu Chief Software Technology Officer di Apple Computer hingga Maret 2006.

Debugging

Dalam bahasa Indonesia, kata "bug" sendiri diartikan dengan serangga atau kutu. Sama halnya dengan sejarah istilah "bug" dalam dunia komputer, dimana sekitar tahun 1945, komputer yang digunakan oleh pihak militer Amerika tidak berfungsi dengan baik. Setelah dilakukan pengecekan pada komputer tersebut, ternyata ditemukan serangga yang tersangkut pada salah satu bagian hardware komputer. Setelah serangga tersebut dikeluarkan, komputer pun berfungsi dengan baik kembali.

Dalam dunia pemprograman, istilah "bug" lekat dengan istilah debugging atau suatu proses dalam menghilangkan "bug" dalam suatu program. Jadi, debugging merupakan sebuah metode yang dilakukan oleh para pemrogram dan pengembang software dan hardware untuk mencari dan mengurangi bug, atau kerusakan di dalam sebuah program komputer atau perangkat keras sehingga perangkat tersebut bekerja sesuai dengan harapan.

Bootstrap Program, Bootstrap Loader, dan Boot Block
Bootstrap Program adalah kode yang diletakkan dalam ROM yang mampu untuk menemukan kernel, memuatkannya dalam memory dan memulai eksekusinya.

Bootstrap Loader merupakan sebuah program yang terdapat pada ROM yang dapat menempatkan kernel, memasukkannya kedalam memori, dan memulai eksekusinya. Program ini diperlukan pada saat pertama kali sistem komputer diaktifkan.

Boot Block adalah sebuah region dalam EEPROM/Flash memory yang tidak dapat di upgrade. Boot Block selalu dieksekusi pertama kali pada saat komputer dinyalakan.

Perbedaannya adalah terletak pada cara kerja ketiganya.

Tidak ada komentar:

Posting Komentar