Bài viết tham khảo cho Mô phỏng điều phối tiến trình với thuật toán SJF không độc quyền và độc quyền .Bên cạnh đó còn có phần thực hiện trong Winform và mô phỏng đồ họa các chiến lược điều phối tiến trình .
Trang 1LỜI NÓI ĐẦU
Hệ điều hành là một hệ thống vô cùng phức tạp , quá trình cập nhật
và sử lý thông tin diễn ra rất nhanh Các quá trình sử lý của CPU đều được thông qua các bộ điều phối , thế gới ngày càng hiện đại công nghệ ngày càng phát triển CPU ngày càng được nâng cấp mạnh mẽ về cô nghệ chế tạo Tuy nhiên CPU vẫn phải tuân theo những nguyên tắc xử lý nhất quán dựa trên các thuật toán xử lý tiến trình CPU từ chỗ đơn nhiệm (đơn chương) đã và đang được nâng cấp xử lý đa nhiệm , đa chương Ngoài ra CPU đần được nâng tầm về khả năng sử lý Hiệu xuất được nâng cao , tiết kiệm thời gian , tài nguyên
Điều phối tiến trình là một tập hợp chuỗi các thuật toán nhằm điều khiển hoạt động của CPU trong điều phối tiến trình
Với mục tiêu nhiên cứu về các thuật toán và mô phỏng các thuật toán trên nền tảng tubor C , C++ , C# , Dev – C Bên cạnh đó là tìm hiểu các nguyên tắc chung của điều phối tiến trình
Trang 2MỤC LỤC
1. LỜI NÓI ĐẦU ……… 01
2. NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪ……… 02
3. I LÝ DO , MỤC ĐÍCH & CƠ SỞ LÝ THUYẾT …….………… 03
1 : Khái niệm về hệ điều hành ……… 03
2 : Mục tiêu của đề tài ……… ……03
3 : Cơ sở lý thuyết ……… ……04
4 : Trạng thái lý thuyết của tiến trình……… 04
5 : Quy trình trạng thái của tiến trình ……….05
6 : Các chế độ xử lý tiến trình……… 06
4. II ĐIỀU PHỐI & MÔ PHỎNG ĐIỀU PHỐI TIỀN TRÌNH …… 09
1 : Cơ chế điều phối……… 09
2 :Ưu , nhược điểm các thuật toán điều phối ……… 09
2.2.1 : Thuật toán FCFS 2.2.2 : Thuật toán SJN 2.2.3 : Thuật toán Robin Round (RR) 2.2.4 : Thuật toán SRTF 3 : Khái niệm về mô phỏng ………10
4 : Thuật toán mô phỏng ………10
4.1 : Khái niệm 4.2 : Các thuật toán cơ bản 4.3 : Cài đặt công cụ mô phỏng 5 : Cài đặt thuật toán ……….
5.2 : Kết quả mô phỏng
Trang 3I : LÝ DO , MỤC TIÊU & CƠ SỞ LÝ THUYẾT CỦA ĐỀ TÀI
1.Lý do :
Hệ điều hành là một phần tất yếu trong xã hội hiện nay , nơi mà mọi thông tin đều được cập nhật và sử lý hằng ngày hằng giờ thậm chí hằng mili giây thông qua các hệ thống máy tính , hệ thống thông tin trên toàn thế giới.
Với chức năng phân phối và sử lý các nguồn tài nguyên hệ thống đã
và đang tạo ra những sự thuận tiện cho người dùng thông qua việc phân phối tài nguyên bộ nhớ , sử lý nhanh một cách nhanh chóng hiệu quả , bên cạnh đó việc tạo lập môi trường ảo giúp các hệ thống máy tính ngày càng hiện đại hơn thông minh hơn đã và đang góp phần không nhỏ cho cuộc sống con người
Hệ điều này chủ yếu quản lý các trang thái sử lý thông tin của CPU trong môi trường đa chương , đa nhiệm việc sử lý thông tin sẽ nảy sinh các trường hợp yêu cầu sử lý đồng thời Việc phân chia thời gian (time –sharing) là các thức chuyển đổi CPU một cách nhanh chóng qua các tiến trình giúp người sử dụng có thế sử lý song song nhiều chương trình giúp tiết kiệm thời gian, chi phí sử dụng giảm lãng phí tài
nguyên
Tuy nhiên để CPU hoạt động hiệu quả tránh hao phí tài nguyên , thời gian Hệ Điều Hành phải sử dụng các thuật toán để nhận diện các tiến trình sẽ được sử lý tiếp theo Bộ điều phối sẽ sử dụng một giải thuật điều phối thích hợp Đồng thời bộ điều phối sẽ chuyển đổi các ngữ cảnh và chuyển cho CPU tiến trình tiếp theo được chọn bởi bộ điều phối để sử lý
Vì việc điều phối tiến trình trong CPU là một quá trình phức tạp nhưng đặc biệt quan trọng do đó em lựa chọn đề tài :Mô phỏng thuật toán điều phối tiến trình trong hệ điều hành
2 Mục tiêu của đề tài
- Tìm hiểu các giải thuật : First – Come- First –Severed (FCSFS-
Trang 4Đến trước phục vụ trước ), Shortest Job Next (SJN – Công việc ngắn nhất phục vụ trước),Deadline Scheduling(Điều phối có thời hạn),Round Robin (Điều phối xoay vòng )
- Ưu , nhược điểm của các giải thuật điều phối tiến trình CPU
- Cài đặt và mô phỏng giải thuật điều phối tiến trình CPU
3 : Cơ sở lý thuyết
Trong việc điều phối tiến trình bộ điều phối không cung cấp cơ chế mặt khác bộ điều phối đưa ra quyết định Có rất nhiều hệ điều hành khác nhau với những chiến lược khác nhau nhằm thực hiện điều phối tiến trình trong CPU nhưng tất cả đều theo một bộ nguyên tắc chung bao gồm.
- Sự công bằng trong phân phối CPU tương ứng việc cấp phát CPU một cách đồng đều không có tiến trình nào được ưu tiên một cách tuyệt đối , không có tiến trình nào phải chờ quá lâu để được cấp phát CPU.
-Thời gian đáp ứng hợp lý : thời gian phản hồi đến người sử dụng là cực tiểu hay nói cách khác thời gian người sử dụng nhận được tiến trình đã sử lý là ngắn nhất
- Hiệu quả nhất : Sự dụng 100% thời gian của CPU
- Thời gian lưu lại trên hệ thống là nhỏ nhất : cực tiểu hóa thời gian hoàn tất xử lý trong CPU
- Năng lực tối đa : tăng khả năng sử lý nhiều tiến trình trong một khoảng thời gian
Đó là những những bộ nguyên tắc mà mọi hệ điều hành cần đạt đến tuy nhiên ngay cả thời điểm hiện nay việc sử lý cùng một lúc nhiều tiến trình đôi khi cũng dẫn đến hệ điều hành quá tải , việc nâng cấp hệ điều hành cũng đã dần dần mang lại những hiệu quả tích cực bất chấp việc đó đôi khi lại mâu thuẫn lẫn nhau.
4 Trạng thái lý thuyết của tiến trình
Quy trình quản lý tiến trình
Trong hệ điều hành quá trình điều phối tiến trình trong CPU và quá trình mà mọi tiến trình trong quá trình sử lý sẽ trải qua các giai đoạn sau
1. Tạo lập tiến trình
2. Running :chỉ thị tiến trình đang được sử lý
Trang 53. Blocked : tiến trình chờ cấp phát tài nguyên hoặc chờ dữ liệu hoàn thành
4. Ready : CPU sử lý tiến trình
5. Kết thúc : Hoàn thành việc sử lý
5 Quy trình các trạng thái tiến trình
Từ khi được đưa vào hệ thống cho đến khi kết thúc tiến trình tồn tại ở các trạng thái khác nhau Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó Tiến trình hai trạng thái: Một số ít hệ điều hành chỉ cho phép tiến trình tồn tại ở một trong hai trạng thái: Not Running và Running Khi hệ điều hành tạo ra một tiến trình mới, hệ điều hành đưa tiến trình đó vào hệ thống ở trạng thái Not
Running, tiến trình ở trạng thái này để chờ được chuyển sang trạng thái Running Vì một lý do nào đó, tiến trình đang thực hiện bị ngắt thì bộ điều phối tiến trình của hệ điều hành sẽ thu hồi lại processor của tiến trình này và chọn một tiến trình ở trạng thái Not running để cấp processor cho nó và chuyển nó sang trạng thái Running Tiến trình bị thu hồi processor sẽ được chuyển về lại trạng thái Not running.
Tại một thời điểm xác định chỉ có duy nhất một tiến trình ở trạng thái Runnig, nhưng có thể có nhiều tiến trình ở trạng thái Not running, các tiến trình ở trạng thái Not running được chứa trong một hàng đợi (Queue) Tiến trình đang ở trạng thái Running bị chuyển sang trạng thái Not running sẽ được đưa vào hàng đợi Hình vẽ sau đây mô tả việc chuyển trạng thái tiến trình trong các hệ điều hành sử dụng 2 trạng thái tiến trình.
Tiến trình ba trạng thái: Đa số hệ điều hành đều cho phép tiến trình tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked:
• Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa
tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình,
hệ điều hành đưa tiến trình vào trạng thái ready Hay nói cách khác, trạng thái
ready là trạng thái của một tiến trình trong hệ thống đang chờ được cấp processor
để bắt đầu thực hiện
• Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở
Trang 6hữu processor để hoạt động, hay nói cách khác là các chỉ thị của tiến trình đang được thực hiện/ xử lý bởi processor
• Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc
Quá trình chuyển trạng thái của các tiến trình trong được mô tả bởi sơ đồ sau:
Trong đó:
1 (Admit) Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor
2 (Dispatch) Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý
3 (Release) Tiến trình hoàn thành xử lý và kết thúc
4 (Time_out) Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác
5 (Event wait) Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng
6 (Event Occurs) Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,
Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau:
• Tiến trình đang thực hiện hết thời gian (time-out) được quyền sử dụng processor mà bộ phận điều phối dành cho nó
• Có một tiến trình mới phát sinh và tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại
• Có một tiến trình mới phát sinh và tiến trình này mới cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.
Tại một thời điểm xác định trong hệ thống có thể có nhiều tiến trình đang ở trạng thái Ready hoặc Blocked nhưng chỉ có một tiến trình ở trạng thái
Running Các tiến trình ở trạng thái Ready và Blocked được chứa trong các hàng đợi (Queue) riêng
Có nhiều lý do để một tiến trình đang ở trạng thái running chuyển sang trạng thái blocked, do đó đa số các hệ điều hành đều thiết kế một hệ thống hàng đợi
Trang 7gồm nhiều hàng đợi, mỗi hành đợi dùng để chứ những tiến trình đang đợi cùng một sự kiện nào đó.
6 Các chế độ sử lý
Trong việc điều phối tiến trình bộ điều phối không cung cấp cơ chế mặt khác
bộ điều phối đưa ra quyết định Có rất nhiều hệ điều hành khác nhau với những chiến lược khác nhau nhằm thực hiện điều phối tiến trình trong CPU nhưng tất cả đều theo một bộ nguyên tắc chung bao gồm.
- Sự công bằng trong phân phối CPU tương ứng việc cấp phát CPU một cách đồng đều không có tiến trình nào được ưu tiên một cách tuyệt đối , không có tiến trình nào phải chờ quá lâu để được cấp phát CPU.
-Thời gian đáp ứng hợp lý : thời gian phản hồi đến người sử dụng là cực tiểu hay nói cách khác thời gian người sử dụng nhận được tiến trình đã sử lý là ngắn nhất
- Hiệu quả nhất : Sự dụng 100% thời gian của CPU
- Thời gian lưu lại trên hệ thống là nhỏ nhất : cực tiểu hóa thời gian hoàn tất xử lý trong CPU
- Năng lực tối đa : tăng khả năng sử lý nhiều tiến trình trong một khoảng thời gian
Đó là những những bộ nguyên tắc mà mọi hệ điều hành cần đạt đến tuy nhiên ngay cả thời điểm hiện nay việc sử lý cùng một lúc nhiều tiến trình đôi khi cũng dẫn đến hệ điều hành quá tải , việc nâng cấp hệ điều hành cũng đã dần dần mang lại những hiệu quả tích cực bất chấp việc đó đôi khi lại mâu thuẫn lẫn nhau.
Tuy nhiên trong hệ điều hành thì có những sự ưu tiên riêng biệt nhằm bảo đảm an toàn cho hệ điều hành cũng như những sai sót trong quá trình sử lý
Do vậy Hệ điều hành sử dụng chế độ : Đặc quyền và Không đặc quyền , khi đó người sử dụng sẽ được sử lý thông tin với chế độ không đặc quyền , sau khi CPU hoàn tất tiến trình thì thông tin sử lý sẽ được chuyển qua cho người dùng bằng chế độ không đặc quyền điều đó giúp hệ thống được bảo đảm an toàn trước những sai sót do người dùng có thể tạo ra Ta có thể thấy rõ sự khác nhau từng bước của quá trình điều phối như sau :
- Điều phối độc quyền: Nguyên lý điều phối độc quyền cho phép một tiến trình khi nhận được CPU sẽ có quyền đọc chiếm CPU.Khi đó quyết định điều phối CPU sẽ xảy ra trong các tình huống sau:
Trang 8+Khi tiến trình chuyển từ trạng thái đang xử lý(running) sang trạng thái bị blocked (ví dụ chờ một thao tác nhập xuất hay chờ một tiến trình con kết thúc ).
+Khi tiến trình kết thúc.
Các giải thuật đọc quyền thường đơn giản và đẽ cài đặt.Tuy nhiên chúng thường không thích hợp với các hệ thống tổng quát nhiều người dùng, vì nếu cho phép một tiến trình có quyền xử lý bao lâu tùy ý, có nghĩa là tiến trình này
đã giữ CPU một thời gian không xác định,có thể ngăn cản những tiến trinh còn lại trong hệ thống cosmoojy cơ hội để xử lý.
- Điều phối không độc quyền: Ngược với nguyên lý đọc quyền,điều phối theo nguyên lý không dọc quyền cho phéo tạm dừng hoạt động của một tiến trình sẵn sàng xử lý.Khi một tiến trình nhận được một CPU,nó vẫn được sử dụng CPU đén khi hoàn tất hoặc tự nguyện giải phóng CPU,nhưng khi có một tiến trình khác có độ ưu tiên có thể dành quyền sử dụng CPU của tiến trình ban đầu.Như vậy là tiến trình có thể bị tạm dừng hoạt động bất cứ lúc nào mà không được thông báo trước,để tiến trình khác xử lý.Cadc quyết định điều phối xảy ra khi:
+ Khi tiến trình chuyể từ trạng thái đang xử lý(running) sang trạng thái bị khóa blocked
+ Khi tiến trình chuyển từ trạng thái đang xử lý(running) sang trạng thái ready(vì xảy ra một ngắt)
+ KHi tiến trình chuyển từ trạng thái chờ (bloked) sang trạng thái ready(ví dụng một thao tác nhập xuất hoàn tất).
+ Khi tiến trình kết thúc.
Trong các hệ thống sử dụng nguyên lý điều phối độc quyền có thể xảy ra tình trạng các tác vụ cần thời gian xử lý ngắn phải chờ tác vụ xử lý vơi thời gian rất dài hoàn tất! Nguyên lý điều phối đọc quyền chỉ thích hớp với các hệ xử lý theo lô.
Đối với các hệ thống tương tác (time sharing),các hệ thời gian thực(real time),cần phải sử dụng nguyên lts điều phối độc quyền để các trình quan trọng có cơ hội hồi đáp kịp thời.Tuy nhiên thực hiện điều phối theo nguyên lý không độc quyền đòi hỏi những cơ chế phức tạp trong việc phân định độ ưu
Trang 9tiên,và phát sinh thêm chi phí khi chuyển đổi CPU qua lịa giữa các tiến trình.
II ĐIỀU PHỐI &MÔ PHỎNG ĐIỀU PHỐI TIẾN TRÌNH
1 Cơ chế điều phối
Trong HĐH đa chương , đa nhiệm việc phân phối hợp lý tài nguyên bộ nhớ & điều phối tiến trình sử lý thông tin hết sức quan trọng nhằm tăng dần hiệu suất sử lý của CPU và cả hệ thống HĐH sử dụng đến bộ điều phối tiến trình khi đó một tiến trình đang được thực thi mà mất quyền sử dung CPU (chuyển trang thái sẵn sàng hoặc phong tỏa) thì ngay lập tức tiến trình khác sẽ được cấp phát CPU để được sử lý Bên cạnh đó việc lưu lại ngữ cảnh của tiến trình giúp HĐH thu hẹp thời gian LOAD tiến trình lên các thanh ghi giúp dữ liệu mau chóng được sử lý bảo đảm thời gian thực cho HĐH
2 Ưu nhược điểm các thuật toán điều phối
2.1 Đến trước phục vụ trước (FCFS)
Trong thuật toán FCFS, độ ưu tiên của tiến trình sẽ được quyết định bởi thời điểm trương trình được đưa vào hàng đợi, nói cách khác các tiến trình sẽ được sử lý một các tuần tự theo thứ tự trước sau có nghĩa là tiến trình nào đến trước được sử lý trước và khi sử lý xong thì
sẽ chuyển sang tiến trình tiếp theo
* Ưu điểm :
- Thao tác đơn giản
- Giờ của CPU không bị phân phối lại , chi phí tổ chức thực hiện thấp nhất
Trang 10các tiến trình thì thời
gian chờ đợi cũng tăng theo.
2.2 Ngắn nhất phục vụ trước (SJN)
Là hình thức sử lý tiến trình thông qua việc tính toán thời gian đòi hỏi
để CPU sử lý trong suốt quá trình, với mục đích cự tiểu hóa thời gian chờ đợi trung bình , tăng hiệu suất sử lý của CPU cũng như toàn hệ thống.
* Ưu điểm :
- So với FCFS, SJN là giảm tối đa thời gian chờ đợi trung bình
- Nhanh chóng sử lý và loại bỏ các tiến trình ngắn giải phóng số lượng các tiền trình trong hàng đợi
* Nhược điểm :
- SJN sẽ làm giảm số phần tử trong hàng đợi , dẫn đến khi các phần tử khác thêm vào sẽ nảy sinh việc phân phối lại dẫn đến các tiến trình dài sẽ có xu thế bị đẩy về sau chờ sử lý
2.3 Thuật toán Robin Round
* Ưu điểm : Được thiết kế để áp dụng cho các hệ phân chia thời gian (time-sharing) z RR hoạt động theo chế độ preemptive z Tham số lượng tử thời gian (time quantum) tquantum: Mỗi tiến trình được sử dụng CPU trong nhiều nhất bằng tquantum, sau đó đến lượt tiến trình khác.
* Nhược điểm : Hiệu quả của RR phụ thuộc độ lớn của tquantum
z Nếu tquantum nhỏ thì hiệu quả của RR giảm vì bộ điều phối phải thực hiện nhiều thao tác chuyển trạng thái, lãng phí thời gian CPU z Nếu tquantum lớn thì số thao tác chuyển trạng thái giảm đi z Nếu
tquantum rất nhỏ (ví dụ 1ms) thì RR được gọi là processor sharing
3 : Khái niệm mô phỏng điều phối tiến trình
Khái niệm : Mô phỏng là việc áp dụng một mô hình nào đó để tạo ra kết quả ,chứ không có nghĩa là thử nghiệm một hệt thống nào đó đang cần nhiên cứu
Công cụ : Trước tiên ta phải xác đinh nguồn mô phỏng , qua đó chọn công cụ cho hợp lí
Ngôn ngữ mô phỏng : trong điều phối tiến trình ngôn ngữ mô phỏng thường
là C+, C++ hay C#
4 : Thuật toán mô phỏng
Trang 114.1 Khái niệm
Là thuật toán dựa trên nền tảng các ngôn ngữ lập trình , nhằm tạo ra môi trường ảo để máy tính mô phỏng lại quá trình xử
lý thông tin cũng như quá trình làm việc
4.2: Thuật toán mô phỏng SJN
Sử dụng phần mềm Code block với ngôn ngữ C# , nhằm tạo ra các phần mô phỏng trên môi trường MS.DOS Code block có khả năng dịch ngôn ngữ lập trình giúp giảm thời gian cũng như bảo đảm khả năng chạy chương trình
4.3 : Cài đặt công cụ mô phỏng
• 3 Có thể chọn bất cứ compiler để biên dịch source, mặc định là gcc.
• 4 Hỗ trợ format source code rất tiện lợi cho việc copy code từ các site khác về, và chỉnh sữa lại.
* Cài đặt