ĐỒ ÁN NGUYÊN LÝ HỆ ĐIỀU HÀNH
Trang 1LỜI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 2
MỤC LỤC
CHƯƠNG 1 TÌM HIỂU ĐỀ TÀI -4
1.1 Bối cảnh đề tài: -4
1.2 Mục tiêu đề tài -5
1.3 Hướng giải quyết -5
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT -5
2.1 Tìm hiểu về hệ điều hành -5
2.1.1 Định nghĩa hệ điều hành -5
2.1.2 Chức năng hệ điều hành -6
2.2 Giới thiệu về tiến trình -6
2.2.1 Tiến trình là gì? -6
2.2.2 Quan hệ tiến trình. -9
2.2.3 Các trạng thái tiến trình -10
2.2.4 Chế độ xử lý của tiến trình -12
2.2.5 Các thao tác điều khiển tiến trình -12
2.2.6 Điều phối tiến trình -14
CHƯƠNG 3 THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH -21
3.1 Phân tích yêu cầu -21
3.2 Các chức năng -22
3.2.1 Cài đặt thuật toán -22
3.2.2 Phân tích đề: -22
3.2.3 Mô tả bài toán. -22
CHƯƠNG 4 TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ -52
4.1 Môi trường triển khai: -52
4.2 Kết quả và chức năng của chương trình -53
4.3 Đánh giá kết quả. -57
Trang 3DANH SÁCH HÌNH ẢNH
Hình 1:Mô phỏng tiến trình song song độc lập -8
Hình 2 Mô phổng tiến song song có quan hệ thông tin -8
Hình 3: Mô phỏng tiến trình song song phân cấp -9
Hình 4 : Mô phỏng tiến trình song song đồng mức -9
Hình 5 : Các trạng thái của một tiến trình -10
Hình 6: Sơ đồ trạng của thái tiến trình -11
Hình 7 : Một cây tiến trình trong UNIX -13
Hình 8 : Danh sách chờ của các tiến trình trong hệ thống. -16
Hình 9: Sơ đồ chuyển đổi giữa các danh sách điều phối -17
Hình 10: Cấp độ điều phối -18
Hình 11: kết quả thuật toán FIFO. -53
Hình 12: Hiển thị các tiến trình vào. -53
Hình 13 : Quá trình xử lý. -54
Hình 14 : Kết quả. -54
Hình 15 : Kết quả thuật toán SJF. -55
Hình 16 : Kết quả thuật toán SJF độc quyền -55
Hình 17 : Kết quả thuật toán ưu tiên. -56
Hình 18 : Kết quả thuật toán ưu tiên độc quyền -56
Trang 4LỜI NÓI ĐẦU
Nguyên lý hệ điều hành là môn học quan trọng và cần thiết.Giúp người học hiểu
về hệ điều hành của máy tính,hiểu cơ chế xử lý của các tiến trình đưa vào hệ điều hànhcủa một máy tính điện tử bất kì Quá trình xử lý của các tiến trong CPU là quá trìnhquan trọng,ảnh hưởng đến tốc độ,thời gian xử lý và công việc thường ngày trên máytính.Vậy thiết nghĩ tiến trình và quan hệ giữa các tiến trình,cách điều phối tiến trình làquan trọng.Đặc biệt hiện nay một máy tính một lúc không phải đợi tiến trình này xử lý
mà một lúc có thể xử lý nhiều tiến trình.Hiện nay em đang nhận được đề tài mô phỏng
về chiến lược một hàng đợi nhiều tiến trình chờ phân phối xử lý.Trong chiến lược mộthàng đợi này có 4 thuật toán chính FIFO,SJF,RR,thuật toán ƯU TIÊN.Sau khi tìm hiểu
về đề tài này giúp em hiểu thêm vể các cơ chế điều phối tiến trình trong CPU,và cơ chế
xử lý các tiến trình
Em xin chân thành cám ơn thầy giáo Mai Văn Hà đả tận tình hướng dẫn,chỉ bảoem,để em có thể hoàn thành đồ án một cách tốt nhất
Trang 5TÌM HIỂU ĐỀ TÀI
1.1 Bối cảnh đề tài:
Trước đây tuỳ từng thời điểm, máy tính được xác định một nhiệm vụ chính; tất cảcác chương trình được bó lại thành gói (paket) và được gởi đi liên tục Điều đó được gọi
là xử lý đóng gói (pile processing) hay quản lý lô (batch manager) Ngày nay, không chỉ
có một chương trình chạy trên máy tính, mà nhiều chương trình cùng thực hiện tasking) Cũng như thế, không chỉ có một người sử dụng làm việc, mà nhiều người sửdụng cùng làm việc (multi- user) Để hạn chế sự tranh chấp giữa chúng ở việc dùng máytính, do đó sự phân bổ các phương tiện điều hành phải được điều chỉnh trên chươngtrình
(multi-Thêm vào đó, chương trình phải được lưu trữ khi cần thiết sử dụng phương tiện điềuhành nào: không gian nhớ, thế hệ CPU, dùng lượng CPU… Từ đó ta hiểu, tiến trình làthông tin trạng thái của các phương tiện điều hành đối với một chương trình (thường gọi
là một Job)
Một tiến trình này có thể sinh ra một tiến trình khác, khi đó người ta gọi tiến trình đầu
là tiến trình cha, còn tiến trình được sinh ra là tiến trình con
Cùng một lúc có thể có nhiều tiến trình được nhập vào hệ thống,lúc này cần phải có cơchế để cac tiến trình thực hiện theo thứ tự
Một hệ thống đa chương trình (multi-programming system) cho phép thực hiện đồngthời nhiều chương trình và nhiều tiến trình Một chương trình (gọi là một job ) cũng cóthể tự phát sinh ra nhiều tiến trình
1.2 Mục tiêu đề tài
Hiểu rỏ về tiến trình đặc biệt chiến lược một hàng đợi nhiều tiến trình chờ phânphối xử lý.Xem cơ chế thuộc loại tiến trình nào và tìm hiểu về trạng thái của các cơ chế
1 hàng đợi và cơ chế điều phối.Cách quản lí tiến trình một hàng đợi
1.3 Hướng giải quyết
Tìm hiểu rỏ về tiến trình:Tiến trình các loại tiến trìnhmô hình tiếntrìnhcách thực hiện mô hìnhquản lý tiến trìnhcở ché điều phối một hàng đợi cáctiến trình
Ngôn ngữ sử dụng:
Sữ dụng ngôn ngữ lập trình C++
Trang 6CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Tìm hiểu về hệ điều hành
2.1.1 Định nghĩa hệ điều hành
Hệ điều hành (HĐH) là một phần quan trọng của mỗi hệ thống thông tin Mõi hệthống thông tin gồm 4 thành phần quan trọng: Phần cứng, hệ điều hành, chương trìnhứng dụng và người sử dụng
Phần cứng: Gồm CPU, bộ nhớ, thiết bị vào ra cung cấp các tài nguyên thông tin cơsở
Các chương trình ứng dụng: Gồm chương trình dịch, hệ thống cơ sở dữ liệu, trìnhsoạn thảo văn bản,… quy định cách sử dụng các tài nguyên đó để giả quyết những vấn
đề của người sử dụng
Hệ điều hành: Điều khiển và đồng bộ việc sử dụng phần cứng của các chương trìnhứng dụng phục vụ các người sử dụng khác nhau với các mục đích phong phú đa dạng.Người sử dụng: Hiểu theo nghĩa rộng bao gồm những người sử dụng thuần tuý vàcác cán bộ vận hành đặc biệt đối với các máy trung và các máy lớn
Ta có thể hiểu hệ điều hành là hệ thống các chương trình đảm bảo các chức năng giao tiếp người máy và và quản lý tài nguyên hệ thống tính toán.
Tuy nhiên có nhiều người quan sát HĐH dưới các góc độ khác nhau vì thế tồn tại nhiềuđịnh nghĩa về HĐH
Đối với người sử dụng : HĐH là tập hợp các chương trình, phục vụ khai thác hệthống tính toán một cách dễ dàng, thuận tiện
Người sử dụng khi thực hiện một chương trình nào đó trên máy tính thì chỉ quan tâmđến việc hệ thống có đáp ứng được nhu cầu của hộ hay không? Họ không quan tâm đếnviệc hệ điều hành làm như thế nào, nhằm mục đích gì, có cấu trúc như thế nào?
Đối với người làm công tác quản lý: HĐH là một tập các chương trình phục vụquản lý chặt chẽ và sử dụng tối ưu các tài nguyên của hệ thống
Đối với cán bộ kỹ thuật: HĐH là hệ thống chương trình bao trùm lên một máy tínhvật lý cụ thể để tạo ra một máy logic với những tài nguyên mới và khả năng mới
2.1.2 Chức năng hệ điều hành
Hệ điều hành là một chương trình đóng vai trò trung gian trong việc giao tiếp giữangười sử dụng và phần cứng của máy tính Mục tiêu của hệ điều hành là cung cấp mộtmôi trường cho phép người sử dụng phát triển và thực hiện các ứng dụng của họ mộtcách dễ dàng và hiệu quả Theo nguyên tắc, một hệ điều hành cần thoả mãn hai chứcnăng sau:
Quản lý, chia sẻ tài nguyên
Tài nguyên hệ thống, đặc biệt các tài nguyên phầ cứng như CPU, bộ nhớ, thiết bịngoại vi, hệ điều hành cần có các cơ chế và chiến lược thích hợp để quản lý việc phânphối tài nguyên
Trang 7 Giả lập một máy tính.
Chức năng thứ hai của hệ điều hành là che dấu các chi tiết phần cứng của máy tính
và giới thiệu với người dùng một máy tính mở rộng có đầy đủ các chức năng của máytính
Với đề tài Viết chương trình mô phỏng các giải thuật định thời trình bày về quátrình hoạt động của các tiến trình trong CPU, các trạng thái của hệ thống tính toán vàviệc chuyển từ trạng thái này sang trạng thái khác được thực hiện theo một chương trìnhnào đó
Đã có nhiều chương trình nghiên cứu đề tài này và ứng dụng trong cuộc sống và nó
có những ưu và khuyết điểm cố định:
Ưu điểm :
Đã đưa ra được cách xử lý của các tiến trình
Chương trình đơn giản
Khuyết điểm :
Chưa nêu rõ việc tập hợp điều phối giữa các tiến trình
Hướng nghiên cứu giới thiệu
2.2 Giới thiệu về tiến trình
Để hổ trợ hoạt động đa nhiệm,hệ thống máy tính cần phải có khả năng thực hiệnnhiều tác vụ xử lý đồng thời nhưng việc điều khiển hoạt động song hành ở cấp độ phầncứng là rất khó khăn.Vì vậy,các nhà thiết kế hệ điều hành đề xuất một mô hình songhành giả lập bằng cách chuyển đổi bộ xử lý qua lại giữa các chương trình để duy trì hoạtđộng của nhiều chương trình phải cùng một thời điểm.Trong mô hình này các chươngtrình của hệ thống được tổ chức thành các tiến trình(process)
Như vậy cá thể coi tiến trình là một chương trình đang xử lý,nó sử dụng một contrỏ lệnh,tập các thanh ghi và các biến.Để hoàn thành nhiệm vụ của mình,các tiến trìnhcòn có thể yêu cầu một số tài nguyên hệ thống như: CPU,bộ nhớ và các thiết bị
Chúng ta cần phân biệt rỏ tiến trình và chương trình.Chương trình là một thực thểthụ động chưa các chỉ thị điều khiển máy tính thi hành một tác vụ cụ thể nào đó.Khithực hiện các chỉ thị này ,chương trình được chuyển thành các tiến trình là một thực thểhoạt động,với con trỏ lệnh xác định kèm them tài nguyên phục vụ cho hoạt động
Trang 8Vậy tóm lại ,tiến trình là một bộ phận của một chương trình đang thực hiện, đơn vịthực hiện tiến trình là processer.
Hay có thể nói cách khác :
Saltzer: Tiến trình là một chương trình do một processor logic thực hiện
Horning & Rendell: Tiến trình là một quá trình chuyển từ trạng thái này sang trạng tháikhác dưới tác động của hàm hành động, xuất phát từ một trạng thái ban đầu nào đó
Tiến trình song song độc lập:
Các tiến trình hoạt động song song nhưng không có quan hệ thông tin với nhau, trongtrường hợp này hệ điều hành phải thiết lập cơ chế bảo vệ dữ liệu của các tiến trình, vàcấp phát tài nguyên cho các tiến trình một cách hợp lý
Hình 1:Mô phỏng tiến trình song song độc lập
Tiến trình song song có quan hệ thông tin :
Trong quá trình hoạt động các tiến trình trao đổi thông tin với nhau.Hai tiến trình A
và B được gọi là có quan hệ thông tin với nhau nếu tiến trình này có gửi thông báo chotiến trình kia Tiến trình gửi thông báo có thể không cần biết tiến trình nhận có tồn tại haykhông? ở đâu? và đang ở giai đoạn nào?
Trang 9Hình 2 Mô phổng tiến song song có quan hệ thông tin
Tiến trình song song phấn cấp :
Trong qua trình hoạt động một tiến trình có thể khởi tạo các tiến trình khác hoạtđộng song song với nó, tiến trình khởi tạo được gọi là tiến trình cha, tiến trình được tạogọi là tiến trình con
Trong mô hình này hệ điều hành phải giải quyết vấn đề cấp phát tài nguyên cho các tiếntrình con Tiến trình con nhận tài nguyên ở đâu? từ tiến trình cha hay từ hệ thống
Ví dụ:
Hình 3: Mô phỏng tiến trình song song phân cấp
Tiến trình song song đồng mức:
Là các tiến trình hoạt động song song sử dụng chung tài nguyên theo nguyên tắc lầnlượt, mỗi tiến trình sau một khoảng thời gian chiếm giữ tài nguyên phải tự động trả lạitài nguyên cho tiến trình kia
Trang 10Hình 4 : Mô phỏng tiến trình song song đồng mức 2.2.2 Quan hệ tiến trình
Các tiến trình hoạt động trong hệ thống tồn tại hai mối quan hệ : Độc lập và hợp tác(song hành)
Quan hệ độc lập:
Tiến trình được gọi là độc lập nếu hoạt động cả nó không gây ảnh hưởng hoặckhông bị ảnh hưởng bởi các tiến trình khác củng đàn hoạt động của hệ thống.Tiến trìnhđộc lập có những đặc trưng sau:
Trạng thái của nó không bị chia sẻ với bất kí tiến trình nào khác
Việc thực hiện tiến trình là đơn định(kết quả chỉ phụ thuộc vào đầu vào)
Tiến trình có thể dừng hoặc bắt đầu lại mà không gây ảnh hưởng tới các tiến trìnhkhác trong hệ thống
Quan hệ hợp tác :
Tiến trình được gọi là quan hệ hợp tác(song hành) nếu hoạt động của nó gây ảnhhưởng đến các tiến trình khac củng đang hoạt động trong hệ thống.Tiến trình hợp tác cónhững đặc trưng sau:
Trạng thái của nó bị chia sẻ cho các tiến trình khác
Việc thực hiện tiến trình không đơn định (kết quả phụ thuộc dãy thực hiện tươngứng và không dự báo trước)
Tiến trình không thể tái hiện
Tại một thời điểm một tiến trình có thể nhận một trong các trạng thái sau đây:
Trang 11 Mới tạo(new): tiến trình đang được tạo lập
Running: các chỉ thị của tiến trình đang được xử lý
Blocked: tiến trình chờ được cấp phát tài nguyên,hay chờ một sự kiện xảy ra
Ready(ready): tiến trình chờ được cấp phát CPU để xử lý
Waiting (đợi):tiến trình phải dừng vì thiếu tài nguyên hoặc chờ một sự kiện nào đó
Kết thúc(halt) : tiến trình hoàn tất xử lý
Các trạng thái của tiến trình được biểu diễn qua sơ đồ sau:
Hình 5 : Các trạng thái của một tiến trình
Tại một thời điểm chỉ có một tiến trình có thể nhận trạng thái running trên một bộ
xử lý bất kỳ.Trong khi đó,nhiều tiến trình có thể ở trạng thái blocked hay ready
Các cung chuyển tiếp trong sơ đồ trạng thái biểu diễn 6 sự chuyển trạng thái có thểxảy ra trong các điều kiện sau:
Tiến trình mới tạo được đưa vào hệ thống
Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU
Tiến trình kết thúc
Tiến trình yêu cầu một tài nguyên chưa được đáp ứng vì tài nguyên chưa được sẵn sàng để cấp phát tại thời điểm đó,hoặc tiến trình phải chờ một sự kiện hay thao tác nhập xuất
Bộ điều phối chọn một tiến trình khác để chờ xử lý
Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát,hay sự kiện thao tác nhập xuất tiến trình đang đợi hoàn tất
Theo thời gian hoạt động tiến trình sẻ thay đổi trạng thái.Có 2 cấp độ trạng thái là:Trạng thái vĩ mô: do hệ điều hành đặt ra để quản lý process
Trạng thái vi mô:trạng thái chi tiết sau từng lệnh máy được thực thi
Trạng thái vĩ mô bao gồm: running (đang chiếm CPU và chạy),ready ( đangchờ CPU ),blocked( bị giam vì chờ CPU)
Sơ đồ trạng thái :
Trang 12Hình 6: Sơ đồ trạng của thái tiến trình
1 Thực hiện CPU tốc độ chậm
2.Chạy hết khe thời gian
3.Được chọn để chạy khe thời gian kế
4.I/O sẵn sàng phục vụ
Trạng thái vi mô của tiến trình:
Để quản lý trạng thái của từng process, HĐH sẽ dùng 1 record dữ liệu gồm nhiềufield, mỗi field chứa 1 thông tin trạng thái mà HĐH muốn quản lý
Một field đặc biệt trong record quản lý là field chứa mã trạng thái vĩ mô của processtương ứng để HĐH biết process đang chạy hay đang Ready | Blocked
Các record quản lý của các process sẽ được hợp thành 1 bảng quản lý : bảng này rấtquan trọng của HĐH
Bảng quản lý trạng thái thường được hiện thực bằng danh sách liên kết để việcthêm/bớt từng record dễ dàng và hiệu quả (vì tần suất tạo/xóa process rất cao theo thờigian)
2.2.4 Chế độ xử lý của tiến trình
Để đảm bảo hệ thống hoạt động đúng đắn,hệ điều hành cần bảo vệ khỏi sự xâm phạmcủa các tiến trình.Bản thâm các tiến trình cần được bảo vệ tránh khỏi sự ảnh hưởng qualại giữa các tiến trình.Một cách để phân biệt đó là sử dụng 2 chế độ xử lý cho các tiến
trình: chế độ xử lý đọc quyền và chế độ xử lý không đọc quyền nhờ vào sự hổ trợ của
Trang 13 Các công việc hệ điều hành cần thực hiện khi tạo lập tiến trình:
Định danh cho tiến trinh mới phát sinh
Đưa tiến trình vào dánh sách quản lý của hệ thống
Xác định độ ưu tiên cho tiến trình
Tạo PCB cho tiến trình
Cấp phát tài nguyên ban đầu cho tiến trình
Khi một tiến trình tạo lập một tiến trình con,tiến trình con có thể sẽ được hệ điềuhành trực tiếp cấp phát tài nguyên hoặc được tiến trình cha cho thừa hưởng một sốtài nguyên ban đầu
Khi một tiến trình tạo tiến trình mới ,tiến trình ban đầu có thể xử lý theo một tronghai khả năng sau:
Tiến trình cho tiếp tục xử lý đồng hành với tiến trình con
Tiến trình cha chờ đến khi một tiến trình con nào đó hoặc tất cả các tiến trình con
có kết thúc xử lý
Các hệ điều hành khác nhau có thể lựa chọn các cài đặt khác nhau để thực hiện một thao tác lập trình một cây tiến trình
Ví dụ về tạo lập cây tiến trình:
Hình 7 : Một cây tiến trình trong UNIX 2.2.5.2 Kết thúc tiến trình
Một tiến trình kết thúc xử lý khi nó hoàn tất chỉ thị cuối cùng và sử dụng một lời gọi
hệ thống để yêu cầu hệ điều hành hủy bỏ nó.Đôi khi một tiến trình có thể yêu càu hệđiều hành kết thúc xử lý của một tiến trình khác
Khi một tiến trình kết thúc,hệ điều hành thực hiện các công việc :
Thu hồi các tài nguyên của hệ thống đả cấp phát cho tiến trình
Hủy tiến trình khỏi tất cả các danh sách quản lý của hệ thống
Hủy bỏ PCB của tiên trình
Trang 14Hầu hết các hệ điều hành không cho phép các tiến trình con tiếp tục tồn tại nếu tiếntrình cha đả kết thúc.Trong những hệ thống như thế,hệ điều hành sẽ tự động phát sinhmột loạt các thao tác kết thúc tiến trình con.
Một quá trình cha có thể kết thúc việc thực thi của một trong những quá trình convới nhiều ý do khác nhau:
Quá trình con sử dụng tài nguyên vượt quá mức được cấp Điều này yêu cầuquá trình cha có một cơ chế để xem xét trạng thái của các quá trình con
Công việc được gán tới quá trình con không còn cần thiết nữa
Quá trình cha đang kết thúc và hệ điều hành không cho phép một quá trình contiếp tục nếu quá trình cha kết thúc Trên những hệ thống như thế, nếu một quátrình kết thúc (bình thường hoặc không bình thường), thì tất cả quá trình concũng phải kết thúc Trường hợp này được xem như kết thúc xếp tầng(cascading termination) thường được khởi tạo bởi hệ điều hành
2.2.6 Điều phối tiến trình
Tuy nhiên thường không thể thỏa mãn tất cả các mục tiêu kể trên vì bản thân chúng có
sự mâu thuẩn nhau mà chỉ có thể dung hòa chúng ở mức độ nào đó
Các đặc điểm của tiến trình:
Điều phối hoạt động của các tiến trình là một vấn đề rát phức tạp,đòi hỏi hệ điềuhành khi giải quyết phải xem xét các yếu tố khác nhau để có thể đạt được mục tiêu đềra.Một số đặc tính cần được quan tâm như tiêu chuẩn điều phối:
Tính hướng nhập xuất của tiến trình:khi một tiến trình nhận được CPU,chủ yếu nóchỉ sử dụng CPU cho đến khi phát sinh một yêu cầu nhập xuất.Hoạt động của các tiếntrình như thế thường bao gốm nhiều lượt sử dụng CPU,mỗi lượt trong một thời gian khángắn
Tính hướng xử lý của tiến trình: khi một tiên trình nhận dược CPU,nó có khuynhhướng sử dụng CPU đến khi hết thời gian dành cho nó.Hoạt động của tiến trình như thếthường bao gồm một số ít lượt sử dụng CPU,nhưng mỗi lượt trong một thời gian đủ dài
Trang 15Tiến trình tương tác hay xử lý theo lô: người sử dungjtheo kiểu tương tác thườngyêu cầu được hồi đáp tức thời đối với các yêu cầu của họ,trong khi các tiesn trình củatác vụ được xử lý theo lô nói chungcos thể trì hoãn trong một thời gian chấp nhận được.
Độ ưu tiên của tiến trình: Các tiến trình có thể được phân cấp theo một đánh giá nàođó,một cách hợp lý,các tiến trình quan trọng hơn(có độ ưu tiên hơn) cần được ưu tiênhơn
Thời gian sử dụng CPU của tiến trình:Một số quan điểm ưu tiên chọn những tiếntrình đả sử dụng CPU nhiều thời gian nhất vì hy vọng chúng sẽ cần ít thời gian nhất đẻhoàn tất và rời khỏi hệ thống.Tuy nhiên củng có quan điểm cho rắng các tiến trình nhậnđược CPU trong ít thời gian là những tiến trình đã phải chờ lâu nhất,do vậy ưu tiên chọnchúng
Thời gian còn lại tiến trình cần để hoàn tất: có thể giảm thiểu thời gian chờ đợi trungbình của các tiến trình bằng cách cho các tiến trình cần ít thời gian nhất để hoàn tất đượcthực hiện trước.Tuy nhiên đáng tiếc là rất hiếm khi biết được tiến trình cần bao nhiêuthời gian nữa để kết thúc xử lý
2.2.6.2 Cơ chế điều phối độc quyền và không độc quyền
Cơ chế điều phối độc quyền
Nguyên lý: cơ chế này cho phép một tiến trình khi nhận được CPU sẻ có quyền đọcchiếm CPU đến khi hoàn tất xử lý hoặc tự giải phóng CPU.Khi đó quyết định điều phối
sẻ xảy ra các trường hợp sau
Tiến trình chuyển từ trạng thái running blockit
Kết thúc tiến trình
Các giải thuật độc quyền dễ cài đặt thuật toán.Tuy nhiên lại không thích hợp cho hệthống tổng quát nhiều người dùng.Vì nếu cho tiến trình thời gian chiếm giử CPU tùy ýthì sẻ ngăn cản quá trình xử lý của các tiến trình còn lại
Cơ chế đ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 đọc quyền cho phéptạm dừng hoạt động của tiến trình đang sẵn sang xử lý.Khi một tiến trình nhận CPU nóvấn được sử dụng CPU cho đến khi hoàn tất hoặc tự nguyện giải phóng CPU,nhưng mộttiến trình khác có độ ưu tiên cao hơn có thể dành quyền sử dụng CPU của tiến trình banđầu.Như vậy tiến trình có thể dừng hoạt động bắt cứ lúc nào mà không được báo trước
để tiến trình khác xử lý.Các quyết định điều phối xảy ra khi:
Tiến trình chuyển từ trạng thái running blocked
Trang 162.2.6.3 Tổ chức điều phối
Các loại danh sách sử dụng điều phối tiến trình
Hệ điều hành sử dụng hai loại danh sách để thực hiện điều phối các tiến trình là
danh sách sẵn sàng(ready list) và danh sách chờ đợi(waiting list).
Khi một tiến trình bắt đầu đi vào hệ thống,nó được chèn vào danh sách tác vụ(joblist).Danh sách này bao gồm tất cả các tiền trình của hệ thống.Nhưng chỉ các tiến trìnhđang thường trú trong bộ nhớ chính và ở trạng thái sẵn sàng tiếp nhận CPU để hoạt
động mới được đưa vào danh sách sẵn sàng.
Bộ điều phối sẻ chọn một tiến trình trong danh sách sẵn sàng và cấp CPU cho tiếntrình đó.Tiên trình được cấp CPU sẻ thực hiện xử lý,và có thể chuyển sang trạng tháichờ khi xảy ra các sự kiện như đợi một thao tác nhập/xuất hoàn tất,yêu cầu tài nguyênchưa được thỏa mãn,yêu cầu tạm dừng…Khi đó tiến trình sẻ được chuyển sang mộtdanh sách chờ đợi
Hệ điều hành chỉ sử dụng một danh sách sẵn sàng cho toàn hệ thống,nhưng mỗi mộttài nguyên(thiết bị ngoại vi) có một danh sách chờ đợi riêng bao gốm các tiến trình chờđược cấp phát tài nguyên đó
Hình 8 : Danh sách chờ của các tiến trình trong hệ thống.
Quá trình xử lý của một tiến trình trải qua những chu kì chuyển đổi qua lại giữanhững danh sách sẵn sàng và danh sách chờ đợi.Sơ đồ dưới đây mô tả sự điều phối cáctiến trình dựa trên các danh sách của hệ thống
Thoạt đầu tiến trình mới được đặt trong danh sách các tiến trình sẵn sàng(readylist),nó sẻ đợi trong danh sách này cho đến khi được chọn để cập phát CPU và bắt xửlý.Sau đó có thể xảy ra một trong các tình huống sau:
Tiến trình phát sinh một yêu cầu một tài nguyên mà hệ thống chưa thể đáp ứng,khi
đó tiến trình sẽ được chuyển sang danh sách các tiến trình đang chờ tài nguyên tươngứng
Trang 17Tiến trình có thể bị bắt buộc tạm dừng xử lý do một lý do ngắt xảy ra,khi đó tiếntrình được đưa trở lại vào danh sách sẵn sàng để chờ được cấp CPU cho lượt tiếp theo.
Hình 9: Sơ đồ chuyển đổi giữa các danh sách điều phối
Trường hợp đầu tiên,tiến trình cuối cùng sẻ chuyển từ trạng thái blocket sang trạngthasiready và lại được đưa vào danh sách sẵn sàng.Tiến trình lặp lại cho đến khi hoàn tấttác vụ thì được hệ thống hủy bỏ khỏi mọi danh sách điều phối
Để hệ thống hoạt động tốt,bộ điều phối tác vụ cần biết tính chất của tiến trình là
hướng nhập xuất hay hướng xử lý.Một tiến trình được gọi là hướng nhập xuất nếu nó
chủ yếu chỉ sử dụng CPU để thực hiện thao tác nhập xuất.Ngược lại một tiến trình đượcgọi là hướng xử lý nếu nó chủ yếu chỉ sử dụng CPU để thực hiện các thao tác tínhtoán.Để cân bằng hoạt động của CPU và các thiết bị ngoại vi,bộ điều phối tác vụ nênlựa chọn các tiến trình để nạp vào bộ nhớ sao cho hệ thống là sự pha trộn hợp lý giữacác tiến trình hướng nhập xuất và các tiến trình hướng xử lý
Điều phối tiến trình
Chọn một tiến trình ở trạng thái sẵn sàng(đả nạp vào bộ nhớ chính,và có đủ tàinguyên để hoạt động) và cấp phát CPU cho tiến trình đó thực hiện.Bộ điều phối tiến
Trang 18trình có tần suất hoạt động cao,sau mỗi lần xảy ra ngắt(do đồng hồ bào giờ,do các thiết
bị ngoại vi…)thường là 1 lần trong khoảng 100ms.Do vậy để nâng cao hiệu suất của hệthống,cần phải tăng tốc độ xử lý của bộ hệ điều phối tiến trình.Chức năng điều phối tiếntrình là một trong chức năng cơ bản,quan trọng nhất của hệ điều hành
Trong nhiều hệ điều hành,có thể không có bộ điều phối tác vụ hoặc tách biệt rất ítđối với bộ điều phối tiến trình.Một vài hệ điều hành lại đưa ra một cấp độ điều phốitrung gian kết hợp cả hai cấp độ điều phối tác vụ và tiến trình
Hình 10: Cấp độ điều phối
Các chiến lược điều phối
Phân tích các điều phối sử dụng trong cơ chế một hàng đợi các tiến trình:
Chiến lược FIFO
Nguyên tắc: CPU được cấp phát cho tiến trình đầu tiên trong danh sách sẵn sàng cóyêu cầu, là tiến trình được đưa vào hệ thống sớm nhất Đây là một thuật toán điều phốitheo nguyên tắc độc quyền Một khi CPU được cấp phát cho tiến trình, CPU chỉ đượctiến trình tự nguyện giải phóng khi kết thúc xử lí hay khi có một yêu cầu xuất/ nhập.Chiến lược này thì thời gian chờ trung bình không đạt cực tiểu và biến đổi đáng kể đốivới các giá trị về thời gian yêu cầu xử lí và thứ tự khác nhau của cácd tiến trình trongdanh sách sẵn sàng Cá thể xảy ra hiện tượng tích luỹ thời gian chờ, khi tất cả các tiếntrình phảI chờ đợi một tiến trình có yêu cầc thời gian dài kết thúc xử lí
Giải thuật này đặc biệt không phù hợp với các hệ phân chia thời gian, trong các hệ này,cần cho phếp mỗi tiến trình được cấp phát CPU đều đặn trong từng khoảng thời gian.Vid dụ:
Trang 19Tiến trình thời điểm vào t/g xử lý
Thời gian chờ trung bình: 30/3=10
Chiến lược xoay vòng (RR)
Nguyên tắc: Danh sách sẵn sàng được xử lí như một danh sách vòng, bộ điều phốilần lượt cấp phát cho từng tiến trình trong danh sách một khoảng thời gian sử dụng CPUđến hết thời gian quantum dành cho nó, hệ điều hành thu hồi và cấp phát cho quá trình
kế tiếp trong danh sách Nếu tiến trình bị khoá hay kết thúc trước khi sử dụng hết thờigian quantum, hệ điều hành cũng lập tức cấp phát CPU cho tiến trình khác Khi tiến tìnhtiêu thụ hết thời gian CPU cấp phát dành cho nó mà chưa hoàn tất, tiến trình được đưatrở lại vào cuối danh sách sẵn sàng để được cấp CPU trong lượt kế tiếp
Vấn đề quan tâm đối với giả thuật RR là độ dài quantum quá bé sẽ phát sinh quánhiều sự chuyển đổi giữa các tiến trình và khiến cho việc sử dụng quantum quá lớn sẽlàm tăng thời gian hỏi đáp và giảm khả năng tương tác của hệ thống
Vậy thời gian chờ đợi trung bình sẽ là: (0 + 6 + 3 + 5)/3 = 4.46
Như vậy RR có thời gian chờ đợi trung bình nhỏ hơn so với FIFO
Trong chiến lược này, vấn đề đặt ra đối với công tác thiết kế là: nên chon quantum bằng bao nhiêu là thích hợp, nếu quantum nhỏ thì hệ thống phải tốn nhiều thời gian cho việc cập nhật ready list và chuyển trạng thái tiến trình, dẫn đến vi phạm mục tiêu: khai thác tối đa thời gian xử lý của processor Nếu quantum lớn thì thời gian chờ đợi trung bình vàthời gian hồi đáp sẽ tăng lên, dẫn đến tính tương tác của hệ thống bị giảm xuống.
Trang 20 Chiến lược điều phối với độ ưu tiên
Trong chiến lược này, bộ phận điều phối tiến trình dựa vào độ ưu tiên của các tiếntrình để tổ chức cấp processor cho tiến trình Tiến trình được chọn để cấp processor làtiến trình có độ ưu tiên cao nhất, tại thời điểm hiện tại
Ở đây hệ điều hành thường tổ chức gán độ ưu tiên cho tiến trình theo nguyên tắc kếthợp giữ gán tĩnh và gán động Khi khởi tạo tiến trình được gán độ ưu tiên tĩnh, sau đóphụ thuộc vào môi trường hoạt động của tiến trình và công tác điều phối tiến trình của
bộ phận điều phối mà hệ điều hành có thể thay đổi độ ưu tiên của tiến trình
Khi hệ thống phát sinh một tiến trình ready mới, thì bộ phận điều phối sẽ so sánh độ
ưu tiên của tiến trình mới phát sinh với độ ưu tiên của tiến trình đang sở hữu processor(tạm gọi là tiến trình hiện tại) Nếu tiến trình mới có độ ưu tiên thấp hơn tiến trình hiệntại thì bộ phận điều phối sẽ chèn nó vào ready list tại vị trí thích hợp Nếu tiến trình mới
có độ ưu tiên cao hơn tiến trình hiện tại thì bộ điều phối sẽ thu hồi processor từ tiếntrình hiện tại để cấp cho tiến trình mới yêu cầu, nếu là điều phối không độc quyền, hoặcchèn tiến trình mới vào ready list tại vị trí thích hợp, nếu là điều phối độc quyền
Chiến lược này cũng phải sử dụng ready list, và ready list luôn được xếp theo
thứ tự giảm dần của độ ưu tiên kể từ đầu danh sách Điều này có nghĩa là tiến trình
được chọn để cấp processor là tiến trình ở đầu ready list.
Ví dụ: Nếu hệ điều hành cần cấp processor cho 3 tiến trình P1, P2, P3 với độ ưu tiên vàkhoảng thời gian mỗi tiến trình cần processor được mô tả trong bảng sau:
Tiến trình độ ưu tiên thời gian xử lý
Thời gian chờ trung bình:
Chiến lược công việc ngắn nhất SJF
Nguyên tắc: Đây là một trường hợp đặp biệt của giải thuật điều phối với độ ưu tiên pđược gán cho mỗi tiến trình là mỗi tiến trình là nghịch đảo của thời gian xử lí mà tiếntrình yêu cầu: p=1/t Khi CPU được tự do thì nó sẽ được cấp phát cho tiến trình yêu cầu
ít thời gian nhất để kết thúc tiến trình ngắn nhất Giải thuật này cũng có khả năng độcquyền hay không độc quyền Sự lựa chọn xảy ra khi có một tiến trình mới đưa vào danhsách sẵn sàng trong khi một tiến trình khác đang xử lí Tiến trình mới có thể sở hữu mộtyêu cầu thời gian sử dụng CPU cho lần tiếp theo ngắn hơn thời gian còn lại mà tiếntrình hiện hành cần xử lí GiảI thuật SJF không độc quyền sẽ dừng họat động của tiến
Trang 21trình hiện hành, trong khi giải thuật độc quyền sẽ cho phép tiến trình hiện hành tiếp tục
xử lí
Giải thụât này cho phép đạt được thời gian chờ trung bình cực tiểu Khó khăn thực sựcủa giải thuật SJF là không thể biết được thời gian xử lí lần thứ n, tn+1 là giá trị dự đoáncho lần xử lí tiếp theo Với hy vọng gia trị dữ đoán sẽ giống với các giá trị trước đó, cóthể sử dụng công thức:
T n+1 = α t n+1 (1-α)tα)t n
Trong đó tn+1 chứa đựng thông tin gần nhất, tn chứa đựng các thông tin quá khứ đượctích luỹ, tham số ỏ kiểm soát trọng số hiện tại gần hay quá khứ ảnh hưởng đến côngthức dữ toán
Trang 22CHƯƠNG 3 THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
3.1 Phân tích yêu cầu
Tìm hiểu về bộ định thời trong quản lý tiến trình.Sử dụng các bộ điều phốiFIFO,SJF,RR,ƯU TIÊN
Để làm rỏ các giải thuật:
Nhập vào n tiến trình.P1,P2,……Pn.Thời gian đến tăng dần theo theo thứ tự nhập tiếntrinh.Đưa các tiến trình vào danh sách ban đầu.Sử dụng các thuật toánFIFO,SJF,RR,thuật toán ưu tiên để xử lý các tiến trinh.Xuất ra thời gian chờ trung bìnhcủa từng quá trình xử lý
và tiến trình đang xử lý được xếp vào hàng đợi.Sau đó in ra thứ tự thực hiện của các tiếntrình
Sữ dụng các thuật toán FIFO.SJF,độ ưu tiên,RR
3.2.3 Mô tả bài toán.
Chúng ta se xấy dựng chương trình đơn giản bằng C.Mô phỏng kết quả xử lý của cáctiến trình thông qua thuật toán FIFO,SJF,ƯU TIÊN,RR
Đầu vào: Các tiến trình p0,p1,p2,p3,…
Thời gian đến của mỗi tiến trình
Thời gian xử lý của tiến trình
Đầu ra: Thời gian môi tiến trình sử dụng CPU, thời gian chờ của mỗi tiến trìnhtrong CPU,và thời gian chờ trung bình của cả quá trình xử lý
-Khởi tạo một đối tượng là một tiến trình chứa các thuộc tính:tgvao,tgxuly,tentt,tgcho,stt
Với thuật toán RR : cần có thời gian quan tum
FIFO:
#include <stdio.h>
#include <conio.h>
Trang 23typedef struct PR{ char ten[12];
printf("\n\t -GIAI THUAT DINH THOI FIFO -\n\n");
printf("\n So luong tien trinh: n = ");
Trang 25printf("\n\t -GIAI THUAT DINH THOI FIFO -\n\n");
printf("\n\t\t|TT | Ten TT | SD CPU | Tgluu| TgCho|\n");
typedef process_element *process_list;
//danh sách hang doi cac tien trinh
struct gantt_element{
int stt;
Trang 26int tgian;
int tbatdau;
gantt_element *next;
};
typedef gantt_element *table_gantt;
//tao bang gantt
void read_data_from_file(char fileName[], PROCESS a[], int *n, int *quantum)
Trang 28printf("Ten tien trinh: ");
for(int i=0;i<n;i++) printf("%6s",a[i].ten);
printf("\nThoi gian vao: ");
for(int i=0;i<n;i++) printf("%6d",a[i].tvao);
printf("\nThoi gian xu ly:");
for(int i=0;i<n;i++) printf("%6d",a[i].txuly);