วันจันทร์ที่ 18 สิงหาคม พ.ศ. 2557

บัฟเฟอร์

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

หน้าที่ของโปรแกรมควบคุมการรับส่งก็คือ การอ่านข้อมูลจากบัฟเฟอร์รับไปใช้เมื่อถูกอ่านจากบัฟเฟอร์รับไปแล้ว ตัวที่อ่านออกไปก็จะหายไปจากบัฟเฟอร์ ลองนึกภาพดูจะเห็นว่า ระบบปฏิบัติการรับขัอมูลจากช่องทางอนุกรมใส่บัฟเฟอร์ โปรแกรมควบคุมการรับส่งดึงข้อมูลจากบัฟเฟอร์ เปรียบเสมือนคนหนึ่งตักน้ำใส่ตุ่มอีกคนหนึ่งตักออกจากตุ่ม ถ้าฝ่ายที่ตักออกมีความเร็วมากกว่า น้ำในตุ่มก็จะมีโอกาสแห้ง ในทางตรงกันข้ามถ้าฝ่ายตักออกช้ากว่าฝ่ายตักเข้า โอกาสที่น้ำล้นตุ่มก็ย่อมจะมี ซึ่งในทางสื่อสารเรียกว่า บัฟเฟอร์รับไหลล้น (receive buffer overflow) การไหลล้นดังกล่าวทำให้ข้อมูลที่ได้รับหายไปได้


ไม่มีความคิดเห็น:

แสดงความคิดเห็น