1 1 Nguyên lý hệ điều hành Nguyễn Hải Châu Khoa Công nghệ Thông tin Trường Đại học Công nghệ 2 Hệ vào/ra Phần cứng Giao diện vào/ra với ứng dụng Hệ vào/ra của nhân Chuyển yêu cầu vào/ra thành thao tác phần cứng Streams Các vấn đề về hiệu năng 3 Phần cứng vào/ra z Có rất nhiều loại thiết bị vào/ra z Các khái niệm chung z Port (cổng vào/ra) z Bus z Controller z Các vi lệnh điều khiển thiết bị vào/ra z Thiết bị vào/ra có địa chỉ được sử dụng bởi: z Các lệnh vào/ra trực tiếp z Vào/ra thông qua ánh xạ bộ nhớ 4 Cấu trúc bus của máy PC 5 Một số địa chỉ vào/ra của PC 6 Polling z Xác định trạng thái của thiết bị: z command-ready (lệnh sẵn sàng?) z busy (bận?) z Error (lỗi?) z Thực hiện vòng lặp chờ bận để chờ vào/ra với thiết bị 2 7 Interrupts (ngắt) z Thiết bị vào/ra kích hoạt đường yêu cầu ngắt CPU z Bộ thao tác ngắt nhận ngắt z CPU có thể bỏ qua hoặc làm trễ việc xử lý một số ngắt z Vector ngắt giúp CPU tìm được hàm xử lý ngắt z Dựa trên độ ưu tiến z Một số ngắt là không che được (unmaskable) z Cơ chế ngắt có thể dùng cho exceptions 8 Chu kỳ vào/ra với ngắt 9 Bảng vector ngắt của BXL Intel 10 Truy cập bộ nhớ trực tiếp z Thuật ngữ: Direct memory access (DMA) z Được sử dụng để tránh lập trình vào/ra với dung lượng dữ liệu lớn z Phần cứng cần có: Bộ điều khiển DMA z CPU truyền dữ liệu trực tiếp giữa bộ nhớ và thiết bị vào/ra 11 Quá trình 6 bước thực hiện vào/ra theo DMA 12 Giao diện vào/ra với ứng dụng z Các hàm hệ thống vào/ra của một thiết bị được đóng gói trong các class chung z Tầng điều khiển thiết bị (device-driver layer) che đi sự khác biệt giữa các bộ điều khiển vào/ra z Có nhiều loại thiết bị căn cứ theo các tiêu chí: z Character-stream / block z Sequential / random-access z Sharable / dedicated z Speed of operation z read-write / read only / write only 3 13 Cấu trúc vào ra của nhân 14 Đặc tính các thiết bị vào/ra 15 Các thiết bị block và character z Các thiết bị block (ví dụ đĩa cứng): z Các lệnh làm việc: read, write, seek z Có thể thực hiện vào/ra theo chế độ raw I/O hoặc thông qua truy cập hệ thống tệp z Có thể truy cập qua tệp memory-mapped (ánh xạ bộ nhớ) z Các thiết bị character (ví dụ bàn phím, chuột, cổng COM): z Các lệnh làm việc: get, put z Bổ sung thư viện cho phép làm việc theo dòng (line) 16 Các thiết bị mạng z Có thể là thiết bị block hoặc character z Unix và Windows NT/9i/2000 có giao diện lập trình socket z Tách biệt giao thức mạng với các thao tác mạng z Có tính năng select z Nhiều cách tiếp cận vào/ra (pipes, FIFOs, streams, queues, mailboxes) 17 Đồng hồ (clock) và timer z Cung cấp thông tin về giờ hiện tại, giờ đã trôi qua, timer z Nếu phần cứng clock/timer lập trình được:Có thể tạo ngắt định kỳ (Cần cho các hệ time- sharing) 18 Vào/ra blocking và nonblocking z Blocking – Tiến trình treo đến khi vào/ra hoàn thành z Dễ hiểu, dễ sử dụng z Không đủ đối với một số loại yêu cầu vào/ra z Nonblocking – Hàm vào/ra trả lại kết quả ngay không cần vào/ra hoàn thành z Giao diện NSD, copy dữ liệu có buffered vào/ra z Được cài đặt qua kỹ thuật đa luồng z Trả lại ngay số byte được đọc/ghi 4 19 Vào/ra không đồng bộ z Asynchronous (không đồng bộ): Tiến trình chạy trong khi vào/ra đang được thực hiện z Khó sử dụng z Hệ vào/ra gửi tín hiệu cho tiến trình khi vào/ra hoàn thành 20 Hệ vào/ra của nhân z Lập lịch z Một số yêu cầu vào/ra được phục vụ thông qua hàng chờ vào/ra của từng thiết bị z Một số HĐH cố gắng đảm bảo tính công bằng z Tạo vùng đệm lưu dữ liệu trong bộ nhớ khi truyền dữ liệu giữa các thiết bị: z Khắc phục sự khác nhau về tốc độ của các thiết bị z Khắc phục sự khác nhau về độ dài gói dữ liệu z Để duy trì ngữ nghĩa copy 21 Tốc độ truyền dữ liệu của các thiết bị trên Sun Enterprise 6000 22 Hệ vào/ra của nhân z Caching – Bộ nhớ tốc độ cao chứa các bản copy của dữ liệu z Dữ liệu luôn là bản copy z Cải thiện đáng kể hiệu năng hệ thống z Spooling –Lưu dữ liệu ra (output) cho một thiết bị z Sử dụng khi thiết bị chỉ phục vụ được một yêu cầu tại một thời điểm z Ví dụ: Máy in 23 Hệ vào/ra của nhân z Cung cấp khả năng sử dụng “độc quyền” một thiết bị z Hàm hệ thống: cấp phát và giải phóng thiết bị z Cơ chế chống bế tắc 24 Xử lý lỗi z HĐH có thể khôi phục lỗi gây ra do đọc đĩa, thiết bị chưa sẵn sàng, ghi lỗi z Khi có lỗi vào/ra: Hàm điều khiển trả lại mã lỗi z Hệ thống có log ghi lại các lỗi vào/ra 5 25 Cấu trúc dữ liệu của nhân z Nhân giữ các thông tin trạng thái cho các thành phần của hệ vào/ra, bao gồm bảng các mở tệp, kết nối mạng, trạng thái các thiết bị character z Nhiều cấu trúc dữ liệu phức tạp để lưu vết các vùng đệm, cấp phát bộ nhớ, các khối nhớ rỗi z Một số HĐH sử dụng phương pháp hướng đối tượng và message-passing để cài đặt hệ vào/ra 26 Cấu trúc vào/ra trong nhân UNIX 27 Chuyển đổi yêu cầu vào/ra thành thao tác phần cứng z Giả sử một tiến trình đọc tệp từ đĩa cứng. Các bước thực hiện như sau: z Xác định thiết bị chứa tệp z Biến đổi tên tệp thành dạng biểu diễn của tệp trên thiết bị z Đọc dữ liệu (vật lý) từ đĩa vào vùng đệm z Cho phép tiến trình được đọc dữ liệu từ vùng đệm z Trả lại điều khiển cho tiến trình 28 Thực hiện một yêu cầu vào/ra 29 STREAMS z STREAM – kênh liên lạc full-duplex giữa một tiến trình của NSD và một thiết bị z Một STREAM gồm có: - STREAM head dùng để giao tiếp với tiến trình của NSD - driver end giao tiếp với thiết bị - n STREAM module giữa head và end (n≥0). z Mỗi module có một read queue và một write queue z Message passing được sử dụng để truyền thông giữa các queue 30 Cấu trúc STREAMS 6 31 Hiệu năng z Vào/ra là yếu tố chính ảnh hưởng đến hiệu năng của hệ thống: z Yêu cầu CPU thực hiện mã vào/ra của driver, mã vào/ra của kernel z Thực hiện Context switch khi có ngắt z Copy dữ liệu z Truyền dữ liệu mạng 32 Truyền thông giữa các máy tính 33 Cải tiến hiệu năng z Giảm số lượng các context switches z Giảm copy dữ liệu z Giảm số lần ngắt bằng cách truyền lượng lớn dữ liệu trong mỗi lần vào/ra, dùng controller thông minh z Sử dụng DMA z Cân bằng tải giữa hiệu năng CPU, bộ nhớ, bus, và vào/ra để đạt thông lượng tốt nhất 34 Chức năng các thiết bị 35 Các vấn đề cần nhớ z Giao diện vào/ra với ứng dụng z Hệ vào/ra của nhân HĐH z Streams z Các vấn đề về hiệu năng hệ thống chịu ảnh hưởng của vào/ra . 1 1 Nguyên lý hệ điều hành Nguyễn Hải Châu Khoa Công nghệ Thông tin Trường Đại học Công nghệ 2 Hệ vào/ra Phần cứng Giao diện vào/ra với ứng dụng Hệ vào/ra của nhân Chuyển yêu cầu vào/ra thành. trình chạy trong khi vào/ra đang được thực hiện z Khó sử dụng z Hệ vào/ra gửi tín hiệu cho tiến trình khi vào/ra hoàn thành 20 Hệ vào/ra của nhân z Lập lịch z Một số yêu cầu vào/ra được phục vụ. dữ liệu trực tiếp giữa bộ nhớ và thiết bị vào/ra 11 Quá trình 6 bước thực hiện vào/ra theo DMA 12 Giao diện vào/ra với ứng dụng z Các hàm hệ thống vào/ra của một thiết bị được đóng gói trong