Proses di Linux

Post on 23-Feb-2016

52 views 0 download

description

Proses di Linux. Kelompok 3: 1. 13505057 - Tina Yuliani Ayuningsih 2. 13505071 - Sindy Gita Ratri 3. 13505089 - Shieny Aprilia 4. 13505119 - Nessya Callista. Apa itu proses ?. Proses adalah satuan eksekusi program Proses di Linux preemptive saat : 1. Waktu kuantumnya telah habis - PowerPoint PPT Presentation

Transcript of Proses di Linux

Kelompok 3:1. 13505057 - Tina Yuliani Ayuningsih 2. 13505071 - Sindy Gita Ratri 3. 13505089 - Shieny Aprilia 4. 13505119 - Nessya Callista

Proses di Linux

Apa itu proses?

Proses adalah satuan eksekusi program

Proses di Linux preemptive saat: 1. Waktu kuantumnya telah habis 2. ada proses baru yang masuk ke state

TASK_RUNNING dan prioritasnya lebih tinggi dibandingkan dengan prioritas current proses

Proses yang baru->logical copy address space parent, mengeksekusi kode yang sama dengan parent

Meskipun parent dan child men-share halaman yang mengandung program kode(text), namun memiliki data(stack dan heap) yang terpisah, sehingga perubahan oleh child ke lokasi memori tidak dapat diketahui oeh parent, dan begitu lah sebaliknya.

linux menggunakan lightweight process yang mendukung multithreaded application.

Umumnya, 2 lightweight process dapat men-share resource yang sama, seperti address space. Ketika 1 proses memodifikasi shared resource, proses lain dapat langsung melihat perubahannya.

Tentunya dibutuhkan sinkronisasi saat mengakses shared resource tsb.

Scheduling proses

linux scheduling: berdasar teknik time-sharing -> beberapa proses berjalan dalam time multiplexing karena CPU time dibagi menjadi potongan-potongan untuk setiap runnable process.

scheduling policy: aturan-aturan yang digunakan untuk menentukan kapan dan bagaimana memilih proses yang baru untuk dijalankan.

scheduling policy juga berdasar pada ranking proses berdasar prioritas

Di linux, prioritas proses bersifat dinamik

Scheduler menjaga proses mana yang sedang berjalan dan menyesuaikan prioritas secara periodik.

klasifikasi proses:

Saat berbicara tentang scheduling, proses diklasifikasikan sebagai IO Bound dan CPU Bound.

Alternatif klasifikasi proses: 1. Interactive processes

berinteraksi secara konstan dengan user contoh program interaktif: command

shells, text editor,aplikasi berbasis grafik

2. Batch processes Tidak memerlukan interaksi dengan

user, kebanyakan berjalan di background

contoh program batch: programming language compiler, database search engine, scientific computation.

3. Real-time processes memerlukan scheduling yang cukup

rumit proses jenis ini tidak pernah diblok oleh

proses lain yang prioritasnya rendah contoh program realtime: video and

sound applications, robot controllers, dan programs yang mengumpulkan data dari physical sensors.

syscall yang berhubungan dengan scheduling

scheduling algorithm Scheduling algorithm adalah instruksi/kode

yang mengimplmentasikan scheduling policy yang diberikan

struktur yang paling penting untuk scheduling adalah task_struct

informasi yang tersimpan di dalam task struct digunakan untuk me-restore status proses baru untuk menjalankan dan memberikan kontrol sistem ke proses tersebut

scheduler mengalokasikan CPU time untuk runnable processes melalui informasi di task struct

Scheduling terjadi saat schedule(), yang bertujuan untuk menemukan proses dalam queue meng-assign ke CPU

Di-invoke melalui 2 cara:

1. Direct invocation of schedule() Terjadi ketika:▪ Current process terblok karena menunggu

resource tertentu▪ current process diambil dari ready queue kemudian

diletakkan di appropriate wait queue, statusnya diubah menjadi: TASK_INTERRUPTIBLE atau TASK_UNINTERRUPTIBLE

▪ Ketika resource yang diinginkan telah tersedia, proses akan dibangunkan dan di-remove dari wait queue

2. Lazy invocation of schedule() Terjadi ketika:▪ Current process telah menggunakan kuantumnya, hal

ini dicek di: update_process_times()▪ Proses ditambahkan ke ready queue dan prioritasnya

lebih tinggi daripada proses yg sedang dijalankan, hal ini dicek di: wake_up_process()

▪ Proses memanggil sched_yield()

Lazy invocation menggunakan need_resched flag dari process descriptor dan akan menyebabkan schedule() dipanggil kemudian.

linux scheduling algorithm bekerja dengan membagi CPU time menjadi epoch.

dalam 1 epoch, tiap proses memiliki waktu kuantum yang durasinya dihitung ketika epoch dimulai

proses hanya menggunakan kuantum ketika sedang mengakses CPU, sedangkan saat proses menunggu IO, kuantum tidak digunakan

Sebuah proses berakhir ketika semua runnable process telah menggunakan semua kuantumnya

umumnya, proses yang berbeda memiliki waktu kuantum yang berbeda

tiap proses memiliki base-time quantum, yakni nilai kuantum waktu yang di-assign oleh scheduler ke proses jika telah menyelesaikan kuantum di epoch sebelumnya.

user dapat mengubah base-time quantum proses mereka dengan menggunakan syscall nice( ) dan setpriority( )

untuk memilih proses mana yang akan dijalankan berikutnya,ada 2 jenis prioritas: 1. Prioritas static-> untuk proses realtime 2. Prioritas dinamik->untuk semua proses lainnya

Prioritas statik dari proses real time selalu lebih tinggi daripada prioritas dinamik proses yg konvensional

proses yang konvensional baru akan dijalankan jika sudah tidak ada lagi proses real-time yang dijalankan

Process Switching

terjadi di Kernel Mode kontrol eksekusi dari proses, dimana

kernel dapat menghentikan eksekusi dari proses yang sedang berjalan di CPU dan melanjutkan proses lain yang telah dihentikan sebelumnya

Switching dibutuhkan karena : 1. Jumlah proses lebih banyak daripada

jumlah CPU 2. Diperlukan cara untuk membagi

waktu CPU 3. Untuk multiprocessing/tasking 4. Komputer lebih produktif

Prinsip umum - simpan state dari old process - load state dari proses baru yang telah

disimpan

Elemen - elemen switching 1. hardware context 2. task state segment 3. switching 4. save FPU, MMX dan XMM registers

Hardware context

- kumpulan dari data yang harus di load ke register sebelum proses melanjutkan eksekusinya di CPU

- disimpan di process descriptor dan di Kernel Mode

Task state segment tipe segment khusus pada arsitektur

80x86 untuk menyimpan hardware context

dibutuhkan oleh CPU karena : mengambil address dari Kernel mode

stack dari TSS akses I/O permission bitmap

Switching

1. switch page global directory 2. switch kernel mode stack 3. switch hardware context

switch_to macro

dijalankan oleh fungsi schedule() memiliki tiga parameter prev, next,

last

save FPU, MMX dan XMM registers

80x86 tidak menyimpan register FPU dan XMM secara otomatis

instruksi MMX beroperasi di register FPU kerugian : tidak dapat menggabungkan

instruksi floating-point dengan instruksi MMX

keuntungan : kode untuk menyimpan FPU dapat digunakan untuk menyimpan status MMX

Sekian dan terima kasih

Ada pertanyaan?