Transcript I/O Systems
นงลักษณ์ พรมทอง และวิเชษฐ ์ พลายมาศ
ระบบร ับเข้าและส่งออก
I/O Systems
I/O Systems
I/O Hardware
Application I/O Interface
Kernel I/O Subsystem
Transforming I/O Requests to Hardware Operations
Streams
Performance
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 2
Learning Objectives
ึ ษาถึงแนวคิดด ้านการจัดการอุปกรณ์รับเข ้าและสง่ ออก
เพือ
่ ศก
เพือ
่ เข ้าใจถึงหน ้าทีข
่ องระบบปฏิบต
ั ก
ิ ารในการจัดการเกีย
่ วกับ
ระบบรับเข ้าและสง่ ออก
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 3
I/O Hardware
อุปกรณ์นาเข ้า (input device) คือ อุปกรณ์ทท
ี่ าให ้คอมพิวเตอร์
ั ผัสและรับรู ้สงิ่ ต่างๆ จากโลกภายนอกได ้ ตัวอย่างเชน
่
สามารถสม
เครือ
่ งอ่านบัตร คียบ
์ อร์ด เมาส ์
่ ออก (output device) คือ อุปกรณ์ทท
อุปกรณ์สง
ี่ าให ้คอมพิวเตอร์
่ เครือ
ควบคุมหรือสง่ ผลออกมาสูโ่ ลกภายนอกได ้ ตัวอย่างเชน
่ งเจาะ
บัตร จอภาพ เครือ
่ งพิมพ์
Common concepts
Port
Bus (daisy chain or shared direct access)
Controller (host adapter)
มี I/O instructions สาหรับควบคุมอุปกรณ์
้
อุปกรณ์เหล่านั น
้ จะมีเลขทีอ
่ ยู่ (addresses) ทีถ
่ ก
ู ใชโดย
Direct I/O instructions
Memory-mapped I/O
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 4
A Typical PC Bus Structure
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 5
Device I/O Port Locations on PCs (partial)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 6
คุณสมบ ัติของพอร์ต
พอร์ตเอาท์พต
ุ (output port) คือต ้องสามารถดึงกระแสเข ้า และ
จ่ายกระแส ออกได ้ และต ้องมีเอ ้าท์อน
ิ พีแดนซ ์ (out
impedance) ตา่
พอร์ตอินพุต (input port) คือ ต ้องมีอม
ิ พีแดนซ ์ (impedance)
ั ญาณทีเ่ ข ้ามาว่าเป็ น 1 หรือ 0
สูงจะตรวจจับแรงดัน สญ
มีเรจิสเตอร์ 4 ตัว
เรจิสเตอร์สถานะ (status register)
เรจิสเตอร์ควบคุม (control register)
เรจิสเตอร์ข ้อมูลเข ้า (data-in register)
เรจิสเตอร์ข ้อมูลออก (data-out register)
เรจิสเตอร์สถานะบรรจุบต
ิ แสดงการอ่านโดยโฮสต์ (host)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 7
ต ัวข ับอุปกรณ์
Device Driver
หากบรรจุโปรแกรมควบคุมอุปกรณ์ I/O ทัง้ หมดเข ้าไว ้ใน OS จะ
ทาให ้ OS มีขนาดเทอะทะ ไม่ยด
ื หยุน
่ และมีคา่ ใชจ่้ ายสูงในการ
upgrade OS แต่ละครัง้
่ นหนึง่
จึงต ้องแยกโปรแกรมควบคุมอุปกรณ์ออกมาเป็ นสว
ต่างหาก เรียกว่า ตัวขับอุปกรณ์ (device driver)
่ นี้ OS ไม่จาเป็ นต ้องรู ้จักลักษณะการทางานของ
ลักษณะเชน
อุปกรณ์ตา่ ง ๆ ปล่อยให ้เป็ นหน ้าทีข
่ องตัวขับอุปกรณ์ชนิดนัน
้ ๆ
OS รู ้เพียงแต่การติดต่อและควบคุมอุปกรณ์ผา่ นทางตัวขับ
อุปกรณ์เท่านัน
้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 8
อุปกรณ์เสมือน
Virtual Device
คือการนาเอาอุปกรณ์ชนิดหนึง
่ มาจาลองการทางานเป็ นอุปกรณ์
อีกชนิดหนึง่ เพือ
่ ก่อให ้เกิดความคล่องตัวในการทางานของระบบ
ตัวอย่างของการทาอุปกรณ์เสมือนก็คอ
ื การทาแรมดิสก์ (Ram
disk)
การติดต่อควบคุมแรมดิสก์นี้ ทาได ้โดยผ่านโปรแกรมทีท
่ าหน ้าที่
จาลองหน่วยความจาเป็ นดิสก์ เรียกว่า ตัวขับอุปกรณ์เสมือน
(virtual device driver)
การทา SPOOL (Simultaneous peripheral operation on-line)
้ ดิ้ สก์แทนเครือ
ซงึ่ เป็ นการใชใช
่ งพิมพ์
ื่ SPOOLER ทาหน ้าทีจ
โดยมีโปรเซสหนึง่ ของ OS ชอ
่ ัดการเรือ
่ ง
การทา SPOOL ของระบบ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 9
การสารวจความต้องการ
(polling)
่ งเวลาหนึง่ (Quantum time) ซพ
ี ย
ทุกๆ ชว
ี จ
ู ะหยุดงานทีท
่ าอยู่
็ ทีแ
ชวั่ คราว และเวียนไปตรวจเชค
่ ต่ละแชนแนลเพือ
่ ดูวา่ มีอป
ุ กรณ์ตวั
ี ย
ใดบ ้างต ้องการสง่ ข ้อมูลมาให ้ซพ
ี จ
ู ากอุปกรณ์แรกไปถึงอุปกรณ์
สุดท ้าย
่ พวกคาสงั่ JNB TF1 , $
เชน
แบบนีโ
้ ปรแกรมจะทาอะไรอย่างอืน
่ ไม่ได ้เลย จะต ้องรอจนกว่า
ี เวลาไปโดยใชเ่ หตุ
เงือ
่ นไขจะเป็ นจริง จึงทาให ้เสย
Determines state of device
command-ready
busy
Error
Busy-wait cycle to wait for I/O from device
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 10
่ ข้อมูล
มอดูลของการร ับสง
Data Transfer Module
I/O module Functionality
การควบคุมและการจับเวลา
ื่ สารระหว่างโปรเซส
การสอ
ื่ สารระหว่างอุปกรณ์
การสอ
การจัดการบัฟเฟอร์
การตรวจสอบข ้อผิดพลาด
่ ออกจะต ้องสอ
ื่ สารกับโปรเซสเซอร์และ
มอดูลการรับเข ้าและสง
ื่ สารกับภายนอก เกีย
สอ
่ วข ้องกับ
ั่ (command decoding),
การถอดรหัสคาสง
ข ้อมูล (data),
การรายงานสถานะ (status reporting)
การรับรู ้ทีอ
่ ยู่ (address recognition)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 11
อัตราการสง่ ผ่านอุปกรณ์ของ Sun Enterprise 6000
ทีม
่ า (IEEE Computer Society, 1996, p.65).
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 12
่ ออก
โครงสร้างของมอดูลการร ับเข้าและสง
I/O Module Structure
ทาหน ้าทีอ
่ านวยความสะดวก ให ้โปรเซสเซอร์สามารถควบคุม
การทางานของอุปกรณ์รับเข ้าสง่ ออกต่างๆได ้ง่าย
ื่ มต่อกับ
I/O Module ทางานหนักด ้วยตัวเอง โดยจะเชอ
่ งสอ
ื่ สารการรับเข ้าสง่ ออก (I/O
โปรเซสเซอร์เรียกว่า ชอ
channels) หรือ ไอโอโปรเซสเซอร์ (I/O processor)
ั การควบคุมจาก
I/O Module ทีท
่ างานน ้อย และต ้องอาศย
โปรเซสเซอร์โดยตรงเรียกว่า หน่วยควบคุมการรับเข ้าสง่ ออก
(I/O controller) หรือหน่วยควบคุมอุปกรณ์ (device controller)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 13
่ ออก
การควบคุมการร ับเข้าสง
มีอยู่ 3 วิธ ี
่ ออกด ้วยโปรแกรม (Programmed I/O)
การควบคุมการรับเข ้าสง
กระบวนการอินเทอร์รัพท์ (Interrupt-driven I/O)
การเข ้าถึงหน่วยความจาหลักโดยตรง (Direct memory access :
DMA)
Programmed I/O และ Interrupt-driven I/O ต ้องใช ้
processor คอยควบคุมและจัดการแลกเปลีย
่ นข ้อมูลระหว่าง
หน่วยความจาหลักกับ I/O
่ นแบบ DMA นัน
สว
้ I/O module จะแลกเปลีย
่ นข ้อมูลกันโดยตรง
กับหน่วยความจาหลักโดยที่ processor ไม่ต ้องเกีย
่ วข ้อง
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 14
Interrupts
CPU จะถูก Interrupt request line โดย I/O device
Interrupt handler (CPU) ได ้รับ interrupts
จะพิจารณาว่าต ้องทาตามคาร ้องขอนัน
้ ทันทีห
่ รือรอเวลาไว ้ก่อน
Interrupt vector to dispatch interrupt to correct handler
Based on priority
Some unmaskable
Interrupt mechanism also used for exceptions
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 15
Interrupt-Driven I/O Cycle
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 16
Intel Pentium Processor Event-Vector Table
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 17
Direct Memory Access
การเคลือ
่ นย ้ายข ้อมูลจานวนมากไม่นย
ิ มใช ้ programmed I/O
แต่ใช ้ DMA แทน
จาเป็ นต ้องมี DMA controller
่ ข ้อมูลระหว่าง I/O กับหน่วยความจาสามารถทาได ้
การรับ-สง
โดยตรงโดยไม่ต ้องผ่าน CPU
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 18
Six Step Process to Perform DMA Transfer
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 19
Application I/O Interface
ั้
I/O system calls จะห่อหุ ้มพฤติกรรมของอุปกรณ์ให ้อยูใ่ นชน
ทั่วไป
ั ้ ของตัวขับอุปกรณ์ (Device driver Layer) ถูกซอ
่ นไว ้
ในชน
ระหว่างระบบย่อยนาเข ้าสง่ ออกกับตัวขับอุปกรณ์
่ ข ้อมูล
ประเภทของอุปกรณ์แบ่งตามคุณลักษณะการรับสง
Character-stream or block
Sequential or random-access
Sharable or dedicated
Speed of operation
read-write, read only, or write only
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 20
A Kernel I/O Structure
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 21
Characteristics of I/O Devices
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 22
อุปกรณ์แบบบล็อกและแบบอ ักขระ
Block and Character Devices
Block devices ได ้แก่ disk drives
Command ประกอบด ้วย read, write, seek
Raw I/O หรือ file-system access
้
อาจใชการเข
้าถึงแฟ้ มแบบ Memory-mapped
Character devices ประกอบด ้วย keyboards, mice, serial
ports
Commands ประกอบด ้วย get, put
Libraries layered on top allow line editing
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 23
Network Devices
่ นต่อประสานเป็ นของตัวเองทีเ่ พียงพอสาหรับบล็อกและ
จะมีสว
อักขระ
Unix และ Windows NT/9i/2000 ใช ้ socket interface
แยก network protocol ออกจาก network operation
Includes select functionality
้ างแพร่หลาย (pipes, FIFOs, streams,
เป็ นวิธก
ี ารทีใ่ ชอย่
queues, mailboxes)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 24
ิ
นาฬกาและเวลา
Clocks and Timers
บอก เวลาปั จจุบน
ั , เวลาทีผ
่ า่ นไปแล ้ว, การตัง้ เวลา
้ านไปแล ้วและการตัง้ เวลาเพือ
อุปกรณ์บอกเวลาทีใ่ ชผ่
่ คานวณ
ั ญาณ เรียกว่า programmable interval timer ใชเพื
้ อ
การสง่ สญ
่
ตัง้ เวลา, กาหนดชว่ งเวลาของ interrupts
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 25
Blocking and Nonblocking I/O
ั่ คราวจนกว่า I/O
Blocking – กระบวนการจะถูกหยุดพักชว
completed
้
ง่ายต่อการใชและเข
้าใจ
เพียงพอต่อความต ้องการบางประการ
Nonblocking - I/O จะถูกเรียกกลับมาเมือ
่ ว่าง
ิ้ แล ้วจึงเรียก
งานทีม
่ ก
ี ารประมวลผลยังทางานได ้จนเสร็จสน
ั ญาณขัดจังหวะ เพือ
สญ
่ นากระบวนการทัง้ หมดทีม
่ ก
ี ารเรียกระบบมา
ติดต่อเข ้าด ้วยกัน
Asynchronous – กระบวนการก็รันไปในขณะที่ I/O ก็ executes
ไป
้
ใชงานยาก
่ สญ
ั ญาณไปยังกระบวนการ เมือ
I/O subsystem สง
่ I/O
completed
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 26
Kernel I/O Subsystem
การจัดตาราง I/O (Scheduling)
บาง I/O request มีการจัดลาดับผ่านคิวของแต่ละอุปกรณ์
บาง OS มีการจัดการเรือ
่ งความเป็ นธรรม
Buffering - เก็บข ้อมูลในหน่วยความจาในระหว่างการถ่ายโอน
ข ้อมูลระหว่างอุปกรณ์
เพือ
่ รับมือกับอุปกรณ์ทม
ี่ ค
ี วามเร็วต่างกันมาก
เพือ
่ รับมือกับอุปกรณ์ทม
ี่ ข
ี นาดการถ่ายโอนข ้อมูลต่างกัน
เพือ
่ สนั บสนุนการทางานแบบการสารองข ้อมูลทีเ่ หมือนกัน (copy
semantics)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 27
Sun Enterprise 6000 Device-Transfer Rates
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 28
Kernel I/O Subsystem
้ บสาเนาข ้อมูล
Caching - หน่วยความจาความเร็วสูงใชเก็
้
มักใชในการส
าเนา
้ ม
ิ ธิภาพเป็ นหลัก
ใชเพิ
่ ประสท
Spooling - เก็บผลลัพธ์ของอุปกรณ์
้
ใชในกรณี
ทอ
ี่ ป
ุ กรณ์นัน
้ สามารถรองรับการทางานได ้เพียงครัง้ ละ
หนึง่ งานในเวลาเดียวกัน
่ การพิมพ์
เชน
การสงวนอุปกรณ์ (Device reservation) – ทาให ้การเข ้าถึง
อุปกรณ์แบบ exclusive
System calls สาหรับจัดสรรและคืนการจัดสรร
ระวังการเกิด deadlock สาหรับการร ้องขออุปกรณ์
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 29
การจ ัดการข้อผิดพลาด
Error Handling
OS สามารถปกป้ องข ้อผิดพลาดทีจ
่ ะเกิดจากการอ่านดิสก์,
้
อุปกรณ์ยังไม่พร ้อมใชงาน,
การขัดข ้องของการเขียน
่ คืน error number หรือ code เมือ
OS จะสง
่ I/O request เกิด
ล ้มเหลว
System error logs จะบันทึกรายงานปั ญหาทีเ่ กิดขึน
้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 30
Kernel Data Structures
Kernel เก็บข ้อมูลสถานะสาหรับ I/O components,
ประกอบด ้วย open file tables, network connections,
character device state
ั ซอนสู
้
้
โครงสร ้างข ้อมูลมีความซบ
งเพือ
่ ใชแกะรอยบั
ฟเฟอร์,
ตาแหน่งหน่วยความจา และ “dirty” blocks
การใช ้ object-oriented methods บางชนิด และ message
้
passing ในการใชงาน
I/O
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 31
UNIX I/O Kernel Structure
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 32
I/O Requests to Hardware
Operations
การอ่านแฟ้ มจากดิสก์สาหรับกระบวนการ:
พิจารณาอุปกรณ์เก็บแฟ้ ม
ื่ ในการแทนอุปกรณ์
แปลงชอ
อ่านข ้อมูลเชงิ กายภาพจากดิสก์ไปยังบัฟเฟอร์
้
สร ้างข ้อมูลให ้พร ้อมใชงานไปยั
งกระบวนการทีร่ ้องขอ
่ คืนการควบคุมไปยังกระบวนการ
สง
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 33
Life Cycle of An I/O Request
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 34
STREAMS
่ งทางการสอ
ื่ สารแบบ full-duplex ระหว่าง a
STREAM – คือชอ
user-level process กับ a device
A STREAM ประกอบด ้วย:
- STREAM head สว่ นต่อประสานกับกระบวนการผู ้ใช ้
- driver end สว่ นต่อประสานกับอุปกรณ์
- zero หรือ more STREAM modules ระหว่าง อุปกรณ์และ
กระบวนการเหล่านัน
้
แต่ละมอดูลบรรจุด ้วย a read queue และ a write queue
ื่ สารระหว่างคิว
ใช ้ Message passing ในการสอ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 35
The STREAMS Structure
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 36
Performance
ิ ธิภาพของระบบ
I/O เป็ นปั จจัยหลักในเรือ
่ งประสท
ความต ้องการ CPU ในการ execute device driver, kernel I/O
code
การสลับบริบท (Context switches) เมือ
่ มีการ interrupts
การทาสาเนาข ้อมูล (Data copying)
ความคับคัง
่ ของการจราจรเครือข่าย (Network traffic especially
stressful)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 37
Intercomputer Communications
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 38
ิ ธิภาพ
การปร ับปรุงประสท
Improving Performance
ลดจานวนการสลับบริบท (Reduce number of context
switches)
ลดการทาสาเนาข ้อมูล (Reduce data copying)
้
ลด interrupts โดยใชการถ่
ายโอนครัง้ ละจานวนมาก, ตัวควบคุม
ทีฉ
่ ลาด (smart controllers), และ polling
ใช ้ DMA
ิ ธิภาพของ CPU, memory, bus, และ I/O
สร ้างสมดุลประสท
เพือ
่ ให ้ได ้ปริมาณงานสูงสุด (highest throughput)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 39
Device-Functionality Progression
วิเชษฐ ์ พลายมาศ | ระบบปฏิบ ัติการ (OS: Operating Systems) | ระบบรับเข ้า/ส่งออก (I/O Systems) | 40