วันจันทร์ที่ 29 มกราคม พ.ศ. 2561

บทที่6 การจัดการไฟล์ File Management

บทที่6
การจัดการไฟล์
File Management
จัดทำโดย นาย สราวุฒิ เชื้อกสิกรรม รหัสนักศึกษา 6031280064

การจัดการไฟล์ File Management 
               หมายถึง การทำงานในระบบคอมพิวเตอร์ทั้งหมดจำเป็นต้องมีการเก็บและนำ ข้อมูลไปใช้งานขณะที่โปรเซสกำลังทำงานข้อมูลจะเก็บไว้ในหน่วยความจำ ถ้าเครื่องคอมพิวเตอร์ดับไม่ว่าด้วยสาเหตุใดก็ตามข้อมูลทั้งหมดจะสูญหายไป
        ดังนั้นจึงจำเป็นต้องจัดเก็บข้อมูลเหล่านี้ไว้ในหน่วยจัดเก็บข้อมูลสำรอง ซึ่งอาจจะเป็นแผ่นดิสก์เก็ต ฮาร์ดดิสก์ หรืออุปกรณ์อื่น ๆในการจัดเก็บข้อมูลเหล่านี้มีจุดประสงค์เพื่อนำมาใช้งานต่อไป จึงจำเป็นต้องมีการกำหนดชื่อเพื่อแทนกลุ่มข้อมูล นอกจากนี้ถ้าเราจัดเก็บข้อมูลไม่เป็นระเบียบจะทำให้การค้นหาไฟล์ข้อมูลที่ต้องการได้ยากหรือช้า ดังนั้นถ้าเราจัดหมวดหมู่ให้กับไฟล์ข้อมูลก็จะทำให้การค้นหาไฟล์ทำได้สะดวกหรือรวดเร็วขึ้นการจัดให้ไฟล์เป็นหมวดหมู่ก็คือการจัดเก็บในไดเร็กทอรี่ (Directory) หรือโฟลเดอร์ (Folder)
File 
กำหนดชื่อให้กับแฟ้มขอมูลใดใดเพื่อให้ผู้ใช้อ้างถึงแฟ้มขอมูลนั้นๆได้สะดวกผู้ใช้ ไม่จำเป็นต้องรู้ว่าข้อมูลถูกเก็บอย่างไรในอุปกรณ์ต่างๆ ชนิดกัน(ไม่จำเป็นต้องรู้Physical Address แค่สามารถระบุชื่อทางตรรกะของ แฟ้มขอมูล Logical File Name)  มFile Directory ใช้สำหรับแบ่งกลุ่มของข้อมูล

File Operation
การสร้างแฟ้มข้อมูล
 - หาที่ว่างในแฟ้มข้อมูล
 - ช่องวางของแฟ้มข้อมูลใหม่ต้องถูกสร้างใน Directory
การเขียนแฟ้มข้อมูล
 - ระบบจะค้นหา Directory เพื่อหาตำแหน่งของแฟ้มข้อมูล
 - ระบบจะเก็บ  Write pointer เพื่อระบุตำแหน่งถัดไปที่ต้องการจะเขียน
การอ่านแฟ้มขอมูล 
 - ระบบจะค้นหา Directory เพื่อหาตำแหน่งของแฟ้มข้อมูล
 - ระบบจะเก็บRead pointer เพื่อระบุตำแหน่งถัดไปที่ต้องการจะอ่าน
 - “ ตัวชี้ ตำแหน่งแฟ้มปัจจุบัน  (Current-file-position pointer) ” เป็น pointer ที่ใช้ได้ ทั้งอ่านและเขียน  
การย้ายตำแหน่งภายในแฟ้มข้อมูล 
 - ระบบจะค้นหาDirectory เพื่อหาตำแหน่งของแฟ้มขอมูล 
 - กำหนดค่าให้pointer ปัจจุบัน
การลบแฟ้มข้อมูล  
 - ระบบจะค้นหา Directory เพื่อหาตำแหน่งของแฟ้มข้อมูลที่จะลบ 
 - ปลดปล่อยที่ว่างทั้งหมดของแฟ้มนั้นและทาการลบข้อมลในแฟ้ม
 การตัดแฟ้มข้อมูลให้สั้นลง
 - ผู้ใช้ต้องการให้แฟ้มข้อมูลมีคุณสมบัติ เหมือนเดิม แต่ต้องการลดเนื้อหา ของแฟ้มขอมูลนั้นลง
วิธีการเข้าถึงแฟ้มข้อมูล(Access Methods)
1.       การเข้าถึงข้อมูลแบบเรียงลำดับ (Access Methods)
   - ตัวอ่านจะอ่านส่วนถัดไปของแฟ้ม แล้วเปลี่ยนค่า pointer โดยอัตโนมัติตามตำแหน่งของ I/O
2.       การเข้าถึงแฟ้มข้อมูลโดยตรง (Direct Access)
   - แฟ้มข้อมูลถูกสร้างขึ้นเป็น Logical record ที่มีความยาวคงที่
   - อนุญาตให้โปรแกรมอ่านหรือเขียนอย่างรวดเร็วดดยไม่มีลำดับเป็นพื้นฐานของ  Disk
3.       การเข้าถึงข้อมูลแบบอื่น (Other Access)
   - มีการสร้าง index ให้กับแฟ้มข้อมูล
   - จะใช้ index ในการค้นหาแฟ้มข้อมูลดดยตรง
   - ในกรณีที่แฟ้มข้อมูลมีขนาดใหญ่ จะมีการสร้าง
Index file
Primary index file
Secondary index file 
ไดเร็กทอรี (Directory)
ระบบปฎิบัติการทุกตัวจะต้องมีสารบัญที่รวบรสมรายชื่อของไฟล์ต่างๆทั่งหมดไว้ที่เดียวกัน เพื่อให้ผู้ใช้สามารถตรวจสอบดูไฟล์ต่างๆได้ สิ่งที่ทำหน้าที่จัดเก็บเรียกว่า “ไดเร็กทอรี” (Directory ในตำราบางเล่มใช้ชื่อว่า Folders) ตัวไดเร็กทอรีเองถือว่าเป็นไฟล์อีกประเภทหนึ่งเช่นเดียวกัน โครงสร้างในตัวมันเองจะประกอบไปด้วยหน่วยย่อยหลายๆหน่วย ในแต่ละหน่วยก็อาจจะมีโครงสร้างเดียวกับมันก็ได้ หรืออาจประกอบด้วยไฟล์เดี่ยวย่อยๆ อยู่ภายในก็ได้ คุณสามารถแบ่งไดเร็กทอรีออกเป็นลักษณะต่างๆดังต่อไปนี้

ระบบไดเร็กทอรี่ดี่ยว (Single-Level Directory Systems)
ระบบไดเร็กทอรี่เดี่ยวเป็นระบบที่มีโครงสร้างที่ง่ายที่สุด ภายในระบบจะมีอยู่เพียงไดเร็กทอรีเดียวและรวบรวมไฟล์ทุกไฟล์ว้ที่เดียวกัน โดยทุกไฟล์จะจัดเก็บอยู่ในระดับเดียวกัน เนื่องจากการจัดเก็บในลักษณะนี้ทำให้ไม่สะดวกสำหรับผู้ใช้หลายๆคนแต่ละคนมีหลายไฟล์ ไฟล์หลายชนิดต้องปะปนกันทำให้ไม่สะดวกในการค้นหา นอกจากนั้นในกรณีที่มีการสร้างไฟล์ให้มีชื่อเดียวกันกับที่มีอยู่ก่อนนั้นอาจทำให้ไฟล์เก่าถูกเขียนทับลงไปโดยตั้งใจ ทำให้ข้อมูลสูญหายได้ ปัญหาต่างๆ เหล่านี้สามารถแก้ไขได้โดยการใช้ไดเร็กทอรีที่กล่าวถึงต่อไป

ระบบไดเร็กทอรี 2 ระดับ (Two-Level Directory Systems) 
โครงสร้างระบบไดเร็กทอรีแบบนี้สามารถแก้ไขปัญหาของระบบไดเร็กทอรีแบบแรกได้แต่ไม่ได้เต็มร้อยเปอร์เซ็นต์ การจัดโครงสร้างไดเร็กทอรี 2 ระดับ จะกำหนดให้ผู้ใช้แต่ละคนสามารถสร้างไดเร็กย่อยของตนได้เรียกว่า “สับไดเร็กทอรี” ( Sub-directory) หรือไดเร็กทอรีย่อย ในแต่ละสับไดเร็กทอรี จะอยู่ภายใต้ไดเร็กทอรีรากเดียวกัน (root directory) ภายในสับไดเร็กทอรีผู้ใช้สามารถกำหนดชื่อไฟล์ได้ตามใจโดยไม่ต้องไปกังวลว่าจะไปซ้ำกับชื่อของใครเพราะแม้นว่าตั้งชื่อซ้ำกับชื่อไฟล์ในไดเร็กทอรีอื่นก็จะไม่เกิดปัญหาการเขียนทับที่ทำให้ข้อมูลสูญหาย อย่างไรก็ตามระบบไดเร็กทอรีแบบนี้ก็ยังคงมีปัญหาอย่างอื่นอีก คือ ในกรณีที่ผู้ใช้มีไฟล์หลายประเภทจะไม่สามารถแยกประเภทของไฟล์ต่างๆ ได้ตามต้องการ ยกตัวอย่างเช่น นักเรียนแต่ละคนมีวิชาเรียนหลายวิชา ไม่สามารถแยกรายวิชาเรียนต่างๆ ในการจัดเก็บลงในสับไดเร็กทอรีได้ ทำให้งานต่างๆถูกปะปนอยู่ในไดเร็กทอรีเดียวกัน

ระบบไดเร็กทอรีหลายระดับ (Hierarchical Directory System)
เพื่อแก้ปัญหาระบบไดเร็กทอรีทั้ง 2 ระบบดังกล่าวข้างต้นระบบปฏิบัติการจึงยอมให้มีการสร้างโครงสร้างไดเร็กแบบนี้ขึ้นมา ระบบโครงสร้างไดเร็กทอรีแบบนี้เรียกอย่างหนึ่งว่า “โครงสร้างต้นใจ” (Tree structure) ผู้ใช้สามารถสร้างไดเร็กทอรีขึ้นมาได้โดบไม่จำกัดอยู่ในไดเร็กทอรีเดียวกัน ระบบไฟล์ในปัจจุบันใช้โครงสร้างไดเร็กทอรีแบบนี้ เพราะสามารถแก้ปัญหาที่มีอยู่ได้ทั้งหมด


โครงสร้างไดเร็กทอรี (Implementing Dierctory)
หน้าที่ของไดเร็กทอรีนั้นใช้เป็นที่รวบรวมไฟล์จำนวนต่างๆเข้าไว้ด้วยกันดังนั้นก่อนที่คุณจะเปิดไฟล์ทำการใดๆจะต้องทราบว่าไฟล์ต่างๆเหล่านั้นเก็บอยู่ที่ใด หรือในไดเร็กทอรีใด ผู้ใช้จะต้องระบุพาธของไดเรกทอรีนั้นเสียก่อนการกำหนดพาธของไดเรกทอรีที่มีไฟล์นั้นบรรจุอยู่ เป็นการระบุล็อกต่างๆ ที่เก็บไว้ในไดเรกทอรีนั้นแต่ละไฟล์ที่เก็บในไดเรกทอรีสามารถเข้าถึงล็อกต่างๆของไฟล์โดยการอ้างชื่อไฟล์ ดังนั้นไฟล์หนึ่งๆจะมีชื่อเรียกได้เพียงชื่อเดียว หรือไม่ก็ใช้นามสกุลเป็นการแยกประเภทของไฟล์ ในการสร้างไฟล์จะจัดสรรเนื้อที่บนดิสก์ให้กบไฟล์นั้น ซึ่งไดเรกทอรีจำเป็นจะต้องรู้และสามารถตรวจสอบได้ว่าไฟล์ในไดเรกทอรีของตัวเองนั้นเก็บอยู่ที่ใด ดังนั้นไดเรกทอรีจำเป็นจะต้องมีตารางบันทึกไฟล์ต่างๆเอาไว้ภายในตารางไดเรกทอรีจะประกอบไปด้วยชื่อไฟล์ และคุณลักษณะไฟล์ (File attribute) ว่าเป็นไฟล์ประเภทใด เก็บอยู่ในบล็อกใด
สำหรับรูปแบบการเก็บชื่อไฟล์ และคุณลักษณะไฟล์ สามารถทำการเก็บได้ สองวิธี วิธีแรกให้เก็บขื่อไฟล์ และบอกคุณลักษณะไฟล์ไว้ด้วยกัน ภายในตารางแต่ละไฟล์ที่มีขนาดตามที่กำหนดไว้ขนาดหนึ่ง เช่นในระบบ MS-DOS ความยาวของชื่อจะกำหนดไว้ไม่เกิน 8 ตัวอักษรและตามด้วยส่วนขยายที่เรียกว่านามสกุลอีกไม่เกิน 3 ตัว ต่อจากชื่อไฟล์จะตามด้วยคุณลักษณะไฟล์จะบอกถึงบล๊อกต่างๆ ที่ใช้เก็ไฟล์มีจำนวนบล๊อกเท่าไร จะถูกระบุลงไปในตารางด้วยกัน จากรูปจะพบว่าไฟล์ยิ่งมีขนาดใหญ่ จำนวนชองบล๊อกที่ใช้ยิ่งเพิ่มขึ้นตามขนาดของไฟล์ จึงเกิดปัญหาว่าจะกำหนดขนาดของตารางนี้อย่างไร ปัญหาจากการเก็บชื่อไฟล์ และคุณลักษณะไฟล เข้าไว้ด้วยกันจึงแก้ไขได้ด้วยวิธีที่ 2
วิธีที่สอง ใช้วิธีเก็บข้อมูลชื่อไฟล์และพอยเตอร์ของไฟล์ไปยังบล๊อกต่างๆไว้ด้วยกัน วิธีนี้ทำให้ขนาดของข้อมูลในตาราง File attribute มีขนาดคงที่ พอยเตอร์ในตารางจะชี้ไปยังเนื้อหาอีกส่วนหนึ่งที่ใช้เก็บบล๊อกต่างๆ ของไฟล์เอาไว้ เรียกเนื้อที่บริเวณนี้ว่า “ฮีพ” (heap) ด้วยวิธีการนี้ ขนาดของไฟล์ สามารถใหญ่ดท่าใดก็ได้ ซึ่งจะไม่มีผลต่อการจัดเก็บในตาราง เนื้อที่บริเวณฮีพเป็นการจองเนื้อที่แบบไดนามิกเนื้อที่บริเวณนี้จะมีการจองและคืนเนื้อที่อยู่ตลอดเวลา
จากโครงสร้างไดเร็กทอรีที่อธิบายไปจะพบว่ากรณีที่ขนาดของไดเร็กทอรีมีขนาดใหญ่การค้นหาไฟล์ตามลำดับ จะทำให้หาตำแหน่งของบล๊อกต่างๆ ก็ยื่งใช้เวลามากขึ้น ดังนั้นคุณสามารถใช้ตาราง hash table เข้ามาประกอบกับการใช้หน่วยความจำแคช ทำให้การอ่านไฟล์ได้รวดเร็วยื่งขึ้น

การทำงานของระบบไฟล์ (File system implementation)
มุมมองในระบบไฟล์คุณสามารถมองได้เป็น 2 มุมมองด้วยกันคือ ในมุมมองแรกเป้นมุมมองของผู้ใช้ ในมุมมองนี้ผู้ใช้รู้แต่เพียงว่าจะตั้งชื่อไฟล์อย่างไร มีข้อกำหนดอย่างไรบ้างในการตั้งชื่อ ซึ่งผู้ใช้จะต้องรู้ว่าแต่ละระบบปฏิบัติการมีข้อกำหนดในการตั้งชื่อไฟล์ที่เหมือนกัน ผู้ใช้จะต้องรู้คำสั่งต่างๆ (Operations)ของไฟล์ว่ามีคำสั่งอะไรบ้าง โครงสร้างของไดเร็กทอรีของแต่ละระบบไฟลืเป็นอย่างไร ผู้ใช้รู้เพียงเท่านี้ก็เพียงพอกัยการทำงานในระบบไฟล์แล้วสำหรับในมุมมองแรก
ในอีกมุมมองหนึ่งเป็นของผู้สร้างระบบไฟล์ที่จะต้องรู้และเข้าใจว่าไฟล์และไดเร็กทอรีต่างๆ ที่สร้างขึ้นมาถูกจัดเก็บลงบนดิสก์อย่างไร จะมีวิธีจัดสรรเนื้อที่ดิสก์อย่งไร ให้สามารถจัดเก็บข้อมูลได้มากที่สุดและคงประสิทธิภาพสูงสุด รวมไปถึงการสร้างความเชื่อมันให้กับผู้ใช้ ว่าข้อมูลที่มีการบันทึกใส่ลงบนดิสก์แล้วจะไม่สูญหายไปไหน ซึ่งสิ่งต่างๆ เหล่านี้ในมุมมองของผู้สร้างจะต้องวิเคราะห์เพื่อจะหาจุดที่เหมาะสมในหารสร้างระบบแต่ละระบบที่มีตัวแปรต่างๆ ซึ่งไม่เหมือนกัน
โครงสร้างของระบบไฟล์(File system layout)
ระบบไฟล์ทุกๆ ระบบจำเป็นต้องมีการจัดเก็บข้อมูลลงบนสื่อต่างๆ ที่ใช้เก็บข้อมูล ในปัจจุบันสื่อเหล่านี้มีหลายชนิดได้แก่ แผ่นดิสก์ เทป ซีดีรอม เป็นต้น แต่สื่อที่เป็นที่นิยมแพร่หลาย และมีราคาถูก ได้แก่ ดิสก์ โครงสร้างของระบบดิสก์สนับสนุนการแอ็กเซสข้อมูลแบบสุ่ม (Random access) โคงสร้างดิสก์สามรถแบ่งพาร์ติชันในการเก็บข้อมูลได้ แต่ละพาร์ติชันมีความเป็นอิสระต่อกัน อีกทั้งยังสามารถกำหนดให้แต่ละพาร์ติชันมีระบบปฏิบัติการที่ต่างกันได้อีกด้วย
ภายในดิสก์จะถูกแบ่งออกเป็ฯเซ็กเตอร์(Sector)เริ่มต้นจากเซ็กเตอร์ 0 ซึ่งถือว่าเป็น Master Boot Record (MBR) เซ็กเตอร์วึ่งเป็นเซ็กเตอร์ที่ใช้เบค่าเริ่มต้นของระบบปฎิบัติการสำหรับการบูตเครื่องคอมพิวเตอร์เมื่อเริ่มต้นใช้งาน ในต้อนท้ายของเซ็กเตอร์นี้ยังประกอบด้วบตารางพาร์ติชัน (Partition table) ซึ่งจะเก็บแอ็ดเดรสเริ่มต้น และแอ็กเดรสสุดท้ายของแต่ละพารืติชันเอาไว้ ในแต่ละพาร์ติชันจะประกอบไปด้วย Boot block โปรแกรมใน Boot block จะทำหน้าที่ในหารดาวโหลดระบบปฏิบิตการในพาร์ติชันออกมาทำงาน ทุกๆ การ์ติชันจะมี Boot block เป็ฯของตัวเอง แต่ว่าในพาร์ติชันอาจจะไม่มีระบบปฏิบิตการก็ได้ โครงสร้างภายในแต่ละพาร์ติชันจะแตกต่างกันขึ้นอยู่กับระบบปฏิบิตการที่ใช้อยู่ซึ่งจะกำหนดโครงสร้างของไฟล์ในดิสก์ในขณะที่ทารฟอร์แมตดิสก์
วิธีจัดเก็บข้อมูลไฟล์ (Implementation file) 
สิ่งสำคัญสำหรับการจัดเก็บไฟล์ข้อมูลลงบนสื่อเก็บข้อมูลคือ จะต้องทราบว่าแต่ละไฟล์มีการเก็บอย่างไรเก็บไว้ที่ไหน และสามารถเรียกออกมาใช้งานได้อย่างไร ไฟล์ต่างๆ เหล่านั้นมีการจัดเก็บทั้งไฟล์ หรือ แต่ละไฟล์ถูกแยกเก็บเป็ยบล็อก และบล็อกต่างๆ เหล่านั้นจัดเรียงกันอย่างไร ซึ่งวิธีการเหล่านี้จะได้ศึกษารายละเอียดกันดังต่อไปนี้
การจัดเก็บข้อมูลแบบต่อเนื่อง (Contiguous allocation)
เป็นวิธีการจัดเก็ยข้อมูลของไฟล์แบบง่ายที่สุด แต่ละๆฟล์จะถูกบ่างออกเป็นบล็อก แต่ละบล็อกมีขนาดเท่าๆ กัน เพื่อง่ายในการบริหารและการเก็บข้อมุล วิธีการนี้ไหล์ข้อมูลแบ่งออกเป็นบล็อกออกเป้นบล็อกจะถูกเก็บลงบนดิสก์อย่างต่อเนื่องทั้งไฟล์ ตัวอย่างเช่น ถ้ากำหนดขนาดของบล็อกบนดิสก์ไว้เท่าๆ กัน เท่ากับ 1 กิโลไบต์ (1 KB) ในขณะที่ไฟล์ข้อมูล A มีขนาดเท่ากับ 50 กิโลไบต์ ดังนั้นสำหรับไฟล์ข้อมูล A จะต้องใช้จำนวนบล็อกเท่ากับ 50/1 เท่ากับ 50 บล็อก ในหารเบไฟล์ข้อมุล A ด้วยวิธีการเก็บข้อมูลแบบต่อเนื่อง ถ้าเริ่มจากบล็อกที่ 1 เป็นบล็อกแรกบล็อกสุดท้ายจะเป็นบล็อที่ 50 ซึ่งเรยงติดต่อกัน
อีกตัวอย่งหนึ่งถ้าคุณมีจำนวนไฟล์ข้อมูลหลายๆ ไฟล์เพื่อนำมาเก็บแบบต่อเนื่อง สมมุติถ้าคุณมีเนื้อที่ดิสก์ขนาด 1 MB เนื้อที่ดิสก์ขนาดนี้สามารถสร้างจำนวนบล็อกได้เท่ากับ 1024 บล็อก ถ้าไฟล์ข้อมูล A มีขนาด 4.5 KB และเริ่มเก็บบล็อกแรกที่บล็อก 1 บล็อกสุดท้ายจะเป็นบล็อก 5 ถ้าไฟล์ข้อมูล B มีขนาด 22.01 KB และเริ่มเก็บบล็อกแรกที่บล็อก 6 บล็อกสุดท้ายจะเป็นบล็อกที่ 28 ถ้าไฟล์ข้อมูล C มีขนาด 2.91 KB และเริ่มเก็บบล็อกแรกที่บล็อก 29 บล็อกสุดท้ายจะเป็ฯบล็อกที่ 31 เป็นต้น
สำหรับข้อดีในการเก็บข้อมูลแบบต่อเนื่องที่สำคัญมีอยู่ 2 ประการ ตือ ประการแรกเป็นการจัดเก็บข้อมูลแบบที่ง่ายที่สุด และสระดวกที่สุดเนื่องจากการจัดเก็บข้อมูลแบบนี้ไม่จำเป็ฯต้องบันทึกทุกๆ บล็อกจัดเก็บลงบนดิสก์ด้วยวิธีดังนี้ ระบบสามารถบันทึกการเก็บข้อมูลด้วยการบันทึกบล็อกแรก และบล็อกสุดท้ายก็เพียงพอแล้ว แต่ละบล็อกที่อยู่ภายในสามารถติดต่อกันด้วยตำแหน่งที่จัดเรียงกันอยู่ภายนอยู่แล้ว
ประการที่ 2 สำหรับวิธีจัดเก็บข้อมูลแบบต่อเนื่อง สามารถสร้างประสิทธิภาพได้สูงสุดในการค้นหาข้อมูล เนื่องจากการจัดเก็บบล็อกข้อมูลเรียงต่อเนื่องจึงไม่เสียเวลาในการค้นหาบล็อกทุกๆ บล็อกเพียงแต่หาบล็อกแรกพบก็สามารถอ่านข้อมูลได้ทั้งไฟล์แล้ว
สำหรับข้อเสียของการเก็บข้อมูลแบบต่อเนื่องก็มีความสำคัญเช่นเดียวกันเพราะวธีการเก็บข้อมูลวิธีนี้จำเป็นต้องอาศัยการเก็บข้อมูลที่ต่อเนื่องเมือจำนวนำฟล์ข้อมูลเพิ่มจำนวนมากขึ้น ประกอบกับขนาดของข้อมูลเมื่อมีการแก้ไขขนาดใหญ่ขึ้น ทำให้ไม่สามารถหาเนื้อที่ในการบรรจุไฟล์ข้อมูลดังกล่าวได้

การจัดเก็บข้อมูลแบบลิงค์ลิสต์(Link List Allocation)
การจัดเก็บข้อมูลแบบลิงค์ลิสต์ เป็ฯอีกวิธีหนึ่งที่นิยมใช้กัน วิธีการนี้มีการแบ่งไฟล์ออกเป็นบล็อกๆ เช่นเดียวกัน แต่จะจัดเก็บเนื้อที่ของแต่ละบล็อกจะไม่ต่อเนื่องเหมือนวิธีการจัดเรียงกันอย่างต่อเนื่องแต่ละบล็อกจะถูกเชื่อมโยงกันด้วยพอยเตอร์ ตั้งแต่บล็อกจะไม่ตอ่เนือ่งเหมือนวิธีการจัดเรยงกันอย่างต่อเนื่อง แต่ละบล็อกจะถูกเชื่อมโยงกันด้วยพอยเตอร์ ตั้งแต่บล็อกแรกจนกระทั้งบล็อกสุดท้ายของไฟล์ข้อมูลนั้นๆ ด้วยวิธีการจัดเก็บข้อมูลแบบนี้ทำให้ไม่เสียเนิ้อที่ว่างถายในดิสก์ ยกเว้นแต่จะมีเนื้อที่ว่างในแต่ละบล็อก ซึ้งจะมีมากน้อยเพียงไดก็ขึ้นอยู่กับการหาขนาดที่เหมาะสมของบล็อกข้อมูล และจะเกิดกับบล็อกสุดท้ายของแต่ละไฟล์ข้อมูลเท่านั้น วิธีการจัดเก็บข้อมูลแบบลิงค์ลิสต์นี้มี่ข้อเสียที่สำคัญอีกเช่นกันตรงที่จะเสียเวลากับการค้นหาแต่ละบล็อกข้อมูล เนื่องจากแต่ละบล็อกอยู่กระจัดกระจายทั่วไปนบดิสก์ วิธีการเก็บข้อมูลแบบนี้ยังเสียเนื้อที่ไปกับพยเตอร์ที่ทำหน้าที่ชี้ไปยังบล็อกต่างๆ อีกด้วย นอกจากนั้นในขณะที่ระบบทำการอ่านข้อมุลระบบจะต้องทำการก็อปปี้ตารางบันทึกการจัดเก็บไฟล์ที่เรียกว่า FAT (File Allocation Table) ลงบนหน่วยความจำก่อนที่จะทำการอ่านข้อมูลจากดิสก์ สมมติขนาดของฮาร์ดดิสก์เท่ากับ 20 GB ในขณะที่ขนาดของบล๊อกเท่ากับ 1 KB ดังนั้นฮาร์ดดิสก์ตัวนี้สามารถเก็บข้อมูลจำนวนบล๊อกได้เท่ากับ 20 ล้านบล๊อก จำนวนบล๊อกขนาดนี้ จำเป็นต้องใช้เนื้อที่ 3 ไบต์ในลิงค์ลิสต์ เพื่อการเก็บบล็อกต่างๆเอาไว้ (3 ไบต์ = 2 สามารถแสดงความแตกต่างได้ ประมาณ 20 ล้านตัวอย่าง) ขนาดของตาราง FAT จะใหญ่ถึง 60 MB ซึ่งนับว่ามีขนาดใหญ่มากทีเดียว แต่โดยทั่วไปแล้วการจองเนื้อที่เพื่อเก็บขนาดของลิงค์ลิสต์ มักจะจองขนาดเป็นเลขฐานสองยกกำลัง เช่น 2,4,8,…เป็นต้น ดังนั้น จำนวนบล็อกขนาด 20 ล้านบล็อก จะใช้ขนาดเป็นเลขฐานสอง ยกกำลัง 2 ซึ่งเท่ากับ 4 ไบต์ 

การใช้ไฟล์ร่วมกัน (Shared file) 
ไฟล์บางไฟล์ในระบบอาจถูกใช้โดยผู้ใช้หลายๆคน ดังนั้นจะต้องทำการก๊อปปี้ไฟล์ต่างๆ เหล่านี้ไว้กับทุกๆคน วิธีการนี้ดูแลแล้วไม่สะดวกและทำให้เปลืองเนื้อที่การจัดเก็บเป็นอย่างมาก ถ้าผู้ใช้คนใดคนหนึ่งจ้องการแก้ไข้ไฟล์นี้ ก็จะต้องไปบอกกับทุกๆคนให้ทำการแก้ไขตามไปด้วยหรือไม่ก็ก๊อปปี้ไฟล์นี้ไปใหม่ ซึ่งนอกจากจุยุ่งยากแล้วยังเสียเวลาอีกด้วย เกิดความลำบากในการทำงาน ถ้าไม่ประสานงานกันให้ดีจะทำให้เกิดข้อผิดพลาดและเกิดความเสียหายได้วิธีแก้ปัญหาที่ตรงนี้คือถ้าคุณมีไฟล์ที่ใช้งานร่วมกัน และมีแยกอัพไฟล์นั้นๆ อยู่เพียงแห่งเดียวแต่ชื่อไฟล์สามารถปรากฎอยู่ในไดเร็กทอรีของทุกคนที่ต้องการใช้ไฟล์ร่วมกันจะสะดวกและประหยัดกว่าไฟล์เหล่านี้ ไฟล์ที่นำมาใช้งานลักษณะนี้เรียกว่า “ไฟล์ร่วม” (Shared filed) ดังตัวอย่างการใช้งาน
ไฟล์ในไดเร็กทอรี A และ ในไดเร็กทอรี B จะถูกใช้งานร่วมกันด้วยการเชื่อมต่อระหว่างไดเร็กทอรี A และไฟล์ในไดเร็กทอรี B เรียกการลิงค์ทำให้โครงสร้างของระบบไดเร็กทอรีเปลี่ยนไปไม่เป็นเป็นแบบต้นไม้อีกแล้ว แต่จะเปลี่ยนเป็นโครงสร้างที่เรียกว่า direct acyclic graph วิธีการลิงค์ขึ้นอยู่กับโครงสร้างไดเร็กทอรีของระบบไฟล์  จะพบว่าค่า Count ในไอโหนดจะเพิ่มขึ้นตามจำนวนลืงค์ที่เชื่อมมายังไฟล์นั้น

การจัดการเนื้อที่ว่างภายในดิสก์ ( Disk Space Management )
การจัดการเนื้อที่ว่างภายในดิสก์เป็นสิ่งสำคัญสำหรับการออกแบบระบบการเก็บ ข้อมูล คุณสามารถจัดเก็บข้อมูลที่อยู่ในรูปไฟล์ ได้ 2 วิธีด้วยกันคือ เก็บไฟล์ทั้งหมดไว้ในเนื้อที่เดียวกัน กับวิธีที่สองคือแบ่งออกเป็นบล็อกๆ ละเท่าๆ กันแล้วเก็บกระจายทั่วไปในดิสก์ กรณีที่เก็บทั้งไฟล์ไว้ด้วยกันมักเกิดปัญหาการขยายเนื้อที่เมื่อไฟล์มีขนาด ใหญ่ขึ้นไม่สามารถเก็บไว้ตำแหน่งเดิมไว้ ไฟล์ที่อยู่ข้างเคียงไม่สามารถเคลื่อนย้ายได้ ดังนั้นการแบ่งไฟล์ออกเป็นบล็อกย่อมจะสะดวกกว่าสำหรับการขยายเมื่อไฟล์ใหญ่ ขึ้น
ขนาดของบล็อกจึงเป็นสิ่งจำเป็นในการเพิ่มประสิทธิภาพของคอมพิวเตอร์ และทำให้การใช้เนื้อที่ในดิสก์ เกิดความคุ้มค่าที่สุด ขนาดของบล็อกที่ใหญ่เกินไปในขณะที่ไฟล์ข้อมูลมีเพียงไม่กี่ไบต์จะทำให้สิ้น เปลืองเนื้อที่มากเพราะในการเก็บข้อมูลแต่ละครั้งจะต้องใช้เนื้อที่ทั้ง บล็อก สมมติว่าบล็อกมีขนาด 1 กิโลไบต์ ในขนาดที่ไฟล์ข้อมูลมีเพียง 100 ไบต์ กรณีนี้จะเสียเนื้อที่ว่างภายในดิสก์ไปกว่า 90 เปอร์เซ็นต์
ในทำนองกลับกัน ถ้าบล็อกมีขนาด 1 กิโลไบต์ แต่ในขนาดที่ไฟล์ข้อมูลมีถึง 50 กิโลไบต์ จำทำให้ใช้เนื้อที่ ในการเก็บข้อมูลถึงไฟล์ละ 50 บล็อก แต่ละบล็อกไม่ได้จัดเรียงในที่เดียวกันจึงทำให้เสียเวลาในการหา (seek time) ของข้อมูลในแต่ละบล็อกเป็นอย่างมาก
จะพบว่าการกำหนดขนาดของบล็อกที่เหมาะสมจะเพิ่มประสิทธิภาพของคอมพิวเตอร์ และทำให้การใช้เนื้อที่ในดิสก์เกิดความคุ้มค่า อย่างยิ่ง จากการสำรวจขนาดของไฟล์พบว่าจำนวนครึ่งหนึ่งของไฟล์ข้อมูลมีขนาดมากว่า 1680 ไบต์ 

การเก็บรวบรวมเนื้อที่ว่างภายในดิสก์
หลังจากที่คุณกำหนดของบล็อกได้แล้ว สิ่งสำคัยอีกประการหนึ่งคือการจัดเตรียมบล็อกที่ว่างภายในดิสก์ไว้สำหรับ เก็บไฟล์ข้อมูลที่ต้องการ วิธีใช้ในการรวบรวมบล็อกว่างภายในดิสก์คือการใช้ลิงค์ลิสต์ ( link list ) เนื้อที่ว่างดังกล่าวจะถูกรวบรวมเป็นสายเพื่อจัดเตรียมให้ระบบปฏิบัติการนำ ไปจัดสรรให้ไฟล์ต่างๆ นำไปใช้เก็บข้อมูล สมมติคุณแบ่งขนาดของบล็อกไว้เป็นขนาดเท่า ๆ กันบล็อกละ 1 KB และกำหนดขนาดของหมายเลขประจำบล็อกไว้เท่ากับ 2 ไบต์ ทำให้ในเนื้อที่ แต่ละบล็อกใช้เก็บหมายเลขบล็อกได้ 1024/2 เท่ากับ 512 บล็อกในจำนวนนี้กรณีที่มีจำนวนบล็อกมากกว่า 512 บล็อกจะต้องใช้บล็อกเก็บหมายเลขมีมากกว่า 1 บล็อก ดังนั้นแต่ละบล็อกที่ใช้เก็บหมายเลขเพียง 511 หมายเลข ส่วนในหมายเลขสุดท้ายจะใช้เก็บบล็อกหมายเลขถัดไป




อ้างอิง
http://www.ict.up.ac.th/worrakits/OS.files/PDF/%E0%B8%9A%E0%B8%97%E0%B8%97%E0%B8%B5%E0%B9%88%208%20File%20Management%202_52.pdf

https://prezi.com/jbl75liy5up9/file-management/

http://csnon04.blogspot.com/2008/03/6.html

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

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