Chương 2: Quản lý xuất nhập Nhiệm vụ của bộ phận quản lý xuất nhập Các thiết bị xuất nhập Mô hình phân lớp trong quản lý xuất nhập Bộ điều khiển thiết bị device controller Trình
Trang 1Chương 2: Quản lý xuất nhập
Nhiệm vụ của bộ phận quản lý xuất nhập
Các thiết bị xuất nhập
Mô hình phân lớp trong quản lý xuất nhập
Bộ điều khiển thiết bị (device controller)
Trình điều khiển thiết bị (device driver)
Quản lý lỗi và bảo vệ quá trình xuất nhập
Trang 2Nhiệm vụ
Mục tiêu của bộ phận quản lý xuất nhập
Giới thiệu lớp trừu tượng và độc lập thiết bị
Che giấu các chi tiết kỹ thuật của các thiết bị phần cứng
Quản lý và sửa lỗi
Làm cho các thiết bị phần cứng đơn giản và dễ dùng.
Cho phép chia sẻ các thiết bị phần cứng
Xây dựng các cơ chế bảo vệ các thiết bị được chia sẻ
Điều phối thiết bị để phục vụ cho cùng lúc nhiều nhu cầu sửdụng
Trang 3Ví dụ về các thiết bị xuất nhập
Các thiết bị giao tiếp:
Các thiết bị chỉ nhập : bàn phím, chuột, joystick…
Các thiết bị chỉ xuất : màn hình, máy in
Các thiết bị vừa nhập vừa xuất: card mạng
Các thiết bị lưu trữ
Thiết bị vừa xuất, vừa nhập: đĩa (cứng/mềm), băng từ
Thiết bị chỉ xuất: CD-ROM
Trang 4Phân loại các thiết bị nhập xuất
Phân loại theo mục đích sử dụng:
Các thiết bị giao tiếp:
Các thiết bị chỉ nhập : bàn phím, chuột, joystick…
Các thiết bị chỉ xuất : màn hình, máy in
Các thiết bị vừa nhập vừa xuất: card mạng.
Các thiết bị lưu trữ
Thiết bị vừa xuất, vừa nhập: đĩa (cứng/mềm), băng từ
Thiết bị chỉ xuất: CD-ROM
Phân loại theo phương pháp truy xuất:
Trang 5Phân loại các thiết bị nhập xuất (tt)
HĐH phải gom nhóm các thiết bị khác nhau thành những nhóm cơ bản để dễ dàng quản lý:
Trang 7Các phương thức IO của Unix
fileHandle = open(pathName, flags, mode)
filehandle: là một số nguyên, dùng để thao tác với tập tin hay thiết bị
pathname: tên trong hệ thống file Trong Unix, các thiết bị đặtdưới thư 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)
Trang 8Các phương thức IO của Unix (tt)
byteCount = read(fileHandle, byte [] buf, count)
Đọc count bytes từ thiết bị và lưu trong buffer buf
Chương trình người dùng phải kiểm tra byteCount để biết sốbyte thật sự đọc được
byteCount < 0 thì là báo lỗi (xem mã lỗi)
byteCount = write(fileHandle, byte [] buf, count)
Ghi count byte từ buf vào thiết bị
Số byte thật sự ghi được lưu trong byteCount
byteCount âm là bị lỗi
Trang 10Blocking vs Non-Blocking I/O
Blocking – ứng dụng dừng lại cho đến khi số count bytes
được đọc hoặc ghi
Ví dụ: Trong thiết bị mạng, nếu muốn ghi 1000 bytes, thì HĐH ghi tất cả các byte cho đến khi ghi hoàn tất
Nếu thiết bị không thể thực hiện lệnh ghi được (ví dụ hỏng dâynối), làm sao? Thì sẽ kết thúc và trả về số bytes đã ghi được
Nonblocking – HĐH đọc và ghi các bytes khi có thể,
không cần ứng dụng phải dừng lại.
Trang 11Buffered vs Unbuffered I/O
Trong trường hợp buffer dữ liệu của thiết bị quá nhỏ, để không phải chờ quá lâu khi thực hiện IO
buffered I/O cho phép kernel copy lại dữ liệu
Bên write(): cho phép ứng dụng tiếp tục ghi dữ liệu
Bên read(): khi thiết bị báo có dự liệu đến, kernel chép dữ liệuvà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ực hiện copy
Chậm trễ việc gửi dữ liệu
Trang 12Synchronous vs Asynchronous I/O
Synchronous I/O: các xử lý khác của ứng dụng của người dùng cuối sẽ dừng lại để chờ các thao tác xuất nhập củ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ất nhập
Trang 13Các loại thiết bị xuất nhập
Hầu hết HĐH chia thành 3 nhóm thiết bị:
Thiết bị đọc theo kí tự (character device)
Dùng cho các thiết bị tuần tự (v.d USB port, bàn phím,
modem)
Thiết bị mạng
Dùng cho các card mạng (v.d Ethernet card)
Thiết bị theo block:
Dùng cho các bộ lưu trữ lớn (v.d.ổ đĩa và CDROM)
Phương thức read/write sẽ khác nhau với từng loại
Trang 14Thiết bị xuất nhập theo kí tự
HĐH đọc và ghi theo chuỗi các byte
System call write() sẽ ghi từng byte ra thiết bị
System call read() sẽ đọc từng byte ra thiết bị
Không có điều khiển tỉ lệ read/write, bên gửi có thể gọi system
call write() 1 lần 1000 bytes, bên nhận có thể gọi read 1000 lần,
mỗi lần đọc 1 byte
Trang 16Thiết bị đọc theo block
HĐH đọc và ghi thiết bị theo các block
Mỗi block kích thước xá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ết bị khác, thiết bị đọc ghi theo block hỗ trợ
Trang 17 Đơn vị của con trỏ file là byte, chứ không phải block
Di chuyển con trỏ file:
absoluteOffset = lseek(fileHandle, offset, whence);
whence xác định vị trí cột mốc, đầu file, cuối file…
Vị trí hiện hành được trả về, <0 là lỗi
Vị trí hiện hành là 1 số nguyên tính theo byte, có thể là bội số
Trang 19Thiết bị xuất nhập
Bàn phím: Thiết bị nhập chuẩn
Bố trí theo cấu trúc “QWERTY”
Tốc độ nhập dữ liệu chậm (<10 ký tự/giây)
Thi ết bị trỏ/định vị: Thiết bị nhập chuẩn
Trang 21Thiết bị xuất nhập
Đĩa từ : Đĩa mềm (floppy disk), đĩa cứng (hard disk):
Thiết bị xuất nhập theo khối (sector)
Dung lượng tuỳ thuộc vào số head,track,sector
Tốc độ truy cập phụ thuộc vào tốc độ quay và mật độ dữ liệutrên đĩa
Trang 22 Đồng hồ hệ thống (clock) và bộ định giờ (timer)
Cung cấp thời gian hệ thống để giúp đồng bộ hoá các hoạt động trên máy tính.
Trang 23Bộ điều khiển thiết bị
Mỗi đơn vị nhập xuất thường gồm 2 thành phần:
Thành phần cơ: Bản thân thiết bị
Thành phần điện: bộ điều khiển (controller)
Bộ điều khiển:
Chức năng: Trung gian giao tiếp giữa thiết bị và HĐH
Phương tiện giao tiếp: Thông qua bus - hệ thống mạch truyền
dẫn
Công việc:
Nhận lệnh từ HĐH để thực hiện và báo hiệu cho HĐH khi tác
vụ hoàn tất
Trang 24Các thiết bị xuất nhập và bus hệ thống
Trang 25Địa chỉ giao tiếp thiết bị
HĐH giao tiếp với thiết bị thông qua địa chỉ xuất nhập của bộ điều khiển:
Trang 26Mô hình phân lớp trong quản lý xuất nhập
Hệ thống xuất nhập được tổ chức theo từng lớp, mỗi lớp có 1 chứcnăng nhất định và có sự hỗ trợ liên hoàn lẫn nhau:
Trang 27Phần mềm độc lập thiết bị
Chức năng:
Tạo ra giao tiếp chung cho tất cả các thiết bị.
Bảo vệ thiết bị
Cung cấp khối dữ liệu độc lập thiết bị
Cung cấp bộ đệm (buffer) để hỗ trợ cho quá trình
đồng bộ hoá hoạt động của hệ thống.
Định vị trí lưu trữ trên các khối thiết bị.
Cấp phát và giải phóng thiết bị.
Thông báo lỗi cho người dùng (nếu có).
Trang 28Trình điều khiển thiết bị
Nhận yêu cầu từ phía lớp phần mềm độc lập thiết bị
Chuyển đổi yêu cầu trừu tượng này thành cụ thể
Điều phối yêu cầu này cho bộ điều khiển thiết bị (device
controller)
Giám sát thực hiện yêu cầu
Ví dụ:
HĐH muốn đọc tập tin io.sys trên đĩa ở thư mục C:\
Trình điều khiển đĩa phải hiểu là cần đọc khối nào
Trình điều khiển đĩa chuyển yêu cầu này cho bộ điều khiển đĩa
Bộ điều khiển đĩa phải kiểm tra hoạt động của motor đĩa, xácđịnh đầu đọc đã đúng vị trí chưa
Trang 29Trình điều khiển thiết bị
Trang 30Bộ kiểm soát ngắt (interrupt handler)
Tương tác giữa HĐH và các thiết bị phần cứng đều được thực hiệnthông qua cơ chế ngắt (interrupt)
Bộ kiểm soát ngắt sẽ tiếp nhận các ngắt từ HĐH và ứng dụng củangười dùng cuối
Dựa trên bảng “Interrupt vector” để phân phối các ngắt đến các bộđiều khiển thiết bị tương ứng
Quản lý và giám sát quá trình thực hiện ngắt
Nhận ngắt thông báo quá trình xuất nhập hoàn tất hoặc có lỗi xảy
ra trong quá trình xuất nhập từ bộ điều khiển thiết bị để chuyển lêncho HĐH
Trang 31Bộ kiểm soát ngắt (interrupt handler)
Trang 32Cơ chế truy cập bộ nhớ trực tiếp DMA (Direct Memory Access)
Xét quá trình đọc đĩa không có DMA:
HĐH chuyển yêu cầu đọc đĩa cho bộ điều khiển đĩa
Bộ điều khiển đọc tuần tự các khối trên đĩa
Đọc từng bit cho đến khi các khối được đưa vào bộ đệm của
bộ điều khiển đĩa
Bộ điều khiển đĩa tạo ngắt để báo qua CPU biết quá trình đọcđĩa hoàn tất
CPU lần lượt lấy từng byte dữ liệu từ bộ đệm của bộ điều
khiển đĩa để chuyển về bộ nhớ chính để thao tác
Nhận xét:
Lãng phí thời gian xử lý của CPU để chuyển dữ liệu từ bộ đệmcủa bộ điều khiển đĩa về bộ nhớ chính
Trang 33Cơ chế DMA
HĐH gởi cho bộ điều khiển đĩa các thông số gồm: các khối cầnđọc + vị trí lưu trữ các khối này bên trong bộ nhớ chính (địa chỉDMA) + số byte cần đọc
Bộ điều khiển đĩa đọc các khối cần thiết lưu vào trong bộ đệmcủa nó
Sau khi đọc xong, bộ điều khiển chuyển lần lượt từng byte từ
bộ đệm của nó về địa chỉ DMA – nơi cần lưu trữ dữ liệu cầnthiết bên trong bộ nhớ chính
Bộ điều khiển đĩa tạo 1 ngắt để thông báo cho CPU biết quá
trình chuyển dữ liệu đã hoàn tất
Trang 34Cơ chế DMA
Trang 35Quản lý lỗi & bảo vệ xuất nhập thiết bị
Quá trình xử lý của người dùng cuối hay HĐH có thể vô tình hay cố ý thực hiện các lệnh/thao tác xuất nhập bất
hợp pháp gây hại cho hệ thống và thiết bị.
Cần định nghĩa trước và gán đặc quyền cho các lệnh xuất nhập của hệ thống dưới dạng các lời gọi hệ thống
(system call).
Giám sát quá trình xuất nhập của người dùng cuối.
Tất cả quá trình xuất nhập của ƯD phải được thực hiện thông qua các lời gọi hệ thống.
Trang 36Quản lý lỗi & bảo vệ xuất nhập thiết bị
Khi gặp lỗi trong quá trình xuất nhập, các bộ điều khiển thiết bị sẽ trả về cho HĐH mã lỗi tương ứng
HĐH diễn dịch mã lỗi trả về để có phương án giải quyết thích hợp.
HĐH cũng diễn dịch và lưu vào nhật ký hệ thống (system log) các lỗi tương ứng để giúp người quản trị hệ thống
giám sát lỗi và phục hồi.