Mục tiêu của bài giảng chương 12 - Hệ thống vào ra là: Khám phá cấu trúc I/O subsystem của hệ điều hành, thảo luận các nguyên lý của phần cứng vào-ra và sự phức tạp của nó, cung cấp chi tiết về các khía cạnh hiệu năng của phần cứng và phần mềm vào-ra. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Nội dung chương 12 BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH Chương 12: Hệ thống vào-ra Phạm Quang Dũng Bộ mơn Khoa học máy tính Khoa Cơng nghệ thơng tin Trường Đại học Nông nghiệp Hà Nội Website: fita.hua.edu.vn/pqdung Phần cứng vào-ra I/O Hardware Giao diện vào-ra ứng dụng Application I/O Interface Hệ thống vào-ra Kernel I/O Subsystem Chuyển yêu cầu vào tới thao tác phần cứng Transforming I/O Requests to Hardware Operations Streams Performance Bài giảng Nguyên lý Hệ điều hành Mục tiêu 12.2 Phạm Quang Dũng ©2008 Mở đầu Hai cơng việc máy tính: Khám phá cấu trúc I/O subsystem HĐH z Vào-ra Thảo luận nguyên lý phần cứng vào-ra phức tạp z Xử lý Trong nhiều trường hợp, cơng việc vào-ra z duyệt trang web, chỉnh sửa file Cung cấp chi tiết khía cạnh hiệu phần cứng phần mềm vào-ra Vai trò HĐH vào-ra máy tính quản lý điều khiển thiết bị vào-ra hoạt động vào-ra Các thiết bị vào-ra đa dạng chức tốc độ z cần phương pháp điều khiển khác nhau, tạo thành hệ thống vào-ra (I/O subsystem) kernel Bài giảng Nguyên lý Hệ điều hành 12.3 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.4 Phạm Quang Dũng ©2008 12.1 I/O Hardware I/O hardware (tiếp) Có vơ số loại thiết bị vào-ra Bộ điều khiển thiết bị (device controller) hỗ trợ giao thức kết Các khái niệm chung: Các lệnh vào-ra (I/O instructions) điều khiển thiết bị nối, buffering, caching… z Port: cổng giao tiếp thiết bị vào-ra với máy tính, vd: serial, parallel, usb, PS/2 ports… thông tin thành phần máy tính thiết bị vào-ra, vd: PCI bus, SCSI bus z Controller (host adapter): tập hợp thiết bị điện tử điều khiển cổng, bus, thiết bị vào-ra; controller có hay nhiều ghi dành cho tín hiệu liệu điều khiển; Phạm Quang Dũng ©2008 Cấu trú trúc bus PC thơng thườ thường Bài giảng Nguyên lý Hệ điều hành 12.7 Có điều khiển thiết bị hỗ trợ kỹ thuật vào-ra trên: z graphics controller có cổng vào-ra cho hoạt động điều khiển bản, đồng thời có vùng nhớ ánh xạ lớn để lưu nội dung hình z tiến trình ghi liệu lên vùng nhớ trên, controller tạo ảnh hình theo liệu z ghi hàng triệu byte lên vùng nhớ nhanh nhiều so với thực hàng triệu lệnh vào-ra trực tiếp vd: serial-port controller chip 12.5 z Các lệnh vào-ra trực tiếp: chuyển liệu qua cổng vào-ra z Vào-ra theo đồ nhớ (Memory-mapped I/O) z Bus (daisy chain or shared direct access): tập dây dẫn truyền Bài giảng Nguyên lý Hệ điều hành Các thiết bị có địa chỉ, sử dụng bởi: Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.6 Phạm Quang Dũng ©2008 Một số địa chỉ cổng vào-ra thiế thiết bị PC Bài giảng Nguyên lý Hệ điều hành 12.8 Phạm Quang Dũng ©2008 Polling - thăm dò lần lượ lượt Interrupts - Ngắ Ngắt CPU cần xác định trạng thái thiết bị ⇒ thực Polling z Command-ready: controller sẵn sàng thực lệnh Thiết bị vào-ra yêu cầu ngắt CPU Thực xong lệnh, CPU đọc dòng yêu cầu ngắt (trên CPU) chứa ngắt đến z Busy: controller bận Các ngắt là: z Error z Ngắt khơng che (non-maskable): báo trình trạng lỗi phải Là vòng lặp busy-wait đợi vào-ra từ thiết bị: xử lý ngay, vd: lỗi chia 0, lỗi stack, page fault z đọc ghi trạng thái lặp lặp lại bit busy = để thực tiếp lệnh vào-ra; z Ngắt che (maskable): bị bỏ qua bị hỗn xử lý, vd: ngắt gây thiết bị z vd: đọc trạng thái serial port để tránh tràn buffer gây liệu Nói chung hoạt động polling có hiệu quả, khơng hiệu Khi có ngắt: z CPU lưu trạng thái làm việc, vd: đ/c trở về, g/t thời cố gắng thực lặp lại nhiều lần mà tìm z Nhảy đến thường trình xử lý ngắt (có địa xác định nhớ) thấy thiết bị sẵn sàng z Trình xử lý ngắt (Interrupt handler) xác định nguyên nhân ngắt, xử lý z Giải pháp: Mỗi controller nên có chế báo trạng thái rỗi cho CPU thực lệnh trở từ ngắt z CPU khôi phục trạng thái trước ngắt Bài giảng Nguyên lý Hệ điều hành 12.9 Phạm Quang Dũng ©2008 Bài giảng Ngun lý Hệ điều hành Vòng lặp xử lý ngắ ngắt vào-ra 12.10 Phạm Quang Dũng ©2008 Interrupts (tiế tiếp) Trình xử lý ngắt tìm nguyên nhân ngắt bảng vector ngắt Vectơ ngắt gửi ngắt tới trình xử lý dựa mức ưu tiên ngắt Cơ chế ngắt dùng để xử lý ngoại lệ Bài giảng Nguyên lý Hệ điều hành 12.11 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.12 Phạm Quang Dũng ©2008 Bảng vectơ ngắ ngắt VXL Intel Pentium Direct Memory Access (DMA) Được sử dụng để tránh phải sử dụng vào-ra chương trình (programmed I/O) lượng liệu cần chuyển lớn Cần có DMA controller (DMAC) Chuyển liệu trực tiếp thiết bị vào-ra nhớ mà không cần qua CPU Bài giảng Nguyên lý Hệ điều hành 12.13 Phạm Quang Dũng ©2008 Sáu bướ bước thự thực hiệ truyề truyền liệ liệu DMA Bài giảng Nguyên lý Hệ điều hành 12.14 Phạm Quang Dũng ©2008 12.2 Giao diệ diện vào-ra ứng dụng Làm để ứng dụng mở file đĩa mà không cần biết loại đĩa gi? Sự khác thiết bị vào-ra gói gọn kernel module gọi device driver, thay đổi thiết bị tuân theo giao diện chuẩn Lớp device-driver ẩn khác I/O controller I/O subsystem kernel Các thiết bị phân loại nhiều cách khác z Vào-ra theo chuỗi ký tự khối z Truy nhập ngẫu nhiên z Có thể chia sẻ chuyên dụng z Tốc độ xử lý z read-write, read only, write only Bài giảng Nguyên lý Hệ điều hành 12.15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.16 Phạm Quang Dũng ©2008 Một cấu trú trúc Kernel I/O Bài giảng Nguyên lý Hệ điều hành 12.17 Đặc điể điểm thiế thiết bị vào-ra Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.18 Phạm Quang Dũng ©2008 Các thiế thiết bị mạng Các thiế thiết bị vào theo khố khối theo ký tự Hầu hết HĐH cung cấp giao diện vào-ra dùng riêng cho Các thiết bị vào theo khối chủ yếu gồm ổ đĩa mạng, khác với giao diện vào-ra sử dụng cho đĩa z Các lệnh bao gồm: read, write, seek z Các ứng dụng thường truy nhập thiết bị qua giao diện hệ thống file (file-system access) mảng tuyến tính khối (raw I/O access) Unix Windows NT/9x/2000 dùng giao diện socket z Tách riêng giao thức mạng khỏi hoạt động mạng z Có thể truy nhập file theo đồ nhớ z Có bao gồm chức select để quản lý tập socket Các thiết bị ký tự bao gồm: bàn phím, chuột, cổng nối tiếp Nhiều phương pháp giao tiếp liên tiến trình giao tiếp mạng z Các lệnh gồm: get, put z Trên đỉnh giao diện này, thư viện xây dựng cho phép thao tác chỉnh sửa xử lý buffer; vd: ấn phím khác sử dụng (pipes, FIFOs, streams, queues, mailboxes) backspace, ký tự trước bị vứt khỏi dòng vào (input stream) Bài giảng Nguyên lý Hệ điều hành 12.19 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.20 Phạm Quang Dũng ©2008 Clocks Timers Blocking and Nonblocking I/O Cung cấp thời gian tại, thời gian trôi qua, thiết lập định thời (khởi hành động X thời điểm T) Blocking – tiến trình bị treo đến vào-ra kết thúc z Dễ hiểu, dễ sử dụng z Không thể áp dụng cho số trường hợp Nonblocking – lời gọi vào-ra lặp lại nhiều Programmable interval timer (bộ định thời có khoảng thời gian lập trình được) sử dụng cho việc định thời gian, sinh ngắt định kỳ z Sử dụng giao diện người sử dụng, đưa liệu vào nhớ đệm (buffered I/O), vd: nhận liệu vào từ bàn phím chuột, xử lý hiển thị hình z Được thực thông qua đa luồng z Lời gọi vào-ra lặp lại nhanh, với giá trị trả cho biết byte chuyển Asynchronous – gọi return, khơng đợi vào-ra kết thúc, tiến trình chạy vào-ra thực → Khó sử dụng z I/O subsystem báo cho tiến trình biết vào-ra kết thúc Bài giảng Nguyên lý Hệ điều hành 12.21 Phạm Quang Dũng ©2008 Hai phương phá pháp vào-ra Bài giảng Nguyên lý Hệ điều hành 12.22 Phạm Quang Dũng ©2008 12.3 Kernel I/O Subsystem Kernel I/O Subsystem cung cấp nhiều dịch vụ liên quan đến vào- Đồng - Synchronous Không đồng - Asynchronous ra: scheduling, buffering, caching, spooling, error handling… I/O Scheduling z Lập lịch yêu cầu vào-ra nhằm xác định thứ tự thực chúng hợp lý z Thực lập lịch vào-ra cách trì queue chứa yêu cầu cho thiết bị z HĐH cố gắng đạt tối ưu: cải thiện hiệu hệ thống, giảm thời gian đáp ứng trung bình… Buffering – chứa liệu nhớ truyền liệu thiết bị z Để giải vấn đề không khớp tốc độ thiết bị z Để giải vấn đề khơng khớp kích thước liệu truyền thiết bị Bài giảng Nguyên lý Hệ điều hành 12.23 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.24 Phạm Quang Dũng ©2008 Tốc độ truyề truyền liệ liệu thiế thiết bị Sun Enterprise 6000 Bảng trạ trạng thá thái thiế thiết bị Bài giảng Nguyên lý Hệ điều hành 12.25 Phạm Quang Dũng ©2008 Kernel I/O Subsystem (tiếp) Bài giảng Nguyên lý Hệ điều hành 12.26 Phạm Quang Dũng ©2008 Kernel I/O Subsystem (tiếp) Caching – nhớ nhanh giữ copy liệu Error handling z Luôn giữ copy z HĐH sử dụng nhớ bảo vệ (protected memory) có z Là chìa khóa hiệu thể ngăn ngừa cẩn thận nhiều loại lỗi phần cứng lỗi ứng Spooling – giữ output cho thiết bị z Nếu thiết bị phục vụ yêu cầu thời điểm dụng z HĐH phục hồi sau lỗi đọc đĩa, ghi ẩu, thiết bị z vd: Printing Device reservation –cung cấp truy nhập riêng tới thiết bị z Là lời gọi hệ thống để phân phối thu hồi thiết bị cho tiến trình khơng khả dụng z Hầu hết trả mã lỗi yêu cầu vào-ra lỗi z Là cách đề phòng bế tắc Bài giảng Nguyên lý Hệ điều hành 12.27 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.28 Phạm Quang Dũng ©2008 Kernel I/O Subsystem (tiếp) Sử dụng system call để thự thực hiệ vào-ra I/O Protection z Tiến trình người sử dụng vơ tình hay cố ý cố gắng phá vỡ hoạt động bình thường thơng qua lệnh vào-ra bất hợp lệ Tất lệnh vào-ra định nghĩa đặc quyền Vào-ra phải thực thông qua system call – Các vùng nhớ dùng cho ánh xạ (memory-mapped) cổng vào-ra (I/O port) phải bảo vệ Bài giảng Nguyên lý Hệ điều hành 12.29 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.30 Phạm Quang Dũng ©2008 12.4 Chuyể Chuyển yêu cầu vào-ra tới hoạ hoạt động phầ phần cứng Kernel I/O Subsystem (tiếp) Các cấu trúc liệu kernel z Kernel lưu thông tin trạng thái cho thành phần vào-ra, bao gồm bảng file mở, kết nối mạng, trạng thái thiết bị vào-ra theo ký tự Xác định thiết bị chứa file Thông dịch tên tương ứng với thiết bị z Rất nhiều cấu trúc liệu phức tạp để theo dõi buffer, phân phối nhớ, khối nhớ “dirty” z Một số phương pháp hướng đối tượng truyền thông điệp 12.31 Đọc liệu từ đĩa vào buffer Làm cho liệu khả dụng tiến trình yêu cầu Trả điều khiển cho tiến trình sử dụng để thực thi vào-ra Bài giảng Nguyên lý Hệ điều hành Các bước đọc file từ đĩa cho tiến trình: Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.32 Phạm Quang Dũng ©2008 Vòng đời yêu cầu vào-ra yêu cầu vào-ra user process system call trở từ đáp ứng yêu cầu? không vào-ra kết thúc, liệu vào sẵn dùng, xuất liệu kết thúc có kernel I/O subsystem liệu có buffer cache gửi yêu cầu tới device driver, khóa tiến trình thích hợp thực yêu cầu, phát lệnh tới controller, cấu hình controller khóa đến bị ngắt lệnh controller STREAM – kênh giao tiếp giữ nhận tín hiệu system call đồng thời lúc tiến trình mức người sử dụng truyền liệu (nếu thích hợp) cho tiến trình, trả tr.thái kết thúc mã lỗi với thiết bị (truyền song cơng hồn tồn) Một STREAM bao gồm: kernel I/O subsystem device driver trình xử lý ngắt - STREAM head giao tiếp với tiến trình người sử dụng - driver end giao tiếp với thiết bị xác định vào-ra hoàn thành, báo rõ thay đổi trạng thái tới I/O subsystem - STREAM module nằm phần Mỗi module có read queue write queue nhận ngắt, lưu liệu buffer driver Nếu input, phát tín hiệu mở khóa device driver Phương thức message passing sử dụng để giao tiếp queue ngắt theo dõi thiết bị, ngắt vào-ra kết thúc Bài giảng Nguyên lý Hệ điều hành 12.5 STREAMS (UNIX, Solaris) device controller vào-ra kết thúc, tạo ngắt 12.33 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.34 Phạm Quang Dũng ©2008 12.6 Performance Cấu trú trúc STREAM Vào-ra nhân tố hiệu hệ thống: z Luôn yêu cầu CPU thực mã device driver, kernel I/O z Chuyển ngữ cảnh gây ngắt z Copy liệu chiếm dụng bus z Lưu lượng mạng đặc biệt căng thẳng Bài giảng Nguyên lý Hệ điều hành 12.35 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12.36 Phạm Quang Dũng ©2008 Cải thiệ thiện hiệ hiệu Giảm số lần chuyển ngữ cảnh Giảm copy liệu Giảm ngắt cách sử dụng truyền lượng lớn liệu, End of Chapter 12 controller thông minh, polling Sử dụng DMA Cân CPU, memory, bus, hiệu vào-ra để đạt thông lượng cao Bài giảng Nguyên lý Hệ điều hành 12.37 Phạm Quang Dũng ©2008 10 ... read-write, read only, write only Bài giảng Nguyên lý Hệ điều hành 12. 15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12. 16 Phạm Quang Dũng ©2008 Một cấu trú trúc Kernel I/O Bài giảng Nguyên. .. ngắt Bài giảng Nguyên lý Hệ điều hành 12. 9 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành Vòng lặp xử lý ngắ ngắt vào-ra 12. 10 Phạm Quang Dũng ©2008 Interrupts (tiế tiếp) Trình xử lý. .. vào-ra kết thúc Bài giảng Nguyên lý Hệ điều hành 12. 5 STREAMS (UNIX, Solaris) device controller vào-ra kết thúc, tạo ngắt 12. 33 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 12. 34 Phạm