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

จัดทำโดย นาย พัทธนันท์ อุรัตน์ รหัสนักศึกษา 6031280059






การจัดการไฟล์ 
(File Management)



การทำงานในระบบคอมพิวเตอร์ทั้งหมดจำเป็นต้องมีการเก็บและนำ ข้อมูลไปใช้งาน

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

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







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

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

•การจัดให้ไฟล์เป็นหมวดหมู่ก็คือการจัดเก็บในไดเร็กทอรี่ (Directory) หรือโฟลเดอร์ (Folder)






แอปพลิเคชันของคอมพิวเตอร์ทั้งหมดจำเป็นต้องมีการเก็บและนำข้อมูลไปใช้งาน ในขณะโปรเซส ข้อมูลจะเก็บอยู่ในพื้นที่จำกัดในแอ็ดเดรส เฉพาะของหน่วยความจำเพื่อการใช้งานที่รวดเร็ว ข้อจำกัดอีกประการหนึ่งคือหน่วยความจำที่เก็บข้อมูลเหล่านี้จำเป็นต้องมีไฟหล่อเลี้ยง นั่นหมายความว่า ถ้าคุณดับเครื่องข้อมูลเหล่านี้จะสูญหายไป ดังนั้นในการเก็บข้อมูลเหล่านี้ จำเป็นต้องมีสื่อที่ใช้ในการจัดเก็บข้อมูล ซึ่งอาจจะเป็นแผ่นดิสเก็ต ฮาร์ดดิสก์ หรืออื่นๆก็ตาม (ระบบปฏิบัติการจะจัดการกับสื่อเก็บข้อมูลอย่างไรนั้น คุณสามารถศึกษาได้จากบทที่ 8 ) ในการจัดเก็บข้อมูลเหล่านี้ลงในสื่อที่กล่าวถึง เพื่อนำไปใช้งานต่อไปนั้นจำเป็นต้องกำหนดชื่อเพื่อแทนกลุ่มข้อมูลที่คุณจัดเก็บ ชื่อที่ว่านี้ก็คือชื่อไฟล์นั่นเอง นอกจากนี้ถ้าคุณจัดเก็บข้อมูลไม่เป็นระเบียบก็จะทำให้การใช้งานทำได้ดีขึ้น การจัดไฟล์เป็นหมวดหมู่ก็คือการจัดเก็บในไดเร็กทอรี ซึ่งทั้งไฟล์และไดเร็กทอรี่ นี่เองที่จะกล่าวถึงในบทนี้ นอกจากนี้ผู้เขียนยังแนะนำระบบไฟล์ที่ใช้งานกันมากๆ ทั้ง Windows 98 และ UNIX อีกด้วย

6.1 ไฟล์ข้อมูล ไฟล์ข้อมูล(file) หมายถึงสื่งที่บรรจุข้อมูลต่างๆไว้ด้วยกัน อาจหมายถึงโปรแกรมหรืออะไรก็ตามที่คุณต้องการที่จะเก็บไว้ด้วยกัน ในการอ้างถึงไฟล์ข้อมูลต่างๆ ภายในโปรแกรม คุณไม่ต้องอ้างถึงแอ็ดเดรสของไฟล์นั้นๆโดยตรง ปล่อยให้เป็นหน้าที่ของระบบปฏิบัติการเป็นตัวการ ในระบบปฏิบัติการจะมีโอเปอร์เรชันที่เรียกว่า System call เป็นตัวจัดการที่เกี่ยวข้องไฟล์ เช่นการสร้างไฟล์ การลบไฟล์ การอ่าน/การเขียนไฟล์ เป็นต้น โดยที่ System call สามารถที่จะจัดการกับงานที่เกี่ยวข้องกับไฟล์ลงไปถึงแอ็ดเดรสของไฟล์นั้นๆ

6.1.1 การตั้งชื่อไฟล์ จุดประสงค์ในการออกแบบระบบปฏิบัติการอย่างหนึ่งคือต้องการที่จะให้เป็นผู้ใช้เป็นอิสระจากอุปกรณ์ใดๆ (device independent) ดังนั้นในการแอ็กเซสไฟล์ข้อมูลไชใดๆ จะต้องมีรูปแบบเดียวกัน นอกจากนั้นวิธีการในการแอ็กเซสไฟล์ข้อมูลใดๆ คุณไม่จำเป็นต้องกำหนดรายละเอียดให้ยุ่งยากวุ่นวายถึงแอ็ดเดรส เพียงแค่คุณระบุชื่อและนามสกุลของไฟล์ให้ถูกต้องก็เพียงพอแล้ว
ในการกำหนดชื่อไฟล์ ในแต่ละระบบปฏิบัติการนั้นมีความแตกต่างกันอยู่บ้าง แต่ส่วนใหญ่แล้วจะมีข้อกำหนดที่ใกล้เคียงกัน ระบบปฏิบัติการบางตัวกำหนดให้การตั้งชื่อโดยขึ้นต้นด้วยอักษร และตามด้วยตัวเลข หรือตัวอักษรไม่เกิน 8 ตัว ระบบปฏิบัติการบางตัวกำหนดให้ตั้งชื่อได้โดยอิสระไม่เกิน 255 ตัว
ในระบบปฏิบัติการบางระบบกำหนดการตั้งชื่อด้วยตัวอักษรตัวใหญ่ตัวเล็กไม่เหมือนกัน เช่นใน UNIX การตั้งชื่อถ้าเป็นตัวใหญ่ จะต้องอ้างถึงด้วยตัวใหญ่เช่นกัน ถ้าอ้างอิงด้วยตัวเล็กจะถือว่าเป็นคนละชื่อกัน ตัวอย่างเช่น Name, NAME, name, กรณี UNIX จะถือว่าไฟล์อยู่ 3 ไฟล์ที่แตกต่างกัน เป็นต้น แต่สำหรับ MS-DOS จะถือว่าเป็นชื่อเดียวกันใน Windows 95, Windows 2000 และ Windows NT ฏ้ยังคงใช้ระบบไฟล์แบบเดียวกับ MS-DOS
ในระบบปฎิบัติการส่วนใหญ่แล้วชื่อไฟล์จะประกอบด้วยสองส่วนด้วยกันคือส่วนที่เป็นชื่อหลัก ละส่วนขยาย ( file extension) ทั้งสองส่วนนี้จะถูกขั้นด้วยจุด (period) ในระบบ MS-DOS ส่วนที่เป็นชื่อหลักจะประกอบด้วยตัวอักษร 1 ถึง 8 ตัวด้วยกันแล้วตามด้วยส่วนขยายอีกไม่เกิน 3 ตัว เป็นต้น แต่สำหรับในระบบของ UNIX อาจมีส่วนขยายได้มากกว่า 1 ส่วนก็ได้ เช่น prog.c.z

6.1.2 โครงสร้างไฟล์ การจัดโครงสร้างไฟล์ที่ใช้กันโดยทั่วไปมี 3 วิธีดังรูป 6.1 วิธีการแรก (รูป 6.1 ก) มีการเก็บเป็นไบต์เรียงติดกันต่อไป ดังเช่นระบบปฎิบัติการของ UNIX และ Windows การเก็บไฟล์ในลักษณะนี้เป็นแบบที่ไม่มีโครงสร้างในการจัดเก็บ ไฟล์ที่ถูกสร้างใหม่จะถูกนำมาเรียนต่อกันไปเรื่อยๆจนเต็มเนื้อที่ โดยที่ตัวระบบปฎิบัติการเองแทบจะไม่ได้ทำหน้าที่อะไรเลย วิธีที่สอง (รูป 6.1 ข) เก็บเป็นเรกคอร์ด โดยทีขนาดของเรกดอร์ดคงที่ ในแต่ละไฟล์จะถูกเก็บอยู่ในรูปของเรกคอร์ดจัดเรียงกันไปตามลำดับจนถึงเรกคอร์ดสุดท้าย ซึ่งในเรกคอร์ดสุดท้ายอาจจะไม่เต็มเรกคอร์ดก็ได้ ในการอ่านเขียนจะทำไปที่ละเรกคอร์ด ในระบบปฎิบัติการบางระบบอาจกำหนดให้แต่ละเรกคอร์ดมีขนาดเท่ากับ 80 ตัวอักษร ซึ่งเท่ากับ 1 บรรทัดพอดี วิธีนี้ใช้ในระบบปฎิบัติการ CP/M ส่วนวิธีที่สาม (รูป 6.1 ค) เก็บเป็นแบบต้นไม้หรือทรี (tree) ของบล็อก แต้บล็อกจะประกอบไปด้วยเรกคอร์ด โดยมีขนาดของเรกคอร์ดขึ้นอยู่กับปัจจัยหลายประการ เช่น ขนาดไฟล์ข้อมูล เวลาที่ใช้ในการแอ็กเซสข้อมูล (Access time) เป็นต้น วิธีนี้ใช้ในระบบปฎิบัติการหลายเครื่องด้วยกัน


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

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

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


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


6.2.4 ชื่อพาธ (Path name) ในการอ้างถึงไฟล์ใดๆ ก็ตามจำเป็นต้องระบุที่อยู่ของไฟล์นั้นๆ ให้ถูกต้อง ว่าอยู่ในไดเร็กทอรี หรือสับไดเร็กทอรีใด ในการกำหนดที่อยู่หรือเส้นทางที่จะเข้าถึงไฟล์นั้นๆ คุณเรียนว่า “พาธ” (path) เพื่อให้ระบบได้รู้ว่าคุณต้องการอ้างถึงไฟล์ใดในดิสก์จำเป็นอย่างยิ่งที่คุณจะต้องบอกพาธให้ถูกต้อง เพราะถ้าคุณกำหนดแค่ชื่อไฟล์ที่ต้องการอย่างเดียวนั้นคงไม่เพียงพอที่จะเข้าไปถึงไฟล์นั้นได้ จงอย่าลืมว่าคุณสามารถสร้างชื่อไฟล์ซ้ำกันได้ในกรณีที่ไฟล์เหล่านั้นอยู่ต่างไดเร็กทอรีกัน การบอกพาธจะทำให้ระบบทราบว่าคุณกำลังอ้างถึงไฟล์ใดและอยู่ที่ไหนในระบบวิธีอ้างถึงชื่อไฟล์นั้นมีอยู่ 2 วิธี วิธีแรก เป็นการอ้างชื่อไฟล์แบบสัมบูรณ์ (absolute path name) และการอ้างชื่อแบบสัมพัทธ์ ( relative path name )
การอ้างชื่อไฟล์แบบสัมบูรณ์ เป็นการอ้างชื่อไฟล์โดยเริ่มต้นจากราก ( root ) เสมอตามด้วยชื่อสับไดเร็กทอรีย่อยต่างๆไล่ลงมาตามลำดับชั้นของไดเร็กทอรีที่สร้างขึ้นจนกระทั่งถึงไดเร็กทอรีที่ไฟล์บรรจุอยู่ และจบลวด้วยชื่อไฟล์นั้น ยกตัวอย่าง คุณมีระบบไดเร็กทอรี ดังรูป 6.2 ถ้าต้องการอ้างถึงไฟล์ชื่อ dict.doc คุณสามารถอ้างถึงได้โดย
ในระบบปฏิบัติการ Windows(MS DOS) \user\lib\dict.doc
ในระบบปฏิบัติการ UNIX /user/lib/dict.doc
ในระบบปฏิบัติการ MULTICS lib>dict.doc

จะเห็นได้ว่าในแต่ละระบบปฏิบัติการนั้นมีวิธีในการอ้างถึงไฟล์ต่างๆ ในดิสก์ที่คล้ายกัน ดังนั้นถ้าคุณมีความเข้าใจในระบบปฎิบัติการอย่างใดอย่างหนึ่งอย่างท่องแท้แล้ว คุณสามารถเรียนรู้และทำความเข้าใจในระบบปฎิบัติการอื่นๆได้โดยไม่ยาก
ส่วนการอ้างถึงไฟล์แบบสัมพันธ์นั้นจะต้องทำความเข้าใจเกี่ยวกับระบบไดเรคทอรีปัจจุบัน (currint directory) ให้เข้าใจเสียก่อน ผู้ใช้สามารถอ้างถึงไฟล์ใดๆจากไดเรกทอรีปัจจุบันได้โดยตรงและยังสามารถย้ายการทำงานจากไดเร็กทอรีปัจจุบันไปยังไดเร็กทอรีใดๆของดิสก์ได้ วิธีการอ้างชื่อพาธแบบสัมพันธ์จะเริ่มต้นจากไดเร็กทอรีปัจจุบันไล่ไปตามลำดับของไดร็กทอรีที่ไฟล์นั้นอยู่และจบลงด้วยชื่อไฟล์นั้นๆ สมมุติว่าไดเร้กทอรีปัจจุบันคือ usr (ตามรูป 6.2) ถ้าต้องการอ้างถึงไฟล์ dict.doc จะต้องอ้างด้วย lib\dict.doc โดยตรงได้เลย
ในกรณีที่ไฟล์ที่คุณต้องการอ้างถึงไฟล์ที่อยู่คนละแขนงของทรีจำเป็นตองใช้สัญลักษณ์.. เข้ามาช่วย เช่นถ้าต้องการอ้างถึงไฟล์ math.h ในขณะที่ไดเรกทอรีปัจจุบันอยู่ที่ไดเร็กทอรี lib คุณสามารถอ้างได้ด้วย ..\..\bin\math.h สัญลักษณ์ .. ในกรณีนี้หมายถึงไดเร็กทอรีที่อยู่เนือขึ้นไปหนึ่งระดับ นอกจากนี้ยังมีสัญลักษณ์อีกอย่างหนึ่งคือ . จะหมายถึงไดเรกทอรีปัจจุบัน ตัวอย่างการใช้ได้แก่กรณีที่คุณต้องการก็อปปี้ไฟล์ math.h มาเก็บไว้ในไดเร็กทอรี lid ชื่อเป็นไดเร็กทอรีปัจจุบันคุณสามารถใช้คำสั่งได้ดังนี้ copy \bin\math.h.
ข้อแตกต่างของพาธที่คุณอ้างถึงสังเกตได้จากการใช้สัญลักษณ์ที่เป็นเครื่องหมายราก ถ้าเราอ้างถึงไฟล์ที่ขึ้นต้นด้วยเครื่องหมาย ” / ” หรือ ” / ” เป็นการอ้างแบบสัมบูรณ์ แต่ถ้าเป็ฯการอ้างแบบสัมพันธ์ จะขึ้นต้นด้วยไดเร็กทอรีย่อย หรือชื่อไฟล์โดยตรง

6.2.5 คำสั่งของไดเร็กทอรี (Directory Operations) คำสั่งต่างที่ใช้ เกี่ยวกับไดเร็กทอรีมีอยู่มากมาย หลายคำสั่ง ทั้งนี้ก็ขึ้นอยุ่กับแต่ละระบบปฎิบัติการ ตัวอย่างของตำสั่งต่างๆ เหล่านั้น จะใช้คำสั่งที่มีชื่อคล้ายๆ กัน เช่น ในระบบปฎิบัติการ UNIX มีคำสั่งต่างๆ ที่เกี่ยวกันไดเร็กทอรีดังนี้
1. Create
2. Delete
3. Opendir
4. Closedir
5. Readdir
6. Rename
7. Link

6.3 กรทำงานของระบบไฟล์ (File system implementation) มุมมองในระบบไฟล์คุณสามารถมองได้เป็น 2 มุมมองด้วยกันคือ ในมุมมองแรกเป้นมุมมองของผู้ใช้ ในมุมมองนี้ผู้ใช้รู้แต่เพียงว่าจะตั้งชื่อไฟล์อย่างไร มีข้อกำหนดอย่างไรบ้างในการตั้งชื่อ ซึ่งผู้ใช้จะต้องรู้ว่าแต่ละระบบปฏิบัติการมีข้อกำหนดในการตั้งชื่อไฟล์ที่เหมือนกัน ผู้ใช้จะต้องรู้คำสั่งต่างๆ (Operations)ของไฟล์ว่ามีคำสั่งอะไรบ้าง โครงสร้างของไดเร็กทอรีของแต่ละระบบไฟลืเป็นอย่างไร ผู้ใช้รู้เพียงเท่านี้ก็เพียงพอกัยการทำงานในระบบไฟล์แล้วสำหรับในมุมมองแรก
ในอีกมุมมองหนึ่งเป็นของผู้สร้างระบบไฟล์ที่จะต้องรู้และเข้าใจว่าไฟล์และไดเร็กทอรีต่างๆ ที่สร้างขึ้นมาถูกจัดเก็บลงบนดิสก์อย่างไร จะมีวิธีจัดสรรเนื้อที่ดิสก์อย่งไร ให้สามารถจัดเก็บข้อมูลได้มากที่สุดและคงประสิทธิภาพสูงสุด รวมไปถึงการสร้างความเชื่อมันให้กับผู้ใช้ ว่าข้อมูลที่มีการบันทึกใส่ลงบนดิสก์แล้วจะไม่สูญหายไปไหน ซึ่งสิ่งต่างๆ เหล่านี้ในมุมมองของผู้สร้างจะต้องวิเคราะห์เพื่อจะหาจุดที่เหมาะสมในหารสร้างระบบแต่ละระบบที่มีตัวแปรต่างๆ ซึ่งไม่เหมือนกัน

6.3.1 โครงสร้างของระบบไฟล์(File system layout) ระบบไฟล์ทุกๆ ระบบจำเป็นต้องมีการจัดเก็บข้อมูลลงบนสื่อต่างๆ ที่ใช้เก็บข้อมูล ในปัจจุบันสื่อเหล่านี้มีหลายชนิดได้แก่ แผ่นดิสก์ เทป ซีดีรอม เป็นต้น แต่สื่อที่เป็นที่นิยมแพร่หลาย และมีราคาถูก ได้แก่ ดิสก์ โครงสร้างของระบบดิสก์สนับสนุนการแอ็กเซสข้อมูลแบบสุ่ม (Random access) โคงสร้างดิสก์สามรถแบ่งพาร์ติชันในการเก็บข้อมูลได้ แต่ละพาร์ติชันมีความเป็นอิสระต่อกัน อีกทั้งยังสามารถกำหนดให้แต่ละพาร์ติชันมีระบบปฏิบัติการที่ต่างกันได้อีกด้วย
ภายในดิสก์จะถูกแบ่งออกเป็ฯเซ็กเตอร์(Sector)เริ่มต้นจากเซ็กเตอร์ 0 ซึ่งถือว่าเป็น Master Boot Record (MBR) เซ็กเตอร์วึ่งเป็นเซ็กเตอร์ที่ใช้เบค่าเริ่มต้นของระบบปฎิบัติการสำหรับการบูตเครื่องคอมพิวเตอร์เมื่อเริ่มต้นใช้งาน ในต้อนท้ายของเซ็กเตอร์นี้ยังประกอบด้วบตารางพาร์ติชัน (Partition table) ซึ่งจะเก็บแอ็ดเดรสเริ่มต้น และแอ็กเดรสสุดท้ายของแต่ละพารืติชันเอาไว้ ในแต่ละพาร์ติชันจะประกอบไปด้วย Boot block โปรแกรมใน Boot block จะทำหน้าที่ในหารดาวโหลดระบบปฏิบิตการในพาร์ติชันออกมาทำงาน ทุกๆ การ์ติชันจะมี Boot block เป็ฯของตัวเอง แต่ว่าในพาร์ติชันอาจจะไม่มีระบบปฏิบิตการก็ได้ โครงสร้างภายในแต่ละพาร์ติชันจะแตกต่างกันขึ้นอยู่กับระบบปฏิบิตการที่ใช้อยู่ซึ่งจะกำหนดโครงสร้างของไฟล์ในดิสก์ในขณะที่ทารฟอร์แมตดิสก์

6.3.2 วิธีจัดเก็บข้อมูลไฟล์ (Implementation file) สิ่งสำคัญสำหรับการจัดเก็บไฟล์ข้อมุลลงบนสื่อเก็บข้อมุลคือ จะต้องทราบว่าแต่ละๆฟล์มีการเก็บอย่างไรเก็บไว้ที่ไหน และสามารถเรียกออกมาใช้งานได้อย่างไร ไฟล์ต่างๆ เหล่านั้นมีการจักเก็บทั้งไฟล์ หรือ แต่ละไฟล์ถูกแยกเก็บเป็ยบล็อก และบล็อกต่างๆ เหล่านั้นจัดเรียงกันอย่างไร


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


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



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

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

6.3.7 การทำแบ็คอัพข้อมูล (Backups) การทำแบ็คอัพข้อมูลมีความสำคัญมากสำหรับไฟล์ข้อมูลที่สำคัญๆ หลายคนคิดว่าการทำแบ็คอัพข้อมูลจะทำให้เสียเวลา ถ้าลองพิจารณาอย่างรอบคอบ การเสียเวลาในการก้อปปี้ข้อมูลจะดีกว่าถ้าข้อมูลต่างๆ ของคุณสูญหายไป การทำแบ็คอัคข้อมูลจะทำบ่อยขนาดไหนนั้นขึ้นอยู่กับความสำคัญของข้อมูล และการแก้ไขข้อมูลให้ทันสมัยอยู่ตลอดเวลาหรือไม่ การทำแบ็คอัคข้อมูลไม่จำเป็นต้องใช้สื่อเก็บข้อทมูลราคาแพงเหมือนดิสก์ คุณสามารถใช้สื่อเก็บข้อมูลประเภทเทปก็ได้ ซึ่งราคาของเทปถูกกว่า เพียงแต่จะเสียเวลามากเท่านั้นเอง
คุณสามารถใช้เทปในการทำแบ็คอัพข้อมูลเพื่อจุดประสงค์ 2 ประการหลัก ๆ คือ ประการแรก เพื่อป้องกันความเสียหายที่เกิดจากตัวเครื่องถูกทำลายเนื่องมาจากสาเหตุต่าง ๆ นานัปการ เช่น ไฟไหม้ น้ำท่วม เครื่องตกกระแทกพื้น อันทำให้เกิดความเสียหายกับตัวเครื่องโดยตรง และเป็นความเสียหายขั้นรุนแรงถึงกับทำให้เครื่องใช้งานไม่ได้ การทำแบ็คอัพไฟล์ข้อมูลเอาไว้ ทำให้ข้อมูลต่าง ที่อยู่ในตัวเครื่องไม่ได้ถูกทำลายไปพร้อมกับตัวเครื่องคุณสามารถซื้อ เครื่องใหม่มาแทนเครื่องเก่าที่ถูกทำลายไปได้ แล้วนำไฟล์ที่สำเนาเอาไว้มา ลงในเครื่องใหม่เท่านี้คุณก็สามารถใช้งานคอมพิวเตอร์ได้ตามเดิม
ประการที่สองคุณสามารถใช้เทปแม่เหล็กในการทำแบ็คอัพข้อมูลเพื่อป้องกันการลบ ข้อมูลโดยมิได้ตั้งใจ หรือโดยไม่ทันคิดว่าข้อมูลดังกล่าวสามารถนำไปใช้ประโยชน์ได้ในอนาคต การทำแบ็คอัพข้อมูลเก่าจัดเก็บลงในเทปทำให้ประหยัดงบประมาณค่าใช้จ่าย คุณสามารถนำข้อมูลดังกล่าวมาใช้ในอนาคต โดยเฉพาะข้อมูลทางด้านสถิติ ข้อมูลเหล่านี้สามารถใช้ในการพยาการณ์อนาคตให้กับบริษัท ได้โดยเฉพาะการวางแผนช่วยให้ผู้บริหารตัดสินใจได้ง่ายขึ้น
การทำแบ็คอัพข้อมูลอาจใช้เวลา และงบประมาณในการซื้ออุปกรณ์เพิ่มเติมบางอย่าง ดังนั้นการทำให้การแบ็คอัพข้อมูลง่ายขึ้นใช้เงินให้น้อยที่สุดนั้นน่าจะเป็น ทางออกที่ดี การทำระบบแบ็คอัพข้อมูลให้มีประสิทธิภาพจะช่วยให้คุณประหยัดเวลาลงได้มาก สิ่งสำคัญอีกประการหนึ่งของระบบการแบ็คอัพข้อมูลคือการทำสำเนาเฉพาะข้อมูล ที่มีการเปลี่ยนแปลงอยู่ตลอดเวลา โดยเฉพาะระบบธนาคารที่ข้อมูลมีการเปลี่ยนแปลงตลอดเวลาจะต้องแบ็คอัพข้อมูล ไว้ทุกวัน สำหรับตัวโปรแกรมซึ่งสามารถหาได้จากบริษัท หรือจากแผ่นโปรแกรมนั้นไม่จำเป็นต้องทำแบ็คอัพไว้เมื่อข้อมูลถูกทำลายคุณ สามารถติดตั้งซอฟต์แวร์ได้จากแผ่นโดยตรง
การบีบอัดข้อมูลก่อนการแบ็คอัพก็สามารถช่วยให้ประหยัดเวลาได้เหมือนกัน ปัจจุบันเครื่องมือที่ช่วยอำนวยความสะดวกในการอัดโปรแกรมให้เล็กลงก่อนการ จัดเก็บ และสามารถขยายให้ใหญ่ขึ้นก่อนการใช้งาน อีกทั้งโปรแกรมดังกล่าวก็ใช้เนื้อที่ไม่มากและมีประสิทธิภาพสูงด้วย ข้อสำคัญที่ควรระวังก็คือ จะต้องเลือกเครื่องมือที่เชื่อถือได้ทุกครั้งที่ข้อมูลถูกอัดให้เล็กลงจะ ต้องมั่นใจว่าข้อมูลดังกล่าวสามารถขยายและนำมาใช้งานใหม่ได้เหมือนเดิม
ประการต่อไปสำหรับการแบ็คอัพข้อมูลลงเทป จะไม่สามารถกระทำได้ขณะข้อมูลกำลังมีการแก้ไขอยู่จะต้องรอไปจนกว่าข้อมูล นั้นแก้ไขจนเสร็จ ถึงจะทำการแบ็คอัพข้อมูลได้ ตัวอย่างในระบบธนาคารจะพบว่าในแต่ละวันธนาคารจะทำการสำรองข้อมูลในขณะเลิก งานของแต่ละวัน เพื่อจะได้ข้อมูลที่ทันสมัยที่สุดของแต่ละวันการแบ็คอัพข้อมูลในแต่ละวันอาจ ใช้เวลานานนับชั่วโมงซึ่งก็ไม่จำเป็นจะต้องเฝ้าอยู่ตลอดเวลา ปล่อยของระบบเป็นตัวจัดการเอง
สุดท้ายสำหรับระบบการแบ็คอัพข้อมูลจะดีเพียงใดก็ตามถ้าปราศจากการรักษาความ ปลอดภัยที่ดี ข้อมูลที่ทำการสำเนาจัดเก็บไว้ถูกขโมยไป ก็ไม่มีประโยชน์ดังนั้นข้อมูลที่สำเนาไว้แล้วควรเก็บในที่ ๆ ปลอดภัย และป้องกันการเกิดภัยจากอุบัติเหตุต่าง ๆ เช่น ไฟไหม้ น้ำท่วม ได้ด้วย เป็นต้น
กลวิธีในการแบ็คอัพข้อมูลจากดิสก์ลงบนเทป สามารถทำได้ด้วยวิธีการหลัก สองประการ วิธีการแรกโดยการแบ็คอัพข้อมูลด้วยวิธีทางกายภาพ ด้วยวิธีการนี้จะทำแบ็คอัพข้อมูลตั้งแต่บล็อกแรกไปตามลำดับจนถึงบล็อกสุด ท้ายของดิสก์แล้วจัดเก็บลงในเทป วิธีนี้เป็นวิธีการที่สะดวกและง่ายในการทำแบ็คอัพแต่ทำให้เกิดผลเสียที่ตาม มาหลายประการด้วยกันคือ ประการแรกทำให้เสียเวลาเป็นอย่างมากโดยเฉพาะถ้าข้อมูลไม่เต็มแผ่นดิสก์ เพราะเนื้อที่ว่างภายในดิสก์ จะเสียเวลาถูกทำแบ็คอัพไปด้วย ประการที่สองถ้ามีบล็อกเสียเป็นจำนวนมาก บล็อกเสียเหล่านั้นทำให้เกิดปัญหาสำหรับระบบปฏิบัติการในการอ่านข้อมูล
วิธีที่สองการแบ็คอัพข้อมูลด้วยวิธีทางตรรกภาพ (logical dump) วิธีการแบ็คอัพข้อมูลวิธีนี้จะเลือกเฉพาะไฟล์ หรือไดเร็กทอรี ที่ต้องการแบ็คอัพเท่านั้น โดยปกติแล้วทำการแบ็คอัพข้อมูลจะทำเฉพาะข้อมูลที่มีการเปลี่ยนแปลงเท่านั้น โดยสังเกตได้จากวันที่ และเวลาที่ได้บันทึกไว้ล่าสุด ด้วยวิธีการนี้ จะขอยกตัวอย่างในระบบ UNIX ซึ่งใช้วิธีเก็บบล็อกต่าง ๆ ของไฟล์ข้อมูลแบบไอโหนดโดยแบ่งออกเป็นขั้นตอนดังนี้ ในขั้นตอนแรกเริ่มตรวจสอบจากไดเร็กทอรีราก ระบบปฏิบัติการตั้งสมมุติฐานว่าทุกไฟล์จะถูกแบ็คอัพไว้ทั้งหมด และตรวจสอบทีละไฟล์ไปตามลำดับ ลงไปในแต่ละไดเร็กทอรี เพื่อดูวันที่ล่าสุดของไฟล์ เมื่อพบว่าไฟล์ใดเป็นวันที่ล่าสุดก็จะจำวันที่นั้นไว้ ส่วนวันที่ก่อนหน้านั้น จะถูกข้ามไปแล้ววนกลับมาเช็คใหม่ในขั้นตอนที่สอง หลังจากการตรวจสอบในรอบผ่านไประบบจะทราบได้โดยทันทีว่าไฟล์ข้อมูลใดมีการ บันทึกเป็นไฟล์ล่าสุด (เพราะได้เช็ควันที่ของไฟล์ไป 1 รอบแล้ว) ดังนั้นในรอบที่สองระบบจะยกเลิกบางไฟล์ที่ตรวจสอบวันที่ดูแล้วปรากฏเป็นวัน ที่ก่อนหน้า หลังจากที่ตรวจสอบผ่านไปในรอบที่สอง ระบบก็จะได้ไฟล์ข้อมูลที่มีการอัปเดทล่าสุดและทำการแบ็คอัพข้อมูลที่ต้องการ ไว้ทั้งหมด


รูป 6.8 ระบบไฟล์ที่แบ็คอัพ สี่เหลี่ยมหมายถึงไดเร็กทอรี ส่วนวงกลมหมายถึงไฟล์ ส่วนที่แรเงาคือส่วนที่มีการแก้ไขตั้งแต่แ บ็คอัพครั้งสุดท้าย แต่ละไดเร็กทอรีและไฟล์กำหนดโดยหมายเลขไอโหนด [MOS:P419]
วิธีการแบ็คอัพข้อมูลด้วยวิธีทางตรรกภาพ (logical dump) สามารถช่วยแก้ปัญหาต่าง ๆ ได้หลายประการ สามารถลดเนื้อที่ของสื่อที่ใช้ทำแบ็คอัพข้อมูลได้จำนวนมาก เพราะวิธีนี้จะสำเนาเฉพาะที่เป็นบล็อกของไฟล์ข้อมูลที่ต้องการเท่านั้น ส่วนเนื้อที่ว่างที่มีเป็นจำนวนมากในตัวที่สื่อต้นฉบับจะไม่ถูกก็อบปี้ลงใน ระบบ UNIX สาทารถนำไฟล์ทีแบ็คอัพมาจัดใหม่ ให้เป็นระเบียบกว่าเดิม โดยทำการเชื่อมต่อระหว่างบล็อกเสียใหม่ ไม่ให้กระจัดกระจายจนเกินไป ก็จะช่วยทำให้ค้นหาข้อมูลได้เร็วขึ้น

6.3.8 ประสิทธิภาพของระบบไฟล์ (File System performance) ถ้าพิจารณาจากการอ่านข้อมูลจากฮาร์ดดิสก์ กับแผ่นฟล็อปปี้ดิสก์จะพบว่ามีความแตกต่างกันโดยสิ้นเชิงสาเหตุที่เป็นเช่น นี้ เพราะการอ่านข้อมูลจากฮาร์ดดิสก์ จะใช้เวลาเพียง10 MB/sec ในขณะที่อ่านข้อมูลจากฟล็อปปี้ดิสก์จะต้องเสียเวลาในการค้นหาบล็อกข้อมูลที่ ต้องการ การเคลื่อนหัวอ่านไปยังบล็อก การส่งข้อมูลต่างๆเหล่านี้ล้วนกินเวลามากกว่าฮาร์ดดิสก์หลายสิบเท่า ดังนั้นหลายๆ ระบบจึงมีการออกแบบให้ระบบมีประสิทธิภาพสูงสุดด้วยวิธีการที่ต่างๆ กันดังต่อไปนี้


6.4 ตัวอย่างระบบไฟล์

ตัวอย่างที่จะกล่าวถึงดังต่อไปนี้เป็นระบบไฟล์ต่าง ๆ ที่มีใช้อยู่ในปัจจุบัน ตั้งแต่ระบบไฟล์ที่มีดครงสร้างแบบธรรมดาไปจนถึงระบบไฟล์ที่มีโครงสร้างที่ ซับซ้อน

6.4.1 ระบบไฟล์ของซีดีรอม ระบบไฟล์ของซีดีรอมจะใช้เป็นตัวอย่างแรกในหัวข้อนี้ระบบไฟล์ภายในซีดีรอม เป็น ระบบที่ง่ายที่สุดเพราะภายในระบบนี้เป็นแบบเขียนได้เพียงครั้งเดียว เมื่อเทียบกับระบบไฟล์อย่างอื่นแล้วระบบนี้ไม่ต้องการมีการบริกหารเนื้อที่ สำหรับการแก้ไข หรือการเปลี่ยนแปลงข้อมูลใดๆ เลย เนื้อที่บนแผ่นซีดีรอมสามารถใช้ในการจัดเก็บข้อมูลได้อย่างต่อเนื่อง โดยที่ผู้ใช้ไม่ต้องกังวลเกี่ยวกับการลบหรือแทรกข้อมูลแต่อย่างใด ตามมาตรฐานสากลในปี ค.ศ. 1988 กำหนดไว้ว่าซีดีรอมที่ผลิตขึ้นจะต้องสามารถใช้ได้กับคอมพิวเตอร์ทุก ๆ ระบบ การจัดเก็บข้อมูลภายในซีดีรอมจะต้องเป็นอิสระจากทุกระบบปฏิบัติการ
โครงสร้างภายในของซีดีรอมแตกต่างจากโครงสร้างของจานแม่เหล็ก (ฟล็อปปี้ดิสก์, ฮาร์ดดิสก์) โดยสิ้นเชิง ในขณะที่จานแม่เหล็กมีการเก็บข้อมูลเป็นวงแหวนหลาย ๆ วงจัดเรียงไปจากวงเล็กที่อยู่วงในไปถึงวงนอกสุดซึ่งเป็นวงใหญ่ที่สุด แต่โครงสร้างภายในของซีดีรอมมีการจัดเก็บข้อมูลในลักษณะคล้ายลานนาฤอกาแต่ละ วงจะต่อเนื่องกันเป็นขดเดียวกัน การเก็บข้อมูลในระหว่างซีดีเพลงจะแตกต่างจากซีดีที่ใช้เก็บข้อมูล
ตามมาตรฐาน ISO 9660 ซีดีรอมทุกแผ่นจะประกอบด้วยบล็อกต่าง ๆ จัดเรียงกันตามลำดับดังต่อไปนี้ คือ 16 บล็อกแรกเป็นส่วนที่ใช้สำหรับบูตเครื่องคอมพิวเตอร์จากแผ่นซีดีรอม เหมือนกับเซ็กเตอร์ 0 ของแผ่นดิสก์ที่ใช้บูตเครื่องคอมพิวเตอร์จากไดรฟ์ A ส่วนถัดมาเรียกว่า Primary volume descriptor ใช้สำหรับเก็บข้อมูลทั่ว ๆ ไปของแผ่นซีดีรอมส่วนนี้กำหนดเนื้อที่ 32 ไบต์สำหรับชื่อระบบปฏิบัติการที่ใช้เวลาที่เขียนข้อมูลลงในแผ่น 32 ไบต์ ถัดมาเป็นชื่อแผ่นซึ่งผู้ใช้เป็นผู้กำหนด ไบต์ ถัดมาเป็นชื่อของบริษัทผู้ผลิตและจำหน่าย และส่วนสุดท้ายใช้เก็บข้อมูลทั่วไป
นอกจากนั้นในบริเวณนี้ (Primary volume descriptor) ยังเก็บข้อมูลสำคัญอย่างอื่นที่ไม่แสดงให้เห็นอีก 3 อย่างคือ ตำหนิแสดงลิขสิทธิ์ของแผ่น ข้อมูลที่เป็นรายละเอียดเกี่ยวกับแผ่น และคีย์ต่าง ๆ ที่แสดงรายละเอียดข้อมูล เช่น ขนาดของบล็อก (1KB, 2KB, 4KB, 8KB ) จำนวนบล็อกที่ใช้เก็บข้อมูลของแผ่น วันที่หมดอายุของแผ่น ข้อมูลที่เกี่ยวข้องกับไดเร็กทอรีราก เช่น แอ็ดเดรส เป็นต้น
แต่ละไดเร็กทอรีเก็บบนซีดีรอมจะประกอบไปด้วยข้อมูลที่สำคัญ โดยแบ่งออกเป็นเป็นฟิลด์ต่าง ๆ ระหว่าง 10-12 ฟิลด์ แต่ละฟิลด์ประกอบด้วยข้อมูล ต่าง ๆ ตามรูป 6.10 ซึ่งเป็นรูป


จากรูปแสดงฟิลด์ต่าง ๆ ตามมาตรฐาน 9660 สามารถอธิบายรายละเอียดของแต่ละฟิลด์ได้ดังต่อไปนี้
1. Directory entry length บอกความยาวของข้อมูลไดเร็กทอรี
2. Extended attribute record length บอกความยาวของ attribute record
3. Location of file บอกตำแหน่งที่เก็บไฟล์
4. File size บอกขนาดไฟล์ข้อมูล
5. Date and time บอกวันที่ เวลาที่เก็บไฟล์ข้อมูล
1. Flags มีขนาด 1 ไบต์ หรือ 8 บิต แต่ละบิตให้ข้อมูลซึ่งเป็นรายละเอียดของไฟล์
2. Interleave เป็นฟิลด์ขนาด 2 ไบต์ มีไว้เพื่อแยกไฟล์ข้อมูลออกเป็นส่วน ๆ ซึ่งยังไม่มี การนำมาใช้งาน
3. CD# เป็นฟิลด์ขนาด 4 ไบต์ เพื่อกำหนดหมายเลขของแผ่นซีดีรอม
4. L ใช้บอกขนาดของไฟล์ข้อมูล
5. File name บอกชื่อไฟล์มีสองส่วนคือ ชื่อที่มีจำนวนอักษรไม่เกิน 8 ตัว ตามด้วยจุด และนามสกุลมีจำนวนอักษรไม่เกิน 3 ตัว
6. Ver เป็นฟิลด์ที่ใช้ระบุเวอร์ชันของระบบปฏิบัติการ
7. Sys เป็นฟิลด์ที่ใช้ระบุระบบปฏิบัติการของแผ่น

6.4.2 ระบบไฟล์ของ Windows 98 Windows ในเวอร์ชันก่อน Windows 98 ใช้ระบบไฟล์ MS – DOS เข้ามาช่วยจัดการเกี่ยวกับไฟล์ข้อมูลซึ่งในเวอร์ชันนี้เป็นการตั้งชื่อไฟล์ แบบ 8 + 3 ( ชื่อ + สกุล ) และใช้ตาราง FAT – 16 ในระบบไฟล์ หลังจากที่ได้มีการพัฒนาตาราง FAT – 32 ขึ้นมาใช้งาน ระบบไฟล์สามารถขยายเนื้อที่การเก็บข้อมูลได้มากกว่า 8 GB นอกจากนั้นคุณยังสามารถตั้งชื่อไฟล์ได้มากกว่าในเวอร์ชันเก่าเสียอีก เหล่านี้ได้รวมไปถึง Windows ME Windows 2000 Windows XP ด้วย


รูป 6.11 ขยายโครงสร้างระบบไฟล์ของ MS – DOS มาใช้ใน Windows 98 [MOS : P443]

ปัญหาของชื่อไฟล์เริ่มเกิดขึ้นเมื่อมีการใช้ระบบไฟล์ที่ต่างกัน ในระบบที่ใช้ MS-DOS คือเวอร์ชัน ตั้งแต่ Windows98 ขึ้นไป ชื่อไฟล์สามารถตั้งได้มากกว่า 8 ตัวอักษร เมื่อนำไปเปิดในเวอร์ชันที่ต่ำกว่า จะทำอย่างไร ปัญหาดังกล่าวทางบริษัทไมโครซอฟต์ได้พิจารณาหาทางออก โดยกำหนดชื่อไฟล์ให้เสียใหม่ เมื่อไฟล์ดังกล่าวนำไปใน MS-DOS หรือเวอร์ชันที่ต่ำกว่า Windows98 ชื่อไฟล์ที่ยาวเกิน 8 ตัวอักษร จะถูกกำหนดให้มีความยาว 6 ตัว และตามด้วย "~1" ตัวอย่างเช่น ถ้าตั้งชื่อไฟล์ว่า "ระบบไฟล์ของ Windows98" เมื่อไฟล์นี้นำไปเปิดบน MS-DOS จะเหลือ เช่น ถ้ามีไฟล์ที่สองในไดเร็กทอรีเดียวกันเป็น "ระบบไฟล์ของ Windows 3.11" เมื่อไฟล์นี้จะนำไปเปิดบน MS-DOS จะใช้ชื่อไฟล์ "ระบบไฟล์~ 2" ก็จะเปลี่ยนไป
ทุกไฟล์จะมีชื่อเป็นของระบบ ถูกเก็บอยู่รวมกันในรูปแบบที่ต่างกัน ไดเร็กทอรีของ ดังรูป 6.11 และในแต่ละชื่อไฟล์ยาว ๆ ก็มีเนื้อที่เก็บไว้อีกที่หนึ่งในแบบของ ดังตัวอย่างรูป 6.12



ในแต่ละฟิลด์ของตารางประกอบด้วยส่วนต่าง ๆ ดังนี้
1. Sequence มีขนาด 1 ไบต์ แต่ใช้เพียง 6 บิต สามารถแสดงลำดับที่ได้ 64 (26) ตำแหน่ง ดังนั้น จึงสามารถเก็บชื่อไฟล์ได้ เท่ากับ 64* 13 = 832 ตัวอักษร
2. 5 characters of file name มรขนาด 10 ไบต์ แต่ใช้เก็บ 5 ตัวอักษรสลับกับช่องว่าง
3. Attribute มีขนาด 1 ไบต์ ใช้เก็บรหัสย่อของคุณสมบัติไฟล์
4. 6 characters of file name มีขนาด 12 ไบต์ แต่ใช้เก็บ 6 ตัวอักษรสลับกับช่องว่าง
5. 2 characters of file name มีขนาด 4 ไบต์ แต่ใช้เก็บ 2 ตัวอักษรสลับกับช่องว่าง

6.4.3 ระบบไฟล์ของ UNIX UNIX เป็นระบบปฏิบัติการที่ใช้ซีพียูร่วมกัน ( Multiuser file systems ) ระบบไฟล์ของ UNIX มีโครงสร้างแบบต้นไม้ เริ่มจากไดเร็กทอรีรากแตกกิ่งก้านออกไปได้เรื่อย ๆ อย่างไม่รู้จบ ชื่อไฟล์สามารถตั้งได้ถึง 14 ตัวอักษรด้วยกัน UNIX ไดเร็กทอรี ในแต่ละไฟล์จะมี 1 ไดเร็กทอรีเอนทรีย์ ( Directory entry ) ด้วยกัน แต่ละเอนทรีย์ประกอบด้วย 2 ฟิลด์คือชื่อไฟล์ และหมายเลขไอโหนด


ในตารางไอโหนด จะใช้เก็บคุณสมบัติต่าง ๆ ของไฟล์ไว้ เช่น ขนาดของไฟล์เจ้าของไฟล์ การป้องกันข้อมูลในไฟล์ วันที่จัดเก็บ วันที่แก้ไข และวันที่ใช้ข้อมูล เป็นต้น นอกจากนี้ในตารางไอโหนดยังประกอบด้วยตัวนับ (counter) ซึ่งเชื่อมบล็อกข้อมูลไฟล์ไว้ด้วยกัน เมื่อใดที่ลิงค์ไปที่ไอโหนด ตัวนับจะถูกบวกไปครั้งละหนึ่ง และเมื่อลิงค์ถูกย้ายออกไปทีละหนึ่ง และเมื่อใดที่ตัวนับเท่ากับ 0 เนื้อที่บล็อกของไฟล์จะถูกคืนให้กับระบบเพื่อไว้เก็บไฟล์อื่นๆ อีกต่อไป
การใช้ลิงค์เชื่อมดยงบล็อกตาง ๆ ของไฟล์ ในระบบปฏิบัติการ UNIX ทำได้ 3 แบบดังได้อธิบายในหัวข้อก่อนหน้านี้ คือ Single indirect block, Double indirect block และ Triple indirect block ดังรูป 6.15 และ 6.16

รูป 6.15 ไอโหนดของ UNIX [MOS:P447]


รูป 6.16 ขั้นตอนในการเข้าไปใน /usr/don/mail [MOS:P447]

6.5 สรุป ในการจัดเก็บข้อมูลลงในสื่อเก็บข้อมูลจะต้องมีการตั้งชื่อกลุ่มข้อมูล ชื่อที่ว่านี้เรียกว่า ไฟล์ ในการแอ็กเซสไฟล์คุณไม่จำเป็นต้องทราบแอ็ดเดรส ของไฟล์ที่ต้องการไฟล์ ระบบปฏิบัติการจะจัดการให้คุณผ่านทางโอเปอเรชันที่เรียกว่า System call ซึ่ง system call เหล่านี้จะช่วยคุณสร้าง ลบ อ่าน และเขียนไฟล์ต่าง ๆ ได้
ระบบปฏิบัติการยังช่วยเก็บไฟล์ในกลุ่มเดียวกันไว้ในไดเร็กทอรี ( Directory ) ซึ่งไดเร็กทอรีเป็นไฟล์ประเภทหนึ่งที่ช่วยแบ่งกลุ่มไฟล์ที่จัดเก็บในสื่อที่ เป็นกลุ่มเพื่อให้การใช้งานมีประสิทธิภาพ โครงสร้างไดเร็กทอรีก็มีทั้งแบบ ไดเร็กทอรีเดี่ยว ไดเร็กทอรี 2 ระดับ และไดเร็กทอรีหลายระดับ
สื่อที่ปัจจุบันเป็นนิยมนำมาจัดเก็บไฟล์คือดิสก์ (Disk) ซึ่งเป็นจานแม่เหล็กที่สามารถแบ่งพาร์ติชันเพื่อสะดวกในการจัดเก็บข้อมูล ภายในดิสก์แบ่งออกเป็นเซ็กเตอร์ (Sector) โดยเริ่มจากเซ็กเตอร์ 0 ที่เรียกว่า Master Boot Record ซึ่งใช้ในการเก็บระบบปฏิบัติการเพื่อใช้ในการบูตเครื่อง ส่วนการจัดเก็บข้อมูลของไฟล์ก็มีหลายวิธี ทั้งที่เป็นการจัดเก็บแบบต่อเนื่อง การจัดเก็บแบบลิงค์ลิสต์หรืออาจจะแบ่งออกเป็นไอโหนด (ใน UNIX) นอกจากทั้งที่เป็นการจัดเก็บแบบต่อเนื่อง การจัดเก็บแบบลิงค์ลิสต์ หรือ อาจจะเป็นแบบตารางไอโหนด (ใน UNIX นอกจาก นี้ระบบปฏิบัติการยังมีหน้าที่ในการจัดการเนื้อที่ว่าง การสร้างความน่าเชื่อถือในการใช้งาน ตลอดจนการทำเป็นอัพข้อมูล และการกำหนดรูปแบบเพื่อให้ใช้ดิสก์อย่างมีประสิทธิ์ภาพ ไม่ว่าจะเป็นการใช้แคช การอ่านบล็อกข้อมูลล่วงหน้า รวมถึงการลอการเคลื่อนที่ของหัวอ่านในดิสก์ด้วย



อ้างอิง





















ความคิดเห็น