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