Giáo trình “Hệ điều hành” biên soạn theo chương trình đào tạo chuyên ngành Tin học hệ đại học của Khoa Tin trường Đại học Quy nhơn. Giáo trình dựa theo bài giảng “Hệ điều hành” mà tác giả đã giảng dạy từ năm 2002 cho khoa Tin học của trường. Tập giáo trình biên soạn để giảng dạy một khoảng thời gian là 45 tiết, nên chỉ tập trung những vấn đề trọng tâm của Hệ điều hành.
Trang 1LỜI NÓI ĐẦU
Giáo trình “Hệ điều hành” biên soạn theo chương trình đào tạo chuyên ngànhTin học hệ đại học của Khoa Tin trường Đại học Quy nhơn Giáo trình dựa theo bàigiảng “Hệ điều hành” mà tác giả đã giảng dạy từ năm 2002 cho khoa Tin học củatrường Tập giáo trình biên soạn để giảng dạy một khoảng thời gian là 45 tiết, nênchỉ tập trung những vấn đề trọng tâm của Hệ điều hành
Trong quá trình biên soạn tài liệu, chúng tôi xin cảm ơn các đồng nghiệp vàcác sinh viên khoa Tin học đã đóng góp ý kiến và cổ vũ để sớm hoàn thiện giáotrình Mặc dù có nhiều cố gắng trong biên soạn nhưng không thể nào tránh khỏithiếu sót Mong các bạn thông cảm và lượng thứ
Quy nhơn, tháng 10 năm 2005
Người biên soạn
Lương Tín
Trang 3Chương 1
GIỚI THIỆU
1.1 KHÁI NỆM HỆ ĐIỀU HÀNH
1.1.1 Giới thiệu
Hệ điều hành là một chương trình hoạt động giữa người sử dụng và phần
cứng máy tính Nó cung cấp một môi trường để người sử dụng có thể thi hànhchương trình đó
Hệ điều hành là một phần quan trọng của hệ thống máy tính Một hệ thốngmáy tính gồm : phần cứng, hệ điều hành, trình ứng dụng và người sử dụng
Hệ thống máy tính
Người dùng Trình ứng dụng
Hệ điều hành
Phần cứng
Phần cứng : Bao gồm các linh kiện tạo nên máy tính
Trình ứng dụng: như các chương trình dịch, hệ thống dữ liệu , các trò chơi,
các chương trình thương mại v.v và các chương trình này sử dụng tài nguyên hệthống máy tính để giải quyết yêu cầu người sử dụng
Hệ điều hành: điểu khiển và phối hợp việc sử dụng phần cứng cho những ứng
dụng khác nhau của nhiều người sử dụng khác nhau Nó cung cấp môi trường màcác chương trình ứng dụng làm việc hữu hiệu trên đó Nó là bộ phân phối tàinguyên của máy tính Tài nguyên ở đây có thể hiểu như : thời gian sử dụng CPU,vùng bộ nhớ, vùng lưu trữ tập tin, thiết bị xuất nhập Nó kiểm soát và cấp phát cáctài nguyên đó một cách hợp lý tối ưu
_ MS-DOS , Window 95 ,Window 98
_ Novell Netware
_ Window NT , Window 2000 , Window XP
Trang 4_Unix :Solairs , Linux, SCO , HP-UX ,AIX
_ Real time :embeded OSs , BeOs , RTLinux
Máy tính có các CPU như : Intel , Alpha , Power PC , Motola.
1.1.2 Các tính chất cơ bản của hệ điều hành
chuẩn xác tuyệt đối Chỉ khi nào chắc chắn đúng thì hệ điều hành mới cung cấpthông tin cho người sử dụng, nếu vẫn không được lúc đó hệ thống đưa các thôngbáo lỗi
liệu và bảo vệ các tài nguyên sử dụng chung, tránh sự vi phạm do cố ý người sửdụng và chương trình Nó đảm bảo sao cho dữ liệu và chương trình không bịthay đổi ngoài ý muốn trong mọi chế độ hoạt động của hệ thống máy tính
khai thác một cách tối ưu Phải được duy trì sự đồng bộ hệ thống, tránh trìnhtrạng treo hệ thống, không được để những thiết bị chậm làm ảnh hưởng hệthống
những phiên bản trước, làm cho người sử dụng thích nghi với phiên bản mới.Cập nhật các chức năng tiện ích và dễ sử dụng, cải tiến ít lỗi hơn
tính chuyên nghiệp đối với người đã từng sử dụng và dễ dàng đối với ngườichưa sử dụng Các thao tác thuận lợi, hướng dẫn phong phú, các tiện ích kèmtheo đa dạng Trong một thời gian ngắn, người sử dụng có thể nắm bắt nhanhchóng các tính năng của hệ điều hành
1.2.1 Quản lý tiến trình
Một chương trình không được thực hiện gì cả nếu như nó không được CPU thi
hành Một tiến trình là một chương trình đang được thi hành, nó thực hiện theo lô.Thí dụ như một spooling xuất ra máy in là một quá trình
Một tiến trình phải sử dụng tài nguyên như thời gian sử dụng CPU, bộ nhớ, tậptin, các thiết bị xuất nhập để hoàn tất công việc của nó Các tài nguyên này đượccung cấp khi quá trình tạo ra hay trong quá trình thi hành Khi tiến trình được tạonó sử dụng tài nguyên vật lý của hệ thống và lô gíc, khởi tạo dữ liệu nhập Thí dụ,khảo sát tiến trình hiển thị trạng thái tập tin lên màn hình Đầu vào quá trình là têntập tin và quá trình sẽ thực hiện những chỉ thị thích hợp, thực hiện lời gọi hệ thốngđể nhận được những thông tin mong muốn và hiển thị nó lên màn hình Khi tiếntrình kết thúc hệ điều hành sẽ tái tạo các tài nguyên có thể dùng lại
Trang 5Một tiến trình là hoạt động hoàn toàn ngược lại với một tập tin trên đĩa là thụđộng , với một bộ đếm chương trình cho biết lệnh kế tiếp được thi hành Việc thihành theo cơ chế tuần tự, CPU sẽ thi hành từ lệnh đầu đến lệnh cuối
Một tiến trình được coi là một đơn vị làm việc của hệ thống Một hệ thống cónhiều tiến trình hoạt động cùng một lúc, trong đó một số tiến trình là của hệ điềuhành , một số tiến trình là của người sử dụng, các tiến trình có thể diễn ra mộtcách đồng thời Một số chức năng của tiến trình là:
_ Tạo và huỷ các tiến trình của người sử dụng và của hệ thống
_ Ngưng và thực hiện một tiến trình
_ Cung cấp cơ chế đồng bộ tiến trình
_ Cung cấp thông tin giữa các tiến trình
_ Cung cấp cơ chế kiểm soát deadlock
1.2.2 Quản lý bộ nhớ
Quản lý bộ nhớ chính
Bộ nhớ chính là trung tâm của mọi thao tác, xử lý Bộ nhớ có thể xem làmảng kiểu byte, word Mọi phần tử của nó đều có địa chỉ Đó là nơi mà CPU truyxuất một cách nhanh chóng đối với các thiết bị nhập /xuất CPU đọc các chỉ thị từbộ nhớ chính nầy, các vụ DMA cũng đọc và ghi trên bộ nhớ chính Thông thườngbộ nhớ chứa thông tin các thiết bị mà CPU truy cập tới Bộ nhớ sẽ chứa nhữngthông tin mà CPU có thể định vị trực tiếp Ví dụ CPU truy xuất dữ liệu từ đĩa,những dữ liệu này được chuyển vào bộ nhớ qua lời gọi hệ thống
Một chương trình muốn thi hành trước hết phải ánh xạ thành địa chỉ tuyệt đốivà nạp vào bộ nhớ chính Khi chương trình thi hành, hệ thống truy xuất các chỉ thịvà dữ liệu chương trình vào bộ nhớ chính Ngay khi một tiến trình kết thúc, dữ liệuvẫn còn trong bộ nhớ cho đến khi một tiến trình khác chồng lên
Để tối ưu hoá các tiến trình hoạt động của CPU, một số tiến trình lưu trữ sẵntrong bộ nhớ chính của máy tính Có rất nhiều kế hoạch và thuật toán quản trị bộnhớ do có nhiều chương trình ứng dụng khác nhau HĐH có vai trò như sau trongviệc quản trị bộ nhớ chính:
_ Lưu trữ thông tin về các vị trí trong bộ nhớ đã được sử dụng và ai sử dụng _ Quyết định quá trình nào được nạp vào bộ nhớ
_ Cấp phát và thu hồi bộ nhớ cần thiết
Quản lý bộ nhớ phụ
Trong quá trình thực hiện một tiến trình, các dữ liệu không thể đưa vào bộnhớ chính được mà lưu trữ trên bộ nhớ phụ và đưa vào bộ nhớ chính khi cần thiết.Hệ thống lưu trữ phụ đều dùng đĩa để lưu chương trình và cả dữ liệu Sau khi thựchiện một quá trình các kết quả đều lưu trữ trên bộ nhớ phụ Có nhiều thuật toánhợp lý để trao đổi dữ liệu và chương trình giữa bộ nhớ chính và phụ Vai trò của hệđiều hành trong việc quản lý đĩa :
_ Quản lý vùng trống trên đĩa
Trang 6_ Định vị lưu trữ
_ Lập lịch cho đĩa
Tốc độ hệ thống luôn luôn phụ thuộc rất nhiều vào đĩa
1.2.3 Quản lý hệ thống tập tin
Hệ thống quản lý tập tin là thành phần quan trọng nhất của hệ điều hành Máytính có thể lưu trữ thông tin trong nhiều dạng thiết bị vật lý khác nhau: băng từ, đĩatừ , đĩa quang Mỗi dạng có đặc thù riêng về mặt tổ chức vật lý Mỗi thiết bị cómột bộ kiểm soát như bộ điều khiển đĩa riêng Những đặc điểm của thiết bị màngười sử dụng quan tâm là tốc độ, khả năng lưu trữ, tốc độ truyền dữ liệu và cáchtruy xuất
Để cho việc sử dụng máy tính một cách thuận tiện, hệ điều hành cung cấp mộtcái nhìn logic đồng nhất về hệ thống lưu trữ Hệ điều hành định nghĩa một đơn vịlưu trữ logic là tập tin Hệ điều hành tạo ra một ánh xạ từ tập tin đến vùng thông tintrên đĩa và truy xuất những tập tin này qua các thiết bị lưu trữ
Một tập tin là một tập hợp những thông tin do người tạo ra xác định Thôngthường một tập tin đại diện cho một chương trình và dữ liệu
Vai trò của hệ điều hành trong việc quản lý tập tin:
_ Tạo và xoá một tập tin
_ Tạo và xoá một thư mục
_ Hỗ trợ các thao tác trên tập tin và thư mục
_ Aùnh xạ các tập tin trên hệ thống lưu trữ phụ
_ Back up các tập tin trên các thiết bị lưu trữ
1.2.4 Quản lý hệ thống xuất /nhập
Một trong những mục tiêu của hệ điều hành là che dấu những đặc thù của cácthiết bị phần cứng đối với người sử dụng thay vào đó là một lớp thân thiện hơn,người sử dụng dễ thao tác hơn Một hệ thống xuất nhập bao gồm :
_ Hệ thống buffer caching
_ Giao tiếp điều khiển thiết bị tổng quát
_ Bộ điều khiển cho các thiết bị phần cứng
Chỉ có device – driver mới hiểu đến cấu trúc đặc thù của thiết bị mà nó mô tả
1.2.5 Hệ thống bảo vệ, lập mạng
Trong HĐH còn có một cơ chế bảo vệ Với cơ chế này các tài nguyên của hệthống không đụng độ với nhau, giúp cho hệ thống làm việc bình thường, bảo vệ tàinguyên dùng chung, phát triển và ngăn chặn các khả năng sai sót của tiến trình Đểthực hiện một quá trình mới, yêu cầu được đưa từ các thiết bị ngoại vi, sau đó hệ
điều hành sẽ xử lý các yêu cầu đó theo một cơ chế dòng lệnh Một số hệ điều
hành thực hiện cơ chế dòng lệnh bên trong hạt nhân, một số khác như MS-DOS vàUNIX trhì xem hệ điều hành là một chương trình đặc biệt, được thi hành khi cáccông việc bắt đầu hoặc khi người sử dụng khi login đầu tiên
Trang 7Các lệnh được đưa vào hệ điều hành thông qua bộ điều khiển lệnh Trong các
hệ thống chia sẻ thời gian một chương trình đọc và thông dịch các lệnh điều khiểnđược thực hiện một cách tự động Chương trình này thường được gọi là bộ thông
dịch điều khiển card, cơ chế dòng lệnh hoặc shell Chức năng của nó rất đơn giản
đó là lấy các lệnh kế tiếp và thi hành
Một hệ điều hành sẽ có những giao tiếp khác nhau, dạng đơn giản theo cơ chế
dòng lệnh, dạng thân thiện với người sử dụng như là giao diện đồ hoạ của
Window, Macintosh có các biểu tượng, cửa sổ thao tác dùng chuột
Một chức năng khác của HĐH hiện nay là khả năng kết nối mạng Các máytính được nối mạng và chia sẻ tài nguyên truyền thông trên mạng thông qua các hệthống giao tiếp mạng Các tiến trình trong mỗi máy trạm có thể kết nối với nhau vàxử lý thông qua hệ thống mạng
1.3 CHỨC NĂNG CỦA HỆ ĐIỀU HÀNH
1.3.1 Các dịch vụ của hệ điều hành
Hệ điều hành tạo ra một môi trường để thi hành các chương trình, bằng cáchcung cấp các dịch vụ cho chương trình và cho người sử dụng Tuỳ theo kiến trúc hệđiều hành mà các dịch vụ khác nhau, nhưng HĐH có một số dịch vụ chung như sau:
- Phục vụ việc thực hiện chương trình
- Điều khiển các quá trình xuất/nhập
- Thao tác trên hệ thống tập tin
- Thông tin giữa các tiến trình, gửi nhận thông điệp
- Phát hiện lỗi và biện pháp giải quyết
- Tổ chức các dịch vụ
1.3.2 Lời gọi hệ thống
Lời gọi hệ thống cung cấp một giao diện giữa tiến trình và hệ điều hành Hệ
điều hành cung cấp hai phương pháp để tổ chức thực hiện lời gọi hệ thống
- Tổ chức bằng những lệnh hợp ngữ
- Tổ chức trực tiếp từ các chương trình viết bằng ngôn ngữ bậc cao như cáchàm và lời gọi hàm, các chương trình con Trong các ngôn ngữ lập trình bậccao, người ta không quan tâm đến chi tiết mà chỉ cần thông qua các chỉ dẫn
Có ba phương pháp được sử dụng để chuyển tham số cho hệ điều hành như : sử
dụng thanh ghi, sử dụng bảng trong bộ nhớ và stack Lời gọi hệ thống chia thànhcác loại: kiểm soát tiến trình, thao tác tập tin và thao tác thiết bị, thông tin
1.3.3 Các chương trình hệ thống
Các chương trình hệ thống cung cấp công cụ cho người sử dụng thực hiện cácthao tác quản lý và điều khiển hệ thống Nó có thể chia thành một số loại như:
-Các chương trình thao tác với tập tin và thư mục
-Các chương trình thông tin trạng thái
-Các chương trình tạo và mô tả tập tin
Trang 8-Các chương trình hỗ trợ ngôn ngữ lập trình
-Các chương trình điều khiện nạp và thi hành chương trình
-Các chương trình giải thích lệnh , gửi và nhận thông điệp
-Các chương trình ứng dụng kèm theo như : duyệt Web, định dạng đĩa , sao chép và các chương trình tiện ích khác
1.4 KIẾN TRÚC HỆ ĐIỀU HÀNH
1.4.1 Mononlithic OS
Đây là cấu trúc đơn giản dùng trong hệ thống nhỏ và có giới hạn
MS_DOS là một hệ điều hành, nó cung cấp những chức năng cần thiết trongmột không gian nhỏ nhất và không chia thành những đơn thể rõ rệt
Chương trình ứng dụng
Chương trình thường trú
MS –DOS device driver
ROM BIOS device driver
Các chương trình ứng dụng có thể truy cập thông qua các dịch vụ của DOS.Một hệ điều hành khác cũng tương tự như vậy là UNIX Cấu trúc gồm 2 phần: hạtnhân và chương trình hệ thống Hạt nhân được chia thành một chuỗi giao tiếp vàdevice driver
Những gì dưới lời gọi hệ thống và trên phần cứng, đó là hạt nhân Hạt nhâncung cấp hệ thống tập tin lập lịch CPU, quản trị bộ nhớ và những chức năng kháccủa hệ điều hành khác thông qua lời gọi hệ thống Tóm lại toàn bộ chức năng củahệ thống được kết hợp trong một lớp Những chương trình hệ thống dùng lời gọi hệthống được hỗ trợ bởi hạt nhân để cung cấp những chức năng hữu ích như biên dịchvà thao tác tập tin Lời gọi hệ thống định nghĩa một giao tiếp lập trình cho UNIX ,đó là tập hợp những chương trình hệ thống thông thường trong đó có định nghĩagiao tiếp với người sử dụng
1.4.2 Microkernel OS và thiết kế phân lớp
Những version mới của UNIX được thiết kế để sử dụng phần cứng phức tạphơn , do đó hệ điều hành được chia thành nhiều phần nhỏ hơn
Bằng cách sử dụng topdown, những chức năng và phần chính được chia thànhnhiều phần nhỏ Che dấu thông tin , không cho chương trình của người sử dụng cóthể cài đặt truy xuất cấp thấp , thay vào đó là các lớp giao tiếp bên trong
Hệ điều hành được chia thành nhiều lớp Lớp dưới cùng là phần cứng , lớp trêncùng là giao tiếp đối với người sử dụng Lớp hệ điều hành được cài đặt thànhnhững đối tượng trừu tượng Thông thường một lớp hệ điều hành bao gồm một số
Trang 9cấu trúc dữ liệu và các hàm có thể gọi bởi lớp ở trên và bản thân nó gọi những lớp
ở cấp dưới Mỗi lớp cài đặt chỉ sử dụng một số thao tác do lớp dưới cung cấp Mộtlớp cũng không cần biết hệ điều hành được cài đặt như thế nào, nó chỉ cần biếtnhững thao tác này làm gì thôi
Cấu trúc các lớp này lần đầu tiên được thiết kế và áp dụng cho hệ điều hànhTHE ( Techinische Hogeschool Eindhoven ) Hệ thống chia làm 6 lớp
Lớp 5 Chương trình của người sử dung
Lớp 4 Tạo buffer cho thiết bị nhập xuất
Lớp 3 Device driver thao tác cho màn hì nh
Lớp 2 Quản lý bộ nhớ
Lớp 1 Lập lịch cho CPU
Lớp 0 Phần cứng
1.4.3 Máy ảo
Thông thường , một hệ thống máy tính bao gồm nhiều lớp Phần cứng ở lớpthấp nhất Hạt nhân ở lớp kế dùng các chỉ thị của phần cứng tạo ra một tập hợp lờigọi hệ thống Các chương trình hệ thống có thể sử dụng hoặc là các lời gọi hệthống hoặc là các chỉ thị của phần cứng Vì vậy nó xem phần cứng và lời gọi hệthống như cùng một lớp
Một số hệ thống có thể tổ chức sao cho các chương trình ứng dụng có thể gọidễ dàng các chương trình hệ thống Mặc dù chương trình hệ thống ở lớp cao hơncác các phần khác nhưng là chương trình ứng dụng có thể xem mọi phần dưới nó làmột phần của máy Lớp ứng dụng này sử dụng một khái niệm là máy ảo Ví dụ hệđiều hành máy ảo IBM
Bằng cách sử dụng lập lịch cho CPU và kỹ thuật bộ nhớ ảo, một hệ điều hànhcó thể tạo nhiều tiến trình phức tạp, mỗi cái sẽ thực hiện trên một bộ vi xử lý vàbộ nhớ riêng Những tiến trình này có đặc điểm riêng như lời gọi hệ thống và hệthống tập tin không được cung cấp phần cứng một cách trực tiếp
Tài nguyên hệ thống được chia sẻ để tạo những máy ảo Lập lịch CPU chia sẻCPU cho các người sử dụng Spooling và hệ thống tập tin được chia thành card đọcảo và máy in ảo Một terminal cung cấp các chức năng tạo các thao tác màn hìnhảo
Vấn đề phức tạp nhất của hệ thống máy ảo là hệ thống đĩa Giả sử hệ thốngchỉ có ba bộ điều khiển nhưng có bảy máy ảo Như vậy không thể gán mỗi máy ảomột bộ điều khiển đĩa và giải pháp là xây dựng hệ thống đĩa ảo
Mặc dù khái niệm máy ảo rất hữu ích nhưng khó cài đặt Máy ảo phải thựchiện ở hai dạng: dạng giám sát (monitor) và dạng người sử dụng Ngoài ra máy ảocòn phải giải quyết các vấn đề vận chuyển dữ liệu và thời gian
Trang 10Máy tính thế hệ này chưa có hệ điều hành (dùng bằng ống đèn chân không)
Mỗi máy được một nhóm thực hiện tất cả từ thiết kế, xây dựng lập trình, thaotác đến quản lý Lập trình bằng ngôn ngữ máy tuyệt đối, thường là dùng bảng điềukhiển để thực hiện các chức năng cơ bản Sau đó vào khoảng thập niên 1950, thaotác trên phiếu đục lỗ và kết quả vẫn giữ trên phiếu đục lỗ
1.5.2 Thế hệ 2 ( 1955-1965)
Máy tính được tạo ra trên nền tảng các chất bán dẫn Lần đầu tiên có sự phânchia rõ ràng giữa nhà thiết kế, nhà xây dựng, nhà vận hành, nhà lập trình và bảotrì
Hệ thống xử lý theo lô ra đời, nó lưu các yêu cầu cần thực hiện lên băng từ, vàhệ thống sẽ đọc và thi hành lần lượt Do tốc độ tính toán CPU khá nhanh nên để
đồng bộ với các thiết bị xuất/nhập, CPU dùng cơ chế off_line sẽ ghi kết quả lên băng từ làm bộ dữ liệu trung gian và cơ chế spooling đồng bộ hoá các thao tác bên ngoài cho phép CPU hoạt động theo one_line Ngôn ngữ lập trình chủ yếu lúc này
là FORTRAN và hợp ngữ
1.5.3 Thế hệ 3 ( 1965-1980 )
Do sự ra đời các hệ thống máy tính sử dụng mạch tích hợp (IC) được dùng
nhiều trong khoa học và thương mại Tiêu biểu như hệ máy IBM 360, sự ra đờimáy tính kèm theo sự ra đời các thiết bị ngoại vi, kèm theo các hệ thống điềukhiển nó là hệ thống đa chương
Hệ thống đa chương gia tăng khai thác CPU bằng cách tổ chức các công việc
sao cho CPU trong tình trạng làm việc Hệ điều hành sẽ lưu giữ một phần của cáccông việc ở nơi lưu trữ trong bộ nhớ CPU sẽ lần lượt thực hiện phân công các việcnày Khi đang thực hiện nếu có yêu cầu truy xuất thiết bị thì CPU không nghỉ màthực hiện các công việc tiếp theo
Trang 11Hệ thống chia sẻ thời gian là một sự mở rộng của hệ thống đa chương, còn được gọi là hệ thống đa nhiệm Nhiều công việc cùng thực hiện thông qua cơ chế
chuyển đổi của CPU nhưng mỗi lần chuyển đổi nhanh hơn Hệ thống đa nhiệmdùng sự lập lịch của CPU và đa chương để cung cấp cho mỗi người sử dụng mộtphần nhỏ trong máy tính chia sẻ Một chương trình khi thi thành được gọi là mộtquá trình Hệ điều hành chia sẻ cho phép nhiều người sử dụng chia sẻ tài nguyênmột cách đồng bộ do thời gian chuyển đổi nhanh, họ có cảm giác là các quá trìnhđang thực thi cùng một lúc Nó có chức năng quản trị và bảo vệ bộ nhớ, sử dụng bộ
nhớ ảo, cung cấp hệ thống tập tin truy xuất on_line.
Đối với hệ thống có hơn 2 vi xử lý, đặc biệt là các hệ điều hành mạng Hệ
thống nhiều bộ vi xử lý cần phải có các thuật toán đặc biệt để xử lý trên tập hợp dữliệu lớn và nhiều chương trình song song Một lý do nữa là sự hỏng hóc của một xửlý sẽ không ảnh hưởng đến toàn bộ hệ thống
Hệ thống đa xử lý thông thường sử dụng cách đa xử lý đối xứng, trong cách
này bộ xử lý chạy một bản sao của hệ điều hành, những bản sao này này liên lạcvới nhau khi cần thiết Một số hệ thống sử dụng đa xử lý bất đối xứng trong đó mỗibộ xử lý được giao một công việc riêng biệt Một bộ xử lý chính kiểm soát toàn bộhệ thống các bộ xử lý khác thực hiện theo lệnh của bộ xử lý chính hoặc theo nhữngchỉ thị đã định trước Một hệ thống đa xử lý cho phép nhiều công việc và tàinguyên được chia sẻ tự động trong những bộ vi xử lý khác nhau
Hệ thống xử lý thời gian thực được sử dụng khi có những đòi hỏi khắt khe
về thời gian trên các thao tác của bộ xử lý hay dòng dữ liệu, nó được dùng điềukhiển các thiết bị trong các ứng dụng tận hiến Máy tính phân tích dữ liệu và có thểchỉnh các điều khiển giải quyết cho dữ liệu nhập
Một hệ điều hành xử lý thời gian thực phải được định nghĩa tốt, thời gian xử lýnhanh Hệ thống phải cho kết quả chính xác trong khoảng thời gian nhanh nhất Cóhai hệ thống xử lý thời gian thực là cứng và mềm
Hệ thống thời gian thực cứng là công việc được hoàn thành đúng lúc Lúc đódữ liệu thường được lưu trong bộ nhớ ngắn hạn hay trong ROM Việc xử lý theothời gian thực sẽ xung đột với tất cả hệ thống liêt kê ở trên
Dạng thứ hai là hệ thống thời gian thực mềm, mỗi công việc có một độ ưutiên riêng và sẽ được thi hành theo độ ưu tiên đó Có một số lĩnh vực áp dụng hữuhiệu phương pháp nầy là multimedia hay thực tại ảo
1.5.4 Thế hệ 4 ( 1980- )
Hệ thống phân tán và mạng tương tự như hệ thống chia sẻ thời gian nhưng
các bộ xử lý không chia sẻ bộ nhớ và đồng hồ , thay vào đó một bộ xử lý có bộ nhớcục bộ riêng Các bộ xử lý thông tin với nhau thông qua các đường truyền thôngnhư những bus tốc độ cao hay đường dây điện thoại
Các bộ xử lý trong hệ phân tán thường khác nhau về kích thước và chứcnăng Nó bao gồm máy vi tính, trạm làm việc, máy mini, và những hệ thống máy
Trang 12lớn Các bộ xử lý thường được tham khảo với nhiều tên khác nhau như : site, node,computer v.v tuỳ thuộc vào trạng thái làm việc của chúng
Các nguyên nhân dẫn đến sự xây dựng hệ thống phân tán là:
•Chia sẻ tài nguyên
•Tăng tốc độ tính toán , tính toán song song
•An toàn : nếu trong một thành phần bị hỏng các hệ thống còn lại vẫnphải làm việc
•Thông tin liên lạc với nhau nhanh chóng
CÂU HỎI VÀ BÀI TẬP
1 Trình bày những tính chất cơ bản của hệ điều hành
2 Tài nguyên của hệ thống là gì ? Cho ví dụ minh hoạ
3 Nêu các chức năng cơ bản của hệ điều hành Minh hoạ một số chức năng một số hệ điều hành đã biết
4 So sánh những đặc điểm khác nhau của các hệ điều hành : đơn nhiệm, đanhiệm, mạng, phân tán, thời gian thực
5 So sánh cơ chế bảo vệ của các hệ điều hành: DOS, Window9x và Window
Trang 13Chương 2
QUẢN LÝ TIẾN TRÌNH
2.1 QUẢN LÝ TIẾN TRÌNH
2.1.1 Khái niệm
Để thực hiện các chương trình trong hệ thống máy tính cùng một lúc, nhất là hệ
điều hành đa nhiệm, đa chương Hệ thống phần mềm được tổ chức thành các tiếntrình để chuyển đổi qua lại giữa các chương trình thực thi mà chúng ta có cảm giáccác chương trình đó cùng thực hiện một lúc giống như việc thực hiện song song.Tiến trình là một chương trình đang thực thi và tiến trình có thời gian sống từ lúckhởi tạo để lấy tài nguyên hệ thống, thực thi và kết thúc Khi tiến trình kết thúc nótrả lại các tài nguyên hệ thống
Tiến trình là một thực thể tích cực khác với chương trình ở thể thụ động Nó cóthể tương tác với người dùng và thế giới bên ngoài Khi chương trình thực hiện nóchuyển thành các tiến trình có nhiều trạng thái và chuyển trạng thái
Tiến trình sở hữu các thông tin như bộ đếm chương trình, các thanh ghi để chứadữ liệu, stack , vùng chứa dữ liệu và các biến môi trường …
2.1.2 Trạng thái của tiến tình
Trạng thái của tiến trình được xác định vào thời điểm mà nó hoạt động Khihoạt động các tiến trình có thể thay đổi một trạng thái do nhiều nguyên nhân Tại
một thời điểm chỉ có một tiến trình thực thi (running), các tiến trình khác có thể ở trong trạng đợi để cho CPU lấy dữ liệu và xử lý gọi là (ready) hay phải đợi một sự kiện nào đó gọi là (blocked) Do đó, tại một thời điểm, một tiến trình có thể nhận
các trạng thái sau:
thể do việc xuất nhập dữ liệu trước từ một tiến trình khác
2.1.3 Cơ chế chuyển đổi trạng thái của tiến trình
New Dispatch Exited
READY RUNNING
Timer run-out
Wake-up Blocked
Trang 14- Tiến trình mới được đưa vào hệ thống và đưa vào hàng đợi.
- 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 và thực hiện
- Tiến tình kết thúc
- Tiến trình chờ tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa được cấp phát vào thời điểm đó, hoặc chờ một sự kiện hay thao tác xuất nhập
- Bộ điều phối chọn một tiến trình khác để 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 đợi một sự kiện hoàn tất
2.1.4 Cấu trúc dữ liệu khối quản lý tiến trình
Hệ điều hành quản lý các tiến trình trong hệ thống thông qua khối tiến tình(process control block - PCB) Nó chứa các thông tin nhận dạng, trạng thái và định
vị tài nguyên của tiến trình, với thành phần chủ yếu bao gồm:
Định danh của tiến trình : giúp phân biệt các tiến trình
Trạng thái hiện hành của tiến trình
Ngữ cảnh của tiến trình: mô tả các tài nguyên của tiến tình bao gồm:
- Trạng thái CPU: bao gồm vùng lưu trữ các thanh ghi, bộ đếm chươngtrình, con trỏ lệnh IP lưu địa chỉ lệnh kế tiếp, phục hồi các trạng thái saukhi thực hiện xong ngắt
- Bộ xử lý dùng cho nhiều CPU, xác định CPU nào hoạt động
- Bộ nhớ chính: danh sách khối nhớ được cấp cho tiến trình
- Tài nguyên sử dụng: danh sách tài nguyên hệ thống mà tiến trình sửdụng, tạo lập
Thông tin giao tiếp : phản ánh các thông tin quan hệ với các tiến trình khác,mức độ ưu tiên
Thông tin thống kê mô tả sự hoạt động tiến trình như thời gian sử dụngCPU, thời gian chờ, các thông tin bảo mật
2.1.5 Các thao tác trên tiến trình
Hệ điều hành cung cấp các thao tác chủ yếu sau
đây trên một tiến trình:
-Tạo lập tiến trình: định danh tiến trình, đưa vào
danh sách quản lý , xác định độ ưu tiên, tạo PCB
và cấp phát tài nguyên, tạo ra cây tiến trình.Tiến
trình gọi lời hệ thống tạo tiến trình mới gọi là
tiến trình cha, tiến trình được tạo gọi là tiến trình
con Tiến trình cha cùng hoạt động với các tiến
trình con hay chờ các tiến tình con
A
H I Cây tiến trình
Trang 15-Kết thúc tiến trình : một tiến trình rời khỏi danh sách quản lý hệ thống, thu hồi các tài nguyên đã được cấp phát và huỷ bỏ PCB Các tiến trình con phảiđược rời khỏi hàng đợi trước tiến trình cha kết thúc.
- Tạm dừng tiến trình
- Tái kích hoạt tiến trình
- Phân phối các tiến trình
- Cho phép tiến trình trao đổi thông tin với các tiến trình đó
- Thay đổi độ ưu tiên của tiến trình
2.1.6 Điều phối các tiến trình
Để điều khiển các tiến trình ở nhiều trạng thái khác nhau, CPU phải tổ chức
cấp phát các tài nguyên cho các tiến trình từ hàng đợi dựa trên độ ưu tiên các tiếntrình, sao cho hiệu suất sử dụng CPU là tối ưu nhất Có hai loại điều phối, tuỳ thuộcvào vị trí định thời hệ thống:
- Long-term ( high – level ) scheduler
• Định thời trong việc cấp phát tài nguyên cho tiến trình
• Thực hiện một lần cho tiến trình
- Short term ( high – level ) scheduler
• Chọn tiến trình cho CPU xử lý
• Thực hiện có thể xẩy ra nhiều lần trong suốt thời gian sống của tiến trình
2.2 TRẠNG THÁI BỊ TRÌ HOÃN
2.2.1 Nguyên nhân bị trì hoãn
Để đồng bộ hoá các tiến trình,
CPU tạm thời thu hồi các tài nguyên
hệ thống làm cho một số tiến trình có
thể bị dừng lại và sau đó có thể khởi
động lại các tiến trình từ các tiến trình
cha Trạng thái bị trì hoãn có rất nhiều
nguyên nhân:
- Người dùng muốn dừng tiến độ
xử lý của quá trình để xem kết
quả thực hiện, phát hiện lỗi…
- Người quản trị hệ thống có thể
trì hoãn một số tiến trình để thu
hồi các một số tài nguyên của
tiến trình và hệ điều hành có
thể cấp phát cho quá trình khác
để giảm tình trạng quá tải
Suspend Resume
Suspend
Io wait event wait
Io completion event completion
Io completion event completion
Trang 16Trong trường hợp có tranh chấp tài nguyên giữa các tiến tình , việc trì hoãncó thể thoát khỏi trình trạng deadlock
2.2.2 Trạng thái bị trì hoãn
Nếu quá trình đang trạng thái sẵn sàng hay đang thực thi bị trì hoãn , nósẽ rơi vào trạng thái bị trì hoãn sẵn sàng (suspended ready )
Nếu quá trình đang trạng thái bị chặn bị trì hoãn, nó sẽ rơi vào trạng thái
bị trì hoãn sẵn sàng bị chặn (suspended blocked )
Trạng thái trì hoãn có thể thay đổi nếu người dùng thực hiện quá trình tiếp tục (resume)
Tiến trình có thể chuyển từ trạng thái trì hoãn bị chặn sang trạng thái trì hoãn sẵn sàng nếu có sự kiện tương ứng làm cho quá trình đó bị chặn xảyra
2.3 NGẮT QUẢNG
2.3.1 Khái niệm ngắt
Để tiến trình có thể thực hiện được chính xác, cần phải đồng bộ hoá giữa CPUvà các thiết bị ngoại vi Ngắt là phương tiện để các thiết bị thông báo CPU biếtviệc thay đổi trạng thái của mình
Ngắt làm cho ngừng tiến tình hiện thời để chuyển điều khiển sang một tiếntrình khác khi có một sự kiện xảy ra mà tiến trình hiện tại không biết
2.3.2 Qui trình xử lý ngắt
Việc xử lý ngắt là ghi nhận thời điểm xảy ra ngắt Nếu xử lý ngắt ngay lập tức
cho phép giải quyết nhiều yêu cầu nhưng làm mất câu lệnh hiện thời Nó chờ câulệnh hiện thời kết thúc rồi mới xử lý, hệ thống có bộ điều khiển ngắt thực hiện việcđịnh kỳ kiểm tra có tín hiệu ngắt hay không ?
Có rất nhiều phương pháp xử lý ngắt nhưng quy trình chung là:
•Thiết bị sinh ra tín hiệu gây ra interrupt cho
bộ xử lý
•Bộ xử lý hoàn tất lệnh đang thực thi
•Bộ xử lý xác định loại interrupt và gửi
phản hồi cho thiết bị sinh ra interrupt
•Bộ xử lý chuyển trạng thái của tiến trình
hiện thời (bộ đếm chương trình, nội dung
các thanh ghi, chế độ làm việc …) đưa tiến
trình vào hàng đợi
•Chuyển địa chỉ xử lý ngắt sang trình xử lý interrupt
•Khi tiến trình xử lý interrupt thực hiện xong, trạng thái của tiến trình cóthể khôi phục lại và tiến trình được tiếp tục xử lý
•Cho phép interrupt lồng nhau
Ngắt
Trình xử lý ngắt
Trang 17Một số hoạt động của xử lý ngắt phải được thực hiện ngay lập tức như : hệthống xử lý lỗi, nhớ trạng thái tiến trình ,… những chương trình này nằm sẵn trongtrình thường trú hệ điều hành, một số chương trình ít cấp thiết hơn thì đưa vào hàngđợi tuỳ theo mức ưu tiên của tiến trình.
2.3.3 Phân loại ngắt
Ngắt chia làm 2 loại ngắt trong và ngắt ngoài:
Ngắt trong là ngắt gây ra các sự kiện hoạt động của CPU bao gồm:
• Supervior call (SVC) khi tiến trình yêu cầu dịch vụ hệ thống, yêu cầu cấp phát tài nguyên Ngắt SVC ở mức ưu tiên cao nhất khi có các lệnh gọi hệ thống
• Program check : sinh ra khi thực thi chương trình bị lỗi ( như chia cho 0, vi phạm địa chỉ bộ nhớ, mã lệnh sai)
Ngắt ngoài sinh ra bởi các sự kiện nằm bên ngoài hệ thống : như tín hiệuđồng hồ, sự cố kỹ thuật bao gồm:
• I/O interrupt : do các thiết bị sinh ra khi chuyển trạng thái
• External interrupt : sinh ra từ đồng hồ hệ thống, bàn phím
• Restart interrupt : ngắt khởi động lại máy khi có sự cố xảy ra như các thiết bị hư hỏng
• Machine check : do nhà sản xuất tạo ra để kiểm tra thiết bị phầncứng
2.4 CHUYỂN NGỮ CẢNH ( CONTEXT – SWITCHING )
2.4.1 Trạng thái chuyển ngữ cảnh
Chuyển ngữ cảnh xảy ra khi hệï điều hành chuyển việc xử lý tiến trình từtrạng thái này đến trạng thái khác Khi chuyển ngữ cảnh xảy ra, trong hệ điều hànhbao gồm các chương trình con gọi là thẻ ngắt ưu tiên gọi là ngắt loại 1 được điềukhiển các tiến trình để xử lý – các thẻ ngắt SVC , thẻ I/O , thẻ external , thẻrestart, thẻ program check, thẻ machine check Khi ngắt xảy ra thì nó lưu trạngthái của tiến trình hiện hành, hướng tới các thẻ ngắt ưu tiên loại 1 để chọn tiếntrình mới để xử lý gọi là PSW Thẻ ngắt ưu tiên phải được phân biệt với các ngắtkhác gọi là ngắt loại 2
Mỗi context bao gồm : các giá trị thanh ghi chứa thông tin trạng thái của tiếntrình về trạng thái CPU , bộ nhớ Các thông tin này lưu trong một vùng nhớ gọi làPSW ( Program Status Word )
2.4.2 Các loại PSW
Các loại PSW điều khiển một cách có thứ tự của các chỉ thị thực hiện và chứacác các thông tin về trạng thái của tiến trình Có 3 loại chuyển ngữ cảnh : CurrentPSWs , New PSWs và Old PSWs
Địa chỉ của lệnh tiếp theo được giữ trong current PSW, nó cho phép interrupthiện thời được bật và các interrupt khác bị tắt Khi chuyển ngữ cảnh thì quá trình
Trang 18ngắt xảy ra, tạm thời tắt các ngắt của tiến trình khác.Tiến trình không bao giờ tắtngắt SVC, ngắt restart và một vài loại ngắt của chương trình Việc xảy ra bật vàtắt các ngắt được thực hiện trong suốt
SVC I/O External Restart Program check Machine check
SVC I/O External Restart Program check Machine check
Current PSW
Quá trình chuyển ngữ cảnh
Do đó, trong một bộ vi xử lý chỉ có 1 Current_PSW và 6 New_PSW và 6Old_PSW tương đương với 6 loại interrupt Quá trình chuyển ngữ cảnh xảy ra quasự thay đổi các PSW hệ thống Khi chuyển ngữ cảnh xảy ra, các bước hoán đổingữ cảnh xảy ra như sau:
_ Lưu Current PSW vào trong Old PSW
_ Lưu New PSW vào trong Current PSW
Sau khi hoán đổi PSW, Current PSW chứa địa chỉ một thẻ ngắt ưu tiên 1 Thẻngắt này thực hiện và thực hiện ngắt xảy ra Sau khi ngắt hoàn thành CPU phânphối tài nguyên có các ngắt khác theo một trong 2 chế độ: độc quyền(nonpreemtive) và không độc quyền (preemtive) Thực hiện độc quyền nó chiếmCPU cho đến khi thực hiện xong tiến trình và không độc quyền nó chỉ CPU khitiến trình trong trạng thái sẵn sàng
2.5 ĐIỀU PHỐI TIẾN TRÌNH
2.5.1 Mục tiêu
Để xử lý các tiến trình hệ điều hành có thể thay đổi trạng thái một cách luânphiên như thời gian sử dụng CPU, đợi việc xuất/nhập Sự thay đổi luân phiênthường xuyên để các tiến trình có thể trao đổi thông tin và nhiều người sử dụng Để thực hiện mục tiêu hệ điều hành phải chọn tiến trình tiếp theo để xử lý.Khi có nhiều quá trình cùng tồn tại trong hệ thống, bộ điều phối sẽ sử dụng mộtgiải thuật tối ưu để chọn thứ tự các tiến trình để CPU phục vụ một cách hiệu quả,tận dụng được thời gian của CPU Trong hệ điều hành cũng có một thành phầnkhác gọi là bộ phân phối (dispatcher) cùng với bộ điều phối chịu trách nhiệm
Trang 19chuyển đổi ngữ cảnh và trao CPU cho tiến trình được chọn bởi bộ điều phối để xửlý Một số mục tiêu đề ra để tối ưu hoá như sau:
tiến trình chờ đợi vô thời hạn
hoạt động 100 % thời gian
2.5.2 Các cấp độ điều phối
Công việc điều phối hệ điều hành thực hiện ở các cấp độ sau:
công việc (job) Xác định thời điểm tạo
tiến trình và nạp chương trình vào bộ
nhớ
định thời điểm tiến trình có thể tham
gia cạnh tranh với CPU với các tiến
trình khác
Bộ điều phối cần biết các tính chất của tiến trình là hướng xuất
nhập và hướng xử lý Để cân bằng hoạt động CPU, bộ điều phối có thểthực hiện trong việc chọn quá trình bị trì hoãn (suspended) nào đó đượcthực hiện trở lại
nhằm nâng cao hiệu suất của CPU
2.5.3 Hoạt động bộ điều phối
Hệ điều hành sử dụng 2 loại danh sách để thực hiện điều phối tiến trình làdanh sách sẵn sàng và danh sách đợi Khi 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ụ Các tác vụ sẽ đưa vào bộ nhớ chính và CPU tiếpnhận mới đưa vào danh sách sẵn sàng Bộ điều phối sẽ chọn một tiến trình trongdanh sách sẵn sàng và CPU tiếp nhận nó để xử lý Trong thời gian thực thi tiếntrình có thể :
- chuyển sang trạng thái chờ khi xảy ra sự kiện như đợi một thao tácxuất/nhập, nó sẽ chuyển từ trạng thái thực thi sang trạng thái bị chặn,
- hoặc hết thời gian thực hiện nó chuyển sang trạng thái sẵn sàng
Tiến trình có thể bắt buộc dừng lại xử lý do ngắt xảy ra gọi là trạng thái bịchặn , khi đó tiến trình được đưa vào danh sách sẵn sàng (chuyển sang trang tháisẵn sàng) để chờ được CPU cho lượt tiếp theo
Bộ đình thời tiến trình
enter JOB QUEUE READY QUEUE
I/O WAITING QUEUE
CPUend
Trang 20Tiến trình lặp lại chu kỳ này cho đến khi hoàn tất tác vụ (trạng thái kết thúc)thì được hệ thống huỷ bỏ khỏi danh sách điều phối.
Sử dụng CPU Sử dụng CPU Sử dụng CPU
Bắt đầu | | | | | | Kết thúc Đợi I/0 Đợi I/0
Sơ đồ thực hiện tiến trình
2.5.4 Bộ phân phối (Dispatcher)
• Sau khi bộ điều phối tiến trình thực hiện chọn lựa các tiến trình thích hợp đểgán vào CPU , bộ phân phối sẽ chịu trách nhiệm chuyển điều khiển CPU cho quátrình
• DISPATCHER sẽ thực hiện các bước chuyển ngữ cảnh:
- Chuyển ngữ cảnh sang cấp người dùng
- Nhảy sang một vị trí thích hợp của tiến trình và bắt đầu thực thi
2.5.5 Điều phối độc quyền và không độc quyền (preemtive / non preemtive)
Điều phối độc quyền: Cho phép một tiến trình khi nhận được CPU có quyền
độc chiếm CPU đến khi hoàn tất hoặc tự nguyện giải phóng CPU Trong lúc mộtquá trình khác thực thi không có quá trình nào khác có thể tham gia xử lý
Điều phối không độc quyền: Khi một tiến trình nhận được CPU, nó vẫn sử
dụng CPU đến khi hoàn tất hoặc tự nguyện giải phóng CPU, nhưng một tiến trìnhkhác có độ ưu tiên có thể giành quyền sử dung CPU của tiến trình ban đầu Nhưvậy tiến trình có thể bị tạm dừng hoạt động bất cứ lúc nào mà không báo trước Điều phối độc quyền thường được sử dụng trong các tiến trình ngắn, độ ưutiên cao Đối với hệ thống tương tác, các hệ thời gian thực thường dùng điều phốikhông độc quyền để có thời gian hồi đáp Điều phối không độc quyền có thuật toánphức tạp và chi phí cao hơn
2.5.6 Một số tiêu chuẩn điều phối
Yếu tố để đánh giá một số tiêu chuẩn điều phối là:
•Độ lợi CPU ( CPU utilization) : giữ CPU càng bận càng tốt
•Thông lượng ( throughput) : số quá trình hoàn tất trong một đơn vị thời gian càng nhiều càng tốt
• Thời gian xử lý (turn around time): được tính từ khi tiến trình bắt đầu cho tới khi tiến trình kết thúc chính là lượng thời gian để xử lý quá trình càng ít càngtốt
•Thời gian chờ ( waiting time) : luợng thời gian mà quá trình đợi trong hàng đợi sẵn sàng càng ít càng tốt
•Thời gian đáp ứng ( Respone Time) : khi tiến trình hoạt động trong hệ thống ,nó cần dùng CPU nhiều lần Mỗi lần cần dùng giờ CPU tiến trình đưa ra một
Trang 21yêu cầu, như vậy thời gian tính từ khi tiến trình có yêu cầu giờ CPU tới khiđược hệ thống phân bổ gọi là thời gian đáp ứng Càng cực tiểu thời gian đápứng càng tốt.
2.6 CÁC GIẢI THUẬT ĐIỀU PHỐI
2.6.1 Giải thuật FIFO ( First In First Out)
• 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àng đợi sớm nhất
• Tiến trình nào vào trước thì được phục vụ trước
• Điều phối theo kiểu độc quyền (preemtpive)
_ Thời gian xử lý của 3 tiến trình : P1:24s , P2:29s , P3:31s
_ Thời gian xử lý trung bình : (24 +29 +31)/3 =28
_ Thời gian đợi của 3 tiến trình : P1:0s , P2: 24s , P3:29s
_ Thời gian đợi trung bình : ( 0 + 24 +29)/3=17.67s
Thí dụ 2:
• Giả sử thời gian đến của các tiến trình có thay đổi như sau : P3->P2->P1
• Khi đó thứ tự thực thi cho 3 tiến trình P3->P2->P1
Biểu đồ găng thể hiện thứ tự điều phối là:
P3 P2 P1
0 2 7 31
_ Thời gian xử lý của 3 tiến trình : P3::2s , P2:7s , P1:31s
_ Thời gian xử lý trung bình : (2 +7 +31) /3 =13.3
_ Thời gian đợi của 3 tiến trình : P1:0s , P2: 2s , P3:7s
_ Thời gian đợi trung bình của 3 tiến trình : ( 0 + 2 +7)/3=2s
Nhận xét
Thời gian đợi trung bình và thời gian xử lý trung bình không cực tiểu Cóthể xảy ra hiện tượng tích luỹ thời gian chờ khi các tiến trình (có yêu cầu
Trang 22thời gian ngắn) phải chờ đợi một tiến trình có yêu cầu thời gian dài khi kếtthúc.
Giải thuật này không phù hợp với hệ phân chia thời gian, trong các hệ nàycần cho phép mỗi tiến trình được cấp phát CPU đều đặn
2.6.2 Giải thuật Shortest Job First ( SJF)
Giải thuật SJF xác định thứ tự ưu tiên thực hiện tiến trình dựa vào tổng thờigian thực hiện tiến tình
• Điều phối theo kiểu độc quyền
• Tiến trình nào có thời gian ngắn nhất sẽ được phục vụ trước
• Việc điều phối sau khi có tiến trình kết thúc,
Điều phối lại:
P1 P3 P2
0 7 9 13
_ Thời gian xử lý của 3 tiến trình : P1:7s , P2:12s , P3:4s
_ Thời gian xử lý trung bình: (7 +12 +4) /3 =7.67s
_ Thời gian đợi của 3 tiến trình: P1:0s , P2: 8s , P3:2s
_ Thời gian đợi trung bình của 3 tiến trình: ( 0 + 8 +2)/3=3.3s
Nhận xét
• Nếu có các tiến trình có thời gian thực hiện ngắn thì loại bỏ các tiến trìnhngắn trong hàng đợi Nếu các tiến trình ngắn đến liên tục thì giải thuật xửlý các tiến trình có thể đưa về FIFO
• Nhược điểm chính của giải thuật là chế độ phân phối giờ CPU cũng đượcáp dụng trong trường hợp ngắt các tiến trình dài đang thực hiện để phục vụtiến trình ngắn hơn trong hàng đợi, có thể trì hoãn các tiến trình dài nếucác tiến trình ngắn đến liên tục
2.6.3 SRT ( Shortest Remaining Time)
Tương tự như giải thuật của SJF độ ưu tiên các tiến trình dựa vào thời giancần thiết để thực hiện nốt các tiến trình (bằng tổng thời gian trừ đi thời gian đã
Trang 23thực hiện), do đó phải thường xuyên cập nhật thông tin về các tiến trình) Chi tiếtgiải thuật này như sau:
• Điều phối theo kiểu preemptive
• Tiến trình nào có thời gian xử lý còn lại nhỏ nhất thì xử lý trước
• Việc điều phối được thực hiện ngay khi có tiến trình đến hệ thống
_ Thời gian xử lý của 3 tiến trình : P1:11s , P2:2s , P3:2s
_ Thời gian xử lý trung bình : (11 +2 +2) /3 =5s
_ Thời gian đợi của 3 tiến trình : P1:4s , P2: 0s , P3:0s
_ Thời gian đợi trung bình : ( 4 + 0 +0)/3=1.3s
• Điều phối theo kiểu SFJ và SRT có thể gây ra trì hoãn vô hạn định
• Khi các tiến trình có thời gian xử lý nhỏ đến liên tục thì có kết quả gần giống với giải thuật FIFO
2.6.4 Round Robin
Danh sách sẵn sàng được xử lý như một danh sách vòng, bộ điều phối sẽ lầnlượt cấp phát cho từng tiến trình trong theo giải thuật sau:
• Định thời theo kiểu non-preemptive
• Quá trình chỉ được chiếm CPU trong khoảng thời gian q (quantum time) Nếu trong khoảng thời gian đó quá trình chưa kết thúc thì nó trả CPU lại cho hệ điều hành và quay cuối hành đợi Ready
Trang 24Processor
q
Thí dụï:
Cho các tiến trình như hình bên
Hệ thống định thời theo giải thuật Tiến trình Tgđến Tg thực thi Round Robin với quantum time P1 0 7
( 1 s ) có thứ tự định thời nh sau : P2 3 2
Giả sử q rất lớn thì trở thành FIFO
Nếu q rất nhỏ thì thời gian CPU phục vụ cho các quá trình ít đi
2.6.5 HRRN ( Highest Reponse Ratio Next )
Mỗi tiến trình được gán cho một ưu tiên tương ứng và việc thực hiện giải thuật dựa trên sự ưu tiên này Đây là giải thuật:
• Cải tiến giải thuật SJF
• Thực hiện theo kiểu điều phối độc quyền
• Độ ưu tiên của tiến trình sẽ tính theo công thức
p= (tw + ts) /ts
tw: thời gian đợi trong hàng đợi ready
ts : thời gian mà tiến trình cần CPU phục vụ
• Tiến trình nào có độ ưu tiên lớn nhất sẽ phục vụ trước
Thí dụ :
Cho 3 tiến trình đến hệ Tiến trình Tgđến Tg thực thi Khi quá trình P1 kết thúc Hệ thống P1 0 7
Trang 25Sẽ định thời lại P2 1 4
Độ ưu tiên được tính : P3 5 2
• Tránh trì hoãn vô hạn định
• Ưu tiên cho quá trình nào cho thời gian xử lý nhỏ
• Ưu tiên cho quá trình nào có thời gian đợi lớn
Do các giải thuật SJF , SRT, HRRN có đầu vào là thời gian thực thi của tiến trình ngẫu nhiên nên giải thuật này khó áp dụng trong thực tế
• Cũng có một số giải pháp để dự đoán trước như : WCET (Worst Case Execution Time) , Complexity , Tracing
2.6.6 Multilevel Feeback Queue
MLFQ là một giải thuật tổng quát nhất
để điều phối các tiến tình như sau :
• Định thời theo kiểu
preemptive
• Hệ thống gồm n hàng đợi
• Các hàng đợi từ 1 đến n-1 được định nghĩa theo kiểu FIFO có cácquantum time lần lượt là q1,q2 , q3, , qn (thông thường q1 < q2 < q3 < < qn)
• Nếu tiến trình trong hàng đợi thứ k (1 <= k <=n –1 ) chiếm CPU hết thời gian qk thì nó sẽ xếp vào cuối hàng thứ k +1
• Các tiến trình trong hàng đợi thứ k ( 2 <=k <=n ) chỉ được phục vụ nếukhông có tiến trình nào trong tất cả hàng đợi từ 1 đến k-1
• Các tiến trình ở hàng đợi thứ n được phục vụ theo kiểu Round Robin
Nhận xét
• Đầu vào không cần thông số về thời gian thực thi quá trình
• Kết quả định thời gần giống với giải thuật SJF
• Để điều phối các tiến trình theo thuật toán này cần chú ý thêm :
- Số lượng hàng đợi sao cho hợp lý
- Chọn thuật toán thích hợp cho mỗi hàng đợi
- Tiêu chuẩn và cách thúc hạï mức một tiến trình
- Tiêu chuẩn và cách thức nâng mức một tiến trình
- Tiêu chuẩn và cách thức để chỉ định một tiến trình mới phát sinh để đưa vào hàng đợi
Trang 26CÂU HỎI VÀ BÀI TẬP
1 Tiến trình là gì ? Cho ví dụ minh hoạ
2 Định nghĩa và phân biệt : chương trình , thủ tục , tiến trình , tiến trình người dùng , tác vụ
3 Cho ví dụ các loại ngắt sau:
a SVC b I/O
c external d restart
e program check f machine check
4 Giải thích tại sao có sự treo hệ thống máy tính
5 Tại sao nói : “Việc chuyển ngữ cảnh thì xảy ra ngắt” ? Cho ví dụ minh hoạ
6 Trình bày các thuật toán lập lịch CPU
7 Cho dãy tiến trình với thời gian thực hiện như sau :
Tiến trình T/g đến T/g thực thi
b Trong các giải thuật, giải thuật nào ưu việt nhất
c Tính thời gian chờ đợi trung bình của các tiến trình trong mỗi giải thuật Giải thuật nào có độ trung bình đợi ngắn nhất
Trang 27
• Trong hệ thống có thể tồn tại nhiều tiến trình tại một thời điểm
• Nếu hệ thống có một CPU, các tiến trình sẽ chia sẻ thời gian phục vụ củaCPU Bằng các thuật toán lập lịch của CPU các tiến trình được chuyển ngữcảnh qua lại liên tục có thể tới hàng triệu lần trong một đơn vị thời gian, tacảm thấy các tiến trình được thực hiện một cách đồng thời (cocurrent )
• Nếu hệ thống có nhiều CPU, mỗi CPU có thể phục vụ cho một tiến trình.Các tiến trình đó được phục vụ song song ( parallel )
Thực hiện các tiến trình 1 CPU Thực hiện các tiến trình nhiều CPU
Trong việc xử lý các tiến trình đồng thời có nhiều ngôn ngữ hỗ trợ song song.
Một trong cấu trúc song song hay sử dụng là CoBegin CoEnd hay ParBegin …
ParEnd Để minh họa, chúng ta sử dụng cấu trúc ParBegin … ParEnd
• Cấu trúc song song ParBegin … ParEnd được phát biểu như sau:
Parbegin
S1;
Trang 28S2 ;
…
Sn
Parend;
Như vậy, trong một hệ thống chương trình bao gồm nhiều đoạn ParBegin …
ParEnd Các đoạn ParBegin … ParEnd ấy phải được xử lý một cách tuần tự Các
lệnh trong khối ParBegin … ParEnd phải được xử lý song song nghĩa là các tiến
trình để thực hiện trong các lệnh ấy phải được thực hiện trong các luồng khác nhau.Cách tính toán song song có thể giảm thời gian thực thi của hệ thống Tuỳ theoquan hệ các tiến trình và cấu trúc dữ liệu của chúng mà có thể lập lịch song songtừng đoạn hay không ?
Thí dụ 1: Tính biểu thức : S:= -x + 2*y + (x+2) *( y-1)
Các công việc tuần tự như sau theo 7 bước như sau:
temp5 :=temp1 + temp2 ;
temp6 := temp3 * temp4 ;
ParEnd ;
s:=temp6 +temp7
So với xử lý tuần tự thực hiện 7 lệnh nhưng xử lý song song chỉ thực hiện có 3lệnh
Thí dụ 2: Tính biểu thức : x:=(-b + (b*2 – 4*a*c)*0.5)/(2*a)
Ta có thể ước lượng 6 lệnh để xử lý song song như sau :
1 ParBegin
temp1 := -b ;
temp2:= b*2 ;
temp3 := 4*a ;
Trang 293.2 XỬ LÝ TRANH CHẤP HỆ THỐNG
3.2.1 Vấn đề tranh chấp hệ thống
Nếu có nhiều quá trình tồn tại trong hệ thống thì xảy ra việc tranh chấp dữ
liệu
Thí dụ 1: Có 2 tiến trình P1 và P2 cùng hoạt P1 P2
động song song: 1 a:= 10 1 read(a) Parbegin 2 b:=20 2 a:=a+1 P1; 3 a:=a+b 3 print(a)
P2;
Parend
Nếu P1 và P2 chạy đồng thời thì kết quả không xác định trước
Thí dụ 2: Có 2 tiến trình P và Q cùng hoạt động song song
Proccess P a:=100 Proccess Q
a:= a+1 a:= a +2
EndProcces EndProccess
1 LOAD A,R1 4 LOAD A,R1
2 INC R1,1 5 INC R1,1
3 STO R1,A 6 STO R1,A
Các tiến trình này có các lệnh hợp ngữ tương ứng như trên Ta thực hiện cáclệnh theo thứ tự như sau : 1 , 4 ,5 ,6 ,2 , 3 ta có kết quả là a= 101 và không baogiờ bằng 103 Để hạn chế việc sử dụng dữ liệu và cập nhật các dữ liệu khôngthống nhất ta giải quyết những vấn đề tranh chấp dữ liệu Trong các tình huốngtrên việc đọc và ghi dữ liệu của 2 tiến trình đồng thời kết quả phụ thuộc vào sự lập
lịch CPU và được gọi là tình huống tranh đoạt điều khiển ( race condition)
3.2.2 Miền găng (Gantt):
Để ngăn chặn các tình huống lỗi có thể xảy ra khi nảy sinh các tiến trình truyxuất đồng thời một tài nguyên không thể chia sẻ, cần phải truy xuất độïc quyền trêntài nguyên đó Nếu có nhiều tiến trình truy xuất và có thể dẫn đến tranh chấp gọi
Trang 30là vùng tranh chấp (criticial section) hay miền găng Nguyên tắc chung để tránhtranh chấp:
- Một tiến trình đang thao tác trên tài nguyên thì tiến trình khác phải đợi chođến khi tiến tình đang thao tác hoàn tất công việc
- Loại trừ tương hỗ ( mutual exclusion ) : không có hai tiến trình trong vùnggăng
criticial section
3.2.3 Giao thức giải quyết tranh chấp
• Giải quyết tranh chấp
Khi một tiến trình vào thao tác trên vùng tranh chấp thì các tiến trình khácmuốn vào vùng tranh chấp thì phải đợi Khi tiến trình trong vùng tranh chấp rakhỏi vùng tranh chấp thì một trong số các tiến trình đang đợi được vào vùng tranhchấp , còn các tiến trình khác phải tiếp tục đợi
• Mỗi tiến trình tham gia vào vùng tranh chấp thực hiện các công việc nhưsau :
• Nguyên tắc hoạt động khi vào vùng găng
_ Khi một tiến trình gọi enter_mutual_exclusion và không có tiến trình nào
trong vùng tranh chấp thì tiến trình thứ nhất được vào vùng tranh chấp để thao tác _ Nếu có một tiến trình ở trong vùng tranh chấp tiến trình thực thi
enter_mutual_exclusion phải đợi cho đến khi tiến trình ở trong vùng tranh chấp
thực thi exit_mutual_exclusion xong thì nó mới vào được trong vùng tranh chấp _ Nếu có nhiều tiến trình cùng thực hiện enter_mutual_exclusion thì chỉ có
một quá trình được chọn vào vùng tranh chấp
3.2.4 Nguyên tắc giải quyết tranh chấp:
• Các lệnh phần mềm không thể phân chia nhỏ được
• Các tiến trình đồng thời có thể không đồng bộ nhau
• Quá trình ngoài vùng tranh chấp không có quyền cấm các tiến trình khác xin vào vùng tranh chấp
Trang 31• Tiến trình không bị trì hoãn vô hạn định khi vào vùng tranh chấp
3.3 PHƯƠNG PHÁP GIẢI QUYẾT TRANH CHẤP
3.3.1 Giới thiệu
Có nhiều phương pháp được thực hiện để giải quyết tranh chấp: phần mềm,phần cứng, hệ điều hành Các giải pháp này phân biệt hai lớp tuỳ theo cách tiếp
cận trong cách xử lý các tiến trình bị khoá : “busy-waiting” hay “sleep wakeup”.
Busy waiting : quá trình vẫn chiếm CPU khi không vào vùng tranh chấp được
dùng để kiểm tra điều kiện
Sleep and wakeup : ngược lại phương pháp trên.
Phương pháp phần mềm dựa trên các tiến trình đồng bộ với nhau bằng giảithuật phần mềm mà không có sự hỗ trợ phần cứng hoặc hệ điều hành Có các giảithuật thông dụng của phần mềm: Dekker, Perteson, Bakery
Để đồng bộ các tiến trình phải can thiệp vào phần cứng TEST AND SET
_ Sử dụng cơ chế (cơ hiệu ) semaphore để đồng bộ các quá trình
_ Thực hiện theo cơ chế sleep-wakeup
3.3.2 Các phương pháp phần mềm
địa chỉ nào đó của bộ nhớ trong, thì giải thuật chỉ cho phép một tiến trình đượcthực hiện trong vùng găng còn các tiến trình khác phải chờ
Mỗi tiến trình sử dụng một byte trong bộ nhớ để làm khoá Khi tiến trình vàođoạn tới hạn, byte khoá được gán giá trị bằng 1 để thông báo cho các tiến trình cònlại biết tài nguyên găng được sử dụng khác Khi ra khỏi vùng tới hạn byte khoáđược gán giá trị =0 để để thông báo tài nguyên găng được giải phóng
Trước khi vào đoạn tới hạn, các tiến trình phải kiểm tra byte khoá của cáctiến trình khác Nếu có byte nào chứa giá trị =1 thì phải chờ cho tới byte đó nhậngiá trị =0
Thuật toán cho bài toán 2 tiến trình:
Trang 32Nhận xét: Nhược điểm của giải thuật trên là không đảm bảo sự loại trừ tương
hỗ Giả sử tiến trình 1 thực hiện rất nhanh so với tiến hình 2 và tiến trình 1 còntrong đoạn tới hạn, tiến trình 2 đang chờ để vào đoạn tới hạn Sau khi tiến trình 1 rakhỏi đoạn tới hạn thì K1=0 và tiến trình 2 chờ để vào đoạn tới hạn nhưng chưa vàođoạn tới hạn nên K2 #1 Trong khi đó tiến trình 1 thực hiện xong nhiệm vụ củamình và quay về đầu tiến trình Vì K2 #1 nên tiến trình 1 có thể thực hiện phépgán K1=1 dẫn đến 2 tiến trình cùng vào miền găng
Để khắc phục tình trạng trên, Derker đưa ra 4 giải thuật Trong giải thuật
cuối cùng để hạn chế 2 tiến trình cùng vào miền găng, Derker dùng thêm 1 biến
TT là biến lượt thay phiên của các tiến trình Khi TT=1 thì đến lượt của tiến trình 1và TT=2 là đến lượt của tiến trình 2
Program Dekker_Algorithm ;
Var K1,K2 ,TT: byte ;
Procedure P 1;
Begin
Trang 33Repeat
TT:=1 ; (* Đến lượt tiến trình 1 *)
(* Chờ tiến trình 2 thực hiện xong *)
TT:=2 ; (* Đến lượt tiến trình 2 *)
(* Chờ tiến trình 1 thực hiện xong *)
Trang 34Nhận xét: Hai tiến trình sử dụng một biến chung là TT phản ánh phiên tiến
trình được vào miền găng, được khởi động với giá trị bằng 1, nếu TT=1 tiến trìnhP1 được vào miền găng , TT=2 tiến trình P1 đi vào một vòng lặp chờ đến khi TTnhận giá trị 1 Khi nó rời khỏi miền găng nó đặt lại TT= 2 cho phép P2 được vàomiền găng
Thuật toán Dekker giải quyết bài toán đoạn tới hạn trong mọi trường hợp dù tốcđộ thực hiện các tiến trình khác nhau Thuật toán quá phức tạp khi áp dụng thực tế.Độ phức tạp của thuật toán sẽ tăng khi số tiến trình nhiều hoặc số lượng đoạn tớihạn trong các tiến trình lớn, các tiến trình phải chờ đợi trong tình trạng vô hạnđịnh
Để cải tiến tình trạng chờ đợi vô hạn định, Peterson kết hợp phương phápkhoá trong và thuật toán Dekker làm gọn lại giải thuật.Tuy vậy thuật toán cũngkhông cải thiện gì nhiều so với Dekker , sự kiểm tra các tiến trình quá phức tạp, tốcđộ thực toán khó áp dụng trong thực tế
Trang 35Giải pháp cấm ngắt không được ưa chuộng, vì cho phép tiến tình can thiệpsâu vào hệ thống làm cho hệ thống có thể trì hoãn vĩnh viễn Hơn nữa đối với hệthống nhiều vi xử lý, việc cấm ngắt chỉ có tác dụng với một vi xử lý không ảnhhưởng các vi xử lý khác
Đây là một giải pháp đòi hỏi có sự hỗ trợï của phần cứng Nhiều hệ thốngmáy tính cài đặt các chỉ thị này cho phép kiểm tra và xác lập nội dung một vùngnhớ không thể tách rời
Cơ chế chỉ thị này dùng 2 tham số : biến chung G và biến riêng L (biến chung
G thông thường là một bít trong thanh ghi cờ Chỉ thị TSL(L) thực hiện 3 thao tácsau liên tục không bị ngắt quảng :
read G ; (* đọc giá trị biến chung *)
L = G ; (* gán giá trị biến chung cho biến riêng *)
G =1 ; (* L, G : kiểu boolean *)
Nếu có hai chỉ thị xử lý đồng thời (trên hai bộ xử lý khác nhau), chúng sẽxử lý tuần tự Biến G gọi là khoá, nếu biến G=0 thì tiến trình có thể vào miềngăng
Program Test_and_Set_Algorithm ;
Var L1,L2,G ,TT: byte ;
Procedure P 1;
Begin
Trang 36Nhận xét: phương pháp này đơn giản , độ phức tạp không tăng khi số tiến trình
và số đoạn giới hạn tăng Nhưng tiến trình vẫn phải chờ đợi tích cực, khó xác địnhđược tiến trình nào sẽ vào đoạn tới hạn khi có nhiều giá trình cùng chờ
3.3.4 Phương pháp do hệ điều hành hỗ trợ
Các giải pháp này tiếp cận theo hướng cho một tiến trình chưa đủ điều kiệnvào miền găng chuyển sang trạng thái bị chặn (blocked) Để thực hiện điều này,cần phải sử dụng các giải pháp do hệ điều hành cung cấp để thay đổi trạng thái củahai tiến trình Hai thủ tục SLEEP và WAKEUP được sử dụng để phục vụ điều này
Ý tưởng của giải pháp này này như sau : nếu một tiến trình chưa đủ điều kiệnvào miền găng nó gọi SLEEP để tự khoá lại và chờ một tiến trình khác gọi
Trang 37WAKEUP để “đánh thức” nó Một tiến trình gọi WAKEUP khi ra khỏi miền găngđể đánh thức một tiến trình đang chờ.
Giải thuật chung của Sleep và Wakeup là :
Procedure Sleep_Wakeup;
Var busy , blocked : byte ;
(* Busy =1 nếu miền găng đang bị chiếm , blocked số tiến trình bị khoá*)
Cơ chế SLEEP và WAKEUP có thể gây hai tiến trình cùng bị SLEEP, nghĩa
là rơi vào trình trạng vô hạn định Thí dụ tình huống như sau : giả sử tiến trình P1vào miền găng và trước khi rời khỏi miền găng thì tiến trình P2 được kích hoạt Tiến trình P2 thử vào miền găng và thấy tiến trình P1 vẫn còn trong miền găng , dođó P2 tăng biến đếm blocked và chuẩn bị gọi SLEEP để tự khoá Tuy nhiên trướckhi P2 tự khoá, tiến trình P1 lại tái kích hoạt và ra khỏi miền găng Khi ra khỏimiền găng thấy có một tiến trình đang chờ nên gọi WAKEUP và làm giảm giá trịblocked Khi đó tín hiệu WAKEUP sẽ lạc mất do P2 chưa thật sự “ngủ “ để nhậntín hiệu đánh thức Tiến trình P2 tiếp tục xử lý và rơi vào trạng thái ngủ và tự khoávĩnh viễn
Tình trạng lỗi này là do không đồng bộ, việc gọi các tín hiệu SLEEP vàWAKEUP không đồng bộ và bị ngắt giữa chừng làm cho tín hiệu WAKE gởi sẽ bị
Trang 38mất Do đó để vào miền găng một cách an toàn, DIJKSTRA đề xuất một giải phápdùng một biến semaphore để đồng bộ hoá các tiến trình.
Semaphores ( cờ hiệu ) là biến nguyên s được hệ điều hành bảo vệ Có 2 loạisemaphore : binary ( có giá trị là 0 ,1 để đồng bộ cho 2 tiến trình ) và counting(có giá trị từ 2 trở lên để đồng bộ cho nhiều tiến trình) Để sử dụng giải pháp nàydùng một hàng đợi để lưu danh sách các tiến trình khoá chờ trên semaphore s.Người dùng truy cập qua hai thao tác là UP và DOWN
Định nghiã cho thao tác DOWN() trên s
s:= s-1;
If s >=0 then tiếp_tục_thực_hiện_tiến_tình
else đưa_tiến trình_vào_hàng_đợi ;
Định nghiã cho thao tác UP() trên s
s:= s+1;
If s <= 0 đưa_tiến trình_trong_hàng_đợi_vào_đoạn_ tới_hạn ;
- Phép DOWN() và UP() không bị phân chia trong tiến trình thực hiện
- Nếu ban đầu s=1 và cả hai tiến trình đưa ra phép DOWN() chỉ chỉ có mộttiến trình vào đoạn giới hạn, tiến trình còn lại đưa vào hàng đợi
Trang 39Nhận xét : Mỗi tiến trình chỉ kiểm tra quyền vào đoạn tới hạn một lần , sau
đó được đưa vào đoạn tới hạn hay vào hàng đợi Trong khi đợi, tiến trình không ởtrạng thái tích cực vì khi một tiến trình ra khỏi hàng đợi nó sẽ bật tín hiệu đưa tiếntrình thoát khỏi trạng thái chờ vào đoạn tới hạn Phương pháp dùng cờ hiệusemaphore tương đối thực tế, dễ cài đặt trong các hệ điều hành Để sử dụng hiệuquả cần phải áp dụng các thuật toán xử lý trên hàng đợi cho tối ưu
3.3.5 Đồng bộ cho nhiều quá trình
Nếu có nhiều hơn 2 quá trình ta cũng có thể dùng các giải pháp sau :
• Dùng semaphore
• Dùng giải pháp phần cứng
• Giải thuật Barkery
• Trước khi vào vùng tranh chấp , mỗi quá trình chọn cho mình một con số
• Quá trình nào giữ số nhỏ nhất sẽ được vào vùng tranh chấp
• Nếu quá trinh Pi và Pj giữ hai số bằng nhau thì quá trình Pi sẽ được vào vùng tranh chấp nếu i < j
• Các giá trị mà các quá trình có được là một dãy không giảm : 1,2,3,3,3,4,5
3.3.6 Các phương pháp khác
Trình thư ký là bộ các thủ tục và cấu trúc thông tin động, hoạt động trong chếđộ phân chia thời gian, hỗ trợ việc thực hiện tiến trình Một thời điểm chỉ có mộttiến trình làm việc được với monitor
Khi tiến trình muốn sử dụng tài nguyên, hệ thống gắn monitor vào tiến trình Nếu được phép sử dụng tài nguyên thì tiến trình tiếp tục bình thường nếu không thìtiến trình xếp vào hàng đợi
Khi tài nguyên găng được giải phóng thì monitor nhận điều khiển và bật tínhiệu giả phóng các tiến trình khỏi tình trạng chờ
Như vậy, monitor không phải là một tiến trình mà chỉ là một đối tượng thụđộng Nó nằm ngoài tiến trình để theo dõi cấp phát tài nguyên Do đó monitor đượckích hoạt khi tiến trình cần sử dụng tài nguyên
Trang 40Monitor sử dụng nhiều cấu trúc thông tin động nên nó có thể giải quyết tốt vấnđề đoạn tới hạn, do tính phổ dụng của nó nên được cài đặt vào nhiều hệ điều hành.Mặt khác, monitor cũng có thể là tài nguyên găng.
Hệ điều hành xây dựng một hệ thống thông báo giữa các tiến trình dựa trên các nguyên tắc cơ bản :
Send message : Gửi thông báo
Receive message: Nhận thông báo
Communication : Tạo móc nối giữa các tiến trình
Các tiến trình liên lạc bằng cách trao đổi các thông báo cho nhau , phối hợp đểvào đoạn tới hạn Hệ thống thông báo tổ chức theo 2 cách : trực tiếp thì cập nhật dữliệu cho nhau và gián tiếp thì sử dụng một hộp thư trung gian
3.4 DEADLOCK
3.4 1 Định nghĩa và thí dụ
sự kiện đó không bao giờ xảy ra
Một hệ thống bị deadlock nếu có một quá trình nào đó bị deadlock
Nói cách khác, mỗi tiến trình trong một tập hợp đều chờ cấp phát tài nguyênhiện tiến trình đó bị blocked chiếm giữ Như vậy, không có tiến trình nào được xửlý, cũng như giải phóng tài nguyên khác cho các quá trình khác sử dụng, tất cả cácquá trình bị khoá vĩnh viễn
Thí dụ 1 : thực tế tình trạng tắc nghẽn giao thông ở các đô thị lớn
Thí dụ 2 : Vấn đề ăn tối của các triết gia
Năm nhà triết học cùng ăn tối với món spagheti nổi tiếng Mỗi triết gia cóthể dùng 2 cái nĩa để ăn bánh mì Nhưng trên bàn ăn chỉ có 5 cái nĩa và xen kẽ 5cái đĩa Mỗi nhà triết học sẽ ngẫm nghĩ các triết lý của mình khi cảm thấy đói thìdự định lần lượt cầm một cái nĩa bên trái và một cái nĩa bên phải để ăn Nếu 5 nhàtriết học đều cầm cái đĩa bên trái cùng một lúc , thì sẽ không có ai được cái nĩa bênphải để bắt đầu ăn món spagheti