Kamis, 03 Mei 2012
SISTEM OPERASI BAB V a SISTEM FILE
SISTEM FILE
Pada proses penyimpanan dan pembacaan data bisa timbul
masalah:
1. Kapasitas media penyimpanan tidak cukup (terbatas).
2. Ketika proses dihentikan, data hilang.
3. Kebutuhan mengakses data atau sebagiannya dalam waktu
bersamaan.
Oleh karena itu diperlukan media penyimpanan yang :
1. Mampu menyimpan data yang besar.
2. Mampu menjaga data walaupun proses yang mengaksesnya
dihentikan.
3. Proses yang bersamaan dapat mengakses data secara
bersama-sama, tanpa ada yang terganggu.
Solusi untuk semua masalah tsb adalah dengan menyimpan data pada disk atau
media lain dalam bentuk unit-unit yang disebut FILE. Data yang disimpan dalam bentuk file harus tetap tidak
berubah ketika proses dibentuk atau dihentikan. File bisa hilang hanya ketika
dihapus saja.
Sistem File adalah bagian sistem operasi yang menangani masalah file.
1. FILE
1.1 Penamaan File
File merupakan bentuk mekanisme abstrak. Karakteristik yang paling penting
dari mekanisme abstrak adalah cara pemberian nama suatu obyek. Ketika proses
membuat suatu file, proses akan memberi sebuah nama kepada file. Ketika proses
selesai, file masih ada dan bisa diakses oleh proses lain dengan menggunakan
nama file tsb.
Semua sistem operasi menerima bentuk nama file yang terbuat dari 1 sampai 8 karakter. Tetapi ada beberapa
sistem operasi yang membedakan huruf besar dan huruf kecil, seperti UNIX.
Contoh :
BARBARA, BARbara, BarBaRa ---->
UNIX membedakannya
----> DOS
menganggap sama
---->
WINDOWS ???
---->
LINUX ???
Kebanyakan sistem operasi mampu menangani dua bagian bentuk nama file yang
dipisah dengan titik (period), bagian yang terletak setelah
tanda titik disebut extension, yang
biasanya menggambarkan ciri khusus dari file ybs. Contoh :
- DOS nama file ----> [1
sampai 8 karakter].[1 sampai 3]
- UNIX ----> [1 sampai ? karakter].[1 sampai ?].[....].[....]
.....sampai ?
Beberapa extension file
yang biasa ditemukan tampak pada tabel berikut :
Extension
|
Artinya
|
*.bak
|
File Backup
|
*.bas
|
Program source
Basic
|
*.bin
|
Program
executable binary
|
*.c
|
Program source C
|
*.dat
|
File Data
|
*.doc
|
File Dokumentasi
|
*.ftn
|
Program source
Fortran
|
*.hlp
|
File Teks untuk
HELP command
|
*.lib
|
Library dari file
.obj yang digunakan linker
|
*.man
|
Online manual
page
|
*.obj
|
File object
|
*.pas
|
Program source
Pascal
|
*.tex
|
Teks masukan
untuk format program
|
*.txt
|
File teks umum
|
Pada kasus khusus,
extension ini hanya berupa Konvensi,
seperti :
- data03.txt,
menyatakan file dalam bentuk file teks.
- program05.c
menyatakan file berupa file code bahasa C, C compiler hanya mengcompile
extension *.C.
1.2 Struktur
File
Beberapa kemungkinan bentuk struktur file tampak pada gambar 1.
Gambar 1. Tiga macam file. (a) Urutan byte. (b) Urutan record. (c) Tree.
a. File dibentuk dari urutan byte yang tidak terstruktur.
Akibatnya : Sistem operasi tidak tahu apa yang ada didalamnya. DOS dan UNIX
menerapkan bentuk ini, LINUX ?, WINDOWS ?
Cara mengambil isi file dengan
program.
b. File
dibentuk dari urutan record dengan panjang yang sama dan struktur internal
didalamnya.
Operasi read akan membaca satu record.
Operasi write akan overwrite/append
satu record.
Cocok untuk sistem operasi yang menerapkan Punch Card, karena ukurannya
tetap.
c. File dibentuk dari struktur organisasi tree record,
ukuran record tidak harus sama, setiap record mengandung field Key pada posisi
yang sama. Tree record diurutkan berdasarkan Key nya.
Operasinya dengan melihat Key.
Banyak diterapkan pada sistem operasi
Mainframe untuk pemrosesan data komersial.
1.3 Jenis File
UNIX dan DOS memiliki jenis file :
a. Regular File : jenis file
yang mengandung informasi user. Contoh gambar 1.
b. Directory
: file sistem yang mengatur struktur sistem file.
c. Character Special File
: File yang berhubungan dengan peralatan I/O dan memodelkan peralatan serial,
seperti Terminal, Printer, NIC.
d. Block Special File : File yang digunakan untuk memodelkan disk.
Regular File bisa berbentuk ASCII maupun binary. Keuntungan bentuk ASCII
adalah dapat ditampilkan dan dicetak seperti apa adanya dan dapat diedit
menggunakan editor yang biasa dipakai. File Binary memiliki struktur internal sendiri, contoh
dalam UNIX pada gambar 2.
Gambar 2. (a) File executable. (b) Archive.
Magic Number :
menyatakan bahwa file berupa file executable.
Binary file dalam
bentuk archive mengandung kumpulan library procedure (module) yang telah
dicompile tapi tidak dilink.
Seluruh sistem
operasi paling tidak harus mengenal satu jenis file executable, miliknya
sendiri. Bahkan jika file source codenya diubah, mampu melakukan compile ulang
secara otomatis. Contoh perintah UNIX : make, berada didalam shellnya.
1.4 Pengaksesan
File
a. Sequential Access,
proses dapat membaca seluruh byte/record dalam suatu file, mulai dari awal,
tidak boleh melompat atau keluar dari urutannya.
Cocok untuk file yang disimpan pada
media Magnetic Tape.
b. Random Access,
bisa membaca byte/record untuk berbagai macam urutan pengaksesan.
Cocok untuk file yang disimpan pada media Disk.
Jenis ini lebih sesuai untuk berbagai aplikasi, seperti sistem database
airport.
Sistem operasi Mainframe lama banyak menggunakan kedua
cara, karena memiliki dua bentuk media penyimpanan tsb.
Sedangkan sistem operasi modern tidak membedakannya,
otomatis semua file diakses secara acak (Random access).
1.5 Atribut
File
Jenis-jenis atribut
file tampak pada Tabel berikut.
Field
|
Artinya
|
Protection
|
Who can access
the file and in what way
|
Password
|
Password needed
to access the file
|
Creator
|
Id of person who
created the file
|
Owner
|
Current owner
|
Read Only flag
|
0 for read/write,
1 for read only
|
Hidden flag
|
0 for normal, 1
for do not display in listings
|
System flag
|
0 for normal
file, 1 for system file
|
Archive
|
0 has been backed
up, 1 for needs to be backed up
|
ASCII/binary flag
|
0 for ASCII file,
1 for binary file
|
Random access
flag
|
0 for sequential
access only, 1 for random access
|
Temporary flag
|
0 for normal, 1
for delete on process exit
|
Lock flag
|
0 for unlocked,
nonzero for locked
|
Record length
|
Number of bytes
in a record
|
Key position
|
Offset of the key within each record
|
Key length
|
Number of bytes in the key field
|
Creation time
|
Date and Time
file was created
|
Time of last
access
|
Date and Time
file was last accessed
|
Time of last
change
|
Date and Time
file was last changed
|
Current size
|
Number of bytes
in the file
|
Maximum size
|
Maximum size file
may grow ro
|
1.6 Operasi
File
Sistem Call yang
biasa digunakan dalam hubungan dengan file :
a. Create
: File dibuat dan tidak berisi data.
b. Delete
: File dihapus karena tidak diperlukan lagi dan untuk memperbesar ruang disk
sisa.
Beberapa sistem operasi akan menghapus
file jika tidak digunakan dalam jangka waktu tertentu.
c. Open : Sebelum
menggunakan file, file harus diOpen dulu. Open akan menjadikan sistem mengambil
atribut dan daftar alamat disk dan meletakkan didalam memori kerja agar
diperoleh akses yang cepat.
d. Close
: Jika akses file selesai, atribut dan alamat disk tidak diperlukan lagi,
sehingga harus ditutup dan untuk memperbesar ruang tabel daftar alamat disk
internal.
e. Read : Data dibaca
dari file. Sistem menentukan banyaknya data dan menyediakan buffer untuk
menampungnya.
f. Write : Data
disimpan kedalam file. Jika posisi
berada diakhir file, maka ukuran file bertambah. Jika posisi
ditengah, data yang ada akan ditimpa.
g. Append
: Menambah data setelah data terakhir.
h. Seek : Mengatur
posisi pointer saat itu menuju posisi yang ditentukan.
i. Get Attribute : Pada UNIX,
program make perlu melihat atribut file, terutama waktu modifikasinya yang
terakhir.
j. Set Attribute
: Mengubah status atribut file.
k. Rename
: Merubah nama file.
1.7 Memory-Mapped
File
Sistem operasi melakukan pemetaan file kedalam ruang alamat disk pada alamat virtual. Pemetaan ini sangat cocok pada Segmentasi. Contoh pada gambar 3.
Gambar 3 (a) Proses segmentasi sebelum memetakan file ke
ruang alamatnya. (b)
Proses setelah memetakan file abc ke
satu segmen dan membuat segmen baru untuk file xyz.
Proses memiliki dua
segmen, teks dan data. Proses melakukan sistem call COPY. Pertama, memetakan file
sumber (abc) ke sebuah segmen. Kemudian membuat segmen kosong dan memetakannya
ke file tujuan (xyz). Proses dapat mengcopy segmen sumber ke dalam segmen
tujuan menggunakan loop copy biasa, bukan Read dan Write.
Kelebihan Pemetaan
File :
- Menghilangkan
kebutuhan I/O sehingga mempermudah pemrograman.
Kekurangan Pemetaan
File :
- Sistem
sulit untuk mengetahui panjang sebenarnya dari file output (xyz).
- Hasil
pemetaan belum tentu sama dari sumbernya, jika terjadi modifikasi sumber,
outputnya belum tentu dimodifikasi juga.
- Tidak
bisa memetakan ukuran file yang lebih besar dari ukuran segmen.
2. DIRECTORY
Untuk menjaga agar
file tetap pada jalurnya dan diketahui, maka sistem file menyediakan DIRECTORY.
2.1 Sistem Directory Hirarki
Diantara bentuk sistem directory tampak pada gambar 4
Gambar 4. Directory. (a) Atribut pada directory entry.
(b) Atribut di tempat lain.
Ketika file diOpen, sistem operasi mencari
directorynya sampai ditemukan nama file ybs, kemudian mengekstrak atribut dan
alamat disk langsung dari daftar directory atau dari struktur data yang
menunjukkannya, lalu meletakkan kedalam tabel didalam memory kerja.
Bentuk disain sistem file tampak pada gambar 5.
Gambar 5. Tiga disain sistem file. (a) Satu directory dipakai bersama oleh semua user. (b) Satu directory per user. (c) Sembarang tree per user. Huruf-huruf menyatakan pemilik directory atau file.
2.2 Nama Path
Penamaan Path ada
dua cara :
a. Absolute Path Name
: mengandung path dari directory root sampai file.
Selalu dimulai dari Root dan bersifat
Unik.
Di UNIX, directory dipisah dengan tanda /, DOS dengan \. Jika karakter pertama dari nama path dimulai dengan tanda tsb, maka path
termasuk jenis absolut ini.
Contoh
: /usr/ast/mailbox
root
directory mengandung subdirectory usr,
dimana
didalamnya ada subdirectory ast,
dimana
didalamnya lagi ada subdirectory mailbox.
b. Relative Path Name
: Untuk seluruh kasus path yang tidak dimulai dari root, diambil secara relatif
ke directory kerja (working directory/current directory).
Contoh : Directory kerja /usr/ast,
file yang mempunyai path absolut /usr/ast/mailbox dapat diwakili dengan mailbox
saja. Seperti perintah :
cp
/usr/ast/mailbox /usr/ast/mailbox.bak
dan
cp
mailbox mailbox.bak
adalah
perintah UNIX yang menghasilkan efek yang sama.
Kebanyakan sistem
operasi mempunyai dua directory khusus, "." dan "..",
dot dan dotdot. Dot menunjukkan directory saat itu dan Dotdot menunjukkan
parent directory. Contoh gambar 6
Gambar 6. UNIX directory tree
Directory kerja /usr/ast, copy file
/usr/lib/dictionary ke directorynya sendiri dengan :
cp ../lib/dictionary .
2.3 Operasi
Directory
Beberapa operasi
directory :
a. Create,
membuat directory yang kosong kecuali dot dan dotdot yang otomatis dimasukkan
oleh sistem.
b. Delete,
menghapus directory, Hanya directory yang kosong yang dapat dihapus.
c. OpenDir,
Mendaftar seluruh file yang ada di directory ybs.
d. CloseDir,
Setelah selesai membaca directory, maka harus ditutup untuk memperbesar ruang
tabel internal.
e. ReadDir,
Menghasilkan daftar directory pada directory yang sedang dibuka.
f. Rename,
Mengubah nama directory.
g. Link, Cara agar
file dapat muncul dibeberapa lokasi directory.
h. UnLink,
Menghilangkan Link.
3. IMPLEMENTASI
SISTEM FILE
Menjelaskan cara
file dan directory disimpan, ruang disk diatur dan membuat segalanya efisien
dan reliable.
3.1 Mengimplementasikan
File
Kunci masalah
implementasi penyimpanan file adalah selalu mengetahui perubahan blok disk
akibat ada tidaknya file.
a.
Contiguous
Allocation
Ini merupakan alokasi paling sederhana
dengan menyimpan setiap file kedalam blok data yang berurutan didalam disk.
Kelebihannya :
- Mudah
implementasinya, karena untuk mengetahui letak blok file hanya cukup mengingat
satu nomor, blok yang pertama saja.
- Kinerjanya
sangat bagus, karena seluruh file dapat dibaca dari disk dalam satu operasi
saja.
Kekurangannya :
- Tidak
bisa dialokasikan jika ukuran maksimum file tidak diketahui.
- Mudah
terjadi fragmentasi, sisa blok yang tidak digunakan.
b.
Linked
List Allocation
Menyimpan file dalam skema Linked List, seperti tampak pada gambar 7.
Gambar 7. Menyimpan file sebagai linked list dari blok-blok disk.
Kelebihannya :
- Seluruh
blok dapat dipakai, tidak terjadi fragmentasi.
Kekurangannya :
- Pengaksesan
file secara acak akan lambat.
- Kebutuhan ukuran blok data meningkat karena pointer juga
memerlukan beberapa byte.
c.
Linked
List Allocation menggunakan Indeks
Caranya sama seperti point b tetapi menambahkan tabel berindeks kedalam
memory, seperti pada gambar 8 berikut.
Gambar 8. Alokasi linked list dengan menggunakan tabel di main memory.
File A menggunakan blok 4,7,2,10 dan 12. Sedangkan file B menggunakan 6,3,11 dan 14.
DOS menggunakan metode alokasi ini.
Kelebihannya :
- Pengaksesan
file secara acak akan lebih cepat.
Kekurangannya :
- Seluruh
tabel harus selalu ada didalam memory, sehingga mengurangi kapasitas memory.
d.
I-node
alokasi file dengan menerapkan tabel
yang berukuran kecil yang disebut i-node (index-node) yang mendaftar atribut
dan alamat disk dari blok file. Tampak pada gambar 9.
Gambar 9. I-node.
Untuk
file-file yang berukuran besar, dipetakan ke blok yang disebut Single Indirect Block (SIB) yang mengandung
alamat disk tambahan. Jika masih tidak cukup maka alamat lain dipetakan ke Double Indirect Block (DIB) yang
mengandung alamat blok yang mendaftar SIB. Setiap SIB menunjuk ke beberapa
ratus blok data. Jika ternyata masih kurang lagi, Triple Indirect Block (TIB) bisa digunakan.
- UNIX menggunakan metode alokasi ini.
- WINDOWS
???
- OS/2 ???
3.2 Mengimplementasikan
Directory
a.
Directory
pada sistem CP/M
Sistem ini hanya memiliki satu directory saja, sehingga semua file harus dicari dan dilihat dari directory ini. Tampak pada gambar 10.
Gambar
10. Directory yang berisi nomer blok disk untuk setiap file.
- User code
digunakan untuk mengetahui nama pemilik file ybs.
- Extent akan
diperlukan bila ukuran file lebih besar dari 16 blok, sehingga memerlukan beberapa
directory. Extent berisi nomor urut.
- Block Count
menunjukkan jumlah blok yang digunakan dari 16 blok yang disediakan.
- 16 bit terakhir berisi
nomor blok disk.
b.
Directory
pada DOS
Sistem DOS menggunakan directory
seperti tampak pada gambar 11.
P:_Md i 0� xj" 975">
Komunikasi
|
Proses
|
Proses
|
Ø Beberapa
proses biasanya berkomunikasi dengan proses lainnya.
Ø Contohnya
pada shell pipe line : output dari proses pertama harus diberikan kepada proses
ke dua dan seterusnya.
Ø Pada
beberapa sistem operasi, proses-proses yang bekerja bersama sering sharing
(berbagi) media penyimpanan, dimana suatu proses dapat membaca dan menulis pada
shared storage (main memory atau files)
Masalah – masalah
pada IPC :
Race Condition
:
Suatu kondisi
dimana dua atau lebih proses mengakses shared memory / data pada saat
yang bersamaan dan hasil akhirnya tidak sesuai dengan yang dikehendaki
Contoh rase
condition :
v Print
spooler
Contoh
: berupa kumpulan data-data yang akan di cetak.
v Spooler
directory
|
|
|
Mengerjakan
proses lain
|
|
|
|
4
|
Abc
|
Out
= 4
|
Proses A
|
|
5
|
Program
c
|
|
|
|
6
|
Program
n
|
|
|
|
7
|
|
In
= 7
|
|
|
8
|
|
|
Proses B
|
|
|
Mengerjakan
proses lain
|
|
>
Proses A Ã
cek slot input yang kosong (7) untuk mencetak suatu data dan stop
>
Interupsi ………
>
Proses B Ã
meletakkan data yang akan di print pada slot kosong tersebut (7) dan stop (slot
kosong berikutnya adalah 7+1=8)
>
:
prosesor mengerjakan proses lain
>
Proses A dilanjutkan à meletakkan data yang akan di print di slot (7), sehingga
meng-overwrite data proses B yang diletakkan di slot (7)
>
Maka proses B tidak akan dilaksanakan, dan tidak akan terdeteksi terjadi
kesalahan.
Untuk menghindari race condition maka harus diatur agar 2 proses yang
mempunyai critical section yang sama tidak memasuki critical section pada saat
yang bersamaan.
Critical Section / seksi kritis :
Bagian dari program yang mengakses shared memory, yang dapat menyebabkan
terjadinya race condition.
4 kondisi untuk mencegah race condition :
a. Tidak ada 2 proses yang memasuki critical sectionnya
secara bersamaan / simultan
b. Tidak ada asumsi yang dibuat yang berhubungan dengan
kecepatan dan jumlah CPU
c. Tidak
ada proses yang berjalan diluar critical section-nya yang dapat memblokir
proses-proses lain
d. Tidak
ada proses yang menunggu selamanya untuk masuk ke critical section-nya.
Mutual Exclusion
(MuTex) With Busy Waiting :
Jika suatu proses
sedang mengakses shared memory di critical sectionnya, tidak ada satu prosespun
yang dapat memasuki critical section (mutual exclusion) dan menyebabkan
masalah.
Jenis-jenis mutual
exclusion :
1. Disabling
interrupt / mematikan interupsi
Dengan
cara mematikan interupsi yang masuk pada saat proses sedang berada pada
critical section-nya. Cara ini kadang
cukup berguna untuk kernel tetapi tidak untuk user. Dan cara inipun tidak
terlalu baik untuk CPU yang jumlahnya lebih dari satu, dimana disable interrupt
hanya mengenai CPU yang sedang menjalankan proses itu dan tidak berpengaruh
terhadap CPU lain
2. Lock variables
Setiap
proses yang akan mengakses ke critical section-nya harus meng-cek lock
variable. Jika 0 berarti proses dapat memasuki critical section-nya dan jika 1
maka proses harus menunggu sampai lock variable = 0. Kelemahannya adalah 2
proses masih dapat memasuki critical section-nya pada saat yang bersamaan.
Sewaktu satu proses meng-cek lock variable = 0, pada saat akan men-set 1 ada
interupsi untuk melaksanakan proses lain yang juga ingin memasuki critical
sectionnya, maka akan terjadi race condition.
3. Strict
alternation
Dengan
mengamati variable turn untuk menentukan siapa yang akan memasuki critical
section-nya bukanlah ide yang baik jika proses lebih lambat dari yang lain.
Contohnya
:
While
(true)
{
while (turn != 0) /*wait*/;
critical_section ( );
turn = 1;
noncritical_section ( );
}
while
(true)
{
while (turn != 1) /*wait*/;
critical_section ( );
turn = 0;
noncritical_section ( );
}
4. Peterson’s
Solution
Proses
tidak akan diteruskan sampai while terpenuhi, bila interested[other] = TRUE,
maka proses akan menunggu sampai FALSE.
Kelemahannya
: jika proses memanggil enter_region-nya secara hampir bersamaan, yang disimpan
di turn adalah data yang ditulis terakhir.
Contohnya
:
#
include “prototype.h”
#
define FALSE 0
#
define TRUE 1
#
define N 2 /*banyaknya proses*/
int
turn;
int
interested [N]; /*nilai
awal di-set = 0 (false)*/
void
enter_region(int process) /*proses
= 1 atau 0*/
{
int
other; /*jumlah
proses lainnya*/
other
= 1 – process; /*proses
lainnya*/
interested[process]
= TRUE; /*menunjukkan
tertarik*/
turn
= process; /*set
flag*/
while
(turn==process && interested[other] == TRUE)
}
void
leave_region(int process) /*proses
yang selesai*/
{
interested[process] = FALSE; /*meninggalkan critical region*/
}
5. Test
and Set Lock Instruction / Instruksi TSL
Dengan
bantuan hardware, menentukan siapa yang berhak memasuki critical_region
(section)
Contoh
:
Enter_region
:
Tsl reg,flag |
copy flag ke reg dan set flag = 1
Cmp reg,#0 |
apakah flag = 0
Jnz enter_region |jika
<> 0 loop lagi
Ret |return
ke caller, masuk critical region
Leave_region :
Mov flag, #0 |simpan 0 ke flag
Ret |return
ke caller
Proses harus memanggil ini pada saat yang tepat.
Kelemahan
utama dengan busy waiting adalah menyita banyak waktu CPU dan problem inversi
prioritas.
6. Sleep
and Wake Up
Mekanismenya
: proses akan di blok / tidur (sleep) apabila tidak bisa memasuki
critical_section-nya dan akan dibangunkan (wake up) / ready apabila resource
yang diperlukan telah tersedia.
SLEEP : sistem call
membuat proses yang memanggil di blok (blocked)
WAKE UP : sistem
call yang membuat proses yang memanggil menjasi ready
Contoh
:
Procedure-Consumer
Problem (bounded buffer)
Beberapa proses share buffer dengan ukuran
tetap
Jika buffer penuh producer sleep
Jika buffer kosong consumer sleep
Jika buffer mulai kosong producer
wake up
Jika buffer terisi consumer wake up
Masih ada kemungkinan terjadi race condition
7. Semaphore
(Dijkstra, 1965)
Meng-cek, mengubah
dan sleep 1 instruksi
yang
Mengubah
dan wake up tdk
dpt dipisahkan
Instruksi tersebut sangat berguna untuk sinkronisasi.
Dapat diimplementasikan untuk memecahkan
producer-consumer problem.
Mekanisme-nya
menggunakan :
-
variabel integer untuk menghitung
jumlah wake up yang disimpan / tertunda
-
bernilai 0 bila tidak ada wake up yang
disimpan, bernilai positif bila ada wake up yang tertunda
Dua macam operasi terhadap semaphore :
1. DOWN(S)
:
If S >= 0 then
S := S-1;
Else sleep
(S)
End;
2. UP(S)
:
S
:= S + 1;
If
S <= 0 then wakeup(S)
End;
Operasi DOWN dan UP merupakan operasi yang bersifat Atomic (Atomic
Action).
8. Event
Counters (Reed and Kanodia, 1979)
Tiga operasi terhadap event counter (E) :
1. Read
(E) : return current value of E
2. Advance
(E) : Atomically increment E by 1
3. Wait
until E has a value of v or more
9. Monitor
-
Higher level synchronization
primitive.
-
Kumpulan prosedur, variabel dan
struktur data yang dipaket menjadi satu modul atau paket.
-
Proses bisa memanggil prosedur dalam
monitor, tetapi tidak dapat mengakses langsung struktur data internal dari
monitor.
10. Message
Passing
Menggunakan
2 primitive :
1. send
(destination, &message)
2. receive
(source, &message)
Beberapa
isu pada message passing system : message lost; acknowledgement; domains;
authentication; performance
Masalah Klasik IPC
:
q
The Dining Philosopher Problem
-
5 philosophers yang kerjanya hanya
makan dan berfikir
-
tersedia lima piring spaghetti dan lima sumpit
-
untuk makan dibutuhkan bua buah sumpit
-
problem-nya bagaimana cara menulis program agar setiap philosopher dapat
berfikir dan makan tanpa harus saling menunggu ?
q
The Readers and Writers Problem
-
Model akses database
-
Banyak proses berkompetisi untuk
membaca dan menulis. Contohnya : airline reservation.
-
Beberapa proses boleh membaca pada
saat yang sama
-
Bila suatu proses sedang menulis,
tidak boleh ada proses lain yang mengakses database
-
Proses membaca mempunyai prioritas
yang lebih tinggi daripada proses menulis
Proses dalam Sistem
Terdistribusi
Thread
Computer Computer
Process Thread Program Counter
(a) (b)
Gambar (a) :
-
mempunyai : program counter, stack,
register set, address space sendiri
-
independent satu sama lain dan
berkomunikasi lewat IPC yang disediakan sistem, seperti : semaphore, monitor,
atau message
Gambar (b) :
-
multiple threads of control (THREAD
atau lightweight Process). Thread mirip seperti little-mini process. Setiap
thread berjalan sekuensial, yang mempunyai program counter dan stack sendiri.
Thread juga men-share CPU seperti proses.
-
Thread dalam satu proses menempati
address space yang sama, tidak ada proteksi penggunaan memori antar thread
karena proses dimiliki oleh satu user.
-
Thread dapat berada pada empat state
yang berbeda, seperti process (running, blocked, ready, terminated)
1. Thread
di ciptakan untuk dapat melakukan paralelisme yang dikombinasikan dengan
eksekusi sekuensial dan blocking system calls
2. single
treads server, menggunakan blocking system calls, tetapi kinerja sistem tidak
baik
3. finite-state
machine, kinerja baik dengan melakukan parallelisme, tetapi menggunakan nonblocking
calls, sehingga sulit dalam memprogram
Status proses terhadap prosesor :
1.
Status proses tanpa henti
2.
Status proses sambil bekerja dan
terhenti
3.
Status proses dengan status siap
Langganan:
Posting Komentar
(
Atom
)
Tidak ada komentar :
Posting Komentar