อุปกรณ์รับ และแสดงผล

I/O Module ที่จะควบคุมการทำงานของ device ต่าง ๆ แทนที่จะให้ CPU เป็นตัวควบคุมโดยตรง ซึ่งถ้าเราไม่มี I/O Module นี้เราก็จะต้องมี logic ที่ใช้ในการควบคุม device หลาย ๆ รูปแบบตามชนิดของ device นั้น ๆ

หน้าที่ของ I/O Module

I/O Module มีหน้าที่หลักในการควบคุมการเคลื่อนย้ายข้อมูล (transfer data) ระหว่างอุปกรณ์ภายนอก (external device) กับ CPU

รวมไปถึงการทำหน้าที่ต่าง ๆ ต่อไปนี้ด้วยคือ

  1. Control and Timing  ควบคุมและจัดการเกี่ยวกับเรื่องอัตราหรือจังหวะการ transfer ข้อมูล เพื่อให้สอดคล้องกันระหว่าง CPU กับอุปกรณ์
  2. CPU Communications โดย CPU จะส่งคำสั่งมาที่ I/O Module เพื่อตรวจสอบสถานะของ I/O Module ได้ เช่น ขณะนี้มีการ transfer เกิดขึ้นที่ I/O Module หรือไม่
  3. Device Communications ทำให้สามารถตรวจเช็คได้ว่าขณะนี้ I/O Module พร้อมที่จะทำงานหรือไม่
  4. Data Buffering  เป็นที่สำหรับพักข้อมูล ทำการเปลี่ยนรูปแบบของข้อมูลให้เหมาะกับอุปกรณ์นั้น ๆ

I/O System

ประกอบด้วย

  1. อุปกรณ์อินพุตเอาต์พุต (I/O Devices)
  2. ตัวควบคุมการส่งข้อมูล (Control Unit)  ระหว่าง I/O device กับ CPU
  3. โปรแกรมที่ run อยู่บน CPU เพื่อทำงานเกี่ยวกับ I/O (I/O Operation) เช่น การอ่าน เขียนข้อมูลไปยัง I/O device ต่าง ๆ

กลไกต่อไปนี้เพื่อช่วยในการ synchronize หรือปรับการทำงานให้สมดุลกัน โดยใช้

  1. Programmed I/O  วิธีนี้ CPU จะควบคุมทุกอย่าง (ทำหน้าที่เป็น master) โดย CPU จะ execute โปรแกรมที่ทำ loop

check โดยทุก ๆ word ที่ transfer จะต้องผ่าน CPU ซึ่งอาจถูกเก็บไว้ใน register ของ CPU เอง แล้วตรวจเช็คว่า word นั้นจะส่งไปที่อุปกรณ์ไหน วิธีนี้จะทำให้ CPU ทำงานหนักเพราะต้องตรวจเช็คทุก ๆ word ที่ transfer

       2. I/O Interrupt  เมื่ออุปกรณ์พร้อมที่จะรับหรือส่งข้อมูล ก็จะส่งสัญญาณ interrupt เข้ามาที่ CPU ถ้าขณะนั้น CPU กำลัง

execute application program อยู่  CPU จะหยุดการทำงาน และตรวจสอบว่าเป็น Interrupt ของอุปกรณ์ไหนและจะ branch หรือกระโดดไปให้บริการอุปกรณ์นั้น ๆ (ทำ data transfer) เมื่อเสร็จแล้วจึงกลับมา execute application program ที่ค้างอยู่ จนกระทั่งอุปกรณ์ส่งสัญญาณมาเพื่อต้องการจะ transfer data อีกก็จะหยุดงานแล้วไปให้บริการอุปกรณ์นั้น ๆ อีกครั้งหนึ่ง จะเห็นว่าวิธีนี้จะดีกว่าวิธีแรก เพราะ CPU ยังสามารถที่จะ execute application program ต่าง ๆ ได้

       3. DMA (Direct Memory Access) เป็น Hardware ที่ทำหน้าที่ในการ transfer data ระหว่าง I/O device กับหน่วยความจำ

โดยตรง CPU ไม่ต้อง transfer data ทุก ๆ word เหมือนกับวิธีแรกแต่ปล่อยให้เป็นหน้าที่ของ DMA ทำแทน CPU จะทำหน้าที่เพียงรับรู้การติดต่อโดยการสร้างการติดต่อระหว่างหน่วยความจำกับอุปกรณ์ เพื่อทีจะได้รู้ว่ามีการติดต่อระหว่างหน่วยความจำกับอุปกรณ์ชนิดไหน

อุปกรณ์นำข้อมูลเข้า  คือ อุปกรณ์ที่ทำให้คอมพิวเตอร์สามารถสัมผัสและรับรู้สิ่งต่างๆ จากภายนอกเครื่องได้ อันได้แก่ โปรแกรมหรือชุดคำสั่งที่เขียนสั่งงาน ให้คอมพิวเตอร์ทำงานตามขั้นตอน และข้อมูลที่ต้องใส่เข้าไปพร้อมกับโปรแกรม เพื่อส่งไปให้หน่วยประมวลผลกลางทำการประมวลผล และผลิตผลลัพธ์ที่ต้องการออกมา ตัวอย่างเช่น เครื่องอ่านบัตร คีย์บอร์ด เมาส์ จอยสติก จอสัมผัส ปากกาแสง กล้องดิจิตอล สแกนเนอร์ เป็นต้น

อุปกรณ์เอาต์พุต (Output device) คือ อุปกรณ์ที่ทำให้คอมพิวเตอร์คอมพิวเตอร์ควบคุมหรือส่งผลออกมาสู่โลกภายนอกได้ ตัวอย่างเช่น เครื่องเจาะบัตร จอภาพ เครื่องพิมพ์

อุปกรณ์นำข้อมูลออก หรืออุปกรณ์แสดงผล คือ อุปกรณ์ที่ทำให้คอมพิวเตอร์ควบคุมหรือส่งผลออกมาสู่ภายนอกตัวเครื่องได้ หลังจากที่คอมพิวเตอร์ได้ทำการประมวลผลแล้ว ก็จะต้องมีวิธีในการนำผลลัพธ์ออกมาแสดง ซึ่งสามารถแบ่งอุปกรณ์แสดงผลนี้ ออกได้เป็น 3 ประเภทคือ อุปกรณ์แสดงผลลัพธ์ชั่วคราว เช่น จอภาพ (Monitor) อุปกรณ์แสดงผลลัพธ์ถาวร เช่น เครื่องพิมพ์ (Printer) และอุปกรณ์แสดงผลลัพธ์ถาวรทางด้านกราฟิก เช่น พลอตเตอร์ (Plotter) เป็นต้น

ระเบียบวิธีการที่สมบูรณ์ ในการเชื่อมต่อระหว่าง host และ ตัวควบคุม มีการทำ handshaking เป็นพื้นฐาน โดยสมมติให้มี 2 bits เชื่อมประสาน producer และ consumer หรือ controller และ host โดยมีการบ่งบอกสถานะขณะทำงาน

*ขัดจังหวะ (Interrupts)

การขัดจังหวะจะทำงานอย่างต่อเนื่องร่วมกับ CPU จึงถูกเรียกว่า Interrupt-request line โดยทำงานเป็น Interrupt-driven I/O cycle สำหรับ 7 องค์ประกอบ

1. device driver initialtes I/O
2. initiates I/O
3. input ready, output complete, or error generates interrupt signal
4. CPU receiving interrupt, transfers control to interrupt handler
5. interrupt handler processes data, returns from interrupt
6. CPU resumes processing of interrupted task
7. CPU executing checks for interrupts between instructions

*เข้าถึงหน่วยความจำโดยตรง (Direct memory access)

(Direct Memory Access) Specialized circuitry or a dedicated microprocessor that transfers data from memory to memory without using the CPU. Although DMA may periodically steal cycles from the CPU, data are transferred much faster than using the CPU for every byte of transfer. On PCs, there are eight DMA channels commonly used as follows. Most sound cards are set to use DMA channel 1
DMA คือ วงจรพิเศษที่ออกแบบมาเพื่อส่งข้อมูลระหว่าง หน่วยความจำ ถึงหน่วยความจำโดยไม่ใช้การทำงานของ CPU และเป็นการทำงานที่คาดหวัง หรือทำนายข้อมูลล่วงหน้า ในการเรียกข้อมูลที่ต้องการใช้ แทนที่จะให้ CPU เป็นคนสั่งงานให้เรียกข้อมูลโดยตรง
ภาพแสดงขั้นตอนการทำงานร่วมกันของ CPU, Cache, CPU memory bus, DMA, PCI bus, IDE disk controller และ Disk มีขั้นตอนต่าง ๆ 6 ขั้นตอน
1. device driver is told to transfer disk data to buffer at address X
2. device driver tells disk controller to transfer C bytes from disk to buffer at address X
3. disk controller initiates DMA transfer
4. disk controller sends each byte to DMA controller
5. DMA controller transfers bytes to buffer X, increasing memory address and decreasing c until c = 0
6. when c = 0, DMA interrupts CPU to signal transfer completation

Application I/O Interface
Block and character devices
โดยปกติระบบปฏิบัติการจะคาดหวังการเชื่อมต่อผ่าน read() write() หรือ seek() ซึ่งเป็นอุปกรณ์ส่งข้อมูลแบบ simple linear array of block หรือ raw I/O ตัวอย่างอุปกรณ์แบบนี้ที่เห็นได้ชัดที่สุดก็คือ keyboard
Network devices
ในระบบเครือข่ายจะมีการติดต่อสื่อสารกันผ่าน socket interface นอกจากการติดต่อแบบ read() write() และ seek() ยังมีการใช้อุปกรณ์ในเครือข่ายเชื่อมต่อเข้ามาผ่าน socket ได้อีกทางหนึ่ง โดยไม่ได้คำนึงถึงระบบปฏิบัติการว่าจะเป็น UNIX หรือ Windows แต่สนใจเฉพาะสิ่งที่ส่งเข้ามาว่าเข้ามาทางใด
Clocks and timers
คอมพิวเตอร์ส่วนใหญ่มี hardware clock และ timer ให้ข้อมูลพื้นฐานเกี่ยวกับเวลา 3 อย่าง
– บอกเวลาปัจจุบัน (Current time)
– บอกเวลาที่ผ่านไป (Elapsed time)
– ตั้ง trigger ที่จะปฏิบัติการต่อเวลา
Blocking and nonblocking I/O
การมี system-call interface รองรับ I/O ที่มาจาก blocking และ nonblocking เพราะผู้ใช้อาจใช้ทั้ง mouse และ keyboard ส่งข้อมูลพร้อมกัน ในขณะที่กำลังเปิดภาพยนต์จากแผ่น CD จึงต้องรอบรับข้อมูลต่าง ๆ ที่เข้ามา

Kernel I/O Subsystem
Kernel คือแก่นของระบบ ที่ให้บริการต่าง ๆ มากมาย และสัมพันธ์กับ I/O ด้านต่าง ๆ หรือกล่าวได้ว่าทั้ง 6 เรื่องต่อไปนี้ คือระบบย่อยของการจัดการภายใน kernel ที่เกี่ยวกับ I/O
– I/O scheduling
– Buffering (เก็บข้อมูลที่ปรากฎ)
– Caching (เก็บข้อมูลที่เรียกใช้บ่อย และทำให้การเรียกใช้เร็วกว่า)
– Spooling and device reservation (เป็น buffer ที่เก็บผลลัพธ์ของอุปกรณ์ เช่น printer)
– Error handling
– Kernel data structures

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: