Showing posts with label sistem operasi. Show all posts
Showing posts with label sistem operasi. Show all posts

Monday, June 22, 2015

Linux adalah salah satu sistem operasi varian Unix yang merupakan salah satu
saingan terberat Microsoft Windows. Linux merupakan sistem operasi yang open source
dibawah lisensi GNU (Gnu is Not Unix), General Public License (GPL) sehingga gratis
dan kita bisa memperoleh source codenya. Linux kuat karena didukung oleh
komunitasnya yang sangat banyak. Namun karena Linux bersifat open source tadi maka
Linux pun mudah dikembangkan oleh siapa saja. Beberapa pengembang distribusi Linux
yang terkenal adalah: Mandrake dengan Mandrake & Mandrivanya, RedHat dengan
Redhat & Fedoranya, Suse, Debian, Gentoo, Slackeware, Xandros, dan masih banyak
yang lainnya. Bahkan sekarang sudah banyak distribusi Linux (atau disebut distro) yang
berada dalam sebuah CD. Distro tersebut disebut Distro Linux Live CD. Beberapa
contoh distro Live CD adalah Knoppix (varian dari Debian) MandrakeMove, dan
Ubuntu. Hanya dengan sebuah CD saja maka komputer kita dapat digunakan seperti
layaknya sistem operasi yang diinstall di harddisk. Bahkan ada beberapa distro Linux
yang dibuat di disket dan flash disk.

MENGAPA LINUX
 Mengapa menggunakan Linux? Itu adalah pertanyaan yang sering ditanyakan
oleh para pengguna Windows. Para pengguna tersebut tentunya ingin membandingkan
kenapa harus berganti sistem operasi. Beberapa jawabannya adalah sebagai berikut:
1. Karena Linux gratis sehingga tidak memerlukan lisensi. Linsensi Linux berada
dibawah lisensi GNU dari Free Software Foundation.
Definisi dari free software menurut Free Software Foundation
(http://www.fsf.org) adalah, sebuah bentuk kebebasan, mengacu ke pengguna
untuk memakai, mengkopi, mendistribusikan, mempelajari, mengubah maupun
meningkatkan software tersebut. Secara spesifik ada 4 arti kebebasan: bebas
menjalankan program, bebas mempelajari program dan mengadaptasi sesuai
kebutuhan, bebas mendistribusikan ulang, dan bebas meningkatkan program dan
mempublikasikannya.
Di dalam GNU terdapat dua linsensi yaitu: copy-left (siapapun yang
mendistribusikan ulang program dengan atau tanpa perubahan harus memberikan
kebebasan juga untuk didistribusikan lagi atau diubah. Copyleft menjamin setiap
pengguna mempunyai kebebasan) dan non copy-left.( siapapun yang
mendistribusikan atau mengubah harus mendapat ijin dari pembuat program).
2. Karena Linux juga seperti Windows, memiliki GUI yang juga semakin bagus.
Tidak hanya itu sekarang Linux juga sudah sangat kompatibel dengan hardwarehardware
baru seperti flashdisk dan bluetooth.
3. Semua yang bisa dijalankan di Windows, rata-rata ada juga di Linux dan
semuanya gratis!!! Hanya saja pasti tidak akan persis sama dengan Windows.
Pada modul ini akan dijelaskan nanti beberapa perbandingan antara Windows dan
Linux.
4. Linux tidak menakutkan, Linux bisa diinstall bersamaan dengan Windows pada
harddisk yang sama maupun berbeda. Bahkan ada yang bisa diinstall bersamaan
di partisi Window.
5. Linux sangat stabil dan sangat cocok jika dijadikan server. Dan umumnya Linux
bebas dari virus. Hal ini karena Linux memiliki hak akses yang ketat dan jarang
adanya virus Linux.
6. Linux dapat berinteraksi dengan sistem operasi lain melalui tiga cara:
kompatibilitas file dan filesystem, kompatibilitas network, dan emulasi (simulasi)
operating sistem.
Linux bisa menggunakan file-file dari operating sistem lain, dalam artian bisa
membaca dan menulis format file tersebut. Sehingga (hard)disk maupun disketdisket
dari OS/2, NT, DOS/Windows, Apple Macintosh, Unix, dan sistem-sistem
lain, bisa dibaca (dalam banyak hal juga ditulis) dengan mudah oleh Linux.
Hampir semua format file standar industri didukung oleh aplikasi-aplikasi Linux,
kecuali beberapa format yang spesifik vendor atau produk.
Di tingkat networking, Linux bisa bekerja sama dengan baik sekali dengan
operating sistem lainnya. Linux mempunyai dukungan TCP/IP yang sangat
bagus, dan juga mempunyai dukungan SMB untuk Microsoft file sharing and
printing melalui paket Samba, Apple file and printer sharing lewat netatalk,
dan IPX/SPX (Novell) file sharing lewat paket Mars NWE (dan paket komersial
dari Caldera).
Dalam lingkungan campuran Windows/Linux, menggunakan Samba server
dan sistem smbclient, komputer Linux akan tampil di Network Neighborhood
dari sistem Windows, hampir tidak bisa dibedakan dengan NT. Komputer
Linux juga akan mempunyai akses penuh ke file dan printer yang di-share dari
WFWG, Windows 95, maupun Windows NT.
Emulasi operating sistem menyediakan kompatibilitas di lain sisi. Paket
DOSEMU menyediakan kompatibilitas dengan DOS, dan proyek WINE
menyediakan kompatibilitas (terbatas) dengan Windows. Ada juga paket
emulasi komersial, yaitu Executor untuk emulasi Mac 680x0, dan WABI untuk
emulasi 16-bit Windows 3.1.
Mungkin masih banyak lagi yang bisa disebutkan, namun hal tersebut tergantung pada
pengalaman masing-masing pengguna Linux.

SISTEM FILE DI LINUX
 Di Linux pengertian tentang sistem file, struktur direktori, file, dan program
berbeda dengan Windows. Pada tingkat tertinggi adalah root direktori, /, yang hanya
mengandung sejumlah file penting seperti: bin/, boot/, dev/, etc/, home/, lib/, lost+found/,
mnt/, proc/, sbin/, tmp/, usr/, dan var/.
/bin & /sbin
Direktori ini biasanya berisi file-file executable di Linux yang berguna untuk
pemeliharaan sistem.
/home
Berfungsi untuk menyimpan direktori masing-masing user pada Linux.
/mnt
Berisi direktori-direktori mount poit dari device-device yang ada di Linux.
/tmp & /var
Berisi file-file temporary dan variying content
/usr
Berisi semua program dan file yang secara langsung berhubungan dengan
setiap user dalam sistem.

PERBANDINGAN APLIKASI WINDOWS DAN LINUX
 Linux memiliki banyak sekali aplikasi yang rata-rata hampir mirip dengan
aplikasi Windows, bahkan ada yang lebih bagus. Aplikasi Installer Linux dapat berupa
file executetable (*.bin), RPM (Redhat Packet Management) (*.rpm), maupun
TARBALL (source code yang harus dikompile dulu, *.tar/*.tar.gz/*.tar.bz2).
File installer tersebut memiliki cara yang berbeda untuk instalasinya. Berikut ini adalah
penjelasannya:
1. BINARY
File binary (*.bin) harus diinstall bisa dengan didouble click, ada juga
menggunakan console, yaitu dengan mengetikkan ‘./<namafilebiner>’ (tanpa
tanda petik). Dengan begitu, filebiner tersebut akan menginstall ke suatu direktori
tertentu. Biasanya kita akan ditanya tentang file konfigurasi tertentu dan biasanya
kita harus login sebagai root.
2. RPM
File rpm harus diinstall dengan menggunakan perintah ‘rpm –ivh <namafilerpm>’
untuk menginstall, ‘rpm –Uvh <namafilerpm>’ untuk mengupdate file rpm yang
telah terinstall sebelumnya, atau ‘rpm –e <filerpm> untuk menghapus / uninstall
file rpm, atau ‘rpm –qi <filerpm>’ untuk mencari informasi suatu paket rpm yang
sudah terinstall, atau ‘rpm –qa’ untuk melihat seluruh paket rpm yang telah
terinstall.
3. TARBALL
File tarball (*.tar.gz) merupakan file source code yang belum dikompilasi.
Sebelum kita menginstall, kita harus mengkompilasinya terlebih dulu dengan
menggunakan GCC. Cara menginstall umumnya adalah:
 ./configure
 su
 make
 make install
Jika ada error pada saat kompilasi berarti paket akan gagal diinstalasi. Hal itu
tergantung pada tipe GCC, arsitektur sistem, dan kemampuan development (filefile
dependency) yang dimiliki Linux.
4. DEB
Deb adalah ekstensi file installer dari distro DEBIAN.
5. YUM
YUM adalah cara instalasi model YUM dari RedHat/Fedora

HAK AKSES
 Di Linux, terdapat sistem hak akses yang sangat bermanfaat untuk keamanan
komputer. Hak akses yang dimaksud adalah hak untuk mengakses file-file yang ada di
suatu direktori tertentu. Masing-masing user memiliki hak aksesnya masing-masing.
Sehingga masing-masing user dapat saling melindungi file-filenya.
Pada dasarnya terdapat beberapa hak akses di Linux yaitu:
r: hak untuk membaca (read).
w:hak untuk menulis (write).
x:hak untuk mengeksekusi (execute).
Oleh karena itu Linux menggunakan sistem mode biner untuk mengatur hak akses yaitu
read-write-execute untuk user-group-other-all. Hal tersebut diimplementasikan misalnya
sebagai berikut:
ls -l
drw- r-x —x filecontoh
-rw- r— r--- filedua.txt
-rwx rwx r-- filecontoh.sh
 Pada contoh diatas berarti filecontoh adalah direktori karena adanya huruf d
dihuruf terdepan, boleh diread, write, tidak boleh diexecute oleh user, dapat diread, tidak
dapat diwrite, tapi dapat diexecute oleh grop, dan hanya dapat diexecute oleh other.
Karakter pertama adalah penanda : direktori (d), simbolic-link (l), socket (s), FIFO (p)
atau file biasa (-). Jika direktori akan bertuliskan 'd', jika bukan '-'. Tiga karakter
selanjutnya adalah hak akses untuk user rwx (read-write-execute), tiga karakter
selanjutnya hak akses untuk group, dan tiga karakter terakhir untuk other.
Untuk mengeset hak akses tersebut kita dapat menggunakan fungsi bilangan biner
sebagai berikut:
Dengan menggunakan letter coding, kita dapat merubah permission diatas
untuk masing-masing u (user), g (group), o (other) dan a (all) dengan hanya
memberi tanda plus (+) untuk menambah ijin dan tanda minus (-) untuk
mencabut ijin.

Misalnya untuk memberikan ijin baca dan eksekusi file coba1 kepada owner
dan group, perintahnya adalah:
$ chmod ug+rx coba1

Untuk mencabut ijin-ijin tersebut:
$ chmod ug-rx coba1

Dengan menggunakan sitem numeric coding, permission untukuser, group dan
other ditentukan dengan menggunakan kombinasi angka-angka, 4, 2 dan 1
dimana 4 (read), 2 (write) dan 1 (execute).

Misalnya untuk memberikan ijin baca(4), tulis(2) dan eksekusi(1) file coba2
kepada owner, perintahnya adalah:
$ chmod 700 coba2

Contoh lain, untuk memberi ijin baca(4) dan tulis(2) file coba3 kepada user, baca(4) saja
kepada group dan other, perintahnya adalah:

$ chmod 644 coba3

Thursday, May 7, 2015

A. Pengertian Semaphore
Semaphore adalah mekanisme efektif yang digunakan baik pada sistem uniprosesor
maupun sistem multiprosesor. Semaphore pada dasarnya adalah counter yang
diasosiasikan dengan struktur data. Semaphore diperiksa oleh semua kernel thread
sebelum kernel thread tersebut mencoba untuk mengakses struktur data. Setiap
semaphore dapat dipandang sebagai objek yang terdiri atas Variable integer List proses yang sedang menunggu (waiting) Dua metode atomik : down atau up
Metode down mengurangi nilai dari semaphore. Jika nilai yang baru kurang dari 0,
metode ini menambahkan proses yang sedang berjalan ke list semaphore dan mem-
block proses tersebut. Metode up menambah nilai dari semaphore dan jika nilai
barunya sama dengan atau lebih dari 0, mengaktivasi kembali proses dalam
semaphore list.
Tiap stuktur data yang diproteksi memiliki semaphorenya masing-masing yang
diinisiasi dari 1. Ketika sebuah kernel control path akan mengakses struktrur data
tersebut, control path mengeksekusi metode down() pada semaphore bersangkutan.
Jika nilai baru semaphore tidak negatif, akses ke data dapat dilakukan. Sebaliknya
jika nilai baru negatif, proses yang mengeksekusi kernel control path ditambahkan ke
dalam list semaphore dan di-block. Ketika proses lain mengeksekusi metode up()
pada semaphore tersebut, salah satu dari proses dalam list diperbolehkan untuk
dilanjutkan.
Semaphore adalah salah satu cara menangani critical section. Semaphore S merupakan
variabel bertipe integer yang diakses dengan 2 standar operasi atomic, yaitu wait dan
signal. Operasi-operasi ini diwakili dengan P (wait) dan V(signal), sebagai berikut :
Wait(S) : while S 0 do no)op;
S:=S – 1;
Signal : S:=S + 1;
Misalkan ada 2 proses yang sedang berjalan secara konkure, yaitu P1 denga pernyataan
S1 dan P2 dengan pernyataan S2. andaikan kita mengharapkan S2 baru akan dijalankan
hanya setelah S1 selesai. Hal ini dapat dilakukan dengan menggunakan bantuan
semaphore synch (dengan nilai awal = 0) yang akan dishare oleh kedua proses.
Untuk Proses P1 :
S1 ;
Signal(synch);
Untuk proses P2:
Wait(synch);
S2;
Karena nilai awal untuk synch adalah nol, maka P2 akan mengeksekusi S2 hanya setelah
P1 mengerjakan signal(synch) setelah S1
Salah satu kerugian dari penggunaan semaphore diatas adalah adanya busy waiting.
Apabila suatu proses menempati critical, dan ada proses lain ingin masuk critical section,
maka kan terjadi iterasi secara terus-menerus pada entry-section. Hal ini akan
menimbulkan masalah pada sistem yang menggunakan konsep multiprogramming.
Untuk menghindari busy waiting, dilakukan modifikasi pada operasi wait dan signal. Jika
suatu proses sedang mengeksekusi operasi wait, maka nilai semaphore menjadi tidak
positif. Pada saat ini proses akan memblok dirinya sendiri (blok) dan ditempatkan pada
waiting queue.
Proses yang sedang diblok akan menunggu hingga semaphore S direstart, yaitu pada saat
beberapa proses yang lain mengeksekusi operasi signal. Suatu proses akan direstart
dengan operasi wakeup, yang akan mengubah proses dari keadaan waiting ke ready.

Beberapa Prinsip Semaphore :
1. Dua proses dapat saling berkaitan atau menentukan proses yang lain dengan memanfaatkan signal-sinal
2. Sebuah proses akan dihentikan oleh proses yang lain, ketika mendapatkan signal tertentu. Suatu proses akan menunggu diproses setelah nilai integer menjadi 0. selanjutnya sinyal akan dilakukan increamen dengan penambahan 1
3. Semaphore merupakan variable bertipe integer yang diakses oleh 2 operasi atomik standar, yaitu wait dan signal.
4. terdapat dua operasi terhadap semaphore yaitu Down dan Up. Nama aslinya : P dan V


B. MACAM-MACAM SEMAPHORE
Ada 2 macam semafor yang cukup umum, yaitu:
1. Binary semaphore
2. Counting semaphore
Binary semaphore adalah semafor yang bernilai hanya 1 dan 0. Sedangkan Counting semaphore adalah semafor yang dapat bernilai 1 dan 0 dan nilai integer yang lainnya.
Banyak sistem operasi yang hanya mengimplementasi binary semaphore sebagai primitif, sedangkan counting semaphore dibuat dengan memakai primitif ini. Untuk lebih rinci mengenai cara pembuatan counting semaphore dapat dilihat pada bagian berikutnya.
Perlu diketahui di sini bahwa, ada beberapa jenis dari counting semaphore. Salah satu jenisnya adalah semafor yang tidak mencapai nilai negatif (seperti yang dicontohkan pada bagian sebelumnya). Jenis yang lain adalah semaphore yang dapat mencapai nilai negatif.
Solusi Pembuatan Counting Semaphore dari Binary Semaphore.
Pembuatan counting semaphore banyak dilakukan para programmer untuk memenuhi alat sinkronisasi yang sesuai dengannya. Seperti yang telah dibahas di atas, bahwa counting semaphore ada beberapa macam. Pada bagian ini, akan dibahas counting semaphore yang memperbolehkan harga negatif.

Listing program di bawah ini diambil dari buku Silberschatz.
00 binary-semaphore S1,S2;
01 int C;

Subrutin waitC dapat dilihat di bawah ini:
02 wait (S1);
03 C--;
04 if ( C < 0 ) { 05 signal (S1); 06 wait (S2); 07 } 08 signal (S1); subrutin signalC dapat dilihat di bawah ini: 09 wait (S1); 10 C++; 11 if (C <= 0) 12 signal (S2); 13 else 14 signal (S1); Kita memerlukan dua binary semaphore pada kasus ini, maka pada baris 00 didefinisikan dua binary semaphore. Baris 01 mendefinisikan nilai dari semafor tersebut. Perlu diketahui di sini bahwa waitC adalah wait untuk counting semaphore, sedangkan wait adalah untuk binary semaphore. Jika diperhatikan pada subrutin waitC dan signalC di awal dan akhir diberikan pasangan wait dan signal dari binary semaphore. Fungsi dari binary semaphore yang ini adalah untuk menjamin critical section (instruksi wait dan signal dari semafor bersifat atomic, maka begitu pula untuk waitC dan signalC, jadi kegunaan lain semafor adalah untuk membuat suatu subrutin bersifat atomic). Binary semaphore S2 sendiri digunakan sebagai tempat menunggu giliran proses-proses. Proses-proses tersebut menunggu dengan cara spinlock atau non-spinlock tergantung dari implementasi binary semaphore yang ada. zPerhatikan baris 03 dan 04. Baris ini berbeda dengan apa yang sudah dijabarkan pada bagian sebelumnya. Karena baris ini maka memungkinkan nilai semafor untuk menjadi negatif. Lalu apa artinya bagi kita? Ternyata nilai negatif mengandung informasi tambahan yang cukup berarti bagi kita yaitu bila nilai semafor negatif, maka absolut dari nilai tersebut menunjukkan banyaknya proses yang sedang menunggu atau wait. Jadi arti baris 11 menyatakan bahwa bila ada proses yang menunggu maka bangunkan mereka semua untuk berkompetisi. Mengapa pada baris 05 dilakukan signal untuk S1? Alasannya karena seperti yang telah kita ketahui bahwa semaphore menjamin ketiga sifat dari critical section. Tetapi adalah tidak relevan bila pada saat waktu menunggu, waitC masih mempertahankan mutual exclusivenya. Bila hal ini terjadi, proses lain tidak akan dapat masuk, sedangkan proses yang berada di dalam menunggu proses yang lain untuk signal. Dengan kata lain deadlock terjadi. Jadi, baris 05 perlu dilakukan untuk menghilangkan sifat mutual exclusive pada saat suatu proses menunggu. Pada baris 12 hanya menyatakan signal untuk S2 saja. Hal ini bukanlah merupakan suatu masalah, karena jika signal S2 dipanggil, maka pasti ada proses yang menunggu akan masuk dan meneruskan ke instruksi 07 kemudian ke instruksi 08 di mana proses ini akan memanggil signal S1 yang akan mewakili kebutuhan di baris 12.
C.FUNGSI SEMAPHORE
a. Menyelesaikan Masalah Critical Section. Critical section adalah suatu bagian yang berisi sejumlah variabel yang akan dishare (dipengaruhi dan mempengaruhi ) proses yang lain.
Secara umum, penyelesaian critical section harus memenuhi 3 syarat :
1. Mutual exclusion. Jika suatu proses sedang mengerjakan critical section, maka tidak boleh ada proses lain yang masuk (mengerjakan) critical section tersebut.
2. Progress. Jika tidak ada suatu proses yang megerjakan critical section, dan ada beberapa proses yag akan masuk ke critical section, maka hanya proses-proses yang sedang berada pada entry-section saja yang boleh berkompetisi untuk mengerjakan critical section.
3. Bounded waiting. Besarnya waktu tunggu dari suatu proses yang akan memasuki critical section sejak proses itu meminta ijin untuk mengerjakan critical section, hingga permintaan itu dipenuhi. Untuk setiap proses yang akan masuk critical section harus meminta ijin terlebih dahulu, dan proses yang mendapat izinlah yang akan masuk ke critical section. Entry-section adalah daerah tempat proses menunggu untuk memasuki critical section. Sedangkan Exit-section adalah daerah dimana suatu proses baru saja keluar dari critical section.
 b. Semafor Menyelesaikan Masalah Sinkronisasi antar Proses Kadangkala kita ingin membuat suatu proses untuk menunggu proses yang lain untuk menjalankan suatu perintah. Isu yang ada di sini adalah bagaimana caranya suatu proses mengetahui bahwa proses yang lain telah menyelesaikan instruksi tertentu. Oleh karena itu digunakanlah semafor karena semafor adalah solusi yang cukup baik dan mudah untuk mengatasi hal tersebut. Nilai semaphore diset menjadi 0 Proses 1 Proses 2 56 print "satu" 17 wait(semaphoreVar) 57 signal(semaphoreVar) 18 print "dua" siapapun yang berjalan lebih cepat, maka keluarannya pasti "satu" kemudian diikuti oleh "dua". Hal ini disebabkan karena jika proses 2 berjalan terlebih dahulu, maka proses tersebut akan menunggu (nilai semafor = 0) sampai proses 1 memanggil signal. Sebaliknya jika proses 1 berjalan terlebih dahulu, maka proses tersebut akan memanggil signal untuk memberikan jalan terlebih dahulu kepada proses 2.
D. IMPLEMENTASI SEMAPHORE
 1. Windows – Fungsi yg dipakai adalah CreateSemaphore – Biasanya digunakan untuk membatasi jumlah thread yang memakai suatu resource secara bersamaan
 2. Java – Semafor di Java™ bersifat transparan oleh programmer
3. Java™ menyembunyikan Semafor dibalik konsep monitor
4. Reserved Word yang dipakai Java™ adalah synchronized
E. KELEMAHAN SEMAPHORE
• Termasuk Low Level
• Kesulitan dalam pemeliharaannya, karena tersebar dalam seluruh program.
• Menghapus wait => dapat terjadi nonmutual exclusion.
• Menghapus signal => dapat terjadi deadlock
• Error yang terjadi sulit untuk dideteksi

• Lebih baik menggunakan high level construct