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 /

 Memory­mapped 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 (busy­wait) 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

(interrupt­driven 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à interrupt­driven 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 .