จัดทำโดย : นายอุกฤษฏ โอภาสปุญญานนท์ รหัสนักศึกษา : 6031280070

บทที่ 7 การจัดการอุปกรณ์Device Management


ลักษณะของอุปกรณ์ (Device Characteristic)

•อุปกรณ์อินพุต-เอ้าต์พุต (Input/Output Device) 

•อุปกรณ์เก็บข้อมูล (Storage Device)


อุปกรณ์อินพุต-เอ้าต์พุต (Input/Output Device)

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







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

•แบ่งได้เป็น 2 ประเภทคือ

–อุปกรณ์ชนิดข้อมูลเป็นสาย (Stream)

–อุปกรณ์ชนิดข้อมูลไม่เป็นสาย (Non-Stream)

•อุปกรณ์ชนิดข้อมูลเป็นสาย (Stream)

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

           







อุปกรณ์ชนิดข้อมูลไม่เป็นสาย (Non-Stream)

•ข้อมูลที่ส่งและรับไม่ขึ้นอยู่กับลำดับการส่ง

•ต้องอาศัยข้อมูลเพิ่มเติมเพื่อที่จะแยกแยะข้อมูลแต่ละตัวและมีวิธีจัดการโดยเฉพาะ

•อุปกรณ์ชนิดนี้ได้แก่ จอภาพ



อุปกรณ์เก็บข้อมูล (Storage Device)

•เป็นอุปกรณ์เก็บข้อมูลที่คอมพิวเตอร์ใช้เก็บข้อมูลต่าง ๆ 

•ข้อมูลสามารถถูกดึงหรือเรียกกลับมาใช้ได้ในภายหลัง
•แบ่งเป็น 2 ประเภทคือ 

–อุปกรณ์ที่มีการเข้าถึงแบบลำดับ (Serial Access Storage Device) 

–อุปกรณ์ที่มีการเข้าถึงโดยตรง (Direct Access Storage Device)

อุปกรณ์ที่มีการเข้าถึงแบบลำดับ

(Serial Access Storage Device)


•การเข้าถึง (Access) ต้องเป็นไปตามลำดับ เรียงไปจนถึงตำแหน่งที่ต้องการ
•การเก็บข้อมูลจะเก็บเป็นกลุ่ม ๆ ไม่มีแอดเดรสของแต่ละกลุ่ม การอ่านต้องอ่านเข้ามาทีละกลุ่มแล้วตรวจสอบว่าเป็นกลุ่มที่ต้องการหรือไม่จนพบข้อมูล
•อุปกรณ์พวกนี้ได้แก่ เทป






อุปกรณ์ที่มีการเข้าถึงโดยตรง

(Direct Access Storage Device)
•ข้อมูลจะถูกจัดไว้เป็นกลุ่มในระดับบล็อกหรือ เซกเตอร์ แต่ละกลุ่มจะมีแอสเดรสของตัวเอง
•การเข้าถึงทำได้โดยกำหนดแอดเดรสของข้อมูลกลุ่มนั้นทำให้การเข้าถึงสามารถเข้าถึงได้โดยตรงไม่ต้องผ่านข้อมูลกลุ่มอื่น


•อุปกรณ์พวกนี้ได้แก่ ดิสก์






ตัวควบคุมอุปกรณ์ (Device Controller)

•อุปกรณ์แต่ละประเภทจะประกอบด้วยกลไกต่าง ๆ และส่วนที่เป็นวงจรอิเล็กทรอนิกส์

•สำหรับส่วนที่เป็นวงจรอิเล็กทรอนิกส์เราเรียกว่าชิพ ที่ประกอบรวมกันอยู่บนเซอร์กิตบอร์ด (Circuit board) ซึ่งส่วนนี้เองที่ถูกเรียกว่า ตัวควบคุมอุปกรณ์

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

–ตัวควบคุมจอภาพ หรือรู้จักกันในนามของการ์ดจอภาพ 

–ตัวควบคุมดิสก์ หรือรู้จักกันในนามของดิสก์คอนโทรเลอร์ (Disk Controller)

•ตัวขับอุปกรณ์ (Device drivers)

•อุปกรณ์แต่ละชนิดย่อมมีลักษณะที่แตกต่างกันออกไปในหลาย ๆ อย่าง ทั้งการติดต่อรับส่งข้อมูล การควบคุมการทำงานภายในอุปกรณ์ 

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

•ด้วยความไม่สะดวกดังกล่าวผู้ออกแบบ OS จึงได้ทำการแยกเอาส่วนควบคุมอุปกรณ์ทั้งหมดออกจากระบบ โปรแกรมที่แยกตัวออกมานั้นมีหน้าที่ควบคุมการ ติดต่อกับอุปกรณ์เหล่านั้นเราเรียกว่า ตัวขับอุปกรณ์ (Device drivers)










หน้าที่ของโอเอสในการจัดการอุปกรณ์

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

1.ติดตามสถานะของอุปกรณ์ทุกชิ้น
วิธีที่นิยมใช้คือจะมี UCB (Unit Control Block) สำหรับอุปกรณ์แต่ละชิ้น เพื่อเก็บข้อมูลที่สำคัญต่างๆ ของอุปกรณ์ โดย UCB จะคล้ายกับ PCB ของการโปรเซส ซึ้งถือว่าเป็นโคร้งสร้างข้อมูลชนิดหนึ่ง

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

๐ การยกเข้าให้ (Dedicated Device)
เป็นการกำหนดให้อุปกรณ์ถูกใช้ได้โดยโปรเซสเดียว โปรเซสอื่นๆ จะเข้ามาขอใช้บริการใดไม่ได้

๐ การแบ่งปัน (Shared Devicre)
เป็นการกำหนดให้อุปกรณ์นั้นๆ สามารถบริการให้กับโปรเซสหลายๆ โปรเซสได้ โดยอุปกรณ์ที่ใช้บริการนั้นต้องปราศจากการครอบครองจากโปรเซสใด ๆ

๐ การจำลอง (virtual Device)
เป็นการจำลองอุปกรณ์ใดๆ ให้ดูเหมือนเป็นอุปกรณ์นั้นจริง เช่น การจำลองพื้นที่บนดิสก์เป็นหน่วยความจำเพื่อหลอกให้ซีพียูว่ามีหน่วยความจำขนาดใหญ่พอที่จะประมวลผลได้หรือการจำลองหน่วยให้เป็นดิสก์เก็บข้อมูลได้ เป็นต้น

3.การจัดสรรอุปกรณ์ (Allocate)
คือการจัดอุปกรณ์ชิ้นนั้นๆ ให้กับโปรเซสที่ร้องขอบริการ

4.การเรียกคืน (Deallocate)
หลังจากที่โปรเซสครอบครองอุปกรณ์นั้นๆ เมื่อหมดช่วงเวลาควอนตัมหรือทำงานจนแล้วจบโอเอสจะต้องจัดการ Deallocate เพื่อนำอุปกรณ์ถูกครอบครองจากโปรเซสนั้นคืนให้แก่ระบบ เพื่อแบ่งปันการใช้งานต่อไป


ดีไวซ์ไดร์ฟเวอร์


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

จะทำอย่างไรให้โอเอสมีการอินเตอร์เฟส(Interface) กับอุปกรณ์เหล่านั้นได้ ในยุคก่อนนั้นเมื่อมีอุปกรณ์ I/O ชนิดใหม่ จะนำ Source Code ของโอเอสนั้นมาเพิ่งรูทีนการจัดการกับ I/O นั้นทำการ Re-Compile จะได้โอเอสเวอร์ชั่นใหม่ที่สามารถจัดการกับ I/O ชนิดนั้นได้ แต่วิธีนี้ในปัจจุบันไม่ใช้กันแล้ว เนื่องจากเกิดปัญหาที่ยุ่งยากและเป็นหนทางการแก้ไขที่ไม่ดีนัก โดยในปัจจุบันจะมีวิธีการจัดการกับI/O ในด้านซอฟต์แวร์ คือ

๐ ให้โอเอสรู้จักกับ I/O ทุกตัวได้โดยมีมาตรฐานในการติดต่อ
๐ในระดับ Software level ใช้คำสั้ง (command)ชุดเดียวกัน

ดังนั้นโอเอสกับอุปกรณ์ ฮาร์ดแวร์ จะมีกระบวนการเชื่อมต่อกัน เช่น เมื่อ Application program มีการเรียกใช้งานเครื่องพิมพ์ โอเอสจะรู้ได้อย่างไร ว่า เครื่องพิพ์แต่ละตัวนั้นทำงานอย่างไร โดยการติดต่อนี้จะติดต่อด้วยการขอใช้บริการผ่านทาง System call รู้ทีนต่างๆ ใน Kernel i\o subsystem เพื่อติดต่อใช้งานกับอุปกรณ์เหล่านั้น

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





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

ดังนั้นหากมีอุปกรณ์ใหม่ๆที่ต้องการใช้งาน และโอเอสไม่รู้จักอุปกรณ์เหล่านั้น จึงเป็นสิ่งที่ง่ายมาก เพียงแค่นำโปรแกรมดีไวว์ไดร์ฟเวอร์ ของอุปกรณ์ชิ้นนั้นทำการติดตั้งเพิ่มเข้าไปในระบบ ก็จะได้ฟังก์ชันของรูทีนนั้นออยู่ในส่วนkernel i\o subsystem โดยไม่มีการเข้าไปยุ่งเกี่ยวกับตัวโอเอสเลย และรูทีนหน้าที่การบริการต่างๆเหล่านี้ ผู้ใช้สามารถเรียกใช้บริการได้โดยผ่านทาง system call

ยกตัวอย่างเช่น เครื่องพิมพ์อิงค์เจ็ตรุ่นใหม่ เมื่อต่อกับเครื่องคอมพิวเตอร์เป้นที่เรียบรอยแล้ว จะไม่สามารถใช้งานได้เพราะระบบปิบัติการไม่รู้จักเครื่องพิมพ์รุ่นี้ตัวอย่างในระบบปฎิบัติการวินโดวส์ (windows) เมื่อมีอุปกรณ์ฮาร์ดแวร์แปลกใหม่ต่อเข้ากับระบบประกอบกับระบบปฎิบัติการวินโดวส์นี้เป็นระบบแบบ plug and playที่สามารถตรวจสอบอุปกรณ์แปลกใหม่เมื่อระบบไม่รู้จักอุปกรณ์นั้นได้โยอัตโนมัติซึ่งจะแสดงข้อความว่ามี new hardware จากนั้นก้ให้ทำการติดตั้งโปรแกรมดีไวซ์ไดร์ฟเวอร์ เพื่อให้ระบบปฎิบัติการสามารถจัดการกับเครื่องพิมพ์อิงค์เจ็ตรุ่นนั้นได้


I/O Hardware


โดยพื้นฐานแล้วโอเอสสามารถติดต่อสื่อสารกับ I/O ฮาร์ดแวร์ตามช่องทางต่างๆดังนี้
๐ Port เช่น Serial Port, Parallell Port
๐ Bus เป็น Share Medium ที่ให้บริการส่งผ่านข้อมูลชนิดต่างๆ ร่วมกัน
๐ Controller เป็นอุปกรณ์ที่มีโปรเซสเซอร์ในตัว ทำให้ลดภาระการทำงานของซีพียู โดยซีพียูก็ไม่ต้องทำงานในรายละเอียด เพียงแต่สั่งให้ Controller นั้นทำงานแทน เช่น การ์ด VGA ที่มี Controller ในตัว จะสามารถคำนวณแสดงผลภาพกราฟฟิกที่ละเอียดทางจอภาพได้ เป็นการแบ่งเบาภาระการทำงานด้านการคำนวณให้กับซีพียู การทำงานในลักษณะนี้ CPU ก็จะต้อง Symchronize กับ Controller เหล่านั้นได้








กฎของ ดร.จอห์น ฟอน นอยมานน์ กล่าวว่า ข้อมูลต่างๆ ในหน่วยความจำต้องสามารถ Addressable ได้ นั่นหมายความว่า การอ้างอิงข้อมูลหรืออุปกรณ์ใดๆ ก็ตามจะต้องมีแอดเดรส (Address) ในการอ้างอิง ดังนั้น I/O จะต้องมีแอดเดรสในซีพียูอ้างอิงในหน่วยความจำ ซึ่งซีพียูก็จะมีกลวิธีต่างๆ ในการอ้างอิง I/O Address เหล่านี้ ได้ 2 วิธีด้วยกัน คือ
1.Direct I/O Instruction
คือการติดต่อด้วยการใช้คำสั่ง (command) ที่แตกต่างกัน สมมุติว่ามี Address จำนวน 16 เส้น (4 บิต) ดังนั้น
๐ หน่วยความจำมี Address ตั้งแต่ 0-15
๐ I/O ก็มี Address ตั้งแต่ 0-15 เช่นกัน





จากรูปที่ 4.5 จะเห็นได้ว่าหน่วยความจำและ I/O ต่างก็มีจำนวนและหมายเลข Address ที่เหมือนกัน แต่จะแยกความแตกต่างกันตรงที่ ถ้าซีพียูมีการร้องขอหน่วยความจำ จะใช้คำสั่ง Load/Store แต่ถ้าซีพียูร้องขอ I/O จะใช้คำสั่ง IN/OUT ดังนั้นทำให้สามารถแยกการทำงานด้วยการส่ง Signal หรือสัญญาณที่มีความแตกต่างกัน เช่น ซีพียู มีการอ้างอิง Address ในตำแหน่งที่ 8 ในตำแหน่งที่ 8 นี้ ทั้งหน่วยความจำปละ I/O ต่างก็มีหมายเลข Address นี้ แต่จะรู้ว่าเป็นคำสั่งของใครนั้นจะมีสัญญาณที่บ่งบอกถึงความแตกต่างว่าคำสั่งนี้เป็นของหน่วยความจำหรือคำสั่งนี้เป็นของ I/O ดังนั้นแบบ Direct I/O Instruction นี้จะใช้คำสั่งที่แตกต่างในการควบคุมการใช้งาน

2. Memory-mapped I/O
วิธีนี้จะมีการจัดแบ่ง Address ที่แตกต่างจากข้างต้น คือ หมายเลข Address จะแยกแบ่งส่วนการใช้งาน เช่น จำนวน Address ตั้งแต่ 0-15 นี้ จะมีการแบ่งแยกออกจากกันโดยสิ้นเชิง เช่น ในตำแหน่งที่ 0 ถึง 10 นี้เป็นของหน่วยความจำ ส่วน 11 ถึง 15 นี้เป็นของ I/O ดังนั้นในลักษณะนี้จะไม่ต้องใช้คำสั่ง (Command) ที่แตกต่าง เพราะว่าตำแหน่งของแต่ละ Address นั้นได้มีการอ้างอิงอุปกรณ์ใดๆ ที่แน่นอนแล้ว เช่น มีการอ้างอิง Address ในตำแหน่งที่ 14 ก็หมายถึง Address ของ I/O นั่นเอง



อ้างอิงที่มา 
: https://sites.google.com/site/rabbpdibatikar1/i-o-hardware
http://www.chantra.sru.ac.th/OS.html

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้