1. Trang chủ
  2. » Luận Văn - Báo Cáo

lịch sử hệ điều hành mã nguồn mở và miễn phí real time scheduling principles of deadlock

20 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lịch sử hệ điều hành mã nguồn mở và miễn phí, Real-time Scheduling, Principles of Deadlock
Tác giả Nguyễn Ngọc Hương Giang
Người hướng dẫn Trần Trung Tín
Trường học Trường Đại học Tôn Đức Thắng
Chuyên ngành Công nghệ thông tin
Thể loại Tiểu luận giữa kì
Năm xuất bản 2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 2,25 MB

Nội dung

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 1

TIỂ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 2

TIỂ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 3

LỜ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 4

TIỂ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 5

PHẦ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 6

TÓ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 7

MỤ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 8

CHỦ ĐỀ 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 9

Hì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 10

CHỦ ĐỀ 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 12

Lú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 14

CHỦ ĐỀ 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 15

Giữ 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 16

Xe 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 17

Hì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 18

2 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ũ

Ngày đăng: 08/05/2024, 16:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w