Bài giảng Quản lí hệ điều hành - Chương 12: Hệ thống vào/ra - Phạm Quang Dũng

pdf 10 trang huongle 3770
Bạn đang xem tài liệu "Bài giảng Quản lí hệ điều hành - Chương 12: Hệ thống vào/ra - Phạm Quang Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_quan_li_he_dieu_hanh_chuong_12_he_thong_vaora_pham.pdf

Nội dung text: Bài giảng Quản lí hệ điều hành - Chương 12: Hệ thống vào/ra - Phạm Quang Dũng

  1. Nội dung chương 12 BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH „ Phầncứng vào-ra I/O Hardware „ Giao diện vào-ra ứng dụng Application I/O Interface „ Hệ thống con vào-ra Kernel I/O Subsystem Chương 12: Hệ thống vào-ra „ Chuyểnyêucầuvàoratới thao tác phầncứng Transforming I/O Requests to Hardware Operations „ Streams Phạm Quang Dũng Bộ môn Khoa học máy tính „ Performance Khoa Công nghệ thông tin Trường Đạihọc Nông nghiệpHàNội Website: fita.hua.edu.vn/pqdung Bài giảng Nguyên lý Hệđiềuhành 12.2 Phạm Quang Dũng ©2008 Mục tiêu Mở đầu „ Khám phá cấu trúc I/O subsystem của HĐH „ Hai công việc chính củamột máy tính: z Vào-ra z Xử lý „ Thảoluận các nguyên lý củaphầncứng vào-ra và sự phứctạpcủa nó. „ Trong nhiềutrường hợp, công việc chính là vào-ra z duyệtmột trang web, chỉnh sửamộtfile „ Vai trò của HĐH trong vào-ra củamáytínhlàquảnlývà „ Cung cấpchi tiếtvề các khía cạnh hiệunăng của điềukhiểncácthiếtbị vào-ra và các hoạt động vào-ra. phầncứng và phầnmềm vào-ra. „ Các thiếtbị vào-ra rất đadạng về chứcnăng và tốc độ z cần các phương pháp điềukhiển khác nhau, tạo thành hệ thống con vào-ra (I/O subsystem) của kernel. Bài giảng Nguyên lý Hệđiềuhành 12.3 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.4 Phạm Quang Dũng ©2008 1
  2. 12.1. I/O Hardware I/O hardware (tiếp) „ Có vô số loạithiếtbị vào-ra „ Bộđiềukhiểnthiếtbị (device controller) hỗ trợ các giao thứckết nối, buffering, caching „ Các khái niệm chung: „ Các lệnh vào-ra (I/O instructions) điềukhiểncácthiếtbị z Port: cổng giao tiếpgiữathiếtbị vào-ra với máy tính, „ Các thiếtbị có địachỉ, đượcsử dụng bởi: z Các lệnh vào-ra trựctiếp: chuyểndữ liệu qua các cổng vào-ra vd: serial, parallel, usb, PS/2 ports z Vào-ra theo bản đồ bộ nhớ (Memory-mapped I/O) z Bus (daisy chain or shared direct access): tậpdâydẫntruyền „ Có bộđiềukhiểnthiếtbị có thể hỗ trợ cả 2 kỹ thuật vào-ra trên: thông tin giữa các thành phần trong máy tính và trong các z graphics controller có các cổng vào-ra cho các hoạt động điều thiếtbị vào-ra, vd: PCI bus, SCSI bus khiểncơ bản, đồng thời có vùng bộ nhớ ánh xạ lớn để lưunội dung màn hình. z Controller (host adapter): tậphợpcácthiếtbịđiệntửđiều z các tiến trình ghi dữ liệu lên vùng nhớ trên, controller sẽ tạo ảnh khiểncổng, bus, hoặcthiếtbị vào-ra; controller có 1 hay mànhìnhtheodữ liệu đó. nhiều thanh ghi dành cho các tín hiệudữ liệuvàđiềukhiển; z ghi hàng triệu byte lên vùng nhớ nhanh hơn nhiềuso vớithựchiện vd: serial-port controller là 1 chip. hàng triệulệnh vào-ra trựctiếp. Bài giảng Nguyên lý Hệđiềuhành 12.5 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.6 Phạm Quang Dũng ©2008 Cấu trúc bus PC thông thường Một số địa chỉ các cổng vào-ra thiết bị trên PC Bài giảng Nguyên lý Hệđiềuhành 12.7 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.8 Phạm Quang Dũng ©2008 2
  3. Polling - thăm dò lần lượt Interrupts - Ngắt „ CPU cầnxácđịnh trạng thái củathiếtbị ⇒ thựchiện Polling „ Thiếtbị vào-ra yêu cầungắtCPU. Thựchiện xong mỗilệnh, CPU z Command-ready: controller sẵn sàng thựchiệnlệnh đọc dòng yêu cầungắt (trên CPU) chứa các ngắt đến. z Busy: controller đang bận „ Các ngắtcóthể là: z Error z Ngắt không che được (non-maskable): báo các trình trạng lỗiphải „ Là vòng lặp busy-wait đợi vào-ra từ thiếtbị: xử lý ngay, vd: lỗichia0, lỗi stack, page fault z đọc thanh ghi trạng thái lặp đilặplạichođến khi bit busy = 0 để thực z Ngắtcheđược (maskable): có thể bị bỏ qua hoặcbị hoãn xử lý, vd: hiệntiếplệnh vào-ra; ngắt gây ra bởithiếtbị z vd: đọctrạng thái của serial port để tránh tràn buffer gây mấtdữ liệu. „ Khi có ngắt: „ Nói chung hoạt động polling là có hiệuquả, nó chỉ không hiệu z CPU lưutrạng thái đang làm việc, vd: đ/c trở về, các g/t hiệnthời quả khi đượccố gắng thựchiệnlặplại nhiềulầnmàhiếm khi tìm z Nhảy đếnthường trình xử lý ngắt(cóđịachỉ xác định trong bộ nhớ) thấymộtthiếtbị 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ó cơ chế báo trạng thái rỗi cho CPU. và thựchiệnlệnh trở về từ ngắt z CPU khôi phụctrạng thái trướcngắt Bài giảng Nguyên lý Hệđiềuhành 12.9 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.10 Phạm Quang Dũng ©2008 Vòng lặp xử lý ngắt vào-ra Interrupts (tiếp) „ Trình xử lý ngắt tìm nguyên nhân ngắttrongbảng vector ngắt „ Vectơ ngắtgửi các ngắttới đúng trình xử lý nó dựa trên mức ưutiênngắt „ Cơ chế ngắtcũng được dùng để xử lý ngoạilệ Bài giảng Nguyên lý Hệđiềuhành 12.11 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.12 Phạm Quang Dũng ©2008 3
  4. Bảng vectơ ngắt của bộ VXL Intel Pentium Direct Memory Access (DMA) „ Đượcsử dụng để tránh phảisử dụng vào-ra bằng chương trình (programmed I/O) khi lượng dữ liệucần chuyểnlớn. „ Cần có DMA controller (DMAC) „ Chuyểndữ liệutrựctiếpgiữathiếtbị vào-ra và bộ nhớ mà không cần qua CPU. Bài giảng Nguyên lý Hệđiềuhành 12.13 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.14 Phạm Quang Dũng ©2008 Sáu bước thực hiện truyền dữ liệu DMA 12.2. Giao diện vào-ra ứng dụng „ Làm thế nào để 1 ứng dụng có thể mở một file trên đĩamà không cầnbiếtloại đĩalàgi? „ Sự khác nhau củacácthiếtbị vào-ra được gói gọn trong các kernel module đượcgọi là device driver, thay đổi đốivớimỗi thiếtbị nhưng tuân theo những giao diệnchuẩn. „ Lớp device-driver ẩn đisự khác nhau trong các I/O controller đốivới I/O subsystem của kernel. „ Các thiếtbịđược phân loạinhiều cách khác nhau z Vào-ra theo chuỗikýtự hoặckhối z Truy nhậptuầntự hoặcngẫu nhiên z Có thể chia sẻ hoặc chuyên dụng z Tốc độ xử lý z read-write, read only, hoặc write only Bài giảng Nguyên lý Hệđiềuhành 12.15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.16 Phạm Quang Dũng ©2008 4
  5. Một cấu trúc Kernel I/O Đặc điểm của các thiết bị vào-ra Bài giảng Nguyên lý Hệđiềuhành 12.17 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.18 Phạm Quang Dũng ©2008 Các thiết bị vào ra theo khối và theo ký tự Các thiết bị mạng „ Các thiếtbị vàoratheokhốichủ yếugồmcácổđĩa „ Hầuhếtcác HĐH cung cấpgiaodiện vào-ra dùng riêng cho mạng, khác vớigiaodiện vào-ra sử dụng cho các đĩa. z Các lệnh bao gồm: read, write, seek z Các ứng dụng thường truy nhậpcácthiếtbị này qua mộtgiaodiện hệ thống file (file-system access) hoặcmảng tuyếntínhcáckhối „ Unix và Windows NT/9x/2000 dùng giao diệnsocket (raw I/O access) z Tách riêng giao thứcmạng khỏihoạt động mạng z Có thể truy nhập file theo bản đồ bộ nhớ z Có bao gồmchứcnăng select để quảnlýtập các socket. „ Các thiếtbị ký tự bao gồm: bàn phím, chuột, cổng nốitiếp z Các lệnh gồm: get, put „ Nhiềuphương pháp giao tiếpliêntiến trình và giao tiếpmạng khác cũng đượcsử dụng (pipes, FIFOs, streams, queues, z Trên đỉnh củagiaodiện này, các thư việncóthểđượcxâydựng mailboxes) cho phép các thao tác chỉnh sửavàxử lý buffer; vd: khi ấn phím backspace, ký tự trước đóbị vứtrakhỏi dòng vào (input stream) Bài giảng Nguyên lý Hệđiềuhành 12.19 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.20 Phạm Quang Dũng ©2008 5
  6. Clocks và Timers Blocking and Nonblocking I/O „ Blocking – tiếntrìnhbị treo đến khi vào-ra kếtthúc „ Cung cấpthờigianhiệntại, thời gian trôi qua, thiếtlập định thời z Dễ hiểu, dễ sử dụng (khởisự hành động X tạithời điểmT) z Không thể áp dụng cho mộtsố trường hợp „ Nonblocking – lờigọi vào-ra lặplạinhiềunhấtcóthể „ Programmable interval timer (bộđịnh thờicókhoảng thời z Sử dụng trong các giao diệnngườisử dụng, đưadữ liệuvàobộ nhớ gian lậptrìnhđược) đượcsử dụng cho việc định thờigian, sinh đệm (buffered I/O), vd: nhậndữ liệuvàotừ bàn phím và chuột, trong các ngắt định kỳ. khi xử lý và hiểnthị trên màn hình. z Đượcthựchiện thông qua đaluồng z Lờigọi vào-ra lặplại nhanh, vớigiátrị trả về cho biết bao nhiêu byte đã đượcchuyển „ Asynchronous – lậptứcgọi return, không đợi vào-ra kết thúc, tiếntrình vẫnchạy trong khi vào-ra đang đượcthựchiện → Khó sử dụng z I/O subsystem báo cho tiến trình biết khi nào vào-ra kết thúc Bài giảng Nguyên lý Hệđiềuhành 12.21 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.22 Phạm Quang Dũng ©2008 Hai phương pháp vào-ra 12.3. Kernel I/O Subsystem „ Kernel I/O Subsystem cung cấp nhiềudịch vụ liên quan đến vào- ra: scheduling, buffering, caching, spooling, error handling Đồng bộ - Synchronous Không đồng bộ - Asynchronous „ I/O Scheduling z Lậplịch các yêu cầu vào-ra nhằmxácđịnh mộtthứ tự thựchiện chúng hợplý. z Thựchiệnlậplịch vào-ra bằng cách duy trì một queue chứacácyêu cầuchomỗithiếtbị z HĐH cố gắng đạttối ưu: cảithiệnhiệunăng hệ thống, giảmthời gian đáp ứng trung bình „ Buffering – chứadữ liệu trong bộ nhớ trong khi vẫntruyềndữ liệu giữacácthiếtbị z Để giải quyếtvấn đề không khớptốc độ giữacácthiếtbị z Để giảiquyếtvấn đề không khớpkíchthướcdữ liệutruyềngiữacác thiếtbị Bài giảng Nguyên lý Hệđiềuhành 12.23 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.24 Phạm Quang Dũng ©2008 6
  7. Tốc độ truyền dữ liệu của các thiết bị trên Bảng trạng thái thiết bị Sun Enterprise 6000 Bài giảng Nguyên lý Hệđiềuhành 12.25 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.26 Phạm Quang Dũng ©2008 Kernel I/O Subsystem (tiếp) Kernel I/O Subsystem (tiếp) „ Caching – bộ nhớ nhanh giữ bảncopy củadữ liệu „ Error handling z Luôn chỉ giữ mộtbản copy z HĐH sử dụng bộ nhớđượcbảovệ (protected memory) có z Là chìa khóa củahiệunăng thể ngănngừacẩnthận nhiềuloạilỗiphầncứng và lỗi ứng „ Spooling – giữ output cho mộtthiếtbị dụng. z Nếuthiếtbị chỉ có thể phụcvụ mộtyêucầutạimộtthời điểm z vd: Printing z HĐH có thể phụchồisaucáclỗi đọc đĩa, ghi ẩu, thiếtbị „ Device reservation –cung cấpsự truy nhậpriêngtớimộtthiếtbị không khả dụng. z Là các lờigọihệ thống để phân phốivàthuhồicácthiếtbị cho các z Hầuhếttrả về mộtmãlỗikhiyêucầu vào-ra lỗi tiếntrình z Là mộtcáchđề phòng bế tắc Bài giảng Nguyên lý Hệđiềuhành 12.27 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.28 Phạm Quang Dũng ©2008 7
  8. Kernel I/O Subsystem (tiếp) Sử dụng system call để thực hiện vào-ra „ I/O Protection z Tiếntrìnhcủangườisử dụng có thể vô tình hay cố ý cố gắng phá vỡ hoạt động bình thường thông qua các lệnh vào-ra bấthợplệ Tấtcả các lệnh vào-ra được định nghĩalàđặcquyền Vào-ra phải đượcthựchiệnthôngqua cácsystem call. – Các vùng nhớ dùng cho ánh xạ (memory-mapped) và cổng vào-ra (I/O port) cũng phải đượcbảovệ Bài giảng Nguyên lý Hệđiềuhành 12.29 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.30 Phạm Quang Dũng ©2008 Kernel I/O Subsystem (tiếp) 12.4. Chuyển yêu cầu vào-ra tới các hoạt động phần cứng „ Các cấutrúcdữ liệu kernel z Kernel lưuthôngtin trạng thái cho các thành phần vào-ra, „ Các bước đọcmột file từđĩachomộttiếntrình: bao gồmcácbảng file mở, các kếtnốimạng, trạng thái thiết 1. Xác định thiếtbị chứa file bị vào-ra theo ký tự. 2. Thông dịch tên tương ứng vớithiếtbị z Rất nhiềucấutrúcdữ liệuphứctạp để theo dõi các buffer, 3. Đọcdữ liệutừđĩa vào buffer phân phốibộ nhớ, các khốinhớ “dirty”. 4. Làm cho dữ liệulàkhả dụng đốivớitiếntrìnhyêucầu z Mộtsố phương pháp hướng đốitượng và truyền thông điệp đượcsử dụng để thực thi vào-ra. 5. Trảđiềukhiểnchotiếntrình Bài giảng Nguyên lý Hệđiềuhành 12.31 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.32 Phạm Quang Dũng ©2008 8
  9. Vòng đời của một yêu cầu vào-ra 12.5. STREAMS (UNIX, Solaris) vào-ra kết thúc, dữ liệu yêu cầu vào-ra user process vào đã sẵn dùng, hoặc xuất dữ liệu kết thúc „ STREAM –một kênh giao tiếpcóthể giữ và nhận các tín hiệu system call trở về từ system call đồng thờicùngmột lúc giữamộttiếntrìnhmứcngườisử dụng kernel I/O truyền dữ liệu (nếu có thể đáp ứng có subsystem thích hợp) cho tiến ngay yêu cầu? trình, trả về tr.thái kết vớimộtthiếtbị (truyền song công hoàn toàn) dữ liệu có trong thúc hoặc mã lỗi không buffer cache „ Một STREAM bao gồm: gửi yêu cầu tới device kernel I/O driver, khóa tiến trình subsystem - STREAM head giao tiếpvớitiến trình ngườisử dụng nếu thích hợp - driver end giao tiếpvớithiếtbị thực hiện yêu cầu, phát xác định vào-ra nào lệnh tới controller, cấu hoàn thành, báo rõ sự hình controller khóa device driver thay đổi trạng thái tới - các STREAM module nằmgiữa2 phần trên. đến khi bị ngắt I/O subsystem „ Mỗi module có một read queue và một write queue nhận ngắt, lưu dữ liệu các lệnh của trình xử lý ngắt trong buffer của driver. controller Nếu input, phát tín hiệu „ Phương thức message passing đượcsử dụng để giao tiếpgiữa mở khóa device driver ngắt các queue theo dõi thiết bị, ngắt device controller vào-ra kết thúc, khi vào-ra kết thúc tạo ngắt Bài giảng Nguyên lý Hệđiềuhành 12.33 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.34 Phạm Quang Dũng ©2008 Cấu trúc các STREAM 12.6. Performance „ Vào-ra là nhân tố chính trong hiệunăng hệ thống: z Luôn yêu cầuCPU thựchiệncácmãcủa device driver, kernel I/O z Chuyểnngữ cảnh gây các ngắt z Copy dữ liệu luôn chiếmdụng bus z Lưulượng mạng đặcbiệtcăng thẳng Bài giảng Nguyên lý Hệđiềuhành 12.35 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệđiềuhành 12.36 Phạm Quang Dũng ©2008 9
  10. Cải thiện hiệu năng „ Giảmsố lầnchuyểnngữ cảnh „ Giảmcopy dữ liệu „ Giảmngắtbằng cách sử dụng truyềnlượng lớndữ liệu, các controller thông minh, polling End of Chapter 12 „ Sử dụng DMA „ Cân bằng CPU, memory, bus, và hiệunăng vào-ra để đạt thông lượng cao nhất. Bài giảng Nguyên lý Hệđiềuhành 12.37 Phạm Quang Dũng ©2008 10