Giáo trình Hệ điều hành: Phần 1

48 9 0
Giáo trình Hệ điều hành: Phần 1

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

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

Thông tin tài liệu

Phần 1 Giáo trình Hệ điều hành gồm nội dung 5 bài học đầu tiên: Tổng quan về hệ điều hành, các mô hình xử lý đồng hành, quản lý tiến trình, liên lạc giữa các tiến trình & vấn đề đồng bộ hóa, các giải pháp đồng bộ hóa. Mời các bạn cùng tham khảo nội dung chi tiết giáo trình.

BÀI 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH I.KHÁI NIỆM VỀ HỆ ĐIỀU HÀNH Hệ điều hành chương trình hay hệ chương trình hoạt động người sử dụng (user) phần cứng máy tính Mục tiêu hệ điều hành cung cấp môi trường để người sử dụng thi hành chương trình Nó làm cho máy tính dể sử dụng hơn, thuận lợi hiệu Hệ điều hành phần quan trọng hầu hết hệ thống máy tính Một hệ thống máy tính thường chia làm bốn phần : phần cứng, hệ điều hành, chương trình ứng dụng người sử dụng Phần cứng bao gồm CPU, nhớ, thiết bị nhập xuất, tài nguyên máy tính Chương trình ứng dụng chương trình dịch, hệ thống sở liệu, trò chơi, chương trình thương mại Các chương trình sử dụng tài nguyên máy tính để giải yêu cầu người sử dụng Hệ điều hành điều khiển phối hợp việc sử dụng phần cứng cho ứng dụng khác nhiều người sử dụng khác Hệ điều hành cung cấp môi trường mà chương trình làm việc hữu hiệu Hình 1.1 Mơ hình trừu tượng hệ thống máy tính Hệ điều hành coi phân phối tài nguyên máy tính Nhiều tài nguyên máy tính thời gian sử dụng CPU, vùng nhớ, vùng lưu trữ tập tin, thiết bị nhập xuất v.v… chương trình yêu cầu để giải vấn đề Hệ điều hành hoạt động quản lý tài nguyên phân phối chúng cho chương trình người sử dụng cần thiết Do có nhiều yêu cầu, hệ điều hành phải giải vấn đề tranh chấp phải định cấp phát tài nguyên cho yêu cầu theo thứ tự để hoạt động máy tính hiệu Một hệ điều hành coi chương trình kiểm sốt việc sử dụng máy tính, đặc biệt thiết bị nhập xuất Tuy nhiên, nhìn chung chưa có định nghĩa hồn hảo hệ điều hành Hệ điều hành tồn để giải vấn đề sử dụng hệ thống máy tính Mục tiêu giúp cho việc thi hành chương trình dễ dàng Mục tiêu thứ hai hỗ trợ cho thao tác hệ thống máy tính hiệu Mục tiêu đặc biệt quan trọng hệ thống nhiều người dùng hệ thống lớn(phần cứng + quy mô sử dụng) Tuy nhiên hai mục tiêu có phần tương phản lý thuyết hệ điều hành tập trung vào việc tối ưu hóa việc sử dụng tài nguyên máy tính II.PHÂN LOẠI HỆ ĐIỀU HÀNH II.1 Hệ thống xử lý theo lô Bộ giám sát thường trực : Khi công việc chấm dứt, hệ thống thực công việc mà khơng cần can thiệp người lập trình, thời gian thực mau Một chương trình, cịn gọi giám sát thường trực thiết kế để giám sát việc thực dãy cơng việc cách tự động, chương trình ln ln thường trú nhớ Hệ điều hành theo lô thực công việc theo thị định trước CPU thao tác nhập xuất : CPU thường hay nhàn rỗi tốc độ làm việc thiết bị nhập xuất (thường thiết bị cơ) chậm nhiều lần so với thiết bị điện tử Cho dù CPU chậm nhất, nhanh nhiều lần so với thiết bị nhập xuất Do phải có phương pháp để đồng hóa việc hoạt động CPU thao tác nhập xuất Xử lý off_line : Xử lý off_line thay CPU phải đọc trực tiếp từ thiết bị nhập xuất thiết bị xuất, hệ thống dùng lưu trữ trung gian CPU thao thác với phận Việc đọc hay xuất đến từ lưu trữ trung gian Spooling : Spool (simultaneous peripheral operation on-line) đồng hóa thao tác bên ngồi on-line Cơ chế cho phép xử lý CPU on-line, sử dụng đĩa để lưu liệu nhập xuất II.2 Hệ thống xử lý theo lô đa chương Khi có nhiều cơng việc truy xuất lên thiết bị, vấn đề lập lịch cho công việc cần thiết Khía cạnh quan trọng việc lập lịch khả đa chương Đa chương (multiprogram) gia tăng khai thác CPU cách tổ chức công việc cho CPU ln ln phải tình trạng làm việc Ý tưởng sau : hệ điều hành lưu giữ phần công việc nơi lưu trữ nhớ CPU thực phần công việc Khi thực hiện, có yêu cầu truy xuất thiết bị CPU khơng nghỉ mà thực tiếp cơng việc thứ hai… Với hệ đa chương hệ điều hành định cho người sử dụng vậy, hệ điều hành đa chương tinh vi Hệ phải xử lý vấn đề lập lịch cho công việc, lập lịch cho nhớ cho CPU II.3 Hệ thống chia xẻ thời gian Hệ thống chia xẻ thời gian mở rộng logic hệ đa chương Hệ thống gọi hệ thống đa nhiệm (multitasking) Nhiều công việc thực thông qua chế chuyển đổi CPU hệ đa chương thời gian lần chuyển đổi diễn nhanh Hệ thống chia xẻ phát triển để cung cấp việc sử dụng bên máy tính có giá trị Hệ điều hành chia xẻ thời gian dùng lập lịch CPU đa chương để cung cấp cho người sử dụng phần nhỏ máy tính chia xẻ Một chương trình thi hành gọi tiến trình Trong trình thi hành tiến trình, phải thực thao tác nhập xuất khoảng thời gian CPU thi hành tiến trình khác Hệ điều hành chia xẻ cho phép nhiều người sử dụng chia xẻ máy tính cách đồng thời gian chuyển đổi nhanh nên họ có cảm giác tiến trình thi hành lúc Hệ điều hành chia xẻ phức tạp hệ điều hành đa chương Nó phải có chức : quản trị bảo vệ nhớ, sử dụng nhớ ảo Nó cung cấp hệ thống tập tin truy xuất online… Hệ điều hành chia xẻ kiểu hệ điều hành đại ngày II.4 Hệ thống song song Ngồi hệ thống có xử lý cịn có hệ thống có nhiều xử lý chia xẻ hệ thống đường truyền liệu, đồng hồ, nhớ thiết bị ngoại vi Các xử lý liên lạc bên với Có nhiều nguyên nhân xây dựng dạng hệ thống Với gia tăng số lượng xử lý, công việc thực nhanh chóng hơn, Nhưng khơng phải theo tỉ lệ thời gian, nghĩa có n xử lý khơng có nghĩa thực nhanh n lần Hệ thống với máy nhiều xử lý tối ưu hệ thống có nhiều máy có xử lý xử lý chia xẻ thiết bị ngoại vi, hệ thống lưu trữ, nguồn … thuận tiện cho nhiều chương trình làm việc tập hợp liệu Một lý độ tin cậy Các chức xử lý nhiều xử lý hỏng hóc xử lý không ảnh hưởng đến tồn hệ thống Hệ thống đa xử lý thơng thường sử dụng cách đa xử lý đối xứng, cách xử lý chạy với hệ điều hành, liên lạc với cần thiết Một số hệ thống sử dụng đa xử lý bất đối xứng, xử lý giao công việc riêng biệt Một xử lý kiểm sốt tồn hệ thống, xử lý khác thực theo lệnh xử lý theo thị định nghĩa trước Mơ hình theo dạng quan hệ chủ tớ Bộ xử lý lập lịch cho xử lý khác Một ví dụ hệ thống xử lý đối xứng version Encore UNIX cho máy tính Multimax Hệ thống có hàng tá xử lý Ưu điểm nhiều tiến trình thực lúc Một hệ thống đa xử lý cho phép nhiều công việc tài nguyên chia xẻ tự động xử lý khác Hệ thống đa xử lý không đồng thường xuất hệ thống lớn, hầu hết thời gian hoạt động dành cho xử lý nhập xuất II.5 Hệ thống phân tán Hệ thống tương tự hệ thống chia xẻ thời gian xử lý không chia xẻ nhớ đồng hồ, thay vào xử lý có nhớ cục riêng Các xử lý thông tin với thông qua đường truyền thông bus tốc độ cao hay đường dây điện thoại Các xử lý hệ phân tán thường khác kích thước chức Nó bao gồm máy vi tính, trạm làm việc, máy mini, hệ thống máy lớn Các xử lý thường tham khảo với nhiều tên khác site, node, computer v.v tùy thuộc vào trạng thái làm việc chúng Các nguyên nhân phải xây dựng hệ thống phân tán là:  Chia xẻ tài nguyên : Một người sử dụng A sử dụng máy in laser người sử dụng B người sử dụng B truy xuất tập tin A Tổng quát, chia xẻ tài nguyên hệ thống phân tán cung cấp chế để chia xẻ tập tin vị trí xa, xử lý thơng tin sở liệu phân tán, in ấn vị trí xa, sử dụng thiết bị xa đểõ thực thao tác  Tăng tốc độ tính tốn : Một thao tác tính tốn chia làm nhiều phần nhỏ thực lúc Hệ thống phân tán cho phép phân chia việc tính tốn nhiều vị trí khác để tính tốn song song  An tồn : Nếu vị trí hệ thống phân tán bị hỏng, vị trí khác tiếp tục làm việc  Thông tin liên lạc với :Có nhiều lúc , chương trình cần chuyển đổi liệu từ vị trí sang vị trí khác Ví dụ hệ thống Windows, thường có chia xẻ chuyển liệu cửa sổ Khi vị trí nối kết với hệ thống mạng, việc trao đổi liệu diễn dễ Người sử dụng chuyển tập tin hay E_mail cho từ vị trí hay vị trí khác II.6 Hệ thống xử lý thời gian thực Hệ thống xử lý thời gian thực sử dụng có địi hỏi khắt khe thời gian thao tác xử lý dịng liệu, thường dùng điều khiển thiết bị ứng dụng tận hiến (dedicated) Máy tính phân tích liệu chỉnh điều khiển giải cho liệu nhập Một hệ điều hành xử lý thời gian thực phải định nghĩa tốt, thời gian xử lý nhanh Hệ thống phải cho kết xác khoảng thời gian bị thúc ép nhanh Có hai hệ thống xử lý thời gian thực hệ thống thời gian thực cứng hệ thống thời gian thực mềm Hệ thống thời gian thực cứng cơng việc hồn tất lúc Lúc liệu thường lưu nhớ ngắn hạn hay ROM Việc xử lý theo thời gian thực xung đột với tất hệ thống liệt kê Dạng thứ hai hệ thống thời gian thực mềm, công việc có độ ưu tiên riêng thi hành theo độ ưu tiên Có số lĩnh vực áp dụng hữu hiệu phương pháp multimedia hay thực ảo III CẤU TRÚC CỦA HỆ ĐIỀU HÀNH III.1 Các thành phần hệ thống Quản lý tiến trình Một chương trình khơng thực nếøu khơng CPU thi hành Một tiến trình chương trình thi hành, ý nghĩa cịn rộng Một cơng việc theo lơ tiến trình Một chương trình người dùng chia xẻ thời gian tiến trình, công việc hệ thống soopling xuất máy in tiến trình Một tiến trình phải sử dụng tài nguyên thời gian sử dụng CPU, nhớ, tập tin, thiết bị nhập xuất để hồn tất cơng việc Các tài ngun cung cấp tiến trình tạo hay trình thi hành Khi tiến trình tạo, sử dụng nhiều tài nguyên vật lý luận lý.cũng số khởi tạo liệu nhập Ví dụ , khảo sát tiến trình hiển thị trạng thái tập tin lên hình Đầu vào tiến trình tên tập tin, tiến trình thực thị thích hợp, thực lời gọi hệ thống để nhận thông tin mong muốn hiển thị lên hình Khi tiến trình kết thúc, hệ điềûu hành tái tạo lại tài nguyên dùng lại Một tiến trình hoạt động (active) hồn tồn-ngược lại với tập tin đĩa thụ động (passive)-với đếm chương trình cho biết lệnh thi hành.Việc thi hành thực theo chế , CPU thi hành từ lệnh đầu đến lệnh cuối Một tiến trình coi đơn vị làm việc hệ thống Một hệ thống có nhiều tiến trình lúc , số tiến trình hệ điều hành, số tiến trình người sử dụng tiến trình diễn đồng thời Vai trị hệ điều hành việc quản lý tiến trình :  Tạo hủy tiến trình người sử dụng hệ thống  Ngưng thực lại tiến trình  Cung cấp chế đồng tiến trình  Cung cấp cách thơng tin tiến trình  Cung cấp chế kiểm sốt deadlock(khái niệm trình bày chương II) Quản lý nhớ : Trong hệ thống máy tính đại, nhớ trung tâm thao tác, xử lý Bộ nhớ xem mảng kiểu byte hay kiểu word Mỗi phần tử có địa Đó nơi lưu liệu CPU truy xuất cách nhanh chóng so với thiết bị nhập/xuất CPU đọc thị từ nhớ Các thiết bị nhập/xuất cài đặt chế DMA(xem chương IV) đọc ghi liệu nhớ Thơng thường nhớ chứa thiết bị mà CPU định vị trực tiếp Ví dụ CPU truy xuất liệu từ đĩa, liệu chuyển vào nhớ qua lời gọi hệ thống nhập/xuất Một chương trình muốn thi hành trước hết phải ánh xạ thành địa tuyệt đối nạp vào nhớ chính.Khi chương trình thi hành, hệ thống truy xuất thị liệu chương trình nhớ Ngay tiến trình kết thúc , liệu nhớ tiến trình khác ghi chồng lên Để tối ưu hóa q trình hoạt động CPU tốc độ máy tính, số tiến trình lưu giữ nhớ Có nhiều kế hoạch quản trị nhớ có nhiều ứng dụng nhớ khác hiệu thuật tốn phụ thuộc vào tùy tình cụ thể Lựa chọn thuật tốn cho hệ thống mơ tả trước phụ thuộc vào nhiều yếu tố, đặc biệt phần cứng hệ thống Hệ điều hành có vai trò sau việc quản lý nhớ :  Lưu giữ thơng tin vị trí nhớ sử dụng sử dụng  Quyết định tiến trình nạp vào nhớ chính, nhớ dùng  Cấp phát thu hồi nhớ cần thiết Quản lý nhớ phụ : Mục tiêu hệ thống máy tính thi hành chương trình Những chương trình với liệu truy xuất chúng phải đặt nhớ suốt q trình thi hành Nhưng nhớ nhỏ để lưu giữ liệu chương trình, ngồi liệu khơng cịn cung cấp lượng Hệ thống máy tính ngày cung cấp hệ thống lưu trữ phụ Đa số máy tính dùng đĩa để lưu trữ chương trình liệu Hầu tất chương trình : chương trình dịch, hợp ngữ, thủ tục, trình soạn thảo, định dạng lưu trữ đĩa thực hiện, nạp vào nhớ sử dụng đĩa để chứa liệu kết xử lý Vì quản lý hệ thống đĩa quan trọng cho hệ thống máy tính Vai trị hệ điều hành việc quản lý đĩa :  Quản lý vùng trống đĩa  Định vị lưu trữ  Lập lịch cho đĩa Vì hệ thống đĩa sử dụng thường xuyên, nên phải dùng hiệu quả.Tốc độ toàn hệ thống tuỳ thuộc nhiều vào tốc độ truy xuất đĩa Quản lý hệ thống nhập xuất : Một mục tiêu hệ điều hành che dấu đặc thù thiết bị phần cứng người sử dụng thay vào lớp thân thiện hơn, người sử dụng dể thao tác Một hệ thống nhập/xuất bao gồm :  Hệ thống buffer caching  Giao tiếp điều khiển thiết bị (device drivers) tổng quát  Bộ điều khiển cho thiết bị phần cứng Chỉ có device driver hiểu đến cấu trúc đặc thù thiết bị mà mơ tả Quản lý hệ thống tập tin : Hệ thống quản lý tập tin thành phần rõ ràng hệ điều hành Máy tính lưu trữ thơng tin nhiều dạng thiết bị vật lý khác : băng từ, đĩa từ, , đĩa quang, Mỗi dạng có đặc thù riêng mặt tổ chức vật lý Mỗi thiết bị có kiểm sốt điều khiển đĩa (disk driver) có tính chất riêng Những tính chất tốc độ, khả lưu trữ, tốc độ truyền liệu cách truy xuất Để cho việc sử dụng hệ thống máy tính thuận tiện, hệ điều hành cung cấp nhìn logic đồng hệ thống lưu trữ thông tin Hệ điều hành định nghĩa đơn vị lưu trữ logic tập tin Hệ điều hành tạo ánh xạ từ tập tin đến vùng thông tin đĩa truy xuất tập tin thông qua thiết bị lưu trữ Một tập tin tập hợp thơng tin người tạo xác định Thông thường tập tin đại diện cho chương trình liệu Dữ liệu tập tin số, ký tự, hay ký số Tập tin thường có dạng tự do, tập tin văn bản, nhị phân (là tập tin chứa dãy bit) (Xem VIII)  Vai trò hệ điều hành việc quản lý tập tin :  Tạo xoá tập tin  Tạo xoá thư mục  Hỗ trợ thao tác tập tin thư mục  Ánh xạ tập tin hệ thống lưu trữ phụ  Backup tập tin thiết bị lưu trữ Hệ thống bảo vệ : Trong hệ thống nhiều người sử dụng cho phép nhiều tiến trình diễn đồng thời, tiến trình phải bảo vệ hoạt động khác.Do đó, hệ thống cung cấp chế để đảm bảo tập tin, nhớ, CPU, tài nguyên khác truy xuất tiến trình có quyền Ví dụ, nhớ đảm bảo tiến trình thi hành phạm vi địa Bộ thời gian đảm bảo khơng có tiến trình độc chiếm CPU Cuối thiết bị ngoại vi bảo vệ Hệ thống bảo vệ chế kiểm sốt q trình truy xuất chương trình, tiến trình, người sử dụng với tài nguyên hệ thống Cơ chế cung cấp cách thức để mô tả lại mức độ kiểm soát Hệ thống bảo vệ làm tăng độ an toàn kiểm tra lỗi giao tiếp hệ thống nhỏ bên Hệ thống chế dòng lệnh : Một phần quan trọng chương trình hệ thống hệ điều hành chế dịng lệnh, giao tiếp người sử dụng hệ điều hành Một số hệ điều hành đặt chế dòng lệnh bên hạt nhân, số khác MS-DOS UNIX xem hệ điều hành chương trình đặt biệt, thi hành công việc bắt đầu người sử dụng login lần Các lệnh đưa vào hệ điều hành thông qua điều khiển lệnh Trong hệ thống chia xẻ thời gian chương trình đọc thơng dịch lệnh điều khiển thực cách tự động Chương trình thường gọi thông dịch điều khiển card, chế dịng lệnh Shell Chức đơn giản lấy lệnh thi hành Mỗi hệ điều hành có giao tiếp khác nhau, dạng đơn giản theo chế dòng lệnh, dạng thân thiện với người sử dụng giao diện Macintosh có biểu tượng, cửa sổ thao tác dùng chuột Các lệnh có quan hệ với việc tạo quản lý tiến trình, kiểm sốt nhập xuất, quản lý lưu trữ phụ, quản lý nhớ chính, truy xuất hệ thống tập tin chế bảo vệ III.2 Các dịch vụ hệ điều hành Hệ điều hành cung cấp môi trường để thi hành chương trình, cách cung cấp dịch vụ cho chương trình cho người sử dụng Các dịch vụ hệ thống khác có lớp chung Các dịch vụ giúp cho lập trình viên thuận tiện việc lập trình dể dàng Thi hành chương trình : hệ thống phải có khả nạp chương trình vào nhớ thi hành Chương trình phải chấm dứt thi hành theo cách thông thường hay bất thường (có lỗi) Thao tác nhập xuất : Một chương trình thi hành u cầu nhập xuất Nhập xuất tập tin hay thiết bị Đối với thiết bị có hàm đặc biệt thi hành Để tăng hiệu quả, người sử dụng không truy xuất trực tiếp thiết bị nhập xuất mà thông qua cách thức hệ điều hành cung cấp Thao tác hệ thống tập tin Thông tin : có nhiều tình tiến trình cần trao đổi thơng tin với tiến trình khác Có hai cách thực hiện: Một thực thay tiến trình máy tính, hai thay tiến trình hệ thống khác hệ thống mạng Thơng tin cài đặt qua chia xẻ nhớ, kỹ thuật chuyển thông điệp Việc chuyển thông tin thực hệ điều hành Phát lỗi : hệ điều hành phải có khả báo lỗi Lỗi xảy CPU, nhớ, thiết bị nhập xuất, … hay chương trình Đối với dạng lỗi, hệ điều hành có cách giải tương ứng III.3 Lời gọi hệ thống Lời gọi hệ thống cung cấp giao tiếp tiến trình hệ điều hành Lời gọi lệnh hợp ngữ Một số hệ thống cho phép lời gọi hệ thống thực từ cấp lập trình ngơn ngữ cấp cao, hàm lời gọi hàm Nó phát sinh lời gọi từ thủ tục hay gọi trực tiếp dịng Để hiểu q trình hoạt động lời gọi hệ thống khảo sát chương trình nhỏ dùng để đọc liệu từ tập tin chép qua tập tin khác Dữ liệu nhập của chương trình tên hai tập tin : tập tin nhập tập tin xuất Tên mô tả nhiều cách tùy thuộc vào thiết kế hệ điều hành : chương trình yêu cầu người sử dụng cho biết tên hai tập tin, họ cung cấp cách lựa chọn với chuột Khi có tên hai tập tin, chương trình mở tập tin nhập tạo tập tin xuất Mỗi thao tác thực lời gọi hệ thống khác Cũng có trường hợp phát sinh lỗi : Khi chương trình mở tập tin nhập, xảy trường hợp khơng có tập tin có tên mơ tả tập tin bị cấm truy cập Trong trường hợp chương trình phải xuất thơng điệp lên hình Nếu tập tin nhập tồn tại, phải tạo tập tin Hệ thống phải kiểm tra tiếp xem có tập tin xuất tồn khơng có lời gọi hệ thống tương ứng để giải hủy tiến trình, hai xóa tập tin tồn tạo tập tin Sau thiết lập xong tập tin, hệ thống tiếp tục tạo vòng lặp đọc liệu từ tập tin nhận ghi lên tập tin xuất Mỗi bước có kiểm tra lỗi Sau chép xong, chương trình đóng hai tập tin lại (dùng lời gọi hệ thống khác), xuất thơng báo lên hình (dùng lời gọi hệ thống) cuối chấm dứt chương trình (lời gọi hệ thống cuối cùng) Trong ngơn ngữ lập trình cấp cao, người sử dụng không cần quan tâm đến chi tiết mà cần thông qua hàm hay lệnh để thực hiện.Lời gọi hệ thống diễn theo cách khác Kiểu khối lượng thông tin tùy thuộc vào hệ thống lúc gọi Có ba phương pháp sử dụng để chuyển tham số cho hệ điều hành Cách đơn giản chuyển tham số vào ghi Nếu có nhiều tham số, lưu trữ khối bảng nhớ Cách cuối dùng chế stack Lời gọi hệ thống chia thành loại : kiểm sốt tiến trình, thao tác tập tin, thao tác thiết bị, thông tin III.4 Cấu trúc hệ thống Cấu trúc đơn giản Cấu trúc số hệ thống thương mại khơng có cấu trúc định nghĩa tốt Thông thường hệ điều hành bắt đầu hệ thống nhỏ, đơn giản có giới hạn MS-DOS hệ điều hành có cấu trúc đơn giản, cung cấp chức cần thiết không gian nhỏ giới hạn phần cứng mà chạy khơng chia thành đơn thể rõ rệt Hình 1.2 Cấu trúc MS-DOS Mặc dù MS-DOS có cấu trúc giao diện chức khơng có phân chia rõ rệt Các chương trình ứng dụng truy xuất trực tiếp thủ tục nhập xuất ghi trực tiếp lên hình hay điều khiển đĩa Một hệ điều hành có cấu trúc đơn giản UNIX với version Cấu trúc bao gồm hai phần : hạt nhân chương trình hệ thống Hạt nhân chia thành chuỗi giao tiếp device driver(bộ điều khiển thiết bị, xem XI) Những lời gọi hệ thống phần cứng hạt nhân Hạt nhân cung cấp hệ thống tập tin, lập lịch CPU, quản trị nhớ chức hệ điều hành khác thông qua lời gọi hệ thống Tóm lại tồn chức hệ thống kết hợp lớp Những chương trình hệ thống dùng lời gọi hệ thống hỗ trợ hạt nhân để cung cấp chức hữu ích biên dịch thao tác tập tin Cấu trúc theo lớp Những version UNIX thiết kế để sử dụng phần cứng phức tạp hơn, hệ điều hành chia thành nhiều phần nhỏ Bằng cách sử dụng kỹ thuật topdown, chức đặc tính hệ thống chia làm nhiều thành phần nhỏ Che dấu thông tin, khơng cho chương trình người sử dụng cài đặt hàm truy xuất cấp thấp , thay vào lớp giao tiếp bên Hệ điều hành chia thành nhiều lớp Lớp phần cứng, lớp giao tiếp với người sử dụng Lớp hệ điều hành cài đặt thành đối tượng trừu tượng Thông thường lớp hệ điều hành bao gồm số cấu trúc liệu hàm gọi lớp thân gọi chức lớp bên Mỗi lớp cài đặt sử dụng thao tác lớp cung cấp Một lớp không cần biết hệ điều hành cài đặt nào, cần biết thao tác làm thơi Cấu trúc lớp lần thiết kế áp dụng cho hệ điều hành THE (Technische Hogeschool Eindhoven) Hệ thống chia thành sáu lớp hình sau: Lớp phần cứng, lớp cài đặt lập lịch CPU, lớp cài đặt quản lý nhớ Bộ nhớ nhớ ảo Lớp tiếp chứa device driver cho thao tác với hình Lớp kế tổ chức buffer cho việc nhập xuất thiết bị Cuối chương trình người sử dụng Các ví dụ khác cấu trúc lớp hệ điều hành VENUS OS/2 Hình 1.6 Cấu trúc lớp OS/2 Máy ảo Thông thường, hệ thống máy tính bao gồm nhiều lớp Phần cứng lớp thấp Hạt nhân lớp kế dùng thị phần cứng để tạo tập hợp lời gọi hệ thống Các chương trình hệ thống sử dụng lời gọi hệ thống thị phần cứng Vì xem phần cứng lời gọi hệ thống lớp Một số hệ thống có tổ chức cho chương trình ứng dụng gọi dễ dàng chương trình hệ thống Mặc dù chương trình hệ thống lớp cao phần khác chương trình ứng dụng xem phần phần máy Lớp ứng dụng sử dụng khái niệm 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 kỹ thuật nhớ ảo, hệ điều hành tạo nhiều tiến trình phức ảo, thực xử lý nhớ riêng Những tiến trình có đặc điểm riêng lời gọi hệ thống hệ thống tập tin không cung cấp phần cứng trực tiếp Tài nguyên hệ thống chia xẻ để tạo máy ảo Lập lịch CPU chia xẻ CPU cho người sử dụng Spooling hệ thống tập tin chia thành card đọc ảo máy in ảo Một terminal cung cấp chức tạo thao tác hình ảo Vấn đề phức tạp máy ảo hệ thống đĩa Giả sử hệ thống có ba điều khiển đĩa có tới bảy máy ảo Như gán cho máy ảo điều khiển đĩa giải pháp xây dựng hệ thống đĩa ảo Mặc dù khái niệm máy ảo hữu ích khó cài đặt Máy ảo phải thực hai dạng: dạng giám sát (monitor) dạng người sử dụng Ngoài máy ảo phải giải vấn đề vận chuyển liệu thời gian Mơ hình Client-Server Khuynh hướng hệ điều hành đại chuyển dần đoạn mã hệ thống lên lớp cao bỏ dần chức hạt nhân, lại hạt nhân tối thiểu Cách tiếp cận cài đặt hầu hết chức hệ điều hành xử lý người sử dụng Để yêu cầu dịch vụ, đọc khối từ tập tin, xử lý người sử dụng (cịn gọi tiến trình client) gửi yêu cầu cho xử lý phận dịch vụ (cịn gọi tiến trình server) Sau đó, thực gửi kết trở lại Trong mơ hình này, chức hạt nhân kiểm sốt q trình thơng tin client server Bằng cách chia hệ điều hành thành phần nhỏ, phần kiểm soát mặt hệ thống dịch vụ tập tin, tiến trình, terminal, nhớ, phần gọn dể quản lý Hơn nữa, tất server thực tiến trình mức độ người dùng (user-mode) mức độ hạt nhân (kernel-mode), nên khơng truy xuất trực tiếp phần cứng Do đó, server tập tin bị lỗi, dịch vụ tập tin bị hỏng thường khơng gây ảnh hưởng đến tồn hệ thống 10 BÀI : CÁC GIẢI PHÁP ĐỒNG BỘ HOÁ I Giải pháp « busy waiting » I.1 Các giải pháp phần mềm I.1.1 Sử dụng biến cờ hiệu: Tiếp cân : tiến trình chia sẻ biến chung đóng vai trị « chốt cửa » (lock) , biến khởi động Một tiến trình muốn vào miền găng trước tiên phải kiểm tra giá trị biến lock Nếu lock = 0, tiến trình đặt lại giá trị cho lock = vào miền găng Nếu lock nhận giá trị 1, tiến trình phải chờ bên ngồi miền găng lock có giá trị Như giá trị lock mang ý nghĩa khơng có tiến trình miền găng, lock=1 có tiến trình miền găng while (TRUE) { while (lock == 1); // wait lock = 1; critical-section (); lock = 0; Noncritical-section (); } Hình 3.5 Cấu trúc chương trình sử dụng biến khóa để đồng Thảo luận : Giải pháp vi phạm điều kiện thứ nhất: hai tiến trình miền găng thời điểm Giả sử tiến trình nhận thấy lock = chuẩn bị vào miền găng, trước đặt lại giá trị cho lock 1, bị tạm dừng để tiến trình khác hoạt động Tiến trình thứ hai thấy lock vào miền găng đặt lại lock = Sau tiến trình thứ tái kích hoạt, gán lock = lần v miền găng Như thời điểm hai tiến trình miền găng I.1.2 Sử dụng việc kiểm tra luân phiên : Tiếp cận : Đây giải pháp đề nghị cho hai tiến trình Hai tiến trình sử dụng chung biến turn (phản ánh phiên tiến trình vào miền găng), khởi động với giá trị Nếu turn = 0, tiến trình A vào miền găng Nếu turn = 1, tiến trình A vào vịng lặp chờ đến turn nhận giá trị Khi tiến trình A rời khỏi miền găng, đặt giá trị turn phép tiến trình B vào miền găng while (TRUE) { while (turn != 0); // wait critical-section (); turn = 1; Noncritical-section (); } (a) Cấu trúc tiến trình A while (TRUE) { while (turn != 1); // wait critical-section (); turn = 0; Noncritical-section (); } (b) Cấu trúc tiến trình B Hình 3.6 Cấu trúc tiến trình giải pháp kiểm tra luân phiên Thảo luận: Giải pháp dựa việc thực kiểm tra nghiêm nhặt đến lượt tiến trình vào miền găng Do ngăn chặn tình trạng hai tiến trình vào miền găng, lại vi phạm điều kiện thứ ba: tiến trình bị ngăn chặn vào miền găng tiến trình khác khơng miền găng Giả sử tiến trình B khỏi miền găng nhanh chóng Cả hai tiến trình miền găng, turn = Tiến trình A vào miền găng khỏi nhanh chóng, đặt lại giá trị turn là1, lại xử lý đoạn lệnh ngồi miền găng lần Sau đó, tiến trình A lại kết thúc nhanh chóng đoạn lệnh ngồi miền găng muốn vào miền găng 34 lần Tuy nhiên lúc B cịn xử lý đoạn lệnh ngồi miền găng mình, turn lại mang giá trị ! Như vậy, giải pháp khơng có giá trị có khác biệt lớn tốc độ thực hai tiến trình, vi phạm điều kiện thứ hai I.1.3 Giải pháp Peterson Tiếp cận : Petson đưa giải pháp kết hợp ý tưởng hai giải pháp kể Các tiến trình chia sẻ hai biến chung : int turn; // đến phiên int interesse[2]; // khởi động FALSE Nếu interesse[i] = TRUE có nghĩa tiến trình Pi muốn vào miền găng Khởi đầu, interesse[0]=interesse[1]=FALSE giá trị est khởi động hay Để vào miền găng, trước tiên tiến trình Pi đặt giá trị interesse[i]=TRUE ( xác định tiến trình muốn vào miền găng), sau đặt turn=j (đề nghị thử tiến trình khác vào miền găng) Nếu tiến trình Pj khơng quan tâm đến việc vào miền găng (interesse[j]=FALSE), Pi vào miền găng, khơng, Pi phải chờ đến interesse[j]=FALSE Khi tiến trình Pi rời khỏi miền găng, đặt lại giá trị cho interesse[i]= FALSE while (TRUE) { int j = 1-i; // j tiến trình cịn lại interesse[i]= TRUE; turn = j; while (turn == j && interesse[j]==TRUE); critical-section (); interesse[i] = FALSE; Noncritical-section (); } Hình 3.7 Cấu trúc tiến trình Pi giải pháp Peterson Thảo luận: giải pháp ngăn chặn tình trạng mâu thuẫn truy xuất : tiến trình Pi vào miền găng interesse[j]=FALSE turn = i Nếu hai tiến trình muốn vào miền găng interesse[i] = interesse[j] =TRUE giá trị turn là 1, có tiến trình vào miền găng I.2 Các giải pháp phần cứng I.2.1 Cấm ngắt: Tiếp cân: cho phép tiến trình cấm tất ngắt trước vào miền găng, phục hồi ngắt khỏi miền găng Khi đó, ngắt đồng hồ khơng xảy ra, hệ thống tạm dừng hoạt động tiến trình xử lý để cấp phát CPU cho tiến trình khác, nhờ tiến trình hành n tâm thao tác miền găng mà không sợ bị tiến trình khác tranh chấp Thảo luận: giải pháp khơng ưa chuộng thiếu thận trọng cho phép tiến trình người dùng phép thực lệnh cấm ngắt Hơn nữa, hệ thống có nhiều xử lý, lệnh cấm ngắt có tác dụng xử lý xử lý tiến trình, cịn tiến trình hoạt động xử lý khác truy xuất đến miền găng ! I.2.2 Chỉ thị TSL (Test-and-Set): Tiếp cận: giải pháp đòi hỏi trợ giúp chế phần cứng Nhiều máy tính cung cấp thị đặc biệt cho phép kiểm tra cập nhật nội dung vùng nhớ thao tác phân chia, gọi thị Test-and-Set Lock (TSL) định nghĩa sau: Test-and-Setlock(boolean target) { Test-and-Setlock = target; target = TRUE; } Nếu có hai thị TSL xử lý đồng thời (trên hai xử lý khác nhau), chúng xử lý Có thể cài đặt giải pháp truy xuất độc quyền với TSL cách sử dụng thêm biến lock, khởi gán FALSE Tiến trình phải kiểm tra giá trị biến lock trước vào miền găng, lock = FALSE, tiến trình vào miền găng while (TRUE) { 35 while (Test-and-Setlock(lock)); critical-section (); lock = FALSE; Noncritical-section (); } Hình 3.8 Cấu trúc chương trình giải pháp TSL Thảo luận : giống giải pháp phần cứng khác, thị TSL giảm nhẹ cơng việc lập trình để giải vấn để, lại không dễ dàng để cài đặt thị TSL cho xử lý cách phân chia, máy với cấu hình nhiều xử lý Tất giải pháp phải thực vòng lặp để kiểm tra liệu có phép vào miền găng, điều kiện chưa cho phép, tiến trình phải chờ tiếp tục vòng lặp kiểm tra Các giải pháp buộc tiến trình phải liên tục kiểm tra điều kiện để phát thời điểm thích hợp vào miền găng gọi giải pháp « busy waiting » Lưu ý việc kiểm tra tiêu thụ nhiều thời gian sử dụng CPU, tiến trình chờ chiếm dụng CPU Xu hướng giải vấn đề đồng hoá nên tránh giải pháp « busy waiting » II Các giải pháp « SLEEP and WAKEUP » Để loại bỏ bất tiện giải pháp « busy waiting », tiếp cận theo hướng cho tiến trình chưa đủ điều kiện vào miền găng chuyển sang trạng thái blocked, từ bỏ quyền sử dụng CPU Để thực điều này, cần phải sử dụng thủ tục hệ điều hành cung cấp để thay đổi trạng thái tiến trình Hai thủ tục SLEEP WAKEUP thường sử dụng để phục vụ mục đích SLEEP lời gọi hệ thống có tác dụng tạm dừng hoạt động tiến trình (blocked) gọi chờ đến tiến trình khác « đánh thức » Lời gọi hệ thống WAKEUP nhận tham số : tiến trình tái kích hoạt (đặt trạng thái ready) Ý tưởng sử dụng SLEEP WAKEUP sau : tiến trình chưa đủ điều kiện vào miền găng, gọi SLEEP để tự khóa đến có tiến trình khác gọi WAKEUP để giải phóng cho Một tiến trình gọi WAKEUP khỏi miền găng để đánh thức tiến trình chờ, tạo hội cho tiến trình vào miền găng : int busy; // miền găng bị chiếm, không int blocked; // đếm số lượng tiến trình bị khóa while (TRUE) { if (busy){ blocked = blocked + 1; sleep(); } else busy = 1; critical-section (); busy = 0; if(blocked){ wakeup(process); blocked = blocked - 1; } Noncritical-section (); } Hình 3.9 Cấu trúc chương trình giải pháp SLEEP and WAKEUP Khi sử dụng SLEEP WAKEUP cần cẩn thận, khơng muốn xảy tình trạng mâu thuẫn truy xuất vài tình đặc biệt sau : giả sử tiến trình A vào miền găng, trước rời khỏi miền găng tiến trình B kích hoạt Tiến trình B thử vào miền găng nhận thấy A đó, B tăng giá trị biến blocked chuẩn bị gọi SLEEP để tự khoá Tuy nhiên trước B thực SLEEP, tiến trình A lại tái kích hoạt khỏi miền găng Khi khỏi miền găng A nhận thấy có tiến trình chờ (blocked=1) nên gọi WAKEUP giảm giá trị blocked Khi tín hiệu WAKEUP lạc tiến trình B chưa 36 thật « ngủ » để nhận tín hiệu đánh thức !Khi tiến trình B tiếp tục xử lý, goi SLEEP tự khó vĩnh viễn ! Vấn đề ghi nhận tình trạng lỗi xảy việc kiểm tra tư cách vào miền găng việc gọi SLEEP hay WAKEUP hành động tách biệ, bị ngắt nửa chừng q trình xử lý, có tín hiệu WAKEUP gửi đến tiến trình chưa bị khóa lạc Để tránh tình tương tự, hệ điều hành cung cấp chế đồng hóa dựa ý tưởng chiến lược « SLEEP and WAKEUP » xây dựng bao hàm phương tiện kiểm tra điều kiện vào miền găng giúp sử dụng an toàn II.1 Semaphore Tiếp cận: Được Dijkstra đề xuất vào 1965, semaphore s biến có thuộc tính sau: Một giá trị nguyên dương e(s) Một hàng đợi f(s) lưu danh sách tiến trình bị khóa (chờ) semaphore s Chỉ có hai thao tác định nghĩa semaphore Down(s): giảm giá trị semaphore s đơn vị semaphore có trị e(s) > 0, tiếp tục xử lý Ngược lại, e(s) 0, tiến trình phải chờ đến e(s) >0 Up(s): tăng giá trị semaphore s lên đơn vị Nếu có nhiều tiến trình chờ semaphore s, bị khóa thao tác Down, hệ thống chọn tiến trình để kết thúc thao tác Down cho tiếp tục xử lý Hình 3.10 Semaphore s Cài đặt: Gọi p tiến trình thực thao tác Down(s) hay Up(s) Down(s): e(s) = e(s) - 1; if e(s) < { status(P)= blocked; enter(P,f(s)); } Up(s): e(s) = e(s) + 1; if s KHi khỏi miền găng, tiến trình Reader cuối đánh thức tiến trình Writer bị khóa monitor ReaderWriter condition OKWrite, OKRead; int rc = 0; Boolean busy = false; procedure BeginRead() { if (busy) wait(OKRead); rc++; signal(OKRead); } procedure FinishRead() { rc ; // db bận, chờ // thêm Reader // bớt Reader 43 if (rc == 0) // Reader cuối signal(OKWrite); // cho phép Writer // truy xuất db } procedure BeginWrite() { if (busy || rc != 0) // db bận, hay wait(OKWrite); // Reader đọc db,chờ busy = true; } procedure FinishWrite() { busy = false; If (OKRead.Queue) signal(OKRead); else signal(OKWrite); } Reader() { while (TRUE) { ReaderWriter.BeginRead(); Read_database(); ReaderWriter.FinishRead(); } } Writer() { while (TRUE) { create_data(&info); ReaderWriter.BeginWrite(); Write_database(); ReaderWriter.FinishWrite(); } } III.2.3 Trao đổi thông điệp Cần có tiến trình server điều khiển việc truy xuất sở liệu Các tiến trình Writer Reader gửi thông điệp yêu cầu truy xuất đến server nhận từ server thông điệp hồi đáp tương ứng Reader() { while (TRUE) { send (server, RequestRead); receive (server, value); print(value); } } Writer() { while (TRUE) { create_data(&value); send (server, RequestWrite,value); receive (server,OKWrite); } } IV Tắc nghẽn (Deadlock) IV.1 Định nghĩa: 44 Một tập hợp tiến trình định nghĩa tình trạng tắc nghẽn tiến trình tập hợp chờ đợi kiện mà có tiến trình khác tập hợp phát sinh Nói cách khác, tiến trình tập hợp chờ cấp phát tài nguyên bị tiến trình khác trạng thái blocked chiếm giữ Như khơng có tiến trình tiếp tục xử lý , giải phóng tài nguyên cho tiến trình khác sử dụng, tất tiến trình tập hợp bị khóa vĩnh viễn ! Vấn đề Bữa ăn tối triết gia : nhà triết học ngồi ăn tối với spaghetti tiếng Mỗi nhà triết học cần dùng nĩa để ăn spaghetti Nhưng bàn có tổng cộng nĩa để xen kẽ với đĩa Mỗi nhà triết học suy ngẫm triết lý đến cảm thấy đói dự định cầm nĩa bên trái nĩa bên phải để ăn Nếu nhà triết học cầm nĩa bên trái lúc, khơng có có nĩa bên phải để bắt đầu thưởng thức spaghetti Đây tình trạng tắc nghẽn Hình 3.18 Bữa ăn tối triết gia IV.2 Điều kiện xuất tắc nghẽn Coffman, Elphick Shoshani đưa điều kiện cần làm xuất tắc nghẽn: Có sử dụng tài nguyên chia sẻ (Mutual exclusion): Mỗi thời điểm, tài nguyên chia sẻ hệ thống cấp phát cho tiến trình , tiến trình sử dụng xong tài nguyên này, hệ thống thu hồi cấp phát tài nguyên cho tiến trình khác Sự chiếm giữ yêu cầu thêm tài nguyên (Wait for): Các tiến trình tiếp tục chiếm giữ tài nguyên cấp phát cho chờ cấp phát thêm số tài nguyên Khơng thu hồi tài ngun từ tiến trình giữ chúng (No preemption): Tài nguyên thu hồi từ tiến trình chiếm giữ chúng trước tiến trình sủ dụng chúng xong Tồn chu kỳ đồ thị cấp phát tài nguyên ( Circular wait): có hai tiến trình chờ đợi lẫn : tiến trình chờ cấp phát tài nguyên bị tiến trình chiếm giữ ngược lại Khi có đủ điều kiện này, tắc nghẽn xảy Nếu thiếu điều kiện khơng có tắc nghẽn IV.3 Đồ thị cấp phát tài nguyên 45 Có thể sử dụng đồ thị để mơ hình hóa việc cấp phát tài nguyên Đồ thị có loại nút : tiến trình biễu diễn hình trịn, tài ngun hiển thị hình vng Hình 3.19 Đồ thị cấp phát tài nguyên IV.4 Các phương pháp xử lý tắc nghẽn Chủ yếu có ba hương tiếp cận để xử lý tắc nghẽn : Sử dụng nghi thức (protocol) để bảo đảm hệ thống không xảy tắc nghẽn Cho phép xảy tắc nghẽn tìm cách sữa chữa tắc nghẽn Hồn toàn bỏ qua việc xử lý tắc nghẽn, xem hệ thống không xảy tắc nghẽn IV.5 Ngăn chặn tắc nghẽn Để tắc nghẽn không xảy ra, cần bảo đảm tối thiểu điều kiện cần không xảy ra: Tài nguyên chia sẻ : nhìn chung gần khơng thể tránh điều kiện chất tài nguyên gần cố định Tuy nhiên số tài nguyên kết xuất, người ta dùng chế spooling để biến đổi thành tài nguyên chia sẻ Sự chiếm giữ yêu cầu thêm tài nguyên: phải bảo đảm tiến trình yêu cầu thêm tài ngun khơng chiếm giữ tài nguyên khác Có thể áp đặt hai chế truy xuất sau : Tiến trình phải yêu cầu tất tài nguyên cần thiết trước bắt đầu xử lý => phương pháp có khó khăn tiến trình khó ước lượng xác tài ngun cần sử dụng nhu cầu phụ thuộc vào trình xử lý Ngồi tiến trình chiếm giữ sẵn tài nguyên chưa cần sử dụng việc sử dụng tài nguyên hiệu Khi tiến trình yêu cầu tài nguyên bị từ chối, phải giải phóng tài nguyên chiếm giữ , sau lại cấp phát trở lại lần với tài nguyên => phương pháp làm phát sinh khó khăn việc bảo vệ tính tồn vẹn liệu hệ thống Không thu hồi tài nguyên: cho phép hệ thống thu hồi tài nguyên từ tiến trình bị khố cấp phát trở lại cho tiến trình khỏi tình trạng bị khóa Tuy nhiên với số loại tài nguyên, việc thu hồi khó khăn vi phạm toàn vẹn liệu Tồn chu kỳ: tránh tạo chu kỳ đồ thị cách cấp phát tài nguyên theo phân cấp sau : gọi R = {R1, R2, ,Rm} tập loại tài nguyên Các loại tài nguyên phân cấp từ 1-N Ví dụ : F(đĩa) = 2, F(máy in) = 12 46 Các tiến trình yêu cầu tài nguyên phải tuân thủ quy định : tiến trình chiếm giữ tài ngun Ri yêu cầu tài nguyên Rj F(Rj) > F(Ri) IV.6 Tránh tắc nghẽn Ngăn cản tắc nghẽn mối bận tâm lớn sử dụng tài nguyên Tránh tắc nghẽn loại bỏ tất hội dẫn đến tắc nghẽn tương lai Cần phải sử dụng chế phức tạp để thực ý định Một số khái niệm sở Trạng thái an toàn : trạng thái A an tồn hệ thống thỏa mãn nhu cầu tài nguyên (cho đến tối đa) tiến trình theo thứ tự mà ngăn chặn tắc nghẽn Một chuỗi cấp phát an tồn: thứ tự tiến trình an tồn tình trạng cấp phát hành với tiến trình Pi nhu cầu tài nguyên Pi thỏa mãn với tài nguyên tự hệ thống, cộng với tài nguyên bị chiếm giữ tiến trình Pj khác, với j

Ngày đăng: 08/05/2021, 18:51

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan