Cụ thể khi 1 tiến trình được đưa vào hàngđợi ready thì bộ điều khiển tiến trình PCB sẽ đưa nó vào cuối hàng đợi, nó sẽ phảiđợi các tiến trình phía trên thực thi xong thì mới đến lượt nó.
Trang 1TIỂU LUẬN GIỮA KÌ MÔN NHẬP MÔN HỆ ĐIỀU HÀNH
CHỦ ĐỀ 1: LỊCH SỬ HỆ ĐIỀU HÀNH MÃ
NGUỒN MỞ VÀ MIỄN PHÍ
CHỦ ĐỀ 2: REAL-TIME SCHEDULING CHỦ ĐỀ 3: PRINCIPLES OF DEADLOCK
Người hướng dẫn: TRẦN TRUNG TÍN Người thực hiện: NGUYỄN NGỌC HƯƠNG GIANG - 52100019
Lớp : 21050201 Khoá : 25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022
Trang 2TIỂU LUẬN GIỮA KÌ MÔN NHẬP MÔN HỆ ĐIỀU HÀNH
CHỦ ĐỀ 1: LỊCH SỬ HỆ ĐIỀU HÀNH MÃ
NGUỒN MỞ VÀ MIỄN PHÍ
CHỦ ĐỀ 2: REAL-TIME SCHEDULING CHỦ ĐỀ 3: PRINCIPLES OF DEADLOCK
Người hướng dẫn: TRẦN TRUNG TÍN Người thực hiện: NGUYỄN NGỌC HƯƠNG GIANG - 52100019
Lớp : 21050201 Khoá : 25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022
Trang 3LỜI CẢM ƠN
Để có được một tiểu luận giữa kì hoàn chỉnh ,trước hết, em xin gửi lời cảm
ơn chân thành nhất đến toàn bộ quý thầy cô Trường Đại học Tôn Đức Thắng nói chung đã tạo điều kiện tốt nhất cho em nghiên cứu vào học tập đặc biệt là thầy Trần Trung Tín nói riêng đã tận tình chỉ dạy và trang bị cho em những kiến thức cần thiết trong suốt thời gian qua giúp em dần trở nên hoàn thiện và khắc phục được những khuyết điểm, sai sót trong quá trình học tập
Tuy bài tiểu luận đã hoàn thành nhưng vẫn không tránh khỏi những sai sót Rất mong quý thầy cô đánh giá góp ý để bài tiểu luận của em được tốt hơn Một lần nữa em xin cảm ơn và gửi lời chúc sức khỏe đến quý thầy cô
Trang 4TIỂU LUẬN ĐƯỢC HOÀN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng dẫn khoa học của thầy Trần Trung Tín Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong bài tiểu luận còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung tiểu luận của mình Trường Đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)
TP Hồ Chí Minh, ngày 27 tháng 5 năm 2022
Tác giả (Ký tên và ghi rõ họ tên)
Nguyễn Ngọc Hương Giang
Trang 5PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
* Phần xác nhận của GV hướng dẫn
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm
(kí và ghi họ tên)
* Phần đánh giá của GV chấm bài
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm
(kí và ghi họ tên)
Trang 6TÓM TẮT Nội dung bài tiểu luận bao gồm 3 phần được giao thuộc môn Nhập môn Hệ điều hành Ở phần 1, em sẽ trình bài về lịch sử hệ điều hành mã nguòn mở và miễn phí Ở phần 2, em sẽ làm về real-time scheduling và phần cuối cùng sẽ về principles
of deadlock
Trang 7MỤC LỤC
LỜI CẢM ƠN 1
PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN 3
TÓM TẮT 4
MỤC LỤC 5
CHỦ ĐỀ 1:LỊCH SỬ HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ VÀ MIỀN PHÍ 6
1.1 Lịch sử 6
1.2 Free Operating Systems 7
CHỦ ĐỀ 2: REAL-TIME SCHEDULING 8
2.1 SCHED_FIFO 8
2.2 SCHED_RR 10
CHỦ ĐỀ 3:PRINCIPLES OF DEADLOCK 12
TÀI LIỆU THAM KHẢO 18
Trang 8CHỦ ĐỀ 1 - LỊCH SỬ HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ VÀ MIỄN PHÍ
1.1 Lịch sử
- Những năm 1950, phần mềm thường đi kèm với mã nguồn Tuy nhiên các nhóm người dùng “Homebrew” lúc bấy giờ đã trao đổi chấp nhận đóng góp của các chương trình mã nguồn, thu thập và phân phối chúng cho các thành viên khác trong nhóm Năm 1970, hệ điều hành của Digital được phân phối dưới dạng mã nguồn mà không có hạn chế hoặc thông báo bản quyền
- Với mục đích để hạn chế việc sử dụng phần mềm của các công ty máy tính và phần mềm đối với các máy tính được ủy quyền và khách hàng trả tiền, họ đã cho phát hành mã nguồn mở có sẵn ở định dạng mã nguồn chứ không phải là mã nhị phân được biên dịch
=> Hệ điều hành mã nguồn mở ra đời
- Phần mềm miễn phí và phần mềm nguồn mở là hai ý tưởng khác nhau được các nhóm người khác nhau ủng hộ Phần mềm miễn phí không chỉ cung cấp mã nguồn
mà còn được cấp phép để cho phép sử dụng, phân phối lại và sửa đổi miễn phí Trong khi đó phần mềm nguồn mở không nhất thiết phải cung cấp giấy phép như vậy Do đó, mặc dù tất cả phần mềm miễn phí đều là mã nguồn mở, nhưng một số phần mềm mã nguồn mở không phải là “miễn phí”
- Đến năm 1980, phần mềm độc quyền là trở nên thông thường
Trang 9Hình ảnh các hệ điều hành mã nguồn mở được phát triển và giới thiệu hiện nay 1.2 Free Operating Systems
- Richard Stallman là người khởi xướng và bắt đầu phát triển một hệ điều hành miễn phí tương thích với UNIX được gọi là GNU vào năm 1984
- Với phong trào này người dùng được hưởng 4 quyền tự do:
Tự do chạy chương trình
Tự do nghiên cứu thay đổi mã nguồn
Tự do phân phối lại các bản sao
Tự do cải thiện chương trình
- Năm 1985, Stallman xuất bản Tuyên ngôn GNU, lập luận rằng tất cả phần mềm phải miễn phí Ông cũng thành lập Quỹ Phần mềm Tự do (FSF vt Free Software Foundation) với mục tiêu khuyến khích việc sử dụng và phát triển phần mềm miễn phí
- Giấy phép Công cộng GNU (GPL vt General Public License) là một giấy phép phổ biến theo đó phần mềm tự do được phát hànhđảm bảo cho người dùng cuối tự
do chạy, nghiên cứu, sửa đổi và chia sẻ phần mềm
Trang 10CHỦ ĐỀ 2 - REAL-TIME SCHEDULING
- Ba lớp lập lịch là:
SCHED_FIFO: luồng first in first out real time
SCHED_RR: luồng round robin real time
SCHED_OTHER: những luồng non real time
- Những lớp ưu tiên theo thời gian thực nằm trong phạm vi từ 0 đến 99.Lớp SCHED_OTHER trong khoảng từ 100 đến 139 Số thấp hơn tương đương mức ưu tiên cao hơn
2.1 SCHED_FIFO
- FIFO là từ viết tắt của first in, first out (nhập trước, xuất trước) là một phương pháp để tổ chức thao tác cấu trúc dữ liệu nơi cũ nhất (đầu tiên) mục nhập, hoặc
"đầu" của hàng đợi được xử lý đầu tiên Cụ thể khi 1 tiến trình được đưa vào hàng đợi ready thì bộ điều khiển tiến trình (PCB) sẽ đưa nó vào cuối hàng đợi, nó sẽ phải đợi các tiến trình phía trên thực thi xong thì mới đến lượt nó
- Hệ thống sẽ không gián đoạn 1 luồng thực thi FIFO trừ khi thuộc những trường hợp sau:
Luồng FIFO khác có độ ưu tiên cao hơn trở thành ready
Luồng thực thi FIFO bị chặn chờ đợi cho 1 event như nhập xuất Luồng thực thi FIFO tự nguyện bỏ tiến trình theo 1 lời gọi đến primitive (chiếm quyền ưu tiên) sched_yield
- Khi luồng FIFO đang thực thi bị gián đoạn, nó sẽ được đặt vào hàng đợi với mức độ ưu tiên của nó
Trang 11- Khi 1 luồng FIFO thực thi trở thành ready và nếu luồng đó có độ ưu tiên cao hơn luồng hiện tại thì luồng đang thực thi hiện tại sẽ bị chiếm quyền ưu tiên và luồng FIFO có độ ưu tiên cao nhất sẽ được thực thi Nếu nhiều hơn 1 luồng có độ
ưu tiên cao hơn, luồng mà đợi lâu nhất sẽ được chọn
- SCHED_FIFO chỉ có thể được sử dụng với các mức độ ưu tiên tĩnh cao hơn 0,
có nghĩa là khi một chuỗi SCHED_FIFO trở nên có thể chạy được, nó sẽ luôn chặn trước mọi chuỗi SCHED_OTHER, SCHED_BATCH hoặc SCHED_IDLE hiện đang chạy SCHED_FIFO là một thuật toán lập lịch đơn giản mà không cần cắt thời gian
VD: Cho 3 tiến trình P1 P2 P3 có thời điểm vào Ready List và thời gian xử lí như sau:
Nếu thứ tự thực hiện của các tiến trình lần lược là P1 P2 P3 thì ta biểu diễn được như sau:
Thời gian chờ cho P1 là 0s vì nó vừa vào thì được phục vụ ngay lập tức P2 phải đợi P1 thực thi xong tức thời gian chờ là 24s Tương tự thời gian chờ của P3 là 27s vậy thời gian chờ trung bình cho ví dụ trên là (0+24+27)/3 = 17s Tuy nhiên khi ta thử thay đổi thứ tự vào hàng đợi của 3 tiến trình P1 P2 P3 như hình sau:
Trang 12Lúc này thời gian chờ của P2 là 0s, P3 là 3s và P1 là 6s thì thời gian chờ trung bình
là (0+3+6)/3=3 Kết quả thời gian chờ giảm đi đáng kể
=> Yếu điểm lớn nhất của FIFO là khi các tiêns trình đầu tiên đi vào hàng đợi và được phục vụ có thời gian làm việc cao thì thời gian chờ trung bình tăng
2.2 SCHED_RR
- SCHED_RR là một cải tiến đơn giản của SCHED_FIFO Mọi thứ được mô tả ởtrên cho SCHED_FIFO cũng áp dụng cho SCHED_RR, ngoại trừ việc mỗi luồng chỉ được phép chạy trong một lượng tử thời gian tối đa Nếu một luồng
SCHED_RR đã chạy trong một khoảng thời gian bằng hoặc lâu hơn lượng tử thời gian, nó sẽ được đặt ở cuối danh sách để ưu tiên của nó
- Giả sử một quy trình có bốn luồng với ba mức độ ưu tiên tương đối được chỉ định như hình 10.10a
Trang 13- Hình 10.10b cho thấy một luồng trong đó tất cả các luồng thuộc lớp
SCHED_FIFO Luồng D thực thi cho đến khi nó đợi hoặc kết thúc Tiếp theo,mặc
dù luồng B và C có cùng mức độ ưu tiên, nhưng luồng B bắt đầu bởi vì nó đã được chờ lâu hơn luồng C Luồng B thực thi cho đến khi nó đợi hoặc kết thúc, sau đó luồng C thực thi cho đến khi nó đợi hoặc kết thúc Cuối cùng, luồng A thực thi
- Hình 10.10c cho thấy một luồng mẫu nếu tất cả các luồng nằm trong lớp SCHED_RR Luồng D thực thi cho đến khi nó đợi hoặc kết thúc Tiếp theo, B và C
là thời gian cắt lát, bởi vì cả hai đều có cùng một mức độ ưu tiên Cuối cùng, luồng
A thực thi
*Lưu ý:Sự khác biệt giữa SCHED_FIFO và SCHED_RR là giữa các tác vụ có cùng mức độ ưu tiên, SCHED_RR thực hiện lặp lại với một mốc thời gian nhất định Thay vào đó, SCHED_FIFO cần tác vụ để nhường bộ xử lý một cách rõ ràng
Trang 14CHỦ ĐỀ 3 - PRINCIPLES OF DEADLOCK
- Trong môi truờng đa chương, nhiều quá trình có thể cạnh tranh một số giới hạn tài nguyên Một quá trình yêu cầu tài nguyên, nếu tài nguyên không sẳn dùng tại thời điểm đó, quá trình đi vào trạng thái chờ Quá trình chờ có thể không bao giờ chuyển trạng thái trở lại vì tài nguyên chúng yêu cầu bị giữ bởi những quá trình đang chờ khác Trường hợp này được gọi là deadlock (khoá chết)
Ví dụ:
Trong hình trên cả hai tiến trình đều cần tài nguyên để tiếp tục thực thi P1 yêu cầu tài nguyên bổ sung R1 và sở hữu tài nguyên R2 , P2 yêu cầu tài nguyên bổ sung R2 và sở hữu R1 ; không quá trình nào có thể tiếp tục
- Deadlock là vĩnh viễn vì không có sự kiện nào được kích hoạt
- Tình huống bế tắc trên một tài nguyên có thể phát sinh khi và chỉ khi tất cả các điều kiện sau đây đồng thời tồn tại trong một hệ thống:
Loại trừ lẫn nhau : Ít nhất một tài nguyên phải được giữ ở chế độ không thể chia sẻ Nếu không, các quy trình sẽ không bị ngăn sử dụng tài nguyên khi cần thiết Chỉ một quy trình có thể sử dụng tài nguyên tại bất
kỳ thời điểm nào
Trang 15Giữ và chờ hoặc giữ tài nguyên : một quy trình hiện đang giữ ít nhất một tài nguyên và yêu cầu tài nguyên bổ sung đang được các quy trình khác nắm giữ
Không có quyền ưu tiên : một tài nguyên chỉ có thể được phát hành một cách tự nguyện bởi quá trình nắm giữ tài nguyên đó
Chờ theo vòng: mỗi tiến trình phải đợi một tài nguyên đang được giữ bởi một quy trình khác, đến lượt quy trình này lại chờ quy trình đầu tiên giải phóng tài nguyên
* Một ví dụ phổ biến là tắc nghẽn lưu lượng truy cập:
- Hình 6.1a cho thấy một tình huống trong đó bốn xe ô tô đến giao lộ dừng ở bốn chiều gần như cùng một lúc Bốn góc phần tư của giao lộ là tài nguyên cần kiểm soát Cụ thể, nếu cả 4 ô tô muốn đi thẳng qua giao lộ, các yêu cầu về nguồn lực như sau:
Xe 1 cần có góc phần tư a và b
Xe 2 cần các góc phần tư b và c
Xe 3 cần các góc phần tư c và d
Trang 16Xe 4 cần các góc phần tư d và a.
- Ví dụ: nếu chỉ có xe 2 ô tô 1 và 2 đến giao lộ, ô tô 1 sẽ đợi và ô tô bên phải của nó (ô tô 2) sẽ tiếp tục Tuy nhiên, nếu cả bốn chiếc xe đến cùng một lúc và cả bốn chiếc đều tuân theo quy tắc, mỗi chiếc sẽ không đi vào giao lộ
==> deadlock possible (các nguồn lực cần thiết luôn có sẵn cho bất kỳ chiếc xe nào có thể tiến hành)
- Tuy nhiên, nếu cả bốn ô tô bỏ qua các quy tắc và tiến vào giao lộ cùng một lúc (hình 6.1b), thì mỗi ô tô chiếm một tài nguyên (một góc phần tư) nhưng không thể tiếp tục vì tài nguyên thứ hai cần thiết đã bị ô tô khác chiếm đoạt
==> deadlock
* Một ví dụ khác về deadlock:
Trang 17Hình 6.2 (dựa trên một trong [BACO03]) biểu đồ tiến trình chung, minh họa tiến trình của hai quy trình cạnh tranh
- Trong Hình 6.2, trục x biểu thị tiến trình thực hiện P và trục y biểu thị tiến trình thực hiện Q
- Đối với hệ thống đơn xử lý, chỉ một quá trình tại một thời điểm có thể thực thi
và đường dẫn bao gồm các phân đoạn ngang và dọc xen kẽ Phân đoạn ngang đại diện cho một khoảng thời gian khi P thực thi và Q chờ đợi và hân đoạn dọc biểu thị một khoảng thời gian khi Q thực hiện và P chờ đợi
- Hình này chỉ ra các khu vực mà cả P và Q đều yêu cầu tài nguyên A (các đường xiên lên); cả P và Q đều yêu cầu tài nguyên B (các đường xiên xuống), và cả P và Q đều yêu cầu cả hai tài nguyên
- Mỗi quy trình cần sử dụng riêng cả hai tài nguyên trong một khoảng thời gian nhất định Hai quá trình P và Q có dạng tổng quát sau:
- Hình vẽ cho thấy sáu đường dẫn thực thi khác nhau Những điều này có thể được tóm tắt như sau:
1 Q có được B và sau đó là A và sau đó giải phóng B và A Khi P tiếp tục thực hiện, nó sẽ có thể có được cả hai tài nguyên
Trang 182 Q có được B và sau đó A P thực hiện và chặn theo yêu cầu cho A Q giải phóng B và A Khi P tiếp tục thực hiện, nó sẽ có thể lấy được cả hai tài nguyên
3 Q có được B và sau đó P có được A Deadlock là không thể tránh khỏi, bởi
vì khi quá trình thực hiện diễn ra, Q sẽ chặn trên A và P sẽ chặn trên B
4 P có được A và sau đó Q có được B Deadlock là không thể tránh khỏi, vì khi quá trình thực hiện diễn ra, Q sẽ chặn trên A và P sẽ chặn trên B
5 P có được A và sau đó B Q thực hiện và chặn theo một yêu cầu cho B P giải phóng A và B Khi Q tiếp tục thực hiện, nó sẽ có thể lấy được cả hai tài nguyên
6 P có được A và sau đó là B và sau đó giải phóng A và B Khi Q tiếp tục thực hiện, nó sẽ có thể thu được cả hai tài nguyên
- Vùng tô xám được gọi là vùng chết.Nếu một đường dẫn thực thi đi vào vùng chết này, thì deadlock là không thể tránh khỏi
- Lưu ý rằng sự tồn tại của một vùng chết phụ thuộc vào logic của hai quá trình
- Tuy nhiên, deadlock chỉ là không thể tránh khỏi nếu khớp tiến trình của hai quá trình tạo ra một con đường đi vào vùng chết.Việc deadlock có xảy ra hay không phụ thuộc vào cả động lực của việc thực thi và vào các chi tiết của ứng dụng
- Ví dụ, giả sử rằng P không cần cả hai tài nguyên cùng một lúc để hai quá trình
có dạng sau:
Trang 19- Tình huống này được phản ánh trong Hình 6.3 Một số suy nghĩ sẽ thuyết phục rằng với thời gian tương đối của hai quá trình, deadlock không thể xảy ra
- Như đã trình bày, sơ đồ tiến trình chung có thể được sử dụng để ghi lại lịch sử thực thi của hai quá trình chia sẻ tài nguyên Trong trường hợp có nhiều hơn hai quy trình có thể cạnh tranh cho cùng một tài nguyên, một sơ đồ có chiều cao hơn sẽ được yêu cầu Các nguyên tắc liên quan đến các vùng chết và bế tắc sẽ vẫn như cũ