การถ่ายโอนข้อมูลแบบอนุกรมจากอุปกรณ์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง
ซึ่งอาจจะเป็นคอมพิวเตอร์หรืออุปกรณ์สื่อสารชนิดอื่นนั้น
มีสมมติฐานว่าความเร็วในการเปลี่ยนสัญญาณจากขนานเป็นอนุกรมของฝ่ายส่งต้องเร็วพอ
ในทำนองเดียวกันฝ่ายรับก็ต้องมีความเร็วในการเปลี่ยนสัญญาณอนุกรมเป็นขนานได้ทันเวลาเพื่อนำไปแสดงบนจอภาพ
หรือพิมพ์ออกที่เครื่องพิมพ์ หรือเก็บไว้ในแผ่นบันทึก กล่าวคือ
ทั้งฝ่ายส่งและฝ่ายรับต้องมีความเร็วในการทำงานเท่ากัน
ไม่มีการหน่วงเวลาหรือการขัดจังหวะระหว่างกลาง
อย่างไรก็ตามในความเป็นจริงสมมติฐานนี้เป็นไปได้ยากเพราะฝ่ายส่งทำหน้าที่ส่งอย่างดียวแต่ฝ่ายรับอาจต้องทำหน้าที่หลายอย่าง
เช่น รับ แสดงผล เก็บข้อมูล พิมพ์ เป็นต้น
ความเร็วของฝ่ายรับหากไม่เพียงพอที่จะทำงานหลายอย่างให้ทันกับฝ่ายส่ง
ก็จำเป็นจะต้องมีกลไกในการควบคุมการถ่ายโอน
เทคนิคนการควบคุมความเร็วในการส่งข้อมูลรูปแบบหนึ่งคือสร้างบัฟเฟอร์ (buffer)
บัฟเฟอร์สำหรับการสื่อสารคือหน่วยความจำในคอมพิวเตอร์
ซึ่งแบ่งแยกออกมาจากหน่วยความจำหลัก สำหรับเก็บพักข้อมูลในการติดต่อชั่วคราว
บัฟเฟอร์สำหรับการสื่อสารนี้ส่วนมากใช้สำหรับฝ่ายรับเท่านั้น
เนื่องจากฝ่ายรับจำเป็นจะต้องตามฝ่ายส่งให้ทัน ถ้าหากฝ่ายรับใช้ภาษา
แอสเซมบลีควบคุม มีความเร็วพอ อาจไม่จำเป็นต้องใช้บัฟเฟอร์สำหรับการสื่อสารเนื่องจากภาษา
แอสเซมบลีมีความเร็วสูง
ข้อมูลที่จัดส่งให้คอมพิวเตอร์ที่เป็นฝ่ายรับ
ส่วนมากจะอ่านมาจากแผ่นบันทึก
ข้อมูลที่อ่านมาจากแผ่นบันทึกซึ่งมีลักษณะเป็นกลุ่มได้รับการนำมาสู่บัฟเฟอร์
การอ่านข้อมูลยังคงดำเนินไปจนกระทั่งบัฟเฟอร์เต็ม
การอ่านจะหยุดทำงานชั่วคราวรอจนกระทั่งข้อมูลในบัฟเฟอร์ถูกส่งออกไปหมด
ข้อมูลก็จะถูกอ่านออกมาใส่ในบัฟเฟอร์อีกครั้ง โดยปกติบัฟเฟอร์จะมีความจำขนาด 225
ตัวอักษร หรือประมาณ 3 บรรทัด บรรทัดละ 80
ตัวอักษร
บัฟเฟอร์รับมีผลกระทบต่อการรับส่งข้อมูลมากกว่าบัฟเฟอร์ส่ง
เพราะบัฟเฟอร์รับทำหน้าที่เช่นเดียวกับบัฟเฟอร์ส่ง
แต่ทิศทางของการไหลของข้อมูลอยู่ในทางตรงกันข้าม
ในระบบควบคุมการทำงานของไมโครคอมพิวเตอร์บางรุ่น เช่น IBM PC มีกลไกบัฟเฟอร์รับส่งนี้ไว้อยู่แล้ว
โปรแกรมในระดับสูงจึงเพียงแต่ทำหน้าที่ดึงเอาข้อมูลจากบัฟเฟอร์นี้ไปใช้
จะเห็นได้ชัดถึงความจำเป็นในการใช้บัฟเฟอร์เมื่อความเร็วในการส่งสูงเกินกว่า 600
บอด
หน้าที่ของโปรแกรมควบคุมการรับส่งก็คือ
การอ่านข้อมูลจากบัฟเฟอร์รับไปใช้เมื่อถูกอ่านจากบัฟเฟอร์รับไปแล้ว
ตัวที่อ่านออกไปก็จะหายไปจากบัฟเฟอร์ ลองนึกภาพดูจะเห็นว่า
ระบบปฏิบัติการรับขัอมูลจากช่องทางอนุกรมใส่บัฟเฟอร์
โปรแกรมควบคุมการรับส่งดึงข้อมูลจากบัฟเฟอร์
เปรียบเสมือนคนหนึ่งตักน้ำใส่ตุ่มอีกคนหนึ่งตักออกจากตุ่ม
ถ้าฝ่ายที่ตักออกมีความเร็วมากกว่า น้ำในตุ่มก็จะมีโอกาสแห้ง
ในทางตรงกันข้ามถ้าฝ่ายตักออกช้ากว่าฝ่ายตักเข้า โอกาสที่น้ำล้นตุ่มก็ย่อมจะมี
ซึ่งในทางสื่อสารเรียกว่า บัฟเฟอร์รับไหลล้น (receive buffer overflow) การไหลล้นดังกล่าวทำให้ข้อมูลที่ได้รับหายไปได้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น