Memory Management

Memory Management

Manajemen memori : membagi memori untuk mengakomodir banyak proses.
Memory Management Requirement :
- Relocation : programmer tidak mengetahui dimana letak memori suatu program dieksekusi
                       dan ketika program sudah dieksekusi, program juga bisa dikembalikan pada letak
                       memori yang berbeda pula.


- Protection : proses seharusnya tidak bisa mereferensi ke lokasi memori dalam proses lain tanpa
                      izin.


- Sharing : mengizinkan beberapa proses mengakses memori dengan porsi yang sama
- Logical Organization : program ditulis dalam modul yang ditulis dan dicompile secara independen
- Physical Organization : memori yang tersedia untuk program juga termasuk untuk data 
                                            mungkin tidak cukup

Addressing
- Logical : referensi ke lokasi memori independen dan harus mengacu ke alamat fisik
- Relative : alamat diekspresikan sebagai lokasi yang berhubungan ke titik tertentu
- Physical : alamat absolut atau lokasi nyata dalam memori utama

Swapping : Penataan memori dengan cara ditukar satu sama lain agar data yang dimasukkan muat


Memory Allocation Algorithm
1. First fit : mencari blok memori yang sesuai dan cukup, namun diambil hanya yang pertama kali
                   ditemukan
2. Next fit : mencari blok memori tambahan namun dimulai dari memori asal saja tidak harus dari
                    awal
3. Best fit : memilih blok memori  yang ukurannya mendekati dengan yang diminta atau dibutuhkan
4. Worst fit : memilih blok memori yang terbesat
5. Quick fit
6. Buddy system memilih blok memori dengan rumus
    

Buddy System
Buddy system memiliki rumus  2U-1 < s <= 2U , dimana blok memori dibagi menjadi dua blok memori yang sama dan proses pembagian berlanjut hingga blok yang terkecil lebih besar dari yang dibutuhkan.




Deadlock

Deadlock

Deadlock : suatu proses dikatakan deadlock jika setiap proses saling berebutan sumber daya
                   sehingga  akhirnya tidak ada proses yang mendapatkan sumber daya


Kondisi yang bisa menyebabkan deadlock :
1. Mutual Exclusion : hanya satu proses yang menggunakan resource pada satu waktu
2. Hold and Wait : suatu proses menggunakan paling tidak satu resource dan dia juga menunggu
                                resource tambahan yang sedang digunakan oleh proses lain
3. No preemption : suatu resource digunakan oleh sebuh proses dan proses lain harus menunggu
                                hingga proses yang menggunakan resource rela untuk melepaskannya
4. Circular wait : keadaan dimana ada 4 proses yang saling menunggu (proses 1 menunggu 
                             proses 2, proses 2 menunggu proses 3, proses 3 menuggu proses 4 dan proses 4
                             menunggu proses 1)

Deadlock Modeling
 Deadlock modeling menggunakan RAG(Resource Allocation Graph).

a. A holds resource R
b. B request resource B
c. Deadlock

Contoh deadlock :

Contoh no deadlock :


Strategi untuk mengatasi deadlock :
1. Menggunakan Algoritma Ostrich
2. Detection and recovery
3. Menggunakan alokasi sumber daya dinamis untuk mencegah deadlock
4. Mencegah munculnya satu dari empat yang kondisi yang bisa menimbulkan deadlock

Safe and Unsafe State

- Safe State
  Contoh soal :









- Unsafe state
  Contoh soal :







Pencegahan Deadlock :








Concurrency

Concurrency

Konkurensi ada apad 3 konteks berbeda :
a. Multiple application (multiprogramming)
b. Structured application
c. Operatin-system structure

Masalah yang muncul dalam konkurensi :
- berbagi sumber daya global
- manajemen alokasi sumber daya
- error berhubungan dengan pemrograman sulit untuk ditemukan

Kompetisi yang terjadi diantara proses untuk sumber daya :
a. Mutual Exclusion
    Hanya satu program yang diizinkan pada satu waktu
b. Deadlock
    Antar program saling berebutan sehingga tidak ada program yang mendapatkan sumber daya
c. Starvation
    Antar program saling menunggu akibat takut akan terjadinya collision antar program

Tabel Interaksi Proses


Mekanisme Penyelesaian Konkurensi
a. Semaphore : nilai integer untuk memberikan sinyal antar proses
b. Binary semaphore : semaphore yang hanya bernilai 0 dan 1
c. Mutex : seperti binary semaphore namun digunakan untuk membuka kunci dan menutup kunci
d. Monitor : bahasa pemrograman yang menenkapsulasi variabel, prosedur akses, dan kode 
                    inisialisasi dalam tipe data abstrak
e. Event flag : penggunaaan kata yang digunakan untuk mekanisme sinkronisasi.
f. Mailboxes/messages : cara untuk dua proses saling bertukar informasi dan bersinkronisasi
g. Spinlocks : mekanisme mutual exclusion dimana proses mengeksekusi looping terus menerus
                       untuk mendeteksi ketersediaan kunci


Process Scheduling

Process Scheduling

Behavior dari Process :
a. Process Bound
b. I/O Bound


CPU Scheduler : memilih diantara proses-prosed di memori yang siap dieksekusi dan
                            mengalokasikan CPU ke salah satu dari proses tersebut
Dispatcher        : memberikan kontrol CPU ke proses yang terpilih

Dalam melakukan penjadwalan terdapat kriteria-kriteria :
- CPU Utilization  : membuat CPU sesibuk mungkin
- Throughput         : jumlah proses yang selesai tiap satuan waktu
- Turnaround time : jumlah waktu untuk mengeksekusi proses tertentu
- Waiting time       : jumlah waktu sebuah proses menunggu dalam antrian
- Response time     : jumlah waktu yang dibutuhkan dari ketika sebuah request diterima hingga
                                 pertama kali hasil diproduksi

Dalam penjadwalan juga diperlukan optimisasi dengan kriteria :
- Penggunaan CPU maksimal
- Throughput maksimal
- Turnaround time minimal
- Waktu tunggu minimal
- Waktu response minimal

Tujuan dari scheduling dari berbagai sistem :
a. Semua system : fairness, policy enforcement, dan balance
b. Batch system  : throughput(hasil per satuan waktu), turnaround time, penggunaan CPU
c. Interactive system : waktu respon dan proporsionalitas
d. Real-time system : memenuhi permintaan dan prediktabilitas

Algoritma Batch Scheduling

a. FCFS (First-Come First-Serve)
    Proses akan diproses di CPU dengan urutan waktu proses tersebut memberikan request.
    Keuntungan : mudah dipahami dan mudah untuk diprogram
    Kekuranngan : job yang pendek butuh waktu terlalu lama jika didepannya terdapat job yang
                            panjang
   Contoh :
   Process  Burst Time 
       P1             24
       P2              3
       P3              3
    Urutan datang : P1 , P2 , P3 
    Gant Chart:




   Waiting time for P1  = 0; P2  = 24; P3 = 27
   Average waiting time :  P1 + P2 + P3
                                      : (0 + 24 + 27)/3 = 17

b. SJF (Shortest Job First)
    Menggunakan panjang dari proses untuk melakukan penjadwalan proses dengan waktu yang 
    paling cepat.
    SJF ada 2 skema :
    - nonpreemptive : menjalankan proses hingga selesai dan tidak bisa diinterupsi proses lain
    - preemptive       : menjalankan proses hingga selesai namun ketika panjang dari proses yang
                                 sedang berjalan lebih banyak daripada proses yang menginterupsi maka
                                 proses akan dipotong dan dilanjutkan nanti.


    Contoh :
    a. nonpreemptive
        Process  Arrival Time  Burst Time
             P1              0.0                7
             P2              2.0                4
             P3              4.0                1
             P4              5.0                4

        Gant Chart :


        Average waiting time = P1 + P2 + P3 + P4 = (0 + 6 + 3 + 7)/4 = 4
    b. preemptive
          Process  Arrival Time  Burst Time
                 P1             0.0                 7
                 P2             2.0                 4
                 P3             4.0                 1
                 P4             5.0                 4
          Gant Chart :


          Average waiting time = P1 + P2 + P3 + P4 = (9 + 1 + 0 +2)/4 = 3

Selain dua algoritma diatas, terdapat algoritma lain juga seperti round-robin scheduling dan