900 likes | 1.07k Views
บทที่ 10 โครงสร้างไฟล์ (File System). การจัดการไฟล์. ขณะทำงานข้อมูลจะถูกเก็บอยู่ในหน่วยความจำในแอ็ดเดรสเฉพาะ เนื่องจากเมื่อไม่ได้ใช้งานข้อมูลจะสูญหายไปทันทีที่ปิดเครื่อง จึงมีความจำเป็นที่จะต้องมีสื่อจัดเก็บข้อมูลเหล่านั้น ในการจัดเก็บข้อมูลจะต้องมีการกำหนดชื่อเพื่อแทนกลุ่มข้อมูลที่จัดเก็บ
E N D
บทที่ 10โครงสร้างไฟล์(File System)
การจัดการไฟล์ • ขณะทำงานข้อมูลจะถูกเก็บอยู่ในหน่วยความจำในแอ็ดเดรสเฉพาะ • เนื่องจากเมื่อไม่ได้ใช้งานข้อมูลจะสูญหายไปทันทีที่ปิดเครื่อง จึงมีความจำเป็นที่จะต้องมีสื่อจัดเก็บข้อมูลเหล่านั้น • ในการจัดเก็บข้อมูลจะต้องมีการกำหนดชื่อเพื่อแทนกลุ่มข้อมูลที่จัดเก็บ • ชื่อที่ใช้แทนกลุ่มข้อมูลก็คือชื่อไฟล์ (File) นั่นเอง
ไฟล์ • ไฟล์ข้อมูล (file) หมายถึง สิ่งที่บรรจุข้อมูลต่าง ๆ ไว้ในที่เดียวกัน อาจหมายถึงโปรแกรมหรืออะไรก็ตามที่ต้องการเก็บไว้ด้วยกัน • ระบบปฏิบัติการมีหน้าที่จัดการให้ผู้ใช้ติดต่อไฟล์ โดยผู้ใช้ไม่ต้องอ้างถึงแอ็ดเดรสของไฟล์นั้น ๆ โดยตรง • ในระบบปฏิบัติการจะมีโอเปอร์เรชันที่เรียกว่า System call เป็นตัวจัดการที่เกี่ยวข้องกับไฟล์ เช่น การสร้างไฟล์ การลบไฟล์ การอ่าน/เขียนไฟล์ เป็นต้น
การตั้งชื่อไฟล์ • จุดประสงค์ในการออกแบบระบบปฏิบัติการอย่างหนึ่งคือต้องการที่จะให้ผู้ใช้เป็นอิสระจากอุปกรณ์ใด ๆ (device independent) ดังนั้นในการเข้าถึงไฟล์ข้อมูลใด ๆ จะต้องมีรูปแบบเดียวกัน • ผู้ใช้ไม่จำเป็นต้องกำหนดรายละเอียดเกี่ยวกับแอ็ดเดรส เพียงแค่ระบุชื่อและนามสกุลของไฟล์ให้ถูกต้องก็เพียงพอแล้ว • การกำหนดชื่อของไฟล์ ในแต่ละระบบปฏิบัติการมีความแตกต่างกันอยู่พอควร แต่ส่วนใหญ่แล้วจะมีข้อกำหนดที่ใกล้เคียงกัน
การตั้งชื่อไฟล์ • ระบบปฏิบัติการบางตัวกำหนดให้การตั้งชื่อโดยขึ้นต้นด้วยอักษร และตามด้วยตัวเลข หรือตัวอักษรไม่เกิน 8 ตัว • บางระบบกำหนดการตั้งชื่อทำได้โดยอิสระแต่ไม่เกิน 255 ตัว • ในบางระบบ การตั้งชื่อด้วยอักษรตัวใหญ่ และตัวเล็กไม่เหมือนกัน เช่นใน UNIX การตั้งชื่อถ้าเป็นตัวใหญ่ และตัวเล็กจะถือว่าเป็นคนละชื่อกัน ตัวอย่างเช่น Name, NAME,name กรณีของ UNIX จะถือว่าทั้ง 3 ไฟล์แตกต่างกัน แต่สำหรับ MS-DOS หรือ Windows จะหมายถึงไฟล์เดียวกัน • ระบบส่วนใหญ่ชื่อไฟล์จะมี 2 ส่วนคือชื่อและส่วนขยายโดยคั่นด้วยจุด (.) โดยชื่อจะมีขนาด 1-8 ตัวอักษร เช่น report.doc เป็นต้น แต่บางระบบมีส่วนขยายได้มากกว่า 1 ส่วน เช่น prog.c.Z เป็นต้น
โครงสร้างไฟล์ • การจัดโครงสร้างไฟล์ที่ใช้กันโดยทั่วไปมี 3 วิธี แบบไบต์เรียงต่อกัน มีการเก็บเป็นไบต์เรียงต่อ ๆ กันไป ดังเช่นในระบบปฏิบัติการของ UNIX และ Windows การเก็บไฟล์ในลักษณะนี้เป็นแบบที่ไม่มีโครงสร้างในการจัดเก็บ ไฟล์ที่ถูกสร้างใหม่จะถูกนำมาเรียงต่อกันไปเรื่อย ๆ จนเต็มเนื้อที่ โดยที่ตัวระบบปฏิบัติการแทบจะไม่ทำหน้าที่อะไรเลย
โครงสร้างไฟล์ เก็บเป็นเรกคอร์ด โดยมีขนาดของเรกคอร์ดคงที่ ในแต่ละไฟล์จะถูกจัดเก็บอยู่ในรูปของเรกคอร์ดจัดเรียงกันไปตามลำดับจนถึงเรกคอร์ดสุดท้าย ซึ่งในเรกคอร์ดสุดท้ายอาจจะไม่เต็มเรกคอร์ดก็ได้ ในการอ่านและเขียนจะทำไปทีละเรกคอร์ด ในบางระบบอาจจะกำหนดให้แต่ละเรกคอร์ดมีขนาดเท่ากับ 80 อักษร ซึ่งเท่ากับ 1 บรรทัดพอดี เช่นในระบบปฏิบัติการ CP/M
โครงสร้างไฟล์ เก็บเป็นแบบต้นไม้หรือทรี (tree) แต่ละบล็อกจะประกอบไปด้วย เรกคอร์ด โดยมีขนาดของเรกคอร์ดขึ้นอยู่กับปัจจัยหลายประการ เช่น ขนาดของไฟล์ข้อมูล เวลาที่ใช้ในการเข้าถึงข้อมูล (access time) เป็นต้น วิธีนี้ใช้ในระบบปฏิบัติการหลายเครื่องด้วยกัน
ไดเร็กทอรี • ระบบปฏิบัติการทุกตัวจะต้องมีสารบัญที่เก็บรวบรวมรายชื่อของไฟล์ทั้งหมดไว้ในที่เดียวกัน เพื่อให้ผู้ใช้สามารถตรวจสอบดูไฟล์ต่าง ๆ ได้ • สิ่งที่ทำหน้าที่จัดเก็บเรียกว่า “ไดเร็กทอรี” (Directory) ในบางระบบอาจจะเรียก “โฟลเดอร์” (Folder) • ไดเร็กทอรีเองก็ถือว่าเป็นไฟล์อีกประเภทหนึ่ง • โครงสร้างในไดเร็กทอรีประกอบไปด้วยหน่วยย่อยหลาย ๆ หน่วย ในแต่ละหน่วยก็อาจจะมีโครงสร้างเดียวกับมันก็ได้ หรืออาจจะประกอบด้วยไฟล์เดี่ยวย่อย ๆ อยู่ภายในก็ได้
โครงสร้างไดเร็กทอรี • ระบบไดเร็กทอรีเดี่ยว (Single-Level Directory Systems) • ระบบไดเร็กทอรีเดี่ยวเป็นระบบที่มีโครงสร้างที่ง่ายที่สุด • ภายในระบบจะมีอยู่เพียงไดเร็กทอรีเดียวและรวบรวมไฟล์ทุกไฟล์ไว้ที่เดียวกัน • ทุกไฟล์จะจัดเก็บอยู่ในระดับเดียวกัน • ไม่สะดวกสำหรับผู้ใช้หลาย ๆ คน แต่ละคนมีหลายไฟล์ ไฟล์หลากหลายชนิดต้องอยู่ปะปนกันทำให้ไม่สะดวกในการค้นหา • ในกรณีที่มีการสร้างไฟล์ให้มีชื่อเดียวกันกับที่มีอยู่ก่อนนั้นอาจทำให้ไฟล์เก่าถูกเขียนทับลงไปโดยไม่ตั้งใจ ทำให้ข้อมูลสูญหายได้
โครงสร้างไดเร็กทอรี • ระบบไดเร็กทอรีเดี่ยว (Single-Level Directory Systems)
โครงสร้างไดเร็กทอรี • ระบบไดเร็กทอรี 2 ระดับ (Two-Level Directory Systems) • แก้ไขปัญหาของระบบไดเร็กทอรีเดี่ยวได้ • การจัดโครงสร้างไดเร็กทอรี 2 ระดับ จะกำหนดให้ผู้ใช้แต่ละคนสามารถสร้างไดเร็กทอรีย่อยของตนได้เรียกว่า “สับไดเร็กทอรี“(Sub-directory) หรือไดเร็กทอรีย่อย 1 ก็ได้ • แต่ละสับไดเร็กทอรี จะอยู่ภายใต้ไดเร็กทอรีรากเดียวกัน (root directory)
โครงสร้างไดเร็กทอรี • ระบบไดเร็กทอรี 2 ระดับ (Two-Level Directory Systems)
โครงสร้างไดเร็กทอรี • ระบบไดเร็กทอรีหลายระดับ (Hierarchical Directory Systems) • สามารถแก้ปัญหาระบบไดเร็กทอรีทั้ง 2 ระบบได้ • อาจจะเรียกโครงสร้างแบบนี้เป็น “โครงสร้างต้นไม้” (Tree structure) ผู้ใช้สามารถสร้างไดเร็กทอรีขึ้นมาได้โดยไม่จำกัดอยู่ในไดเร็กทอรีเดียวกัน • ระบบไฟล์ในปัจจุบันใช้โครงสร้างไดเร็กทอรีแบบนี้ เพราะสามารถแก้ปัญหาที่มีอยู่ได้ทั้งหมด
โครงสร้างไดเร็กทอรี • ระบบไดเร็กทอรีหลายระดับ (Hierarchical Directory Systems)
โครงสร้างไดเร็กทอรี • ชื่อพาธ (Path name) • ในการอ้างถึงไฟล์ใด ๆ จำเป็นต้องระบุที่อยู่ของไฟล์นั้น ๆ ให้ถูกต้อง ว่าอยู่ในไดเร็กทอรี หรือสับไดเร็กทอรีใด • การกำหนดที่อยู่หรือเส้นทางที่จะเข้าไปถึงไฟล์นั้น ๆ เรียกว่า “พาธ” (path) • ปกติคุณสามารถสร้างชื่อไฟล์ช้ำกันได้ในกรณีที่ไฟล์เหล่านั้นอยู่ต่างไดเร็กทอรีกัน • การบอกพาธจะทำให้ระบบทราบว่าคุณกำลังอ้างถึงไฟล์ใดและอยู่ที่ไหนในระบบ
โครงสร้างไดเร็กทอรี • วิธีอ้างถึงชื่อไฟล์นั้นมีอยู่ 2 วิธี • การอ้างชื่อไฟล์แบบสัมบูรณ์ (absolute path name) • การอ้างชื่อแบบสัมพัทธ์ (relative path name) • การอ้างชื่อไฟล์แบบสัมบูรณ์ เป็นการอ้างถึงไฟล์โดยเริ่มต้นจากราก (root) เสมอตามด้วยชื่อสับไดเร็กทอรีย่อยต่าง ๆ ไล่ลงมาตามลำดับชั้นของไดเร็กทอรีที่สร้างขึ้นจนกระทั่งถึงไดเร็กทอรีที่ไฟล์บรรจุอยู่ และจบลงด้วยชื่อไฟล์นั้น • ใน Windows (MS DOS) \user\lib\dict.doc • ใน UNIX /user/lib/dict.doc • ใน MULTICS <user>lib>dict.doc
โครงสร้างไดเร็กทอรี • การอ้างถึงชื่อไฟล์แบบสัมพัทธ์ • ผู้ใช้จะต้องทราบไดเร็กทอรีปัจจุบัน (current directory) ก่อน • ปกติผู้ใช้สามารถอ้างถึงไฟล์ใด ๆ จากไดเร็กทอรีปัจจุบันได้โดยตรงและยังสามารถย้ายการทำงานจากไดเร็กทอรีปัจจุบันไปยังไดเร็กทอรีใด ๆ ของดิสก์ได้ • วิธีการในการอ้างชื่อพาธแบบสัมพัทธ์จะเริ่มต้นจากไดเร็กทอรีปัจจุบันไล่ไปตามลำดับชั้นของไดเร็กทอรีที่ไฟล์นั้นอยู่และจบลงด้วยชื่อไฟล์นั้น ๆ • สมมุติไดเร็กทอรีปัจจุบันคือ usr (ตามรูป) ถ้าต้องการอ้างถึงไฟล์ dict.doc จะต้องอ้างด้วย lib\dict.doc และถ้าไดเร็กทอรีปัจจุบันคือ lib คุณสามารถอ้างชื่อไฟล์ dict.doc โดยตรงได้เลย
โครงสร้างไดเร็กทอรี • การอ้างถึงชื่อไฟล์แบบสัมพัทธ์ • ในกรณีทีไฟล์ที่คุณต้องการอ้างถึงไฟล์ที่อยู่คนละแขนงของทรีจำเป็นที่จะต้องใช้สัญลักษณ์ .. เข้ามาช่วย เช่นถ้าต้องการอ้างถึงไฟล์ math.h ในไดเร็กทอรี bin ในขณะที่ไดเร็กทอรีปัจจุบันอยู่ที่ lib • สามารถอ้างได้ด้วย ..\..\bin\math.h • สัญลักษณ์ ..ในกรณีนี้หมายถึงไดเร็กทอรีที่อยู่เหนือขึ้นไปหนึ่งระดับ • ส่วนสัญลักษณ์ . จะหมายถึงไดเร็กทอรีปัจจุบัน ตัวอย่างการใช้ได้แก่กรณีที่ต้องการ copy ไฟล์ math.h มาเก็บไว้ในไดเร็กทอรี lib ซึ่งเป็นไดเร็กทอรีปัจจุบันคุณสามารถใช้คำสั่ง copy \bin\math.h ได้ทันที • ข้อสังเกต ถ้าอ้างถึงไฟล์โดยตรงจะใช้ \ หรือ / แต่ถ้าเป็นการอ้างแบบสัมพัทธ์จะขึ้นต้นไดเร็กทอรีย่อย หรือชื่อไฟล์โดยตรง
โครงสร้างไดเร็กทอรี • คำสั่งของไดเร็กทอรี (DIRECTORY OPERATIONS) • คำสั่งต่าง ๆ ที่ใช้ เกี่ยวกับไดเร็กทอรีมีอยู่มากมายหลายคำสั่ง ทั้งนี้ก็ขึ้นอยู่กับแต่ละระบบปฏิบัติการ • คำสั่งต่าง ๆ จะมีชื่อคล้าย ๆ กัน เช่นในระบบปฏิบัติการ UNIX มีคำสั่งต่าง ๆ ที่เกี่ยวกับไดเร็กทอรี เช่น Create, Delete, Opendir, Closedir, Readdir, Rename หรือ Link
การทำงานของระบบไฟล์ • มุมมองในระบบไฟล์มองได้เป็น 2 มุมมอง • มุมมองของผู้ใช้ ในมุมมองนี้ผู้ใช้รู้เพียง • จะตั้งชื่อไฟล์อย่างไร • ข้อกำหนดในการตั้งชื่อ ซึ่งผู้ใช้จะต้องข้อกำหนดในการตั้งชื่อไฟล์ของแต่ละระบบปฏิบัติการ • ผู้ใช้จะต้องรู้คำสั่งต่าง ๆ (Operation) ของไฟล์ว่ามีคำสั่งอะไรบ้าง • โครงสร้างของไดเร็กทอรีของแต่ละระบบไฟล์เป็นอย่างไร
การทำงานของระบบไฟล์ • มุมมองของผู้สร้างระบบไฟล์ ในมุมมองนี้ผู้สร้างจะต้อง • รู้และเข้าใจว่าไฟล์และไดเร็กทอรีต่าง ๆ ที่สร้างขึ้นมาถูกจัดเก็บลงบนดิสก์อย่างไร • ทราบวิธีจัดสรรเนื้อที่ดิสก์ว่าเป็นอย่างไร เพื่อให้สามารถจัดเก็บข้อมูลได้มากที่สุดและคงประสิทธิภาพสูงสุด • สร้างความเชื่อมั่นให้กับผู้ใช้ว่าข้อมูลที่มีการบันทึกใส่ลงบนดิสก์แล้วจะไม่สูญหายไปไหน • วิเคราะห์เพื่อหาจุดที่เหมาะสมในการสร้างระบบแต่ละระบบที่มีตัวแปรต่าง ๆ ที่ไม่เหมือนกัน
โครงสร้างระบบไฟล์ • ระบบไฟล์ทุก ๆ ระบบจำเป็นต้องมีการจัดเก็บข้อมูลลงบนสื่อต่าง ๆ ที่ใช้เก็บข้อมูล • ในปัจจุบันสื่อเหล่านี้มีหลายชนิดได้แก่ แผ่นดิสก์ เทป ซีดีรอมเป็นต้น • สื่อที่เป็นที่นิยมแพร่หลาย และมีราคาถูก ได้แก่ ดิสก์ • โครงสร้างของระบบดิสก์สนับสนุนการเข้าถึงข้อมูลแบบสุ่ม (Random access) • โครงสร้างดิสก์สามารถแบ่งพาร์ติชันในการเก็บข้อมูลได้ แต่ละพาร์ติชันมีความเป็นอิสระต่อกัน • สามารถกำหนดให้แต่ละพาร์ติชันมีระบบปฏิบัติการที่ต่างกันได้อีกด้วย
โครงสร้างระบบไฟล์ • ภายในดิสก์จะถูกแบ่งออกเป็นเซ็กเตอร์ (Sector) เริ่มต้นจากเซ็กเตอร์ 0 ซึ่งถือว่าเป็น Master Boot Record (MBR) ที่ใช้เก็บค่าเริ่มต้นของระบบปฏิบัติการสำหรับการบูตเครื่องคอมพิวเตอร์เมื่อเริ่มต้นใช้งาน • ตอนท้ายของเซ็กเตอร์ประกอบด้วยตารางพาร์ติชัน (Partition table) ซึ่งจะเก็บแอ็ดเดรสเริ่มต้น และแอ็ดเดรสสุดท้ายของแต่ละพาร์ติชันเอาไว้ • ในแต่ละพาร์ติชันจะประกอบไปด้วย Boot block โปรแกรมใน Boot block จะทำหน้าที่ในการโหลดระบบปฏิบัติการในพาร์ติชันออกมาทำงาน
โครงสร้างระบบไฟล์ • ทุก ๆ พาร์ติชันจะมี Boot block เป็นของตัวเอง แต่ว่าในพาร์ติชันอาจจะไม่มีระบบปฏิบัติการก็ได้ • โครงสร้างภายในแต่ละพาร์ติชันจะแตกต่างกันขึ้นอยู่กับระบบปฏิบัติการที่ใช้อยู่ซึ่งจะกำหนดโครงสร้างของไฟล์ในดิสก์ในขณะที่ทำการฟอร์แมตดิสก์
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • สิ่งสำคัญสำหรับการจัดเก็บไฟล์ข้อมูลลงบนสื่อเก็บข้อมูลคือ จะต้องทราบว่าแต่ละไฟล์มีการเก็บอย่างไร เก็บไว้ที่ไหน และสามารถเรียกออกมาใช้งานได้อย่างไร • ไฟล์ต่าง ๆ เหล่านั้นมีการจัดเก็บทั้งไฟล์ หรือแต่ละไฟล์ถูกแยกเก็บเป็นบล็อก และบล็อกต่าง ๆ เหล่านั้นจัดเรียงกันอย่างไร
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • การจัดเก็บข้อมูลแบบต่อเนื่อง (Contiguous allocation) • เป็นวิธีการจัดเก็บข้อมูลของไฟล์แบบที่ง่ายที่สุด • แต่ละไฟล์จะถูกแบ่งออกเป็นบล็อก แต่ละบล็อกมีขนาดเท่า ๆ กัน เพื่อง่ายในการบริหารและการเก็บข้อมูล • วิธีการนี้ไฟล์ข้อมูลจะแบ่งออกเป็นบล็อกเก็บลงบนดิสก์อย่างต่อเนื่องทั้งไฟล์ • เช่น ถ้ากำหนดขนาดของบล็อกบนดิสก์ไว้เท่า ๆ กันที่ 1KB ถ้าไฟล์ข้อมูล A มีขนาด 50 KB ดังนั้นสำหรับไฟล์ข้อมูล A จะต้องใช้ 50 บล็อก โดยจะเก็บแบบต่อเนื่องเริ่มจากบล็อกที่ 1 ถึงบล็อกที่ 50
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • การจัดเก็บข้อมูลแบบต่อเนื่อง (Contiguous allocation) • ถ้าข้อมูลของไฟล์ใดเก็บในบล็อกสุดท้ายไม่เต็ม ไฟล์ต่อไปจะต้องเก็บในบล็อกถัดไปเท่านั้น ไม่สามารถเก็บลงบล็อกของไฟล์อื่นได้ • ข้อดีในการเก็บข้อมูลแบบต่อเนื่องที่สำคัญมีอยู่ 2 ประการ คือ • เป็นการจัดเก็บข้อมูลแบบที่ง่ายที่สุด และสะดวกที่สุดเนื่องจากใช้เนื้อต่อเนื่องกันไป ระบบสามารถบันทึกการเก็บข้อมูลด้วยการบันทึกบล็อกแรก และบล็อกสุดท้ายก็เพียงพอแล้ว ภายในต่อเนื่องกันอยู่แล้ว • สร้างประสิทธิภาพได้สูงสุดในการค้นหาข้อมูล เนื่องจากการจัดเก็บบล็อกข้อมูลเรียงต่อเนื่องจึงไม่เสียเวลาในการค้นหาบล็อกทุก ๆ บล็อก เพียงแต่หาบล็อกแรกพบก็สามารถอ่านข้อมูลได้ทั้งไฟล์แล้ว
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • การจัดเก็บข้อมูลแบบต่อเนื่อง (Contiguous allocation) • ข้อเสียของการเก็บข้อมูลแบบนี้ก็คือ ถ้าจำนวนไฟล์ข้อมูลเพิ่มจำนวนมากขึ้น หรือขนาดของข้อมูลเมื่อมีการแก้ไขมีขนาดใหญ่ขึ้น ทำให้ไม่สามารถหาเนื้อที่ในการบรรจุไฟล์ข้อมูลดังกล่าวได้ เนื่องจากมีการจัดเก็บแบบต่อเนื่องกันไป • ถ้ามีการแก้ไขแล้วทำให้ขนาดของไฟล์ใหญ่ขึ้น ต้องย้ายไปเก็บที่อื่น • ทำให้เกิดเนื้อที่ว่างกระจายอยู่ทั่วไป (Fragment) ทำให้ไม่สามารถหาเนื้อที่ว่างในการเก็บข้อมูล • การแก้ไขข้อเสียดังกล่าวทำได้โดยการใช้สื่อประเภทซีดีรอม เนื่องจากยอมให้จัดเก็บข้อมูลเพียงครั้งเดียว (Read Only)
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • การจัดเก็บข้อมูลแบบลิงค์ลิสต์ (Link List Allocation) • วิธีการนี้มีการแบ่งไฟล์ออกเป็นบล็อก ๆ • การจัดเก็บเนื้อที่ของแต่ละบล็อกจะไม่ต่อเนื่องเหมือนวิธีการจัดเรียงกันอย่างต่อเนื่อง • แต่ละบล็อกจะถูกเชื่อมโยงกันด้วยพอยเตอร์ตั้งแต่บล็อกแรกจนกระทั้งบล็อกสุดท้ายของไฟล์ข้อมูลนั้น ๆ • ทำให้ไม่เสียเนื้อที่ว่างภายในดิสก์ ยกเว้นมีเนื้อที่ว่างในแต่ละบล็อก ซึ่งจะมีมากน้อยเพียงใดขึ้นอยู่กับการหาขนาดที่เหมาะสมของบล็อกข้อมูล และจะเกิดกับบล็อกสุดท้ายของแต่ละไฟล์เท่านั้น
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • การจัดเก็บข้อมูลแบบลิงค์ลิสต์ (Link List Allocation) • ข้อเสียที่สำคัญคือเสียเวลากับการค้นหาแต่ละบล็อกข้อมูล เนื่องจากแต่ละบล็อกอยู่กระจัดกระจายทั่วไปบนดิสก์ • วิธีการเก็บข้อมูลแบบนี้ยังเสียเนื้อที่ไปกับพอยเตอร์ที่ทำหน้าที่ชี้ไปยังบล็อกต่าง ๆ ด้วย • ในขณะที่ระบบทำการอ่านข้อมูลระบบจะต้องทำการก็อปปี้ตารางบันทึกการจัดเก็บไฟล์ที่เรียกว่า FAT (File Allocation Table) ลงบนหน่วยความจำก่อนที่จะทำการอ่านข้อมูลจากดิสก์
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • การจัดเก็บข้อมูลแบบลิงค์ลิสต์ (Link List Allocation)
A = 4-7-2-10-12 B = 6-3-11-14
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • ไอโหนด(I-nodes หรือ Index node) • ใช้ในระบบปฏิบัติการ UNIX โดยการสร้างตารางเล็กเรียกว่า “ไอโหนด” (I-node) ให้กับแต่ละไฟล์ • ไอโหนดจะเก็บข้อมูลต่าง ๆ ที่เกี่ยวข้องกับไฟล์เอาไว้ • ภายในไอโหนดจะมีหมายเลขบล็อก 4 แบบ • แบบ direct 10 หมายเลข • แบบ single direct 1 หมายเลข • แบบ double direct 1 หมายเลข • แบบ triple direct 1 หมายเลข
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • ไอโหนด(I-nodes หรือ Index node) • ไฟล์ข้อมูลขนาดไม่เกิน 10 KB • หมายถึงแต่ละหมายเลขจะเก็บหมายเลขของแต่ละบล็อกไว้ 10 บล็อก • ถ้าแต่ละบล็อก มีขนาด 1 KB ทั้ง 10 หมายเลข จะเก็บข้อมูลได้ 10 KB • ถ้าขนาดไฟล์ข้อมูลไม่ เกิน 10 KB จะสามารถใช้ ไอโหนดแบบ direct ก็เพียงพอแล้ว
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • ไอโหนด(I-nodes หรือ Index node) • ไฟล์ข้อมูลขนาดใหญ่กว่า 10 KB แต่ไม่เกิน 266 KB (10+256 KB) • จะมีหมายเลขบล็อกแบบ direct 10 หมายเลข และแบบ single direct 1 หมายเลข • แบบ direct 10 หมายเลข สามารถอ้างจำนวนบล็อกได้ 10 บล็อก บวกกับ single direct สมมุติว่า 1 หมายเลขของ single direct มีขนาด 1 KB (1024 byte) แต่ละบล็อกใช้พอยเตอร์ 4 ไบต์ ในการเชื่อมโยงแต่ละบล็อกเป็นลิงค์ลิสต์ของไฟล์ข้อมูลเข้าด้วยกัน ดังนั้นในแต่ละบล็อกสามารถเก็บจำนวนลิงค์ได้เท่ากับ 1024 /4 = 256 หมายเลข
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • ไอโหนด(I-nodes หรือ Index node) • ไฟล์ข้อมูลขนาดใหญ่กว่า 266 KB แต่ไม่เกิน 65802KB (10+256 + (256*256)KB) • จะมีหมายเลขบล็อกแบบ direct 10 หมายเลข, แบบ single direct 1 หมายเลข และแบบ double direct 1 หมายเลข • สำหรับแบบ double direct สามารถใช้เก็บจำนวนบล็อกได้ถึง 256 * 256 บล็อก
วิธีการจัดเก็บข้อมูลของไฟล์วิธีการจัดเก็บข้อมูลของไฟล์ • ไอโหนด(I-nodes หรือ Index node) • ไฟล์ข้อมูลขนาดใหญ่กว่าเกินกว่า 65802 KB • ใช้ไอโหนดแบบ triple direct 1 หมายเลข • สามารถเพิ่มจำนวนบล็อกได้อีก 256*256*256 ซึ่งจะเท่ากับ 16 GB
โครงสร้างไดเร็กทอรี • ไดเร็กทอรีใช้เป็นที่เก็บรวบรวมไฟล์ข้อมูลต่าง ๆ เข้าไว้ด้วยกัน • ก่อนที่จะเปิดไฟล์เพื่อทำการใด ๆ จะต้องทราบว่าไฟล์ต่าง ๆ เหล่านั้นเก็บอยู่ที่ใด หรือในไดเร็กทอรีใด • ผู้ใช้จะต้องระบุพาธของไดเร็กทอรีนั้นเสียก่อน เพื่อเป็นการระบุบล็อกต่าง ๆ ที่เก็บไว้ในไดเร็กทอรีนั้น • แต่ละไฟล์ที่เก็บในไดเร็กทอรีสามารถเข้าถึงบล็อกต่าง ๆ ของไฟล์ได้โดยการอ้างชื่อไฟล์ • ไฟล์หนึ่ง ๆ จะมีชื่อเรียกได้เพียงชื่อเดียว หรือไม่ก็ใช้นามสกุลเป็นการแยกประเภทของไฟล์
โครงสร้างไดเร็กทอรี • การสร้างไฟล์เป็นการจัดสรรเนื้อที่บนดิสก์ไห้กับไฟล์นั้น • ไดเร็กทอรีจำเป็นจะต้องรู้และสามารถตรวจสอบได้ว่าไฟล์ในไดเร็กทอรีของตัวเองนั้นเก็บอยู่ที่ใด ทำให้ต้องมีตารางบันทึกไฟล์ต่าง ๆ เอาไว้ • ภายในตารางไดเร็กทอรีจะประกอบไปด้วยชื่อไฟล์ และคุณลักษณะไฟล์ (File attribute) ว่าเป็นไฟล์ประเภทใด เก็บอยู่ในบล็อกใด • รูปแบบการเก็บชื่อไฟล์และคุณลักษณะของไฟล์มี 2 แบบ • เก็บชื่อไฟล์และคุณลักษณะไฟล์ไว้ด้วยกัน • เก็บชื่อไฟล์และพอยเตอร์ของไฟล์ไปยังบล็อกต่าง ๆ
โครงสร้างไดเร็กทอรี • การเก็บชื่อไฟล์ และคุณลักษณะไฟล์ไว้ด้วยกันนี้ • ภายในตารางแต่ละไฟล์จะเก็บชื่อไฟล์ที่มีขนาดตามที่กำหนดไว้ขนาดหนึ่ง (ใน MS-DOS 8.3) ตามด้วยคุณลักษณะไฟล์จะบอกถึงบล็อกต่าง ๆ ที่ใช้เก็บไฟล์มีจำนวนบล็อกเท่าไรจะถูกระบุลงไปในตารางด้วยกัน • ไฟล์ยิ่งมีขนาดใหญ่ จำนวนบล็อกที่ใช้ยิ่งเพิ่มขึ้นตามขนาดของไฟล์ • เกิดปัญหาว่าจะกำหนดขนาดของตารางนี้อย่างไร
โครงสร้างไดเร็กทอรี • เก็บชื่อไฟล์และพอยเตอร์ไฟล์ไว้ด้วยกัน • วิธีนี้ทำให้ขนาดข้อมูลในตาราง File attribute มีขนาดคงที่ • พอยเตอร์ในตารางจะชี้ไปยังเนื้อที่ที่เรียกว่า “ฮีพ” (heap) ซึ่งใช้เก็บบล็อกต่าง ๆ ของไฟล์ ทำให้ขนาดของไฟล์ ใหญ่เท่าใดก็ได้จะไม่มีผลต่อการจัดเก็บในตาราง • เนื้อที่บริเวณฮีพเป็นการจองเนื้อที่แบบไดนามิก ซึ่งจะมีการจองและคืนเนื้อที่อยู่ตลอดเวลา
การใช้ไฟล์ร่วม • ถ้ามีผู้ใช้ไฟล์ในระบบหลาย ๆ คน --> ก็อปปี้ไฟล์เหล่านี้ให้ทุกคน • วิธีการนี้ไม่สะดวกและทำให้เปลืองเนื้อที่จัดเก็บเป็นอย่างมาก • ถ้ามีผู้ใช้คนใดคนหนึ่งต้องการแก้ไขไฟล์นี้ ก็จะต้องไปบอกกับทุก ๆ คนให้ทำการแก้ไขตามไปด้วยหรือไม่ก็ให้มาก็อบปี้ไฟล์นี้ไปใหม่ • ทำให้เสียเวลา และเกิดความยากลำบากในการทำงาน ถ้าไม่ประสานงานกันให้ดีจะทำให้เกิดข้อผิดพลาดและเกิดความเสียหายได้ • วิธีแก้ปัญหานี้คือการใช้งานในลักษณะ “ไฟล์ร่วม” (shared files) • โดยเก็บไฟล์ที่ใช้งานร่วมกันนี้ไว้ในไดเร็กทอรี่ที่เป็นส่วนกลางให้ทุกคนสามารถเข้าถึงได้ --> สะดวกและประหยัดเวลาในการทำงาน
การใช้ไฟล์ร่วม • ไฟล์ในไดเร็กทอรี A และในไดเร็กทอรี B จะถูกใช้ร่วมกันด้วยการเชื่อมต่อระหว่างไดเร็กทอรี A และไฟล์ในไดเรกทอรี B เรียกการ “ลิงค์” (link) • โครงสร้างของระบบไดเร็กทอรีเปลี่ยนไปไม่เป็นแบบต้นไม้ • แต่จะเป็นโครงสร้างที่เรียกว่า Direct Acyclic Graph หรือ DAG • วิธีการลิงค์ขึ้นอยูกับโครงสร้างไดเร็กทอรีของระบบไฟล์ • ใน UNIX สามารถทำการลิงค์ได้ง่ายมากด้วยการกำหนดชื่อไฟล์และก็อบปี้ไอโหนดไปยังไดเร็กทอรีที่ต้องการใช้ไฟล์ร่วมกัน พร้อมกับการเพิ่มจำนวนลิงค์ลงไปที่ไอโหนด • ทำให้เข้าถึงไฟล์ข้อมูลเดียวกันได้ทั้งหมด