— Tại thời điểm thứ 5, process s1 được nạp vào để thực thi, tới thời điểm thứ 7 thì process sĩ được đẩy vào run_ queue, sau đó cä 2 process sŨ và sĩ được đẩy qua ready_ queue, đo s1 có
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHO HO CHi MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
HE DIEU HANH (CO2017)
Báo cáo Bài tập lớn 2
SIMPLE OPERATING SYSTEM
GVHD: Hoang Lê Hải Thanh
SVTH: Cao Thanh Binh - 1912715 V6 Manh Hao - 1913238 Ngo Tién Dat - 1913040
Mai Dite Long - 1913996
Lớp TH: 0S
Hồ Chí Minh, ngày 12 tháng 5 năm 2021
Trang 2@¬» Khoa khoa học và kỹ thuật máy tính
Mục lục
3 Phan chia công việc
Trang 3
@¬» Khoa khoa học và kỹ thuật máy tính
1 Scheduler
1.1 "Thực hiện
Ta sử dụng max heap để hiện thực code trong file queue.c
}
Hiện thực code trong file sched.c
pthread_ mutex_ loek(&queue_ lock);
7 }
8
Trang 4
@¬» Khoa khoa học và kỹ thuật máy tính
e Thực thi file cầu hình sched_ 0
Dữ liện đầu vào của ñle sehed _ 0 cho thấy time slice là 2, sử dụng 1 CPU và có 2 process
Process s0 bao gồm 15 lệnh, có độ tru tiên là 12
Process s1 bao gồm 7 lệnh, có độ tu tiên là 20
Mỗi lệnh cần 1 đơn vị thời gian để thực thi
— Process s0 thực thi tại thời điểm 1, sau 2 đơn vị thời gian nó sẽ bị tạm dừng và được đẩy vào run_ queue Do ban đầu chỉ có process s0 nên ready_ queue hiện tai dang trống, process sÚ được đẩy qua, ready_ queue để tiếp tục thực thi
— Tại thời điểm thứ 5, process s1 được nạp vào để thực thi, tới thời điểm thứ 7 thì process
sĩ được đẩy vào run_ queue, sau đó cä 2 process sŨ và sĩ được đẩy qua ready_ queue,
đo s1 có độ tu tiên cao hơn nên s1 tiếp tục được thực thi tại thời điểm 7
— Cả 2 process cứ tiếp tục thực thi như vậy cho đến khi cả hai thực thi hết lệnh
kết quả thực thỉ dưới dạng Gantt chart
[ | Pi] Pi] P2] P2] Pi] P2] Pi]
9 11 13 1 P2 [|PI|[PI|PI|PI
0 1 3 5 5 16 18 2 O 22 23 Thực thì ñle cấu hình sched_ 1
Dữ liện đầu vào của ñle sehed_ 1 cho thấy time slice là 2, sử dụng 1 CPU và có 4 process
Process s2 bao gồm 12 lệnh, có độ ưu tiên là 20
Process s3 bao gồm 11 lệnh, có độ tru tiên là 7
Mỗi lệnh cần 1 đơn vị thời gian để thực thi
Quá trình thực thi tương tự như ñle cấu hình sched_ 0
kết quả thực thỉ dưới dạng Gantt chart
[ |PI|PI|P2|P3|P4|P2|[P3|PI|P41|P2|P3|PiI| P4]
0 1 8 5 7 9 11 13 lỗ 17 19 21 23 25 27 [ P2] P3] Pl] P4] P3] Pi | P4] P3] Pi P4] Pld
27 28 30 32 31 356 3S 40 42 44 45 46
1.2 Trả lời câu hỏi
What is the advantage of using priority feedback queue in comparison with other scheduling algorithms you have learned?
Trả lời:
Tổng quan về các giải thuật đã học:
1 First Come First Serve (FCFS):
Trang 5
@¬» Khoa khoa học và kỹ thuật máy tính
e Ưu điểm:
— Không thực hiện những phép toán logic phức tạp, nên dễ hiện thực
— Không xảy ra tình trang starvation vì mỗi process đều sẽ được thực hiện
e Nhược điểm:
— Không có tùy chọn trước, tức khi một process bắt đầu thì CPU sẽ thực hiện cho đến
khi nó kết thúc rồi mới thịrc hiện process khác
—_ Vì lí do trên, nếu gặp proeess cần thời gian thực thi lâu thì những process sau đó phải đợi một thời gian tương ứng hậu quả làm cho hệ thống chạy chậm, phản hồi lâu
2 Shortest Job First (SJF):
e Uu diém:
— Những process có thời gian thực thi ngắn (short process) sẽ thực hiện trước, những process có thời gian thực thi dài hơn sẽ chạy san Điều này giúp cho thông lượng tăng lên vì nhiều process có thể thực hiện trong thời gian ngắn hơn tổng thời gian thực hiện của chúng
e Nhược điểm:
— Cần phải biết trước tổng thời gian thực thi của process Điều này là bat kha thi
— Những process có thời gian thực hiện lâu hơn sẽ phải đợi một khoảng thời gian, sau khi những process có thời gian thực hiện ngắn thực hiện xong Thậm chí chúng có thể
không được thực hiện (starvation)
3 Round Robin (RR):
e Ưu điểm:
— Mỗi process đều được thực hiện trong khoảng thời gian nhất định, vì vậy chúng có cing dé wu tiên
— §tarvation không xây ra vì với mỗi vòng lặp round robin, mỗi process đều được thực hiện
e Nhược điểm:
— Thông lượng của nó tùy thuộc vào việc chọn độ dài thực hiện của mỗi process
— Nếu chọn thời gian trên vượt qua mức cần thiết, nó sẽ có xu hướng thực hiện giống như FCES
4 Priority based Scheduling:
e Ưu điểm:
— Các process có thể được lựa chọn dựa trên yêu cầu của bộ nhớ (memory requirement), yêu cầu thời gian (time requirement) hoặc yêu cầu của người ding (user preference)
e Nhược điểm:
— Có thể xảy ra trường hợp 2 process có cùng độ ưu tiên
Trang 6
Trường đại học Bách khoa - ĐHQG TP Hồ Chí Minh
6
— Giả sử ta chọn process có độ tu tiên cao hơn, thì những process có độ tru tiên thấp phải đợi những process có độ tru tiên cao hơn chạy xong thì mới được chạy, thậm chí khong duge chay (starvation)
- Từ khái quát trên, ta có thể thấy mỗi giải thuật sẽ sử dụng hiệu quả trong một số tình huống nhất định Trong trường hợp này, priority feedback queue sử dụng giải thuật Priority based Scheduling sẽ có lợi cao hơn so với giải thuật khác vì quá trình đưa process vào CPU cần phải
được lựa chọn theo một tiên chuẩn nhất định, và Priority based Scheduling thích hợp để giải
quyết vấn đề này dựa trên độ tu tiên
- Giải thuật priority feedback queue (PFQ) sử dụng 2 hàng đợi là ready_ queue và run_ queue như sau:
e ready queue: hang doi chita các process ở mức độ wu tiên thực thi trước hơn so với hàng đợi run quene Khi CPU chuyển sang slot tiếp theo, nó sẽ tìm kiếm process trong hàng
đợi này
e run queue: hàng đợi này chứa các process đang chờ để tiếp tục thực thi sau khi hết slob của nó mà chưa hoàn tất quá trình của mình Các process ở hàng đợi này chỉ được tiếp tuc slot tiếp theo khi ready_ queue rỗi và được đưa sang hàng đợi ready_ queue để xét slot tiếp theo
Ca hai hàng đợi đều là hàng đợi có độ ru tiên, mức độ tru tiên dựa trên mức độ tru tiên
của process trong hàng đợi
Từ đó, PFQ có những ưu điểm:
2
Sử dụng time slot, tạo sự công bằng về thời gian thực thi giữa các process, tránh tình trạng
chiếm CPU sử dụng, trì hoãn vô hạn định
Sử dụng hai hàng đợi, trong đó hai hàng đợi được chuyển qua lại các process đến khi process được hoàn tất, tăng thời gian đáp ứng cho các process ( các process có độ tu tiên
thấp đến sau vẫn có thể được thực thi trước các process có độ wu tiên cao hơn sau khi đã
xong slot của mình ) nên sẽ linh hoạt trong phân chia thực hiện công việc
Những process ngắn sẽ nhanh chóng được hoàn thành, nhường thời gian thực thi cho các process khác
Tính công bằng giữa các process là được đảm bảo, chỉ phụ thuộc vào độ tru tiên có sẵn của, các process Cụ thể xét trong khoảng thời gian t0 nào đó, nếu các process đang thực thi thì hoàn toàn phụ thuộc vào độ ưu tiên của chúng Nếu có một process p0 khác đến, giả
SỬ ready_ queue đang sẵn sàng, process pŨ này vào hàng đợi ưu tiên và phụ thuộc vào độ
tu tiên của nó, cho dù trước đó các process khác có độ tru tiên cao hơn đã thực thi xong, chúng cũng không thể tranh chấp với process p0 được vì chúng đang chờ trong run_ quene cho đến khi ready_ queue là rỗi, tức p0 đã được thực thi slot của nó
Memory Management
2.1 Thực hiện
Hiện thực hàm get_ page_ table() trong file mem.ec
Trang 7
@¬» Khoa khoa học và kỹ thuật máy tính
10 *
12
18 }
19 }
22 }
Hiện thực hàm translate() trong file mem.c
8
21
33 }
34 }
36 }
Hiện thực hàm alloc_ mem trong ñle mem.c
Trang 8
1
3
5
pthread mutex _lock(&mem_loc
addr_t ret_mem = 0;
uint32_t num_pages = (size % PAGE SIZE) ? size / PAGE SIZE +1
int mem_avail = 0; // We could allocate new memory region or not?
*/
int free frame = 0;
if(_mem_stat[i].proc — 0) free frame++;
if (free frame >= num_pages) { mem avail = 1;
break;
} }
}
if (mem avail) {
ret_ mem = proc—>bp;
proc—>bp += num_pages * PAGE SIZE;
int v_idx = 0;
int prev_p_idx = 0;
{
if (_mem_stat[i].proc — 0) _mem_stat[i] proc = proc—spid;
_mem_stat[i].index = v_idx;
if(v_idx != 0) _mem_stat[prev_p_idx].next = i;
}
addr_t v_addr = ret_mem + v_idx*PAGE SIZE;
addr_t first lv = get first lv(v addr);
if(seg_table—>table [0] pages == NULL) seg table—>size = 0;
for(int j = 0; j < seg_table—>size; j++){
if(seg_table—>table[j].v_index — first _lv){
Trang 9
Khoa khoa học và kỹ thuật máy tính
¢ ề
cur _pages—>table[cur_pages—>size].v_index = second_ lv;
cur _pages—>table[cur_pages—>size].p index = i;
cur _pages—>size+4+;
break;
}
seg table—>table[seg_table—>size].v_index = first _lv;
= (struct page table _t *)malloc(sizeof(struct page table t));
struct page table _t * new pages = seg table—>table[seg table—>size | pages
new _pages—>table [0].v_index = second_lv;
new _pages—>table [0].p_index = i;
seg table—>size+4;
}
v_idx++;
if(v_idx == num_pages) { _mem_ stat[i | next = —l;
break;
Ỳ
Ỳ
t
Hiện thực hàm free_mem trong file mem.c
pthread _mutex_lock(&mem_lock) ;
addr_t first lv = get first lv(address);
addr_t second_lv = get second Iv(address);
addr_t p_index;
if(page_table != NULL) {
if (second_lv == page _table—>table[i].v_index) {
p_index = page _table—>table[i].p_index;
break;
}
Trang 10
BN
62
63
65
}
if(found) {
addr_t v_addr;
addr_t v_idx = 0;
do {
_mem_stat[p_index].proc = 0;
p_index = _mem_ stat[p index] next;
for(int j = 0; j < page _table—>size; j++) { v_addr = address + v_idx*PAGE SIZE;
if (page_table—stable[j].v_index = second_lv) {
page_ bable—>table [k] = page_ table—>table [k+ 1];
page_ table— >size——;
v_idx+-;
break;
Ỳ
} while(p index l!l= —1);
if (page_table—>size — 0)
free(page table);
proc—sseg_table—>table[k] = proc—>seg_ bable—>table[k+l];
Ỳ
proc—>seg_ table—>size ——;
}
e Thực thi file cấu hình m0
alloc 1568 1 alloc 1386 2 alloc 4564 4 write 102 1 20 write 21 2 1000
5
6
7
Lệnh alloc dùng để cấp phát bộ nhớ: CPU sẽ kiểm tra xem kích thước của bộ nhớ vật lí
có đủ để cấp phát hay không, nếu đủ thì CPU sẽ cấp phát bộ nhớ cho task đó bằng cách
Trang 11
@¬» Khoa khoa học và kỹ thuật máy tính
lưu giá trị vào _mem_ stat, gan gid tri cho seg_ table vA page_ table, lu dia chi dau vao thanh ghi regs cla process
Lệnh free dùng để thu hồi bộ nhớ: CPU sẽ chuyển địa chỉ ảo sang địa chỉ vật lí, hủy
cấp phát bộ nhớ của task đó bằng cách thay đổi trạng thái của mem stat thành free, xóa, các giá trị của task d6 trong seg_ table và page_ table
— Lệnh alloe (1) cấp phát bộ nhớ cho task 0
— 2) cấp phát bộ nhớ cho task 1
— Lệnh free (3) thu hồi bộ nhớ của task 0
— Lénh alloc
— Lệnh alloe (4) cấp phát bộ nhớ cho task 2 Lệnh alloc (5) cấp phát bộ nhớ cho task 4 kết quả thực thỉ sau khi chạy các lệnh cấp phát và thu hồi bộ nhớ
01400-01
01c000
02800-02
03400-037ff | P0
e Thực thi file cấu hình m1
(1) alloc 13535 0 (2) alloc 1568 1 (3) free 0 (4) alloc 1386 2 (5) alloc 4564 4
(6) (7) (8)
Quá trình thực thi tương tự nhi file ciu hinh m0
kết quả thực thỉ sau khi chạy các lệnh cấp phát và thu hồi bộ nhớ
Trang 12
@¬» Khoa khoa học và kỹ thuật máy tính
01000-01
15
2.2 Trả lời câu hỏi
What is the advantage and disadvantage of segmentation with paging?
e Advantage
— Kích thước bảng trang được giảm xuống vì các trang chỉ hiển thị cho dữ liệu của các phân đoạn, do đó giảm yêu cầu bộ nhớ
— Hạn chế được hiện tượng phân mảnh ngoại bằng cách phân trang trong mỗi đoạn
— Vì không cần phải hoán đổi toàn bộ phân đoạn nên việc hoán đổi vào bộ nhớ ảo trở
nên dễ dàng hơn
e Disadvantage
— Dé xay ra hiện tượng phân mảnh nội
— Bắt buộc phải có phần cứng bổ sung
3 Phân chia công việc
ame
Cao Thanh Binh Mai Đức
õ
Tài liệu
[1] Slide mén hoe: CO2017-Operating Systems
(2) Abraham Silberschatz, Greg Gagne, Peter B Galvin - Operating System Concepts 10th