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
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.
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.
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ự.
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
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.
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ị
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
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
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.
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
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
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
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.
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.
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?
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.
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.
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)
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
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ẻ.
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.
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.
24
Các thiếtbị xuấtnhập và bus hệ thống
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: