Cau 1 hdh
1. Câu 1: Giả sử MCB đầu tiên trong MSDOS có địa chỉ quy ước là A0. Hãy trình bày (bằng một trong ba phương pháp phổ biến và có tính xác định càng cao càng tốt) thuật toán phân phối bộ nhớ cho một chương trình sẽ được tải và thuật toán giải phóng bộ nhớ cho chương trình vừa hoàn thiện.
Giải phóng bộ nhớ
void free(void *firstbyte) {
struct mem_control_block *mcb;
/* Backup from the given pointer to find the
* mem_control_block
*/
mcb = firstbyte - sizeof(struct mem_control_block);
/* Mark the block as being available */
mcb->is_available = 1;
/* That's It! We're done. */
return;
}
Cấp phát bộ nhớ (theo first fit):
giả sử yêu cầu m suy ra vùng nhớ cần m+16 (vì MCB bắt đầu vùng có độ dài 16 bài)
1. Now_location = a0
2. Tách 16 byte từ now_location cho mcb
3. If (mcb-> available) then
4. If (mcb->size >= m+16) then
5. Jump to 9
6. Else
7. Now_location = now_location+mcb->size
8. Quay về 2
9. Địa chỉ bắt đầu ct là now_location+16,
10. đánh dấu mcb->available = false
11. return now_location+16,
Bạn đang đọc truyện trên: AzTruyen.Top