sistem operasi pertemuan 10
TRANSCRIPT
Sistem Operasi
Oleh : A. AfrinaRamadhani H. 13.12.11
1
Sistem Operasi
PERTEMUAN 10 13.12.11
2
Sistem Operasi
13.12.11 Sistem Operasi
3
Proses
Manajemen Proses
Setiap aplikasi yang dijalankan di linux mempunyai pengenal yang
disebut sebagai process identification number (PID). PID disimpan
dalam 32 bit dengan angka berkisar dari 0-32767 untuk menjamin
kompatibilitas dengan unix. Dari nomor PID inilah linux dapat
mengawasi dan mengatur proses-proses yang terjadi didalam system.
Proses yang dijalankan ataupun yang baru dibuat mempunyai struktur
data yang disimpan di task_struct.
13.12.11 Sistem Operasi
4
Deskriptor Proses
Guna keperluan manajemen proses, kernel memelihara informasi
tentang setiap proses di sebuah deskriptor proses dengan tipe
task_struct. Setiap deskriptor proses mengandung informasi antara
lain status proses, ruang alamat, daftar berkas yang dibuka, prioritas
proses, dan sebagainya. Berikut gambaran isinya:
13.12.11 Sistem Operasi
5
Isi Deskriptor Proses
struct task_struct{
volatile long state;
/*-1 unrunnable,
0 runnable,
>0 stopped*/
unsigned long flags;
/* 1 untuk setiap flag proses */
mm_segment_t_addr_limit;
/* ruang alamat untuk thread */
struct exec_domain *exec_domain;
long need_resched;
long counter;
long priority;
13.12.11 Sistem Operasi
6
/* SMP and runqueue state */
struct task_struct *next_task, *prev_task;
struct task_struct *next_run, *prev_run;
...
/* task state */
/* limits */
/* file system info */
/* ipc stuff */
/* tss for this task */
/* filesystem information */
/* open file information */
/* memory management info */
/* signal handlers */
...
};
13.12.11 Sistem Operasi
7
Setiap proses di Linux memiliki status. Status proses merupakan array dari
flag yang mutually exclusive. Setiap proses memiliki tepat satu keadaan
(status) pada suatu waktu. Status tersebut adalah:
• TASK_RUNNING
• TASK_INTERRUPTIBLE
• TASK_UNINTERRUPTIBLE
• TASK_STOPPED
• TASK_ZOMBIE
13.12.11 Sistem Operasi
8
Setiap proses atau pun eksekusi yang terjadwal secara independen
memiliki deskriptor prosesnya sendiri. Alamat dari deskriptor proses
digunakan untuk mengindentifikasi proses. Selain itu, nomor ID proses
(PIDs) juga digunakan untuk keperluan tersebut. PIDs adalah 32-bit
bilangan yang mengidentifikasikan setiap proses dengan unik. Linux
membatasi PIDs berkisar 0-32767 untuk menjamin kompatibilitas
dengan sistem UNIX tradisional.
13.12.11 Sistem Operasi
9
Antrian Tunggu
void sleep_on(struct wait_queue **wqptr) {
struct wait_queue wait;
current_state=TASK_UNINTERRUPTIBLE;
wait.task=current;
add_wait_queue(wqptr, &wait);
schedule();
remove_wait_queue(wqptr, &wait);
}
13.12.11 Sistem Operasi
10
Proses dan Thread
Linux menggunakan representasi yang sama untuk proses dan thread.
Secara sederhana thread dapat dikatakan sebuah proses baru yang berbagi
alamat yang sama dengan induknya. Perbedaannnya terletak pada saat
pembuatannya. Thread baru dibuat dengan system call clone yang
membuat proses baru dengan identitas sendiri, namun diizinkan untuk
berbagi struktur data dengan induknya.
13.12.11 Sistem Operasi
11
Thread dibuat dengan __clone(). __clone() merupakan rutin
dari library system call clone(). __clone memiliki 4 buah
argumen yaitu:
1. fn
fungsi yang akan dieksekusi oleh thread baru
2. arg
pointer ke data yang dibawa oleh fn
3. flags
sinyal yang dikirim ke induk ketika anak berakhir dan pembagian
sumber daya antara anak dan induk.
4. child_stack
pointer stack untuk proses anak.
13.12.11 Sistem Operasi
12
Penjadualan
Penjadual adalah suatu pekerjaan yang dilakukan untuk
mengalokasikan CPU time untuk tasks yang berbeda-beda dalam
sistem operasi. Kernel tasks meliputi task yang diminta oleh
proses yang sedang dijalankan dan tasks yand dieksekusi internal
menyangkut device driver yang berkepentingan.
13.12.11 Sistem Operasi
13
Sinkronisasi Kernel
Cara penjadualan kernel pada operasinya secara mendasar berbeda
dengan cara penjadualan suatu proses. Terdapat dua cara agar sebuah
permintaan akan eksekusi kernel-mode dapat terjadi. Sebuah program
yang berjalan dapat meminta service sistem operasi, dari system call
atau pun secara implisit (untuk contoh:ketika page fault terjadi).
Sebagai alternatif, device driver dapat mengirim interupsi perangkat
keras yang menyebabkan CPU memulai eksekusi kernel-define
handler untuk suatu interupsi.
13.12.11 Sistem Operasi
14
Penjadualan Proses
Ketika kernel telah mencapai titik penjadualan ulang, entah karena
terjadi interupsi penjadualan ulang mau pun karena proses kernel yang
sedang berjalan telah diblokir untuk menunggu beberapa signal bangun,
harus memutuskan proses selanjutnya yang akan dijalankan. Linux telah
memiliki dua algoritma penjadualan proses yang terpisah satu sama lain.
Algoritma yang pertama adalah algoritma time-sharing untuk
penjadualan preemptive yang adil diantara sekian banyak proses.
Sedangkan algoritma yang kedua didesain untuk tugas real-time dimana
proritas mutlak lebih utama daripada keadilan mendapatkan suatu
pelayanan.
13.12.11 Sistem Operasi
15
Symmetric Multiprocessing
Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk
mendukung perangkat keras symmetric multiprocessor (SMP). Proses
mau pun thread yang berbeda dapat dieksekusi secara paralel dengan
processor yang berbeda. Tapi bagaimana pun juga untuk menjaga
kelangsungan kebutuhan sinkronisasi yang tidak dapat di-preemptive
dari kernel, penerapan SMP ini menerapkan aturan dimana hanya satu
processor yang dapat dieksekusi dengan kode mode kernel pada suatu
saat. SMP menggunakan kernel spinlock tunggal untuk menjalankan
aturan ini.
Q & A
Sekian dan Terima Kasih 13.12.11 Sistem Operasi
16