Diktat_Prosedural_13_StudiKasus

jika precp disebut kiriblok didealokasi tengah p

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: n ← P; PrecPMin ← Prec P else if Nb(P) < Nb(Pmin) then {lebih baik } PrecPMin ← PrecP; Pmin ← P else PrecP ← P; P ← Next (P) { Semua elemen list selesai diperiksa } { Delete atau update elemen list jika ketemu } if Found then IAw ← Aw(Pmin) if (Nb(Pmin) = X ) then { delete } if PrecPMin = Nil then { Delete First } FirstZB ← Next (FirstZB) else { Delete After PrecPMin } Next(PrecPMin) ← Next (Pmin) Deallocate (Pmin) else {update } Nb(P) ← Nb(P) - X ; Aw(P) ← Aw(P) + X { update } else IAw ← 0 Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 21 Nov 2011 53 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB procedure DeAlokBlokB (input X, IAw : integer ) { Representasi berkait zone KOSONG } { I.S. X adalah ukuran zone, bilangan positif dan IAw adalah alamat blok awal zone tersebut, dengan IAw ∈ [1..NB-X], Blok dengan indeks IAw s.d. IAw+X-1 pasti berstatus ISI. } { F.S. Tabel status memori dengan indeks blok IAw..IAw+X-1menjadi KOSONG } { Proses : Sebuah zone berukuran X dan bebawal pada blok IAw didealokasi (statusnya dijadikan kosong) } KAMUS LOKAL P, PrecP : address ALGORITMA if FirstZB = Nil then { insert 1 elemen ke list kosong } Alokasi (Pins) Nb(PIns) ← X; IAw(PIns) ← X; FirstZB ← PIns else P ← FirstZB; PrecP ← Nil; Found ← false while (P ≠ Nil) and not Found do if Aw(P) > IAw then Found ← true else PrecP ← P; P ← Next(P) { P=Nil or Found } if not Found then { Pasti P= Nil, insertlast atau update PrecP } if Aw(PrecP)+ Nb(PrecP) = IAw then Nb(PrecP) ← Nb(PrecP) + X { update PrecP } else { bukan zone terkanan, isnert elmt} { insert last } Allocate(Pins); Aw(Pins) ← IAw; Nb(Pins) ← X; Next(PrecP) ← Pins else { Found, berarti Aw(P) > IAw } if PrecP = Nil then { elemen list = zone terkiri } { insert First, cek apakah perlu digabung dengan P } if IAw+X = Aw(P) then { kontigu dengan zone I, zone digabung, update P } Aw(P) ← IAw; Nb(P) ← Nb(P) + X { update P saja } else{Insert First, bukan menjadi zone kontigu dg yg pertama } Allocate (Pins) ); Aw(Pins) ← IAw; Nb(Pins) ← X Next (Pins) ← FirstZB; FirstZB ← PIns else { PrecP ≠ Nil, ada 4 kemungkinan } {Jika PrecP disebut KIRI,Blok didealokasi TENGAH &P disebut KANAN } depend on PrecP, P, X, IAw Aw(PrecP)+Nb(PrecP)=IAw and Aw(P) = IAw + X : { a. 3 zone digabung: KIRI, TENGAH, KANAN deleteP, update PrecP } Next(PrecP) ← Next(P) Nb(PrecP) ← Nb(PrecP)+Nb(P)+X Deallocate (P) Aw(PrecP)+ Nb(PrecP) ≠ IAw and Aw(P) ≠ IAw + X : { b. Tidak ada penggabungan blok } Allocate (Pins) ); Aw(Pins) ← IAw; Nb(Pins) ← X Next(PrecP) ← Pins Aw(PrecP)+Nb(PrecP)= IAw : Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 21 Nov 2011 54 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB { c. 2 zone KIRI dan TENGAH digabung gabung PrecP dg blok baru yg didealokasi, update PrecP } Nb(PrecP) ← Nb(PrecP) + X Aw(P) = IAw+X : { d. 2 zone TENGAH dan KANAN digabung Gabung P dengan blok baru yg didealokasi } Nb(P) ← Nb(P) + X; Aw(P) ← IAw procedure GarbageCollectionB { I.S. Sembarang } { F.S. } KAMUS LOKAL P : address NKosong : integer ALGORITMA NKosong ← 0 { Akumulasi jumlah blok kosong sambil delete list sehingga tersisa satu elemen } if FirstZB ≠ Nil then {minimal ada satu elemen } P ←FirstZB; PrecP ← Nil while (Next(P) ≠ N...
View Full Document

This document was uploaded on 03/15/2014 for the course IF 2030 at Institut Teknologi Bandung.

Ask a homework question - tutors are online