Jumat, 08 Juni 2012

Sistem Operasi

Sistem Operasi

Konsep proses: program yang sedang dieksekusi
layout memory untuk proses
Process Control Block
Penjadwalan:
Latar belakang: multiprogramming & multitasking
Elemen:
antrian: job, ready, device
penjadwal (scheduler): long, short & medium term
context switch: membuat CPU idle

Operasi: creation & termination
Ruang memory: saling menggunakan (sebagian / seluruhnya), saling
bebas
Eksekusi: saling tunggu / parallel
Terminasi proses ! de-alokasi resource
Komunikasi antar proses yang saling tergantung
Model: shared memory & message passing
Komunikasi: langsung & tidak langsung
Sinkronisasi & Buffer
Client-Server: Socket, RPC, RMI

Pengertian Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. User level thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread.
  • Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
  • Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
  • Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.
 

Thread
Mempelajari konsep thread
Mempelajari berbagai pustaka thread: Pthread, Win32, Java
Mempelajari berbagai isu terkait thread

Tentang Thread
Lightweight process: satuan penggunaan CPU
Berbagi resource dengan thread lain dalam sebuah proses
Proses (heavyweight process), memilki kontrol tunggal eksekusi



Mutual Exclusion adalah Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu (kondisi-kondisi untuk solusi). Tiga kondisi untuk menentukan mutual Exclusion diantaranya :
  1. Tidak ada dua proses yang pada saat bersamaan berada di critical region.
  2. Tidak ada proses yang berjalan diluar critical region yang bisa menghambat proses lain
  3. Tidak ada proses yang tidak bisa masuk ke critical region
Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus di disinkronisasi.

Sinkronisasi adalah Komunikasi antara proses yang membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) – juga dikenal dengan nama sinkron atau asinkron.
Deadlock ialah suatu kondisi permanen dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Atau dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya bisa dikerjakan oleh proses lain dalam set yang sedang menunggu.

Starvation adalah suatu proses meninggalkan critical section dan lebih dari satu proses menunggu (waiting).Beberapa proses dapat ditolak aksenya dalam waktu tak terbatas.

Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.

Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.Semaphore mempunyai dua sifat, yaitu:
  1. Semaphore dapat diinisialisasi dengan nilai non-negatif.
  2. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.

Keuntungan Model Multi Thread
Responsif ! web browser
Resource sharing: aplikasi dengan beberapa thread dapat
menggunakan lokasi memori yang sama
Ekonomis: tanpa alokasi dan dealokasi resource ! resource sharing
Skalabilitas: selain optimasi penggunaan prosesor multicore,
perpindahan antar thread lebih cepat pada single core daripada proses

Isu Terkait Pemrograman Multi Core
Berbagi aktifitas
Penyeimbangan beban
Memecah data
Ketergantungan data
Pengujian dan debug

Ilustrasi : Multi Thread Server



Jenis Thread
User thread:
Kernel thread
Keduanya meliputi: pembuatan, penjadwalan dan pengelolaan di levelnya
masing-masing

User Thread
Selalu berasosiasi dengan kernel thread
Pustaka di level user ! cepat
Salah satu thread yang melakukan blocking akan mencegah seluruh
proses di mana thread tersebut berasal untuk ditunda (single thread
kernel) ! SC: read , sleep
Pthread (POSIX), Win32, Java

Kernel Thread
Pengelolaan di level kernel
lambat
dianggap seperti proses
Salah satu thread yang melakukan blocking, tidak mencegah seluruh
proses tertunda

Model thread

Many- To - One
Konkurensi terbatas
Green (Solaris-2), GNU portable thread




One-To-One
Proses dicegah tertunda secara total
Mahal, satu user thread harus diwakili satu kernel thread
Windows NT/XP/2000, Linux, Solaris 9



Many-To-Many
Banyak user thread dipetakan ke kernel thread
Konkurensi optimal
Solaris sebelum versi 9, Windows NT/2000 dengan paket ThreadFiber




Pustaka Thread
Memberikan API untuk pengembang perangkat lunak mengelola thread
Implementasi:
sepenuhnya di user level (-to-one)
didukung oleh kernel level (-to-many)

Posik Thread
Diimplementasi baik sebagai user maupun kernel level
Standar IEEE 1003.1c: API terkait pembuatan dan sinkronisasi thread
Umum digunakan pada keluarga UNIX

Ilustrasi : Posik Thread
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int *a,*b;
void *vector(void *vargp) {
int temp,counter,start,finish,ptrNumber,*passVal ;
ptrNumber=*((int *) vargp); free(vargp);
start=(ptrNumber*25000);
finish=start+25000;
temp=0;
for(counter=start;counter<finish;counter++)
temp+=a[counter]*b[counter];
passVal=malloc(sizeof(int));
*passVal=temp; pthread_exit(passVal);
}
int main() {
pthread_t tid[4];
int c=0,c1=0,i,*ptr,*passVal,tmp;
a=malloc(100000*sizeof(int));
b=malloc(100000*sizeof(int));
for(i=0;i<1000;i++) {
a[i]=1+(rand()%1000);
b[i]=1+(rand()%1000);
c+=(a[i]*b[i]);
}
printf("C total (Sequential) = %d\n",c);
for(i=0;i<4;i++) {
ptr=malloc(sizeof(int));
*ptr=i; pthread_create(&tid[i],NULL,vector,ptr);
}
for(i=0;i<4;i++) {
if((pthread_join(tid[i], (void**) &passVal))==0) {
tmp=*passVal; c1+=tmp;
}
else {
printf("Threads %d can’t be joined\n",i);
printf("program terminated\n");
exit(0);
}
}
printf("C total (Parallel) = %d\n",c1);
printf("\nComparing sequential and parallel result\n");
if((c-c1)!=0)
printf("pthread failed...!\n");
else
printf("pthread success!\n");
return 0;
}



Java Thread
Dikelola JVM
Dibuat dengan mengimplementasi Runnable


Ilustrasi : Java Thread
class MutableInteger {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value=value;
}
}
class Summation implements Runnable {
private int upper;
private MutableInteger sumValue;
public Summation (int upper, MutableInteger sumValue) {
this.upper=upper; this.sumValue=sumValue;
}
public void run() {
int sum=0;
Thread thrd=new Thread();
thrd.start();
for(int i=0; i<upper; i++) {
sum=sum+2;
}
sumValue.setValue(sum);
}
}
public class Driver {
public static void main(String[] args) {
if(args.length > 0) {
if(Integer.parseInt(args[0])<0) {
System.err.println(args[0]+" must be>=0.");
}
else {
MutableInteger sum=new MutableInteger();
int upper=Integer.parseInt(args[0]);
Thread thrd=new Thread(new Summation(upper,sum));
thrd.start();
try {
thrd.join();
System.out.println("The sum of "+ upper+ " is " + sum.getValue());
}
catch(InterruptedException e) {
}
}
}
else {
System.err.println("Usage: Driver <Integer Value>");
}
}
}


S C : fork & exec
Opsi saat thread dijalankan:
menduplikasi seluruh thread dalam sebuah proses
menduplikasi thread yang menjalankan fork

Pembatalan Thread
Terkait terminasi thread sebelum seharusnya selesai
Opsi:
Asinkron: langsung melakukan terminasi
Deffered: safely cancelation,

Penanganan Signal
Digunakan untuk memberitahu proses bahwa ada sebuah kejadian.
Diterima secara
sinkron: dikirimkan ke proses penyebab munculnya SIGNAL (pembaian
dengan nol)
asinkron: dikirimkan oleh kejadian di luar proses (ctrl C)
Dikelola oleh:
default handler
user defined handler
Beberapa ada yang diabaikan (mengubah ukuran obyek window), ada
yang menyebabkan proses harus diterminasi (mengakses memori
secara ilegal)

Penanganan Signal
Pada thread:
SIGNAL dikirimkan ke thread yang menyebabkannya
SIGNAL dikirimkan ke setiap thread pada proses
SIGNAL dikirimkan ke thread tertentu pada proses
Menugaskan sebuah thread untuk menangani semua SIGNAL yang
terjadi

Thread Pools
Multithreaded server: berpotensi membahayakan sistem jika diijinkan
membuat thread dalam jumlah sangat banyak (tak hingga)
Dibatasi jumlah thread yang diijinkan (pools)
Saat proses dijalankan, sejumlah thread telah disiapkan, menunggu
untuk memberi layanan pada client
Keuntungan:
lebih cepat daripada konsep on-demand
mencegah kegagalan operasi karena keterbatasan resource

Thread Specific Data
Memungkinkan setiap thread memiliki datanya sendiri
for(i=0;i<4;i++) {
ptr=malloc(sizeof(int));
*ptr=i; pthread_create(&tid[i],NULL,vector,ptr);
}

WINDOWS  XP
One-to-one mapping
Berisi:
identitas
register, stack (user & kernel), data khusus 1
Struktur data utama:
Executive thread block (ETHREAD)
Kernel thread block (KTHREAD)
Thread environment block (TEB)




Linux Thread
Dikenal sebagai task
Thread dibuat dengan clone( ) SC
Memungkinkan berbagi ruang memori antara child-parent, pointer ke
lokasi memori


sistem operasi

Sistem Operasi


Memory Virtual
Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh bagian program perlu ikut masuk ke dalam memori.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori utama yang tersedia.
Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."
Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto, Bambang : 2001).

Demand paging:
load page ke memori virtual
alokasikan page ke memori utama saat dibutuhkan
Page replacement
saat page akan dialokasikan ke memori utama dan tidak tersedia frame
kebijakan yang dapat digunakan: FIFO, LRU, optimal, LFU, MFU
Alokasi frame:
fixed: frame dialokasikan berdasarkan proses
proporsional: frame dialokasikan berdasarkan page

keuntungan memory Virtual
  • Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misal, untuk program butuh membaca dari disk dan memasukkan dalam memory setiap kali diakses.
  • Berkurangnya memori yang dibutuhkan (space menjadi lebih leluasa). Contoh, untuk program 10 MB tidak seluruh bagian dimasukkan dalam memori. Pesan-pesan error hanya dimasukkan jika terjadi error.
  • Meningkatnya respon, sebagai konsekuensi dari menurunnya beban I/O dan memori.
  • Bertambahnya jumlah user yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan dari user.
 

Memory Virtual
Page replacement terkait alokasi frame
global: page replacement dapat dilakukan ke semua frame
lokal: page replacement hanya dilakukan di frame yang sudah
dialokasikan
Thashing: lebih banyak page fault daripada eksekusi

Kasus
Sistem dengan kinerja sbb:
CPU utilization: 20%
Paging disk: 97.7%
Other I/O devices: 5%
Apa yang mendesak dilakukan untuk meningkatkan utilisasi CPU?

Konsep File & Metode Akses
File:
kumpulan informasi terkait dalam secondary storage
satuan penyimpanan logika
File memiliki:
atribut: nama, jenis, lokasi, ukuran, proteksi (kontrol akses), waktu,
identifikasi pengguna
operasi: create, write, read, repositioning (move), delete, truncate (hapus
isi), copy, rename, ...
jenis: sh, exe, bin, cpp, java, py, tar, ...

Struktur File
Tanpa struktur: hanya susunan byte data
Sederhana: per baris, per jumlah byte (fixed atau variable)
Kompleks: dokumen dengan format khusus
Penggunaan di tingkat sistem operasi atau aplikasi
Agar mudah digunakan (baca/tulis)

Metode Akses
Sekuensial
Langsung:
file dipandang sebagai blok/record terurut
tidak ada urutan tertentu dalam mengakses (baca/tulis)
contoh: database
Indeks (contoh kasus IBM Index Sequential Access Method/ISAM)







Struktur direktori dan penerapan
Memudahkan pengelolaan, terutama ketika data sudah sangat banyak:
partisi, minidisk (IBM), volume (MAC)
Setiap partisi berisi informasi tentang file yang berada di dalamnya:
device directory, volume table of contents
Target:
efisiensi: mudah dan cepat mencari lokasi file
penamaan: memudahkan pengguna, pengguna yang berbeda dapat
memiliki file dengan nama yang sama, file yang sama dapat memiliki
nama yang berbeda
pengelompokkan file sejenis dengan mudah




Operasi Pada Direktori
Pencarian file
Membuat dan menghapus file
Melihat isi direktori (list)
Mengganti nama file

Pengertian Struktur Tree
Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree). Untuk jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree :
a)Prodecessor : node yang berada diatas node tertentu.
b)Successor : node yang berada di bawah node tertentu.
c)Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
d)Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
e)Parent : predecssor satu level di atas suatu node.
f)Child : successor satu level di bawah suatu node.
g)Sibling : node-node yang memiliki parent yang sama dengan suatu node.
h)Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua karakteristik dari tree tersebut.
i)Size : banyaknya node dalam suatu tree.
j)Height : banyaknya tingkatan/level dalam suatu tree.
k)Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
l)Leaf : node-node dalam tree yang tak memiliki seccessor.
m)Degree : banyaknya child yang dimiliki suatu node.

Strukture tree
Pencarian efisien, setiap pengguna memiliki path sendiri, absolute atau
relative
Direktori diperlakukan seperti file dengan flag penanda
Direktori kerja, direktori yang menjadi lokasi pengguna saat ini berada




Mounting system File
Sistem file harus di-mount sebelum digunakan




Penggunaan Bersama File
Diperlukan di sistem operasi dengan pengguna jamak
Penerapan skema proteksi, tidak semua pengguna dapat memodifikasi
sebuah file
Ilustrasi: NFS, CIFS, lustre, pvfs, ...
USER ID: mengidentifikasi pengguna, memungkinkan permisi dan
proteksi berdasarkan pengguna
GROUP ID: mengijinkan akses mewakili grup

Secara remote
Menggunakan jaringan untuk akses antar sistem file
manual: ftp, sftp, ...
otomatis: distributed file system
semi otomatis: www
Client-server: client melakukan mount terhadap sistem file server
server dapat melayani banyak client
system call standar dalam sistem operasi ditranslasi sebagai remote call
Distributed information systems: LDAP, NIS, active directory, DNS,
menerapkan akses tunggal ke informasi yang dibutuhkan remote

Proteksi
Pemilik file/direktori harus dapat mengendalikan:
apa yang dapat dilakukan file
oleh siapa
Kelompok pengguna: masing-masing memilki akses read, write,
execute (rwx)
user
group
public (semua pengguna)

Pengertian Ilustrasi Unix
       UNIX adalah sistem operasi yang digunakan sebagai sistem operasi baku pada berbagai jenis komputer, terutama komputer mini baik sebagai workstation atau server (sistem yang menyediakan pelayanan pada jaringan). Karena dengan unix sebagai server, berpindah kerja dari satu jenis komputer ke komputer lainnya menjadi mudah.
Unix didesain sebagai sistem operasi yang portable, multi-tasking, multi-user, sistem berkas hierarkis dan utilitas.
Keuntungan yang diperoleh dengan menggunakan sistem UNIX yang terkoneksi kesebuah sistem jaringan ialah:
a. Berbagi sumber daya komputer
Sumber daya komputer yang dibagi bersama mencakup :
• CPU dan alokasi memori,
CPU / memori yang sedang diam (tidak terpakai) dapat digunakan oleh sistem lain yang sedang sibuk.
• Penyimpanan data / disk,
Disk yang semula tersebar di semua komputer dengan utilitas yang sama kini dapat digabungkan menjadi unit disk yang besar dan dibagi bersama.
• Pencetak/ printer dan program/ utilitas
Pencetakan/ printing dapat diklasifikasikan berdasarkan prioritas (segera, tidak segera) ataupun mutu cetak (laser printer, LQ printer, line printer).



b. Peningkatan kehandalan.
Komputer dalam sebuah jaringan lebih handal dibandingkan komputer yang berdiri sendiri. Jika ada komputer yang tidak berfungsi, peranannya digantikan oleh komputer yang lain. Sistem dapat diatur / dikendalikan hingga pemakai tidak mengetahui bahwa komputer yang biasa digunakan sedang digantikan oleh komputer lain. Sistem penyimpanan disk dapat diatur derajat keamanannya. Seperti halnya CPU, sistem disk yang tidak berfungsi digantikan oleh sistem yang lain tanpa diketahui oleh pemakai.

c. Penghematan.
Peningkatan kehandalan serta pemakaian sumberdaya secara bersama menghasilkan penghematan biaya operasi. Harga 10 komputer 10 MIPS jauh lebih murah dibandingkan 1 komputer 100 MIPS. Namun, kemampuan kesepuluh komputer 10 MIPS tersebut dapat hampir menyamai kemampuan komputer 100 MIPS jika dilakukan utilisasi yang tinggi. Penghematan lain didapatkan dari penggunaan printer server dan file server (1 sistem data atau disk untuk banyak komputer).
 
Jenis Jaringan Berbasis UNIX
a. UUCP Unix to Unix CoPy

UUCP merupakan jenis jaringan pertama kali muncul pada sistem UNIX. Pada awalnya, UUCP dikembangkan dengan hanya memanfaatkan saluran serial atau terminal dari sebuah komputer. Kini, UUCP bekerja pada setiap versi UNIX bahkan sistem non-UNIX seperti VMS dan DOS.

Layanan yang disediakan UUCP diantaranya: 

• Alih berkas (file transfer) dan surat elektronis (e-mail)
Penyampaian berkas melalui UUCP dilakukan secara beranting. Jika seseorang di Indonesia hendak mengirim surat elektronis kepada rekannya di Amerika, cukup disimpan/ dikerjakan dikomputer secara lokal. Komputer akan secara otomatis menyampaikan surat tersebut ke sebuah simpul di Amerika Serikat yaitu UUNET (Arlington, Va.). Secara beranting, surat tersebut akan diteruskan kesimpul berikut hingga sampai tujuan.

• Terminal jarak jauh (remote terminal) dan eksekusi perintah jarak jauh (remote execution)
Jaringan UUCP secera internasional menghubungkan lebih dari seratus ribu komputer. Secara total, berjuta-juta byte beralih setiap harinya antara komputer sedunia. Sebagian besar peralihan tersebut terjadi di Amerika Serikat karena murahnya biaya komunikasi. Sebagian besar data berupa USENET NEWS, forum diskusi elektronis terbesar didunia.

b. TCP atau IP (Transmission Control Protocol / Internet Protokol)

TCP merupakan protokol yang mengatur transportasi data antar sistem. TCP dapat diumpamakan sebagai "sekretaris perusahaan" yang mengelola pengiriman berkas antar alamat. TCP biasanya memanfaatkan jasa IP sebagai media pengantar. Seperti halnya sekretaris, TCP bertanggung jawab atas kehilangan pengiriman paket berikut tindak lanjutnya (mengirim ulang paket).
TCP dimanfaatkan oleh aplikasi-aplikasi lain sebagai pengiriman data yang handal yaitu mencakup:
• Login jarak jauh: TELNET (umum) dab rlogin (khusus UNIX)
• Eksekusi jarak jauh: rsh (khusus UNIX)
• Alih berkas : FTP (File Transfer Protocol)
• Surat elektronis: SMTP (Simple Mail Transfer Protocol)
• Program aplikasi lokal (buatan sendiri) dapat memanfaatkan fasilitas TCP/IP untuk saling berkomunikasi.

c. NFS (Network File System) dan RPC (Remote Procedure Call)

NFS pada mulanya dikembangkan oleh Sun Microsystem (1984). Kini, NFS yang menggunakan RPC diterapkan pada lebih dari 100 jenis komputer dan diperkirakan dioperasikan pada lebih dari 100.000 komputer. NFS memungkinkan sebuah kompuer mengakses sistem berkas komputer lain, dan memperlakukan sistem berkas tersebut seperti bagiannya sendiri.

d. NCS -- Network Computing System

Beban antara CPU dalam jaringan biasanya tidak sama pada saat yang sama. Beberapa penelitian telah mengarah pada pemanfaatan CPU yang sedang diam (idle). Hingga kini, setiap pembuat komputer masih mengembangkan protokolnya secara terpisah serta tidak cocok satu dengan lainnya. Namun, usaha menuju pembakuan sedang dirintis dan diharapkan akan disepakati dalam kurun waktu yang tidak lama lagi.


Ilustrasi Unix




Struktur dan Penerapan Sistem Fle
Dikelola dalam layer-layer
Sistem file berada dalam media penyimpanan sekunder (HD)
Memungkinkan data disimpan, dicari dan diambil dengan mudah
File Control Block: struktur penyimpanan yang terdiri dari informasi
tentang file
Device Driver: mengendalikan perangkat fisik




Penerapan
On disk sistem file
Boot Control Block: berisi informasi yang diperlukan untuk menjalankan
(booting) sistem operasi dari partisi tertentu
Volume Control Block: berisi detil tentang volume (partisi)
Struktur direktori mengelola file
File Control Block (per setiap file): berisi detil tentang file
In-memory sistem file, digunakan untuk pengelolaan sistem file dan
peningkatan kinerja (caching)
Tabel partisi: berisi informasi tentang partisi yang di-mounted
Struktur direktori: berisi informasi tentang direktori yang baru saja
diakses
System-wide open-file table: berisi salinan dari file control block dari
setiap file yang dibuka
Per-process open-file table: berisi pointer ke entry yang sesuai di dalam
system-wide open-file table


Kamis, 07 Juni 2012

Sistem Operasi


 Sistem Operasi

 

Pengertian Deadlock

Deadlock adalah keadaan dimana dua program memegang kontrol terhadap sumber daya yang dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses masing-masing sampai program yang lain memberikan sumber dayanya, tetapi tidak ada yang mengalah.
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh proses lain dalam himpunan tersebut.
 

 

Karakteristik Deadlock
Karakteristik-karakteristik ini harus dipenuhi keempatnya untuk terjadi deadlock. Namun, perlu diperhatikan bahwa hubungan kausatif antara empat karakteristik ini dengan terjadinya deadlock adalah implikasi. Deadlock mungkin terjadi apabila keempat karakteristik terpenuhi.


Empat kondisi tersebut adalah:

1.Mutual Exclusion . Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki hak milik pribadi terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu proses yang menggunakan suatu sumber daya. Proses lain yang juga ingin menggunakannya harus menunggu hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai menggunakannya. Suatu proses hanya dapat menggunakan secara langsung sumber daya yang tersedia secara bebas.
2.Hold and Wait . Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan adanya proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi. Akibatnya, proses-proses tersebut hanya bisa saling menunggu sampai sumber daya yang dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.
3.No Preemption . Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber daya hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai menggunakannya. Proses yang menginginkan sumber daya tersebut harus menunggu sampai sumber daya tersedia, tanpa bisa merebutnya dari proses yang memilikinya.
4.Circular Wait . Kondisi yang terakhir adalah circular wait yaitu kondisi membentuk siklus yang berisi proses-proses yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang dimiliki proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n. Terakhir, proses ke n membutuhkan sumber daya milik proses yang pertama. Yang terjadi adalah proses-proses tersebut akan selamanya menunggu.
 

Penanganan Deadlock
4 cara untuk menangani keadaan deadlock, yaitu:
1.Pengabaian. Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm. Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis mematikan proses atau program yang mengalami deadlock. Kebanyakan sistem operasi yang ada mengadaptasi cara ini untuk menangani keadaan deadlock. Cara penanganan dengan mengabaikan deadlock banyak dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem untuk kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart terhadap komputer.
2.Pencegahan. Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik deadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya memastikan agar sistem tidak akan pernah berada pada kondisi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.
3.Penghindaran. Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa antara pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi. Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.
4.Pendeteksian dan Pemulihan. Pada sistem yang sedang berada pada kondisi deadlock, tindakan yang harus diambil adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi adanya deadlock, kemudian memulihkan kembali sistem. Proses pendeteksian akan menghasilkan informasi apakah sistem sedang deadlock atau tidak serta proses mana yang mengalami deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

Pencegahan Deadlock

Pencegahan deadlock dapat dilakukan dengan cara mencegah salah satu dari empat karakteristik terjadinya deadlock. Berikut ini akan dibahas satu per satu cara pencegahan terhadap empat karakteristik tersebut.
1.Mutual Exclusion . Kondisi mutual exclusion pada sumber daya adalah sesuatu yang wajar terjadi, yaitu pada sumber daya yang tidak dapat dibagi (non-sharable). Sedangkan pada sumber daya yang bisa dibagi tidak ada istilah mutual exclusive. Jadi, pencegahan kondisi yang pertama ini sulit karena memang sifat dasar dari sumber daya yang tidak dapat dibagi.
2.Hold and Wait . Untuk kondisi yang kedua, sistem perlu memastikan bahwa setiap kali proses meminta sumber daya, ia tidak sedang memiliki sumber daya lain. Atau bisa dengan proses meminta dan mendapatkan sumber daya yang dimilikinya sebelum melakukan eksekusi, sehingga tidak perlu menunggu.
3.No Preemption . Pencegahan kondisi ini dengan cara membolehkan terjadinya preemption. Maksudnya bila ada proses yang sedang memiliki sumber daya dan ingin mendapatkan sumber daya tambahan, namun tidak bisa langsung dialokasikan, maka akan preempted. Sumber daya yang dimiliki proses tadi akan diberikan pada proses lain yang membutuhkan dan sedang menunggu. Proses akan mengulang kembali eksekusinya setelah mendapatkan semua sumber daya yang dibutuhkannya, termasuk sumber daya yang dimintanya terakhir.
4.Circular Wait . Kondisi 'lingkaran setan' ini dapat 'diputus' dengan jalan menentukan total kebutuhan terhadap semua tipe sumber daya yang ada. Selain itu, digunakan pula mekanisme enumerasi terhadap tipe-tipe sumber daya yang ada. Setiap proses yang akan meminta sumber daya harus meminta sumber daya dengan urutan yang menaik. Misalkan sumber daya printer memiliki nomor 1 sedangkan CD-ROM memiliki nomor 3. Proses boleh melakukan permintaan terhadap printer dan kemudian CD-ROM, namun tidak boleh sebaliknya.

Penghindaran Deadlock

Penghindaran terhadap deadlock adalah cara penanganan yang selanjutnya. Inti dari penghindaran adalah jangan sembarangan membolehkan proses untuk memulai atau meminta lagi. Maksudnya jangan pernah memulai suatu proses apabila nantinya akan menuju ke keadaan deadlock. Kedua, jangan memberikan kesempatan pada proses untuk meminta sumber daya tambahan jika penambahan tersebut akan membawa sistem pada keadaan deadlock. Tidak mungkin akan terjadi deadlock apabila sebelum terjadi sudah kita hindari.
Langkah lain untuk menghindari adalah dengan cara tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber daya yang ada. Selanjutnya terdapat deadlock-avoidance algorithm yang secara rutin memeriksa state dari sistem untuk memastikan tidak adanya kondisi circular wait serta sistem berada pada kondisi safe state. Safe state adalah suatu kondisi dimana semua proses mendapatkan sumber daya yang dimintanya dengan sumber daya yang tersedia. Apabila tidak bisa langsung, ia harus menunggu selama waktu tertentu, kemudian mendapatkan sumber daya yang diinginkan, melakukan eksekusi, dan terakhir melepas kembali sumber daya tersebut. Terdapat dua jenis algoritma penghindaran yaitu resource-allocation graph untuk single instances resources serta banker's algorithm untuk multiple instances resources.
Dalam banker's algorithm, terdapat beberapa struktur data yang digunakan, yaitu:
Available . Jumlah sumber daya yang tersedia.
Max . Jumlah sumber daya maksimum yang diminta oleh tiap proses.
Allocation . Jumlah sumber daya yang sedang dimiliki oleh tiap proses.
Need . Sisa sumber daya yang masih dibutuhkan oleh proses, didapat dari max- allocation.
Kemudian terdapat safety algorithm untuk menentukan apakah sistem berada pada safe state atau tidak.

Pendeteksian Deadlock

Pada dasarnya kejadian deadlock sangatlah jarang terjadi. Apabila kondisi tersebut terjadi, masing-masing sistem operasi mempunyai mekanisme penanganan yang berbeda. Ada sistem operasi yang ketika terdapat kondisi deadlock dapat langsung mendeteksinya. Namun, ada pula sistem operasi yang bahkan tidak menyadari kalau dirinya sedang mengalami deadlock. Untuk sistem operasi yang dapat mendeteksi deadlock, digunakan algoritma pendeteksi. Secara lebih mendalam, pendeteksian kondisi deadlock adalah cara penanganan deadlock yang dilaksanakan apabila sistem telah berada pada kondisi deadlock. Sistem akan mendeteksi proses mana saja yang terlibat dalam kondisi deadlock. Setelah diketahui proses mana saja yang mengalami kondisi deadlock, maka diadakan mekanisme untuk memulihkan sistem dan menjadikan sistem berjalan kembali dengan normal.
Mekanisme pendeteksian adalah dengan menggunakan detection algorithm yang akan memberitahu sistem mengenai proses mana saja yang terkena deadlock. Setelah diketahui proses mana saja yang terlibat dalam deadlock, selanjutnya adalah dengan menjalankan mekanisme pemulihan sistem yang akan dibahas pada bagian selanjutnya. Berikut ini adalah algoritma pendeteksian deadlock.

Pemulihan Deadlock

Pemulihan kondisi sistem terkait dengan pendeteksian terhadap deadlock. Apabila menurut algoritma pendeteksian deadlock sistem berada pada keadaan deadlock, maka harus segera dilakukan mekanisme pemulihan sistem. Berbahaya apabila sistem tidak segera dipulihkan dari deadlock, karena sistem dapat mengalami penurunan performance dan akhirnya terhenti.
Cara-cara yang ditempuh untuk memulihkan sistem dari deadlock adalah sebagai berikut:
1.Terminasi proses. Pemulihan sistem dapat dilakukan dengan cara melalukan terminasi terhadap semua proses yang terlibat dalam deadlock. Dapat pula dilakukan terminasi terhadap proses yang terlibat dalam deadlock secara satu per satu sampai 'lingkaran setan' atau circular wait hilang. Seperti diketahui bahwa circular wait adalah salah satu karakteristik terjadinya deadlock dan merupakan kesatuan dengan tiga karakteristik yang lain. Untuk itu, dengan menghilangkan kondisi circular wait dapat memulihkan sistem dari deadlock.Dalam melakukan terminasi terhadap proses yang deadlock, terdapat beberapa faktor yang menentukan proses mana yang akan diterminasi. Faktor pertama adalah prioritas dari proses-proses yang terlibat deadlock. Faktor kedua adalah berapa lama waktu yang dibutuhkan untuk eksekusi dan waktu proses menunggu sumber daya. Faktor ketiga adalah berapa banyak sumber daya yang telah dihabiskan dan yang masih dibutuhkan. Terakhir, faktor utilitas dari proses pun menjadi pertimbangan sistem untuk melakukan terminasi pada suatu proses.
2.Rollback and Restart . Dalam memulihkan keadaan sistem yang deadlock, dapat dilakukan dengan cara sistem melakukan preempt terhadap sebuah proses dan kembali ke state yang aman. Pada keadaan safe state tersebut, proses masih berjalan dengan normal, sehingga sistem dapat memulai proses dari posisi aman tersebut. Untuk menentukan pada saat apa proses akan rollback, tentunya ada faktor yang menentukan. Diusahakan untuk meminimalisasi kerugian yang timbul akibat memilih suatu proses menjadi korban. Harus pula dihindari keadaan dimana proses yang sama selalu menjadi korban, sehingga proses tersebut tidak akan pernah sukses menjalankan eksekusi.
 

Kemungkinan-Kemungkinan Terjadinya Deadlock
Mengelola deadlock
Mencegah deadlock ! mengeliminasi setiap kemungkinan yang dapat
menyebabkan deadlock
Menghindari deadlock ! mengatur eksekusi proses sehingga permintaan
resource selalu dapat dipenuhi sistem
Menangani deadlock !penghentian dan penundaan

Binding Intruksi Data dan ke Memory
Dilakukan dengan 3 cara
Compile time: lokasi untuk proses diketahui pada saat kompilasi.
Kompilasi diulang jika alamat awal berubah ! absolute code
Load time: lokasi memori diketahui pada saat load proses !relocatable
code
Execution time: proses dapat berpindah lokasi pada saat eksekusi !
generic, umum terdapat dalam sistem operasi

Ruang Alamat Logika dan Fisik
Ruang alamat logika (logical address space) dibatasi oleh ruang alamat
fisik (physical address space)
Logical address (virtual address): dihasilkan CPU
Physical address: alamat fisik memori
Pada skema binding:
compile time dan load time: alamat logika dan fisik sama
execution time: alamat logika dan fisik berbeda
Sistem Operasi - Pengelolaan Memory -Konsep

Unit Pengelolaan Memori ( M M U )
Perangkat keras: menterjemahkan alamat logika ke alamat fisik
Pada MMU, sebuah alamat offset (relocation register), ditambahkan
pada setiap alamat logika setiap akan dikirim ke memori
Program (user) hanya mengenal alamat logika

Dynamic Loading
Latar belakang: program dan data harus berada dalam memori agar
dapat dieksukusi ! dibatasi memori fisik
Dynamic loading: program dan data tidak di-load sebelum dipanggil
jika tidak digunakan tidak di-load
meski secara total besar, lokasi memori yang digunakan bisa lebih kecil
sangat bergunaka ketika sistem lebih banyak dipenuhi program yang
jarang digunakan
perlu pustaka khusus
Sistem Operasi - Pengelolaan Memory -Konsep

Dynamic Linking
Linking ditunda hingga eksekusi, digunakan pada shared library.
Pustaka tidak di-linked jika belum digunakan
Stub, sebuah rutin yang bertugas menempatkan pustaka yang
diperlukan
jika ada di memori: gunakan
jika belum: load dan gunakan
Satu pustaka untuk banyak program

Pengertian Swapping:
Suatu metode pengalihan proses yang bersifat sementara dari memori utama kesatu tempat penyimpanan sementara (disk) dan dipanggil kembali ke memori jikaakan melakukan eksekusi. Proses yang dipindahkan yaitu proses yang di-blocked kedisk dan hanya memasukkan proses-proses ready ke memori utama.
Tujuan Swapping:
1. Meningkatkan kinerja saat multiprogramming pada sistem time sharing.
 2. Mengatasi masalah-masalah saat multiprogramming: Pemartisian secara dinamis Strategi pengelolaan memori bebas Algoritma penempatan proses ke memori Strategi penempatan ruang swap pada disk.

Swapping
Proses dapat dikeluarkan (swapped out) dari memori untuk sementara
dan selanjutnya dikembalikan ke memori untuk melanjutkan eksekusi
Backing store:
lokasi hard disk tempat proses dikeluarkan sementara dari memori
proses yang dikeluarkan/dimasukkan berdasarkan aturan tertentu
(prioritas, round robin)
Transfer time: sebanding dengan banyaknya proses/data yang
dipindahkan
Sistem operasi memiliki semacam ready queue untuk proses-proses
yang berada dalam backing store.
Sistem Operasi - Pengelolaan Memory -Swapping


Ilustrasi

G A M B A R : Ilustrasi swapping

 

Alokasi Contiguous (berurutan)
Sebuah proses dialokasikan dalam ruang yang utuh, sebesar kebutuhan
proses
Skema umum:
Sistem operasi: low end memory
Proses user: high memory
Register relokasi: register yang digunakan dalam translasi alamat logika
ke alamat fisik
base register: alamat terkecil proses
limit register: jangkauan terbesar memori untuk sebuah proses, alamat
logika < limit register
MMU: memetakan alamat logika secara dinamis

Multiple-partition
Hole-block: tersebar dalam memori
Ketika proses ter-swapped in, ia akan dialokasikan di lokasi hole dalam
memori
Sistem operasi mengelola informasi:
partisi teralokasi (block)
partisi bebas (hole)

G A M B A R : Ilustrasi multiple allocation


Masalah Alokasi Penyimpanan Dinamis
First fit: mengalokasi hole pertama yang memenuhi permintaan
Best Fit: mengalokasi hole terkecil yang sesuai permintaan
Worst fit: mengalokasi hole terbesar sesuai permintaan
Sistem Operasi - Pengelolaan Memory -Alokasi Contiguous (berurutan)

Fragmentasi
External: total memori tersedia memenuhi kebutuhan, tetapi tidak
contiguous
Internal: memori yang dialokasikan sedikit lebih besar daripada
kebutuhan, sisa tidak digunakan
Compaction: memperkecil kemungkinan fragmentasi eksternal
menyatukan hole agar berada dalam blok yang sama ! menggeser block
juga
hanya digunakan pada relokasi dinamik dan dilakukan saat eksekusi

Paging
Ruang alamat logika bisa saja non-contiguous
Ruang alamat fisik dibagi dalam blok berukuran tetap (frame),
sedangkan pembagian alamat logika disebut page
Perlu mekanisme untuk mengidentifikasi frame kosong, agar page
teralokasi
Proses dengan n page, memerlukan n frame
Page table, digunakan untuk mentranslasi alamat logika ke alamat fisik
Sistem Operasi - Pengelolaan Memory -Paging
 
Skema Translasi Alamat
Nomor page (p): digunakan sebagai indeks ke page table, berisi base
address dari setiap page dalam memori fisik
Offset (d): nilai yang ditambahkan ke base address untuk
mendefinisikan alamat fisik

G A M B A R : Paging hardware


Dukungan Hardware untuk Page Table
Page table disimpan di memori utama
Page table base register (PTBR): menunjuk page table
Page table length register (PTLR): mengindikasikan ukuran page table
Dengan skema ini, setiap akses instruksi/data memerlukan dua akses
memori, ke page table dan ke instruksi/data ! menimbulkan masalah
waktu akses
Diatasi dengan associative memory dan translation look aside buffer
(TLB) ! hardware khusus untuk mempercepat waktu akses
Beberapa TLBs meyimpan address-space identifiers (ASIDs) disetiap
entry TLB – Secara unik mengidentifikasi setiap proses untuk
memberikan proteksi terhadap ruang alamat
Hanya beberapa dari page table yang disimpan dalam TLB, kapasitas
terbatas
Sistem Operasi - Pengelolaan Memory -Paging

Associative Memory
Nomor page Nomor frame
Transalasi alamat p : d
Aturan:
jika diketahui nomor page: keluarkan nomor frame
jika tidak diketahui nomor page, cari dari page table, keluarkan nomor
frame
Waktu akses efektif:
Waktu akses TLB + waktu akses memori
Hit rasio: persentase ditemukannya page table dalam TLB dalam rentang
waktu tertentu

Proteksi Memory
Setiap referensi ke memori memiliki pasangan nomor page dan frame
Proteksi memori diterapkan melalui proteksi bit yang terkait pada setiap
frame, dapat menyebabkan blok memori bersifat read-write atau read
only
Valid-invalid bit pada page table:
valid: sedang berada pada ruang alamat logika proses
invalid: tidak sedang pada ruang alamat logika proses

Struktur Page Table
Target: membuat alokasi page table dan memori efisien
Mekanisme:
Hierarchical paging: ruang alamat logika dipecah dalam beberapa tabel
Hashed page table:
inverted page table

Hashed Page Table
Umum digunakan di sisitem > 32 bit
Halaman virtual di-hashed dalam page table: berisi pointer ke element
hashing di lokasi yang sama
Halaman virtual dibandingkan dengan pointer, jika ditemukan
dihubungkan dengan alamat fisik

Inverted Page Table
Umum digunakan di sisitem > 32 bit
Setiap entri page table memiliki pasangan alamat memori fisik dengan
informasi proses yang memilikinya
Butuh lebih sedikit memori untuk menyimpan, tetapi butuh waktu lebih
banyak untuk me-refer ke lokasi memori fisik (gunakan hash table)

Segmentation
Skema pengelolaan memori yang mendukung pemisahan antara lokasi
memori logika dengan lokasi memori fisik
Sebuah program adalah kumpulan segment.
Segement adalah unit logika yang dapat berupa: program utama,
prosedur, fungsi metode, obyek, variabel lokal dan global, blok bersama,
stack, tabel simbol, array

Arsitektur
Alamat logika terdiri dari dua bagian: <nomor-segment, offset>
Segment table – memetakan alamat fisik yang setiap entry terdiri dari:
base – berisi lokasi fisik di mana segmen dimulai
limit – berisi jumlah lokasi memory yang diperlukan segmen
Segment-table base register (STBR) menunjuk ke tabel lokasi segmen
di memori
Segment-table length register (STLR) menunjukkan banyaknya lokasi
memori yang diperlukan: nomor segmen s valid jika s < STLR

Arsitektur
Proteksi, setiap entry dalam tabel segmen menghubungkan:
Bit validasi = 0 ) illegal segment
read/write/execute (privileges)
Bits proteksi terkait dengan segment: code sharing terjadi pada level
segmen
Karena panjang segemen bervariasi, alokasi memori merupakan bagian
dari masalah alokasi dinamis

Segmentasi dengan Paging
Memanfaatkan kelebihan segmentasi:
sharing & protection: setiap segmen memiliki informasi read/write atau
read-only
Memanfaatkan kelebihan paging:
tidak ada fragmentasi external
alokasi cepat