Chương 9: I/O System
ế ị
ệ
ứ
ụ
ệ
ấ
ầ ứ t b ph n c ng I/O Thi Giao di n I/O cho ng d ng ụ ủ ị Các d ch v c a I/O subsystem Hi u su t I/O
1
ổ
T ng quan
ế ị
ầ
Các thi
ệ ề ứ ăng, t c ố đ ,… nên c n có
t v ch c n
t b I/O khác bi ứ
ề
ộ ứ ể ương ng khác nhau
đi u khi n t ủ
các phương th c qu n lý, ả Chính là ch c nứ ăng c a ủ I/O subsystem c a OS
ấ
t b
ế ị (device driver) cung c p cho I/O
Các trình đi u khi n thi ệ
ề ộ
ầ
ể
ậ
ể subsystem m t giao di n thu n nh t
ấ đ truy c p các thi
ế ị t b
2
ế ị
Thi
ầ ứ t b ph n c ng I/O
ế ị
ữ ệ ố K t n i v t lý gi a h th ng máy tính và các thi
t b I/O
ế ố ậ Port (connection point)
USB port
Bus (daisy chain, shared direct access)
ề
ể Đi u khi n
Controller (device controller, SCSI host adapter)
ế
t b I/O
ể ậ
ữ Giao ti p gi a CPU và thi ị I/O port: đ a ch I/O ệ
ế ị đ l p trình. ể
ữ ệ ộ đ tác đ ng lên các thanh ghi d li u /
Memorymapped I/O
Each control register is assigned a unique memory address to which no
ỉ Dùng l nh I/O lên I/O port ệ ủ ạ tr ng thái / l nh c a controller.
3
memory is assigned.
ấ
C u trúc bus trong PC
4
ộ ố
M t s I/O port trong PC
controller
controller
controller
5
ệ
ậ
ỹ
ự Các k thu t th c hi n I/O (1/3)
ậ polling (busy waiting)
ủ ự ệ ố
ỹ K thu t ạ Ki m tra tr ng thái c a thi
t b khi mu n th c hi n I/O
ờ ể ể ạ ế ị ể ready ho c ặ busy ho c ặ error Tiêu t n th i gian trong vòng l p ặ đ ki m tra tr ng thái (busywait) và
Programmed I/O
6
ự ố ệ th c hi n I/O.
ệ
ậ
ỹ
ự Các k thu t th c hi n I/O (2/3)
ắ
ậ K thu t I/O dùng
ng t quãng
(interruptdriven I/O)
ộ ạ ở ợ
ỹ CPU có m t ngõ Interrupt Request (INTR),
đư c kích ho t b i thi ế ị t b
I/O
N u ng t x y ra (INTR = active), CPU chuy n quy n
ế ể ề ể ề đi u khi n cho
ắ ả ụ ụ ắ
Các ng t có th che
trình ph c v ng t (interrupt handler) ặ ể ắ ợ ợ đư c (maskable) ho c không che đư c (non
H th ng có m t b ng vector ng t ch a
maskable) ệ ố ắ ỉ
ử ạ
ỗ
ụ ụ ắ ứ đ a ch các trình ph c v ng t ị ự ệ ệ ố Ng t cũng có th dùng x lý các s ki n khác trong h th ng ớ i vi ph m vùng nh ,…) ộ ả ể ắ ỗ i chia cho 0, l
(l
7
PC interrupt
IRQ 0
(1) INTR
IRQ 1
processor
INTA
Programmable Interrupt Controller
IRQ 15
(2)
local bus
1 byte interrupt number (k) (3)
(4) Take exception to address k*4
8
ả
ắ
B ng vector ng t trên Pentium processor
9
ệ
ậ
ỹ
ự Các k thu t th c hi n I/O (3/3)
direct memory access (DMA)
ậ K thu t I/O dùng ỹ
ự ợ
ỹ Các k thu t polling và interruptdriven I/Oø không thích h p khi th c ớ ữ ệ
ể ệ ợ ậ hi n di chuy n kh i l ố ư ng l n d li u.
K thu t DMA c n có ph n c ng h tr
ầ ứ ậ ầ ặ ỹ ỗ ợ đ c bi ệ đó là DMA controller t,
K thu t DMA th c hi n truy n d li u tr c ti p gi a thi
ề ữ ệ ự ế ữ ệ ậ ế ị ộ t b I/O và b
10
ỹ ớ ự ầ ự ệ ủ nh mà không c n s can thi p c a CPU.
ự
ệ
ớ
6 bư c th c hi n DMA
11
ứ
ụ
ệ
Giao di n I/O cho ng d ng
ệ
ẩ
ộ
OS cung c p m t giao di n I/O chu n hóa,
ấ ồ đ ng nh t cho các
ộ ứ ệ ầ ế ệ
ấ ụ ứ ng d ng. ụ Ví d : m t ng d ng in tài li u ra máy in mà không c n bi
t hi u máy in,
ặ ụ đ c tính máy in,…
ự
ệ
t b
ệ Giao di n là các I/O system call ể ề Module đi u khi n thi ẩ
ợ ự
ệ ế ị (device driver) th c hi n giao di n đó gi u ấ đư c s khác
ể
ề các b ộ đi u khi n thi
ế ị (device controller) khác
đư c chu n hóa c a I/O subsystem qua ủ ợ ữ ệ t b t gi a các bi nhau
12
ấ
C u trúc I/O trong OS
13
ặ
ế ị
ủ Đ c tính c a các thi
t b I/O
14
ụ
ứ
ụ
ị
Các d ch v I/O cho ng d ng
ế ị
ẩ Giao di n chu n cho nhóm thi
t b có liên quan
Thi
ố (block device)
ệ ế ị t b kh i Disk Tác v : read, write, seek
Thi
Thi
ế ị ụ t b kí t ự (character device)
Keyboard, mouse, serial port, line printer,… Tác v : get, put ụ t b m ng Block ho c character. ặ Socket interface trên Unix, Windows/NT,…
Clock và timer ờ
ế ị ạ (network device)
ệ ạ i, timer
15
ấ Cung c p th i gian hi n t ể ậ Có th l p trình đư c.ợ
System call yêu c u I/Oầ
ị
ấ
Blocking: process b suspended cho
ế đ n khi I/O hoàn t
t.
ễ
D dàng s d ng ả Không hi u qu trong m t s tr
ử ụ ệ
ệ
ọ
ợ ộ ố ư ng h p ờ ự ẽ ế ụ Nonblocking: process s ti p t c th c thi ngay sau l nh g i I/O.
ụ ờ ệ
Ví d : data copy (buffered I/O) ự ớ Thư ng hi n th c v i multithreading ế Khó ki m soát k t qu th c hi n I/O
ể
ệ ố
ệ ự ả ự ẫ Asynchronous: process v n th c thi trong lúc h th ng
đang th c ự
ử ụ
ệ
ệ hi n I/O. Khó s d ng I/O subsystem báo hi u cho process khi I/O hoàn t
16
ấ t
I/O subsystem
•
ấ I/O subsystem cung c p các ch c n ứ ăng
Đ nh th i các yêu c u I/O
ỗ
ầ
ạ
ờ
ế ị t b
ợ ủ đ i c a m i thi
ầ ế
ả ữ ệ
i các hàng ấ ữ ệ ạ
ệ Đ m d li u (buffering): l
ệ
ờ
ợ
ộ
ớ ữ ệ
ự
ệ
i quy t tr
ế ư ng h p chênh l ch t c
ố đ , kích th
ư c d li u khi th c hi n I/O
ự ệ ớ ờ ộ ưu d li u t m th i trong b nh khi th c hi n
i (error handling)
17
ị Các yêu c u I/O x p hàng t B o ả đ m công b ng, hi u su t cao. ằ ệ I/O ả Gi Caching Spooling ỗ ử X lý l OS can recover from disk read, device unavailable, transient write failures Most return an error number or code when I/O request fails System error logs hold problem reports
Chain of events triggered by a user keystroke on a typical UNIX system
Dan Tsafrir
18
ệ
ấ
Hi u su t I/O
ả
ệ ố
ệ
ế
ở
ư ng r t l n
ấ ấ ớ đ n hi u su t toàn h th ng.
ệ ể ủ ủ ề
ấ ệ Hi u su t I/O nh h ả i cao do I/O gây t ệ ự CPU th c hi n các l nh
đi u khi n c a device driver, c a kernel I/O
code.
ể ữ ệ ử ữ ả ậ
Chuy n ng c nh vì các I/O interrupt, chi phí copy d li u g i nh n. Network traffic gây t c ố đ context switch cao.
ộ
ấ
ệ Tăng hi u su t I/O ể
ả ữ ệ ữ ả ể ằ ả Gi m s l n chuy n ng c nh, gi m thi u quá trình copy d li u (b ng
Gi m s l n ng t quãng (truy n kh i d li u l n, dùng các b controller
ố ầ caching,…) ố ầ ố ữ ệ ớ ề ắ ả ộ
ỹ thông minh, dùng k thu t polling,…)
19
ử ụ ế ậ ể S d ng DMA n u có th .