Hệ điều hành - Chương 2: Quản lý xuất nhập

pdf 36 trang vanle 2080
Bạn đang xem 20 trang mẫu của tài liệu "Hệ điều hành - Chương 2: Quản lý xuất nhập", để 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:

  • pdfhe_dieu_hanh_chuong_2_quan_ly_xuat_nhap.pdf

Nội dung text: Hệ điều hành - Chương 2: Quản lý xuất nhập

  1. Chương 2: Quảnlýxuấtnhập „ Nhiệmvụ củabộ phậnquảnlýxuấtnhập „ Các thiếtbị xuấtnhập „ Mô hình phân lớp trong quảnlýxuấtnhập „ Bộđiều khiểnthiếtbị (device controller) „ Trình điềukhiểnthiếtbị (device driver) „ Cơ chế DMA „ Quảnlýlỗivàbảovệ quá trình xuấtnhập 1
  2. Nhiệmvụ „ Mụctiêucủabộ phậnquảnlýxuấtnhập „ Giớithiệulớptrừutượng và độclậpthiếtbị „ Che giấu các chi tiếtkỹ thuậtcủa các thiếtbị phầncứng. „ Quảnlývàsửalỗi. „ Làm cho các thiếtbị phầncứng đơngiảnvàdễ dùng. „ Cho phép chia sẻ các thiếtbị phầncứng „ Xây dựng các cơ chế bảovệ các thiếtbịđượcchiasẻ. „ Điềuphốithiếtbịđểphụcvụ cho cùng lúc nhiều nhu cầusử dụng. 2
  3. Ví dụ về các thiếtbị xuấtnhập „ Các thiếtbị giao tiếp: „ Các thiếtbị chỉ nhập: bànphím, chuột, joystick „ Các thiếtbị chỉ xuất : màn hình, máy in „ Các thiếtbị vừanhậpvừaxuất: card mạng. „ Các thiếtbị lưutrữ „ Thiếtbị vừaxuất, vừanhập: đĩa(cứng/mềm), băng từ „ Thiếtbị chỉ xuất: CD-ROM. 3
  4. Phân loạicácthiếtbị nhậpxuất „ Phân loạitheomục đích sử dụng: „ Các thiếtbị giao tiếp: „ Các thiếtbị chỉ nhập: bànphím, chuột, joystick „ Các thiếtbị chỉ xuất : màn hình, máy in „ Các thiếtbị vừanhậpvừaxuất: card mạng. „ Các thiếtbị lưutrữ „ Thiếtbị vừaxuất, vừanhập: đĩa(cứng/mềm), băng từ „ Thiếtbị chỉ xuất: CD-ROM „ Phân loạitheophương pháp truy xuất: „ Thiếtbị khối: „ Tổ chứctheotừng khối riêng biệtvàtruyxuấtngẫunhiên. „ Thiếtbị tuầntự „ Gởinhận theo chuỗibítvàphảitruyxuấttuầntự. 4
  5. Phân loại các thiếtbị nhậpxuất (tt) „ HĐH phải gom nhóm các thiếtbị khác nhau thành những nhóm cơ bản để dễ dàng quảnlý: „ Storage „ Hard drives, Tapes, CDROM „ Networking „ Ethernet, radio, serial line „ Multimedia „ DVD, Camera, microphones „ HĐH phảicungcấpcácphương thứcnhấtquánđể truy cập các nhóm đốitượng trên. Nếu không, lậptrìnhsẽ rất khó khăn 5
  6. Các phương thứctruycậpIO „ Sử dụng chung thư việngiaotiếpchonhiềuthiếtbị khác nhau „ Ví dụ , với HĐH Unix, sử dụng 4 phương thức chính: „ open() „ close() „ read() „ write() „ Các phương thức này là các system calls đượccungcấp bởi HĐH để chophépcácứng dụng chúng tương tác với các thiếtbị xuấtnhập. 6
  7. Các phương thứcIO củaUnix „ fileHandle = open(pathName, flags, mode) „ filehandle: là mộtsố nguyên, dùng để thao tác vớitập tin hay thiếtbị „ pathname: tên trong hệ thống file. Trong Unix, các thiếtbịđặt dướithư mục/dev. „ E.g. /dev/ttya là serial port đầu tiên, /dev/sda: là SCSI drive đầu tiên „ flags: blocking hoặc là non-blocking „ mode: read only, read/write, append „ errorCode = close(fileHandle) „ Kernel sẽ giải phóng các biếnlưutrữ cho thiếtbị 7
  8. Các phương thứcIO của Unix (tt) „ byteCount = read(fileHandle, byte [] buf, count) „ Đọc count bytes từ thiếtbị và lưu trong buffer buf. „ Chương trình người dùng phảikiểm tra byteCount để biếtsố byte thậtsựđọc được. „ byteCount < 0 thì là báo lỗi(xemmãlỗi) „ byteCount = write(fileHandle, byte [] buf, count) „ Ghi count byte từ buf vào thiếtbị „ Số byte thậtsự ghi đượclưu trong byteCount „ byteCount âm là bị lỗi 8
  9. Các đặc tính xuấtnhập „ Ba đặc tính khác nhau cần xem xét khi xử lý 1 thao tác nhậpxuất: „ blocking vs. non-blocking „ buffered vs. unbuffered „ synchronous vs. asynchronous 9
  10. Blocking vs. Non-Blocking I/O „ Blocking – ứng dụng dừng lạichođếnkhisố count bytes được đọchoặcghi „ Ví dụ: Trong thiếtbị mạng, nếumuốn ghi 1000 bytes, thì HĐH ghi tấtcả các byte cho đến khi ghi hoàn tất. „ Nếuthiếtbị không thể thựchiệnlệnh ghi được (ví dụ hỏng dây nối), làmsao? Thìsẽ kết thúc và trả về số bytes đã ghi được. „ Nonblocking – HĐH đọcvàghicácbytes khicóthể, không cần ứng dụng phảidừng lại. 10
  11. Buffered vs. Unbuffered I/O „ Trong trường hợp buffer dữ liệucủathiếtbị quá nhỏ, để không phảichờ quá lâu khi thựchiệnIO „ buffered I/O cho phép kernel copy lạidữ liệu „ Bên write(): cho phép ứng dụng tiếptục ghi dữ liệu „ Bên read(): khi thiếtbị báo có dự liệu đến, kernel chép dữ liệu vào buffer. Khi tiến trình gọi read(), kernel chỉ việc copy từ buffer. „ Khuyết điểm buffered I/O? „ Thêm chi phí để thựchiệncopy „ Chậmtrễ việcgửidữ liệu 11
  12. Synchronous vs. Asynchronous I/O „ Synchronous I/O: các xử lý khác của ứng dụng củangười dùng cuốisẽ dừng lại để chờ các thao tác xuấtnhậpcủa nó hoàn tất. „ Asynchronous I/O: các xử lý khác của ứng dụng có thể thực thi song song với các thao tác xuấtnhập 12
  13. Các loạithiếtbị xuấtnhập Hầuhết HĐH chia thành 3 nhóm thiếtbị: „ Thiếtbịđọctheokítự (character device) „ Dùng cho các thiếtbị tuầntự (v.d. USB port, bàn phím, modem) „ Thiếtbị mạng „ Dùng cho các card mạng (v.d. Ethernet card) „ Thiếtbị theo block: „ Dùng cho các bộ lưutrữ lớn (v.d.ổđĩavàCDROM) „ Phương thức read/write sẽ khác nhau vớitừng loại 13
  14. Thiếtbị xuấtnhậptheokítự „ HĐH đọc và ghi theo chuỗicácbyte „ System call write() sẽ ghi từng byte ra thiếtbị „ System call read() sẽđọctừng byte ra thiếtbị „ Không có điềukhiểntỉ lệ read/write, bên gửicóthể gọi system „ call write() 1 lần 1000 bytes, bên nhậncóthể gọi read 1000 lần, „ mỗilần đọc 1 byte. 14
  15. Thiếtbị mạng „ Unix và Windows đều dùng khái niệm socket để cho việc truyền, nhậndữ liệutrênmạng „ Mỗi write() hoặclàgửicả block, kích thướccủa block có giới hạntùyhệ thống. „ Bên nhận, read() trả về tấtcả các byte trong block. 15
  16. Thiếtbịđọctheoblock „ HĐH đọc và ghi thiếtbị theo các block „ Mỗi block kích thướcxácđịnh (thông thường 1KB - 8KB) „ Người dùng chỉ có thể read/write các block cùng kích thước „ Không giống thiếtbị khác, thiếtbịđọc ghi theo block hỗ trợ random access „ Chúng ta có thểđọc/ghi bấtcứ block nào trên thiếtbị, không cần phải‘đọctấtcả các bytes’ trước „ Làm sao xác định vị trí củablock thứ n? 16
  17. Con trỏ file „ Một con trỏ file đượcgánvàomộtfile đang mở, nếunhư thiếtbị đang mở thuộcloại đọctheoblock „ Con trỏ file sẽ trỏ tớivị trí hiện hành trên file cho lệnh đọc/ghi kế tiếp „ Đơnvị của con trỏ file là byte, chứ không phảiblock „ Di chuyển con trỏ file: „ absoluteOffset = lseek(fileHandle, offset, whence); „ whence xác định vị trí cộtmốc, đầu file, cuốifile „ Vị trí hiệnhànhđượctrả về, <0 là lỗi „ Vị trí hiệnhànhlà1 số nguyên tính theo byte, có thể là bộisố củablock. 17
  18. Thiếtbị xuấtnhập „ Màn hình: Thiếtbị xuất chuẩn: „ Ký tự hay đồ hoạ „ Khả năng hiểnthị: „ Độ phân giải: „ Vídụ : 25 x 80 ký tự hay 800 x 600 x 256 màu. „ Độ làm tươi: „ 30-60 lần/giây. 18
  19. Thiếtbị xuấtnhập „ Bàn phím: Thiếtbị nhậpchuẩn „ Bố trí theo cấutrúc“QWERTY” „ Tốc độ nhậpdữ liệuchậm (<10 kýtự/giây) „ Thiếtbị trỏ/định vị: Thiếtbị nhậpchuẩn „ Chuột (quang, cơ) „ Trackball „ Joystick „ Tốc độ nhậpdữ liệuchậm (vài trăm bytes/giây) 19
  20. Thiếtbị xuấtnhập „ Máy in „ Máy in dòng, máy in điểm, máy in phun, in laser. „ Tốc độ đẩydữ liệuchậm „ Hướng ký tự „ Máy quét „ Số hoá các tài liệu in thành các dữ liệusố dưới dạng ảnh bitmap. „ Tốc độ quét chậm 20
  21. Thiếtbị xuấtnhập „ Đĩatừ : Đĩamềm (floppy disk), đĩacứng (hard disk): „ Thiếtbị xuấtnhậptheokhối(sector). „ Dung lượng tuỳ thuộcvàosố head,track,sector. „ Tốc độ truy cậpphụ thuộcvàotốc độ quay và mật độ dữ liệu trên đĩa. „ Băng từ: „ Thiếtbị truy cậptuầntự dung lượng lớn. „ Tốc độ truy cập ~2Mb/s „ CDROM/DVD: „ Tốc độ truy cập nhanh. „ Dung lượng ngày càng lớnvàgiáthànhngàycàngrẻ. 21
  22. Thiếtbị xuấtnhập „ Thiếtbị giao tiếpmạng „ Card mạng „ Cài đặt các giao thứcmạng khác nhau để hỗ trợ cho quá trình truyềnnhận các luồng/gói dữ liệu. „ Modem „ Chuyển đổigiữatínhiệutuầntự và tín hiệusố trên đường truyềnthoại. „ Luồng dữ liệutruyềnlàcácdãybítđược gom nhóm thành các ký tự. „ Đồng hồ hệ thống (clock) và bộđịnh giờ (timer) „ Cung cấpthờigianhệ thống để giúp đồng bộ hoá các hoạt động trên máy tính. 22
  23. Bộđiều khiểnthiếtbị „ Mỗi đơnvị nhậpxuấtthường gồm 2 thành phần: „ Thành phầncơ: Bảnthânthiếtbị „ Thành phần điện: bộđiều khiển (controller) „ Bộđiều khiển: „ Chứcnăng: Trung gian giao tiếpgiữathiếtbị và HĐH. „ Phương tiệngiaotiếp: Thông qua bus - hệ thống mạch truyền dẫn. „ Công việc: „ Nhậnlệnh từ HĐH để thựchiệnvàbáohiệucho HĐH khi tác vụ hoàn tất. „ Chuyển đổi dãy bit thành các byte và đặt chúng vào trong bộ đệm (buffer) củabộđiều khiển. 23
  24. Các thiếtbị xuấtnhập và bus hệ thống 24
  25. Địachỉ giao tiếpthiếtbị „ HĐH giao tiếpvớithiếtbị thông qua địachỉ xuấtnhập củabộđiềukhiển: 25
  26. Mô hình phân lớp trong quảnlýxuấtnhập „ Hệ thống xuấtnhập đượctổ chứctheotừng lớp, mỗilớpcó1 chức năng nhất định và có sự hỗ trợ liên hoàn lẫnnhau: 26
  27. Phầnmềm độclậpthiếtbị „ Chứcnăng: „ Tạoragiaotiếp chung cho tấtcả các thiếtbị. „ Bảovệ thiếtbị „ Cung cấpkhốidữ liệu độclậpthiếtbị „ Cung cấpbộđệm (buffer) để hỗ trợ cho quá trình đồng bộ hoá hoạt động củahệ thống. „ Định vị trí lưutrữ trên các khốithiếtbị. „ Cấpphátvàgiải phóng thiếtbị. „ Thông báo lỗichongười dùng (nếucó). 27
  28. Trình điều khiểnthiếtbị „ Chứcnăng: „ Nhậnyêucầutừ phía lớpphầnmềm độclậpthiếtbị. „ Chuyển đổiyêucầutrừutượng này thành cụ thể. „ Điềuphốiyêucầu này cho bộđiều khiểnthiếtbị (device controller). „ Giám sát thựchiệnyêucầu. „ Ví dụ: „ HĐH muốn đọctập tin io.sys trên đĩa ở thư mục C:\. „ Trình điềukhiển đĩaphảihiểulàcần đọckhốinào. „ Trình điềukhiển đĩa chuyểnyêucầu này cho bộđiều khiển đĩa. „ Bộđiều khiển đĩaphảikiểmtrahoạt động của motor đĩa, xác định đầu đọc đã đúng vị trí chưa. 28
  29. Trình điều khiểnthiếtbị 29
  30. Bộ kiểmsoátngắt (interrupt handler) „ Tương tác giữa HĐH và các thiếtbị phầncứng đều đượcthựchiện thông qua cơ chế ngắt (interrupt). „ Bộ kiểmsoátngắtsẽ tiếpnhận các ngắttừ HĐH và ứng dụng của người dùng cuối. „ Dựatrênbảng “Interrupt vector” để phân phối các ngắt đến các bộ điềukhiểnthiếtbị tương ứng. „ Quảnlývàgiámsátquátrìnhthựchiệnngắt. „ Nhậnngắt thông báo quá trình xuấtnhập hoàn tấthoặccólỗixảy ra trong quá trình xuấtnhậptừ bộđiềukhiểnthiếtbịđểchuyểnlên cho HĐH. 30
  31. Bộ kiểmsoátngắt (interrupt handler) 31
  32. Cơ chế truy cậpbộ nhớ trựctiếp DMA (Direct Memory Access) „ Xét quá trình đọc đĩa không có DMA: „ HĐH chuyểnyêucầu đọc đĩa cho bộđiều khiển đĩa. „ Bộđiều khiển đọctuầntự các khốitrênđĩa. „ Đọctừng bit cho đến khi các khối được đưavàobộđệmcủa bộđiều khiển đĩa. „ Bộđiều khiển đĩatạongắt để báo qua CPU biết quá trình đọc đĩahoàntất. „ CPU lầnlượtlấytừng byte dữ liệutừ bộđệmcủabộđiều khiển đĩa để chuyểnvề bộ nhớ chính để thao tác. „ Nhậnxét: „ Lãng phí thờigianxử lý củaCPU để chuyểndữ liệutừ bộđệm củabộđiều khiển đĩavề bộ nhớ chính 32
  33. Cơ chế DMA „ Cơ chế DMA giúp CPU không bị lãng phí bằng cách: „ HĐH gởichobộđiềukhiển đĩa các thông số gồm: các khốicần đọc+ vị trí lưutrữ các khối này bên trong bộ nhớ chính (địachỉ DMA) + số byte cần đọc. „ Bộđiều khiển đĩa đọc các khốicầnthiếtlưu vào trong bộđệm củanó. „ Sau khi đọc xong, bộđiều khiểnchuyểnlầnlượttừng byte từ bộđệmcủanóvềđịachỉ DMA – nơicầnlưutrữ dữ liệucần thiếtbêntrongbộ nhớ chính. „ Bộđiều khiển đĩatạo1 ngắt để thông báo cho CPU biếtquá trình chuyểndữ liệu đã hoàn tất. 33
  34. Cơ chế DMA 34
  35. Quảnlýlỗi& bảovệ xuấtnhậpthiếtbị „ Quá trình xử lý củangười dùng cuối hay HĐH có thể vô tình hay cố ý thựchiệncáclệnh/thao tác xuấtnhậpbất hợpphápgâyhạichohệ thống và thiếtbị. „ Cần định nghĩatrướcvàgánđặcquyềnchocáclệnh xuất nhậpcủahệ thống dướidạng các lờigọihệ thống (system call). „ Giám sát quá trình xuấtnhậpcủangười dùng cuối. „ Tấtcả quá trình xuấtnhậpcủa ƯD phải đượcthựchiện thông qua các lờigọihệ thống. 35
  36. Quảnlýlỗi& bảovệ xuấtnhậpthiếtbị „ Khi gặplỗi trong quá trình xuấtnhập, các bộđiềukhiển thiếtbị sẽ trả về cho HĐH mã lỗitương ứng „ HĐH diễndịch mã lỗitrả vềđểcó phương án giảiquyết thích hợp. „ HĐH cũng diễndịch và lưuvàonhậtkýhệ thống (system log) các lỗitương ứng để giúp ngườiquảntrị hệ thống giám sát lỗivàphụchồi. 36