ระบบปฏิบัติการ - โปรแกรม I / O

ซอฟต์แวร์ I / O มักจัดอยู่ในเลเยอร์ต่อไปนี้ -

  • User Level Libraries- สิ่งนี้ให้อินเทอร์เฟซที่เรียบง่ายสำหรับโปรแกรมผู้ใช้เพื่อดำเนินการอินพุตและเอาต์พุต ตัวอย่างเช่น,stdio เป็นไลบรารีที่จัดทำโดยภาษาโปรแกรม C และ C ++

  • Kernel Level Modules - ให้ไดรเวอร์อุปกรณ์โต้ตอบกับตัวควบคุมอุปกรณ์และโมดูล I / O อิสระของอุปกรณ์ที่ใช้โดยไดรเวอร์อุปกรณ์

  • Hardware - เลเยอร์นี้ประกอบด้วยฮาร์ดแวร์และคอนโทรลเลอร์ฮาร์ดแวร์จริงซึ่งโต้ตอบกับไดรเวอร์อุปกรณ์และทำให้ฮาร์ดแวร์มีชีวิต

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

ไดรเวอร์อุปกรณ์

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

ไดรเวอร์อุปกรณ์ทำงานต่อไปนี้ -

  • เพื่อรับคำขอจากซอฟต์แวร์อิสระของอุปกรณ์ด้านบน
  • โต้ตอบกับตัวควบคุมอุปกรณ์เพื่อรับและให้ I / O และดำเนินการจัดการข้อผิดพลาดที่จำเป็น
  • ตรวจสอบให้แน่ใจว่าคำขอดำเนินการสำเร็จ

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

ตัวจัดการขัดจังหวะ

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

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

กลไกการขัดจังหวะยอมรับแอดเดรส number ตัวเลขที่เลือกรูทีน / ฟังก์ชันการจัดการขัดจังหวะเฉพาะจากชุดเล็ก ๆ ในสถาปัตยกรรมส่วนใหญ่แอดเดรสนี้เป็นออฟเซ็ตที่เก็บไว้ในตารางที่เรียกว่าตารางเวกเตอร์ขัดจังหวะ เวกเตอร์นี้มีที่อยู่หน่วยความจำของตัวจัดการขัดจังหวะพิเศษ

ซอฟต์แวร์ I / O ที่ไม่ขึ้นกับอุปกรณ์

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

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

ซอฟต์แวร์ User-Space I / O

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

ไลบรารี I / O (เช่น stdio) อยู่ในพื้นที่ผู้ใช้เพื่อให้อินเทอร์เฟซกับ I / O SW ที่ไม่ขึ้นกับอุปกรณ์ประจำถิ่นของ OS ตัวอย่างเช่น putchar (), getchar (), printf () และ scanf () เป็นตัวอย่างของ stdio ไลบรารี I / O ระดับผู้ใช้ที่มีอยู่ในการเขียนโปรแกรม C

ระบบย่อย Kernel I / O

ระบบย่อย Kernel I / O มีหน้าที่ให้บริการมากมายที่เกี่ยวข้องกับ I / O ต่อไปนี้เป็นบริการบางส่วนที่มีให้

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

  • Buffering - ระบบย่อย Kernel I / O รักษาพื้นที่หน่วยความจำที่เรียกว่า bufferที่จัดเก็บข้อมูลในขณะที่ถ่ายโอนระหว่างอุปกรณ์สองเครื่องหรือระหว่างอุปกรณ์ที่มีการทำงานของแอปพลิเคชัน การบัฟเฟอร์ทำขึ้นเพื่อรับมือกับความเร็วที่ไม่ตรงกันระหว่างผู้ผลิตและผู้บริโภคของสตรีมข้อมูลหรือเพื่อปรับเปลี่ยนระหว่างอุปกรณ์ที่มีขนาดการถ่ายโอนข้อมูลที่แตกต่างกัน

  • Caching- เคอร์เนลรักษาหน่วยความจำแคชซึ่งเป็นพื้นที่ของหน่วยความจำที่รวดเร็วซึ่งเก็บสำเนาข้อมูล การเข้าถึงสำเนาแคชจะมีประสิทธิภาพมากกว่าการเข้าถึงต้นฉบับ

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

  • Error Handling - ระบบปฏิบัติการที่ใช้หน่วยความจำที่ได้รับการป้องกันสามารถป้องกันข้อผิดพลาดของฮาร์ดแวร์และแอปพลิเคชันได้หลายประเภท