1 / 55

Operating System

Operating System. บทที่ 10 ส่วนต่อประสานของระบบแฟ้มข้อมูล (FILE-SYSTEM INTERFACE). แนวความคิดเกี่ยวกับแฟ้มข้อมูล (File Concept). แฟ้มข้อมูลถูกกำหนดเป็นโครงสร้าง ตามชนิดของข้อมูล Text file คือ ลำดับของตัวอักษรที่เรียงกันในบรรทัด ( หรือหน้า )

adamdaniel
Download Presentation

Operating System

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operating System บทที่ 10 ส่วนต่อประสานของระบบแฟ้มข้อมูล (FILE-SYSTEM INTERFACE)

  2. แนวความคิดเกี่ยวกับแฟ้มข้อมูล (File Concept) • แฟ้มข้อมูลถูกกำหนดเป็นโครงสร้าง ตามชนิดของข้อมูล • Text fileคือ ลำดับของตัวอักษรที่เรียงกันในบรรทัด (หรือหน้า) • Source fileคือ ลำดับของโปรแกรมย่อย (subroutine) และฟังก์ชัน(อาจเป็นการประกาศค่าตามประโยค) • Object file คือ ลำดับของไบต์ ที่จัดเรียงในบล็อคที่ตัวเชื่อมโยง (linker) ของระบบเข้าใจ • Executable fileคือ ลำดับของส่วนของรหัสโปรแกรมซึ่งตัว load โปรแกรม (loader) นำเข้ามายังหน่วยความจำและสั่งให้ทำงาน (execute)

  3. คุณลักษณะของแฟ้มข้อมูล (File attributes) • ชื่อ (Name) – ชื่อแฟ้มข้อมูลคือ สัญลักษณ์ (สารสนเทศ) ที่เก็บไว้ในรูปแบบที่มนุษย์สามารถอ่านได้ • ชนิด (Type) – ส่วนนี้จำเป็นสำหรับระบบซึ่งสนับสนุนชนิดของข้อมูลหลายๆชนิด • ตำแหน่ง (Location) - เป็นตัวชี้ไปยังอุปกรณ์และตำแหน่งของแฟ้มข้อมูลบนอุปกรณ์นั้น • ขนาด (Size) – ขนาดของแฟ้มข้อมูลในปัจจุบัน (ไบต์, คำหรือบล็อค) • การป้องกัน (protection) – การควบคุมให้สามารถ อ่าน เขียน ทำงาน ฯลฯ

  4. คุณลักษณะของแฟ้มข้อมูล (File attributes) • เวลา วันที่ และเอกลักษณ์เฉพาะของผู้ใช้ (Time , date , and user identification) • – เก็บข้อมูลพวก วันที่ สร้างแฟ้มนี้ขึ้นมา , ปรับปรุงครั้งสุดท้ายเมื่อไหร่, และใช้ครั้งสุดท้ายเมื่อไหร่ • ข้อมูลเหล่านี้จะเป็นประโยชน์ในเรื่องการป้องกัน, การรักษาความปลอดภัยและการควบคุมการใช้งาน

  5. การทำงานของแฟ้มข้อมูล(File Operation) • การสร้างแฟ้มข้อมูล (Creating a file) • หาที่ว่างในระบบแฟ้มข้อมูล • ช่องว่างของแฟ้มข้อมูลใหม่ต้องถูกสร้างในไดเรกทอรี (ไดเรกทอรีจะบันทึกชื่อแฟ้ม และตำแหน่งในระบบแฟ้มข้อมูล)

  6. การเขียนแฟ้มข้อมูล (Writing a file) • ใช้การเรียกระบบให้เจาะจง ชื่อแฟ้มและสารสนเทศที่จะถูกเขียนลงแฟ้มข้อมูลโดยระบบจะค้นหาไดเรกทอรี เพื่อหาตำแหน่งของแฟ้มข้อมูลระบบต้องเก็บ write pointer เพื่อระบุตำแหน่งถัดไปที่จะต้องเขียน

  7. การอ่านแฟ้มข้อมูล (Reading a file) • ใช้การเรียกระบบเพื่อเจาะจงชื่อแฟ้มและที่ซึ่ง(ในหน่วยความจำ) บล็อคถัดไปของแฟ้มข้อมูลควรจะอยู่ จากนั้นไดเรกทอรีจะถูกค้นหาและระบบจะเก็บ read pointer เพื่อระบุตำแหน่งถัดไปที่ต้องอ่าน โดยทั่วไปแฟ้มที่ถูกอ่านหรือเขียนระบบส่วนใหญ่มักเก็บ pointer ไว้ตัวเดียว ที่ใช้ทั้งอ่านและเขียนได้เรียกว่า “ตัวชี้ตำแหน่งแฟ้มปัจจุบัน” (current-file-position pointer) เพื่อประหยัดพื้นที่และลดความซับซ้อนของระบบ

  8. การย้ายตำแหน่งภายในแฟ้มข้อมูล (Repositioning within a file) • เริ่มจากค้นหาไดเรกทอรีที่ต้องการและกำหนดค่าให้ตัวชี้ตำแหน่งแฟ้มปัจจุบันการย้ายตำแหน่งภายในแฟ้มข้อมูลไม่จำเป็นต้องเกี่ยวข้องกับ I/O จริงๆเลยการทำงานของแฟ้มนี้เรียกว่า การค้นหา (seek) ข้อมูล

  9. การลบแฟ้มข้อมูล (Deleting a file) • เริ่มจากการค้นหาไดเรกทอรีที่มีชื่อจากแฟ้มที่จะลบเมื่อพบแล้วเราก็ปลดปล่อยที่ว่างทั้งหมดของแฟ้มนั้น (ดังนั้นที่ว่างดังกล่าวก็สามารถให้แฟ้มอื่นใช้งานได้) และลบข้อมูลนั้นในไดเรกทอรีทิ้ง

  10. การตัดแฟ้มข้อมูลให้สั้นลง (truncating a file) • เมื่อผู้ใช้ต้องการให้แฟ้มข้อมูลมีคุณลักษณะเหมือนเดิม แต่ต้องการลบเนื้อหาของแฟ้มข้อมูลแทนที่จะลบและสร้างใหม่ เราสามารถใช้ฟังก์ชันนี้เพื่อให้คุณลักษณะต่างๆ ยังคงอยู่ (ยกเว้นความยาวของแฟ้มข้อมูลจะถูกตั้งใหม่ให้มีความยาวเป็นศูนย์

  11. โดยสรุปมีสารสนเทศหลายส่วนที่เกี่ยวข้องกับการกับการเปิดแฟ้มข้อมูล ดังนี้ • ตัวชี้แฟ้มข้อมูล (File pointer) – ระบบซึ่งไม่มีระยะห่างจากขอบของแฟ้มข้อมูล (file offset) ที่เป็นส่วนหนึ่งของคำสั่งเรียกระบบ read และ write ระบบต้องตามรอยตำแหน่งที่อ่านหรือเขียนเป็นครั้งสุดท้ายเหมือนตัวชี้ตำแหน่งแฟ้มข้อมูลปัจจุบัน (current-file-position pointer) • การนับการเปิดแฟ้มข้อมูล (File open count) - เมื่อแฟ้มข้อมูลถูกปิด ระบบปฏิบัติงานต้องใช้ช่องของตารางเปิดแฟ้มข้อมูล (open file table ) อีกครั้ง หรือไม่ก็ใช้ที่ว่างในตาราง เพราะกระบวนการหลายๆ กระบวนการอาจจะเปิดแฟ้มข้อมูลระบบต้องรอให้แฟ้มสุดท้ายปิดก่อนจะลบช่องในตารางเปิดแฟ้มสุดท้าย ระบบจึงจะลบช่อง (entry) ได้

  12. โดยสรุปมีสารสนเทศหลายส่วนที่เกี่ยวข้องกับการกับการเปิดแฟ้มข้อมูล ดังนี้ • ตำแหน่งของแฟ้มข้อมูลบนดิสก์ (Disk location of the file) – การทำงานของแฟ้มข้อมูลส่วนใหญ่ต้องการให้ระบบปรับปรุงข้อมูลภายในแฟ้มข้อมูลสารสนเทศที่จำเป็นสำหรับระบุตำแหน่งแฟ้มข้อมูลบนดิสก์ถูกเก็บไว้ในหน่วยความจำเพื่อหลีกเลี่ยงที่จะต้องอ่านจากดิสก์สำหรับการทำงานแต่ละครั้ง

  13. ชนิดของแฟ้มข้อมูล(File types) • เทคนิคทั่วๆไปสำหรับการนำชนิดของแฟ้มข้อมูลไปใช้ คือการรวมชนิดเข้าเป็นส่วนหนึ่งของชื่อแฟ้มข้อมูล ชื่อจะถูกแบ่งเป็น 2 ส่วนคือ ชื่อ และ นามสกุล(extension) โดยทั่วไปจะแยกกันโดยใช้ (.) ดูรูป 10.1

  14. ชนิดของแฟ้มข้อมูล(File types)

  15. โครงสร้างของแฟ้มข้อมูล (File structure) • แฟ้มข้อมูลต้องมีโครงสร้างที่ระบบปฏิบัติการเข้าใจได้ เช่น ระบบปฏิบัติการ อาจต้องการ executable file ที่มีโครงสร้างเฉพาะเพื่อเอาไปกำหนดว่าจะ load แฟ้มข้อมูลว่าไว้ยังตำแหน่งใดในหน่วยความจำและตำแหน่งของคำสั่งแรก คืออะไร • ตัวอย่างหนึ่งของระบบปฏิบัติการที่สนับสนุน โครงสร้างของแฟ้มข้อมูลเล็กน้อยคือ Macintosh ซึ่งแฟ้มข้อมูลมี 2 ส่วน คือ resource fork และ data fork • resource fork บรรจุสารสนเทศที่ผู้ใช้สนใจ เช่น ตัวฉลากบนปุ่มที่แสดงโดยโปรแกรมผู้ใช้ต่างประเทศอาจจะต้องการเปลี่ยนฉลากนั้นเป็นภาษาของเขาเองซึ่ง Macintosh สนับสนุนเครื่องมือที่อนุญาตให้ปรับปรุงข้อมูลใน resource fork ได้ • data fork บรรจุโปรแกรม , รหัสโปรแกรม (code) หรือข้อมูล(เนื้อหาของแฟ้มข้อมูลทั่วไป)

  16. โครงสร้างของแฟ้มข้อมูลภายใน(Internal file structure) • ในระบบดิสก์ มักมีขนาดของบล็อคที่กำหนดโดย ขนาดของ เซกเตอร์ disk I/O ถูกแบ่งเป็นหน่วยของบล็อค (physical record) และทุกบล็อคมีขนาดเท่ากัน โดย physical record จะต้องตรงกับความยาวของ logical record การห่อ (packing) จำนวนของ logical record ไปสู่ physical block เป็นวิธีโดยทั่วไปในการแก้ปัญหานี้ • ขนาดของ logical record ขนาดของ physical block และเทคนิค packing เป็นตัวกำหนดว่า logical record จำนวนเท่าไรที่จะอยู่ในแต่ละ physical block การห่อ (packing) สามารถทำได้โดยโปรแกรมประยุกต์ของผู้ใช้หรือโดยระบบปฏิบัติการ

  17. วิธีการเข้าถึงแฟ้มข้อมูล (Access Methods) การเข้าถึงข้อมูลแบบเรียงลำดับ • (Sequential access) • สารสนเทศในแฟ้มข้อมูลถูกดึงเข้าถึงเป็นลำดับ • การทำงาน (operation) บนแฟ้มข้อมูลคือ อ่าน และเขียน ตัวอ่าน จะอ่านส่วนถัดไปของแฟ้ม และเปลี่ยนค่าตัวชี้แฟ้มข้อมูลโดยอัตโนมัติตามตำแหน่งของ I/O คล้ายๆ กับการเขียนต่อท้ายแฟ้มข้อมูลแต่ละแฟ้มข้อมูลสามารถกลับ ไปเริ่มต้นใหม่และบางระบบโปรแกรมอาจจะสามารถข้ามไปข้างหน้าหรือข้างหลัง N ระเบียน (record) ได้ เมื่อ N คือเลขจำนวนเต็ม

  18. การเข้าถึงแฟ้มข้อมูลโดยตรง (Direct Access) • หรือการเข้าถึงแฟ้มข้อมูลแบบสัมพันธ์ (relative access) แฟ้มข้อมูลถูกสร้างขึ้นเป็น logical record ที่มีความยาวคงที่ ซึ่งอนุญาตให้โปรแกรมอ่านและเขียนระเบียนอย่างรวดเร็วโดยไม่มีลำดับ การเข้าถึงแฟ้มข้อมูลโดยตรงเป็นพื้นฐานของดิสก์ เมื่อดิสก์อนุญาตให้เข้าถึงบล็อคของแฟ้มข้อมูลแบบสุ่ม สำหรับการเข้าถึงแฟ้มข้อมูลโดยตรง แฟ้มข้อมูลจะถูกมองเป็นจำนวนของบล็อคหรือระเบียนดังนั้นเราอาจจะอ่านบล็อค 14 แล้วอ่านบล็อค 53 แล้วเขียน บล็อค 7 ได้

  19. ระบบโดยทั่วไปไม่สนับสนุนทั้งแบบเรียงลำดับและโดยตรงบางระบบสนับสนุนแบบเรียงลำดับ บางระบบเป็นแบบโดยตรงบางระบบต้องการให้ เมื่อเริ่มสร้างแฟ้มข้อมูลก็กำหนดไปเลยว่าเป็นแบบเรียงลำดับหรือโดยตรง อย่างไรก็ตาม มันก็ไม่ยากที่จะจำลองสถานการณ์จากแบบเรียงลำดับให้เป็นแบบโดยตรง ถ้าเรามีตัวแปร cp เป็นตัวกำหนดตำแหน่งปัจจุบันของเรา ดังนั้นเราสามารถจำลองการทำงานของแฟ้มแบบเรียงลำดับได้ดังรูป10.3

  20. การเข้าถึงข้อมูลแบบอื่น(Other Access Methods) • วิธีเสริมนี้เกี่ยวข้องกับการสร้างดัชนี (index) ให้แฟ้มข้อมูล ดัชนีนี้ (เหมือนดัชนีท้ายหลังหนังสือ) บรรจุตัวชี้ บล็อคในการหาระเบียนในแฟ้มข้อมูล ขั้นแรกเราต้องค้นหาดัชนีแล้วใช้ตัวชี้ในการเข้าถึงแฟ้มข้อมูลโดยตรงและหาระเบียนที่ต้องการ • ถ้าแฟ้มข้อมูลมีขนาดใหญ่ แฟ้มดัชนีก็ต้องมีขนาดใหญ่เกินจะเก็บไว้ในหน่วยความจำได้ วิธีแก้วิธีหนึ่ง คือ สร้างดัชนีสำหรับแฟ้มดัชนี (index file) แฟ้มข้อมูลปฐมภูมิ (primary index file) ควรจะบรรจุตัวชี้ไปยังแฟ้มข้อมูลทุติยภูมิ (secondary index file) ซึ่งควรจะชี้ไปยังข้อมูลจริง

  21. การเข้าถึงข้อมูลแบบอื่น(Other Access Methods)

  22. โครงสร้างของไดเรคทอรี (Directory Structure) • การจัดการข้อมูลเป็น 100 gigabyte ของดิสก์ ต้องทำเป็น 2 ส่วน • ระบบแฟ้มข้อมูลต้องแบ่งเป็น partitions ใน IBM เรียก minidisks ใน PC และ Macintosh เรียก Volume โดยทั่วไป แต่ละดิสก์บนระบบบรรจุอย่างน้อย 1 partition ผู้ใช้จำเป็นต้องเกี่ยวข้องแต่ logical directory และโครงสร้างของแฟ้มข้อมูล และสามารถมองข้ามปัญหาทางกายภาพในการจัดการพื้นที่ว่างของแฟ้มข้อมูลด้วยเหตุนี้ partition ก็สามารถมองเป็นดิสก์เสมือนได้ (virtual disk) • แต่ละ partition บรรจุสารสนเทศเกี่ยวกับ แฟ้มข้อมูลภายใน partition สารสนเทศถูกเก็บในช่องใน device directory หรือ เนื้อหาของตารางจำนวน (volume table of contents) device directory (โดยทั่วไปเรียก”ไดเรคทอรี”) บันทึกสารสนเทศ เช่น ชื่อ , ตำแหน่ง, ขนาด และชนิดของแฟ้มข้อมูลใน partition รูป 10.5 แสดงตัวอย่างการจัดระเบียบของระบบแฟ้มข้อมูล

  23. โครงสร้างของไดเรคทอรี (Directory Structure)

  24. การทำงานของไดเรกทอรีมีดังนี้คือการทำงานของไดเรกทอรีมีดังนี้คือ • ค้นหาแฟ้มข้อมูล (Search for a file) – เราอาจต้องหาแฟ้มที่มีชื่อตรงกับที่เราต้องการ • สร้างแฟ้มข้อมูล (Create a file) – แฟ้มข้อมูลใหม่จำเป็นต้องถูกสร้างและเพิ่มเข้าในไดเรกทอรี • ลบแฟ้มข้อมูล (Delete a file) – เมื่อแฟ้มข้อมูลไม่ต้องการแล้ว เราต้องลบมันออกจากไดเรกทอรี • แสดงไดเรกทอรี (List a directory) – เราต้องสามารถแสดงชื่อแฟ้มข้อมูลในไดเรกทอรีและเนื้อหาของไดเรกทอรี สำหรับแต่ละแฟ้มในรายการ

  25. การทำงานของไดเรกทอรีมีดังนี้คือการทำงานของไดเรกทอรีมีดังนี้คือ • เปลี่ยนชื่อแฟ้มข้อมูล (Rename a file) – เพราะว่าชื่อแฟ้มข้อมูลเป็นตัวแทนของเนื้อหาของผู้ใช้ ดังนั้นชื่อจะต้องเปลี่ยนเมื่อเนื้อหาหรือการใช้แฟ้มข้อมูลเปลี่ยนไป • การข้ามระบบแฟ้มข้อมูล (Traverse the file system) – มันเป็นความคิดที่ดีที่จะรักษาเนื้อหาและโครงสร้างของระบบแฟ้มข้อมูลทั้งหมด การรักษานี้มักทำได้โดยการคัดลอกแฟ้มข้อมูลทั้งหมดลงเทปแม่เหล็ก เทคนิคนี้เป็นการ backup ในกรณีที่ระบบล่มหรือแฟ้มข้อมูลเสีย ในกรณีนี้แฟ้มข้อมูลควรถูกคัดลอกลงเทป และพื้นที่ว่างในดิสก์ของแฟ้มเหล่านั้นก็จะถูกปล่อยให้แฟ้มอื่นได้ใช้

  26. ไดเรกทอรีระดับเดียว(Single-Level Directory) • แฟ้มข้อมูลทั้งหมดถูกเก็บไว้ในไดเรกทอรีเดียวกัน (ดังรูปที่ 10.6) ไดเรกทอรีระดับเดียวมีข้อจำกัดอย่างมีนัยสำคัญ เมื่อแฟ้มข้อมูลมีมากขึ้นหรือมีผู้ใช้มากกว่า 1 คน ถ้าแฟ้มข้อมูลทั้งหมดอยู่ในไดเรกทอรีเดียวกัน แฟ้มเหล่านั้นต้องมีชื่อเฉพาะตัว ถ้ามีผู้ใช้ 2 คน เรียกแฟ้มข้อมูลชื่อ test ของตัวเอง (คนละไฟล์ชื่อเดียวกัน) ดังนั้น กฎชื่อเฉพาะตัวก็ถูกทำลายลง นอกจากนั้นยังมีข้อจำกัดในเรื่องความยาว ในระบบ MS-DOS ชื่อแฟ้มข้อมูลยาวได้ไม่เกิน 11 ตัวอักษร (รวมนามสกุล) UNIX 255 ตัวอักษร

  27. ไดเรกทอรีระดับเดียว(Single-Level Directory)

  28. ไดเรกทอรีสองระดับ(Two-Level Directory) • ข้อเสียของไดเรกทอรีระดับเดียวคือความสับสนของชื่อแฟ้มข้อมูลระหว่างผู้ใช้ต่าง ๆ วิธีแก้พื้นฐานคือการสร้างไดเรกทอรีแยกกันให้ผู้ใช้แต่ละคน • ในโครงสร้างไดเรกทอรีสองระดับ ผู้ใช้แต่ละคนจะมี user file directory ของตัวเอง (UFD) แต่ละ UFD มีโครงสร้างคล้าย ๆ กัน แต่แสดงรายการแฟ้มข้อมูลของผู้ใช้คนเดียว เมื่องานของผู้ใช้เริ่มขึ้นหรือผู้ใช้ log in เข้ามา master file directory (MFD) ของระบบจะถูกค้นหา MFD ถูกระบุโดยชื่อของผู้ใช้ (user name) หรือหมายเลขบัญชี (account number) และแต่ละช่องชี้ไปยัง UFD สำหรับผู้ใช้นั้น (ดังรูปที่ 10.7)

  29. ไดเรกทอรีสองระดับ(Two-Level Directory)

  30. ไดเรกทอรีสองระดับ(Two-Level Directory) • การระบุชื่อแฟ้มข้อมูลในไดเรกทอรีสองระดับ เราต้องให้ทั้งชื่อของผู้ใช้และชื่อแฟ้มข้อมูล ไดเรกทอรีสองระดับสามารถมองเป็นต้นไม้ ราก (root) ของต้นไม้คือ MFD ทายาทโดยตรงคือ UFD ทางยากของ UFD คือ แฟ้มข้อมูลของตัวมันเอง แฟ้มข้อมูลคือใบไม้ของต้นไม้นั่งเอง ชื่อของผู้ใช้และชื่อของแฟ้มข้อมูลกำหนดเส้นทาง (path) ในต้นไม้จากราก (MFD) สู่ใบ (แฟ้มที่ต้องการ) ดังนั้นชื่อของผู้ใช้และชื่อไฟล์กำหนดชื่อของเส้นทาง (path name) แฟ้มข้อมูลทุกแฟ้มในระบบมีชื่อของเส้นทาง เพื่อระบุชื่อแฟ้มข้อมูลที่มีลักษณะเฉพาะ ผู้ใช้ต้องรู้ชื่อของเส้นทางของแฟ้มที่ต้องการ

  31. ไดเรกทอรีสองระดับ(Two-Level Directory) • ตัวอย่างในระบบ MS-DOS อาจเป็น “C:\userb\test” แยกเป็น partition , ชื่อของไดเรกทอรี , และ ชื่อแฟ้มข้อมูล ในระบบ VMS ไฟล์ “login.com” อาจเป็น “u:[sst.jdeck]login.com;1” u คือชื่อของ partition , “sst” คือ ชื่อไดเรกทอรี , “jdeck” คือ ชื่อของไดเรกทอรีย่อย (subdirectory) และ “1” คือ หมายเลขเวอร์ชัน

  32. ไดเรกทอรีที่มีโครงสร้างแบบต้นไม้(Tree-Structured Directories)

  33. ไดเรกทอรีที่มีโครงสร้างแบบต้นไม้(Tree-Structured Directories) • ในการใช้งานปกติ ผู้ใช้แต่ละคนจะมี “ไดเรกทอรีปัจจุบัน” (current directory) ซึ่งใช้เก็บแฟ้มข้อมูลที่ผู้ใช้สนใจในปัจจุบัน เมื่อมีการอ้างอิงแฟ้มข้อมูลก็จะเกิดการค้นหาไดเรกทอรีปัจจุบัน ถ้าแฟ้มข้อมูลที่ต้องการไม่มีในไดเรกทอรีปัจจุบัน ผู้ใช้ต้องระบุชื่อของเส้นทาง (path name) หรือเปลี่ยนไดเรกทอรีปัจจุบันไปเป็นไดเรกทอรีอื่น โปรแกรมเรียกระบบจะทำให้ชื่อไดเรกทอรีเป็นเหมือนพารามิเตอร์และใช้มันเพื่อกำหนดไดเรกทอรีปัจจุบันใหม่ ดังนั้นผู้ใช้จึงสามารถเปลี่ยนไดเรกทอรีปัจจุบันของเขาได้ตามต้องการ

  34. ไดเรกทอรีที่มีโครงสร้างแบบต้นไม้(Tree-Structured Directories) • ชื่อของเส้นทาง (path name) มี 2 ชนิด คือ ชื่อของเส้นทางแบบสัมบูรณ์ (absolute path name) หรือ ชื่อของเส้นทางแบบสัมพันธ์ (relative path name) ชื่อของเส้นทางแบบสัมบูรณ์ เริ่มต้นที่ root แล้วเดินทางลงมาจนถึงแฟ้มข้อมูลที่ต้องการ มีการกำหนดชื่อของไดเรกทอรีตลอดทาง ชื่อของเส้นทางแบบสัมพันธ์ กำหนดเส้นทางจากไดเรกทอรีปัจจุบัน ตัวอย่างเช่น จากรูปที่ 10.8 ถ้าไดเรกทอรีปัจจุบันคือ root/spell/mail ดังนั้นชื่อของเส้นทางแบบสัมพันธ์คือ prt/first อ้างถึงแฟ้มข้อมูลเดียวกันกับชื่อของเส้นทางแบบสัมบูรณ์ดังนี้คือ root/spell/mail/prt/first

  35. ไดเรกทอรีที่มีโครงสร้างแบบต้นไม้(Tree-Structured Directories) • นโยบายในการลบไดเรกทอรีของโครงสร้างแบบต้นไม้นี้ ถ้าไดเรกทอรีว่าง การลบไดเรกทอรีก็ทำได้ง่าย แต่ถ้าไดเรกทอรีไม่ว่าง มีไฟล์หลายไฟล์ หรือมีหลายไดเรกทอรีย่อย วิธีการจัดการคือ • บางระบบ เช่น MS-DOS จะลบไดเรกทอรีไม่ได้ถ้ามันไม่ว่าง ดังนั้นภ้าจะลบไดเรกทอรี ผู้ใช้ต้องลบไฟล์ทั้งหมดในไดเรกทอรีก่อน ถ้ามีไดเรกทอรีย่อยอยู่ ก็ต้องลบไฟล์ในไดเรกทอรีย่อยให้หมดก่อน แล้วจึงลบไดเรกทอรีย่อยขึ้นมาจนถึงการลบไดเรกทอรีที่ต้องการลบ วิธีนี้ทำให้ต้องทำงานจำนวนมาก

  36. ไดเรกทอรีที่มีโครงสร้างแบบต้นไม้(Tree-Structured Directories) • อีกวิธีหนึ่ง เช่น ในระบบ UNIX คำสั่ง rm ใช้ลบไดเรกทอรี ซึ่งทั้งไฟล์และไดเรกทอรีย่อยของ ไดเรกทอรีนั้นจะถูกลบทั้งหมด จะเห็นได้ว่าวิธีนี้น่าจะดีในการนำไปใช้ เพราะสะดวก แต่อันตรายมากเพราะทุกไดเรกทอรีสามารถถูกลบได้ด้วยคำสั่งคำสั่งเดียว ถ้าคำสั่งเกิดผิดพลาด ไฟล์และไดเรกทอรีจำนวนมากจำเป็นที่จะต้องกู้กลับมาจาก backup เทป

  37. ไดเรกทอรีกราฟแบบไม่เป็นวงจร(Acyclic-Graph Directory) • พิจารณานักเขียนโปรแกรม 2 คน ที่ทำงานโครงการร่วมกัน แฟ้มข้อมูลที่เกี่ยวกับโครงการนี้เก็บไว้ในไดเรกทอรีย่อยที่แยกมาจากโครงการอื่น แต่นักเขียนโปรแกรมทั้งสองมีความรับผิดชอบต่อโครงการนี้เท่ากัน ทั้งคู่ต้องการไดเรกทอรีย่อยนี้เป็นของตัวเอง ซึ่งไดเรกทอรีย่อยนี้ควรจะถูกใช้ร่วมกัน (share) การใช้แฟ้มข้อมูลหรือไดเรกทอรีร่วมกัน ไม่ได้เหมือนกับการมี 2 สำเนา แต่หมายถึงมีของจริงอยู่เพียงหนึ่งเดียว การเปลี่ยนแปลงที่ทำโดยคน ๆ หนึ่งควรจะทำให้คนอื่นเป็นความเปลี่ยนแปลงนี้ได้ในทันที แฟ้มข้อมูลใหม่มที่ถูกสร้างโดยคน ๆ หนึ่งจะต้องปรากฏในไดเรกทอรีย่อยที่ใช้ร่วมกันทันทีโดยอัตโนมัติ

  38. ไดเรกทอรีกราฟแบบไม่เป็นวงจร(Acyclic-Graph Directory) • โครงสร้างแบบต้นไม้ห้ามให้มีการใช้แฟ้มข้อมูลหรือไดเรกทอรีร่วมกัน กราฟแบบไม่เป็นวงจร (acyclic graph) อนุญาตให้มีการใช้ไดเรกทอรีและแฟ้มข้อมูลร่วมกันได้ (ดังรูปที่ 10.9)

  39. ไดเรกทอรีกราฟแบบไม่เป็นวงจร(Acyclic-Graph Directory)

  40. ไดเรกทอรีกราฟแบบไม่เป็นวงจร(Acyclic-Graph Directory) • แฟ้มข้อมูลหรือไดเรกทอรีย่อยอันเดียวกันอาจจะอยู่ใน 2 ไดเรกทอรีที่ต่างกันได้ • การใช้แฟ้มข้อมูลและไดเรกทอรีร่วมกันสามารถนำไปใช้ได้หลาย ๆ ทาง เช่น • ในระบบ UNIX การสร้างไดเรกทอรีใหม่เรียกว่า link link นี้คือตัวชี้ไปยังแฟ้มข้อมูลอีกแฟ้มหนึ่ง หรืออีกไดเรกทอรีย่อย ตัวอย่างเช่น link อาจเอาไปใช้ในชื่อของเส้นทางแบบสัมบูรณ์ (เรียกว่า symbolic link) เมื่อเกิดการอ้างอิงแฟ้มข้อมูล เราจะค้นหาไดเรกทอรี ถ้าไดเรกทอรีถูกทำเครื่องหมายเป็น link ก็จะได้มาซึ่งชื่อของแฟ้มข้อมูลหรือไดเรกทอรีจริงๆ

  41. ไดเรกทอรีกราฟแบบไม่เป็นวงจร(Acyclic-Graph Directory) • อีกวิธีหนึ่งในการใช้แฟ้มข้อมูลร่วมกัน คือ การคัดลอกสารสนเทศทั้งหมดไปไว้ในไดเรกทอรีที่ใช้ร่วมกันทั้งคู่ ดังนั้นไดเรกทอรีทั้งคู่ต้องเหมือนกันและเท่ากัน link จะแตกต่างกันอย่างชัดเจนจากไดเรกทอรีต้นฉบับ ดังนั้นทั้งสองจึงไม่เท่ากัน (ไดเรกทอรีต้นฉบับไม่เท่ากับตัวสำเนาที่ใช้ร่วมกัน) การคัดลอกไดเรกทอรีทำให้ต้นฉบับและตัวสำเนาแยกกันได้

  42. ไดเรกทอรีแบบกราฟโดยทั่วไป(General Graph Directory) • ปัญหาหลักของการใช้โครงสร้างของกราฟแบบไม่เป็นวงจรจะแน่ใจได้อย่างไรว่าจะไม่มี วงจรจริง ๆ ? ถ้าเราเริ่มจากไดเรกทอรีสองระดับ แล้วให้ผู้ใช้สร้างไดเรกทอรีย่อยเพิ่มก็กลายเป็น ไดเรกทอรีแบบต้นไม้ ถึงเราจะเพิ่มแฟ้มข้อมูลและไดเรกทอรีย่อยอีก ก็ยังเป็นไดเรกทอรีแบบต้นไม้อยู่ดี แต่ถ้าเราเพิ่มการเชื่อมโยงของไดเรกทอรีที่มีอยู่แล้ว โครงสร้างแบบต้นไม้ก็จะเสียไป เป็นผลให้เกิดโครงสร้างแบบกราฟอย่างง่าย (ดังรูปที่ 10.10)

  43. ไดเรกทอรีแบบกราฟโดยทั่วไป(General Graph Directory)

  44. ไดเรกทอรีแบบกราฟโดยทั่วไป(General Graph Directory) • ถ้าเราพึ่งจะค้นหาแฟ้มข้อมูลในไดเรกทอรีที่ใช้ร่วมกัน (share subdirectory) แล้วไม่เจอ เราน่าจะหลีกเลี่ยงการค้นหาไดเรกทอรีย่อยนั้นซ้ำ เพราะการหาซ้ำทำให้เสียเวลา • ถ้าเราอนุญาตให้มีวงจรในไดเรกทอรี นั่นคือเราต้องการหลีกเลี่ยงการค้นหาข้อมูลซ้ำเป็นครั้งที่สอง ถ้าออกแบบอัลกอริทึมไม่ดีจะทำให้เกิดการวนซ้ำ (loop) ไม่รู้จบ การค้นหาในวงจรก็จะไม่มีวันจบสิ้น วิธีแก้ คือ จำกัดจำนวนของไดเรกทอรี (ตามใจ) ที่จะเข้าใช้ในระหว่างการค้นหา

  45. ไดเรกทอรีแบบกราฟโดยทั่วไป(General Graph Directory) • อีกปัญหาหนึ่งคือในเรื่องการลบ ในไดเรกทอรีแบบไม่เป็นวงจร ค่า 0 ในการนับการอ้างอิง หมายถึง แฟ้มข้อมูลนั้นลบได้ แต่ถ้ามีวงจรเกิดขึ้น ค่าการอ้างอิงอาจจะไม่เป็นศูนย์ เมื่อแฟ้มข้อมูลหรือไดเรกทอรีนั้นไม่มีแล้ว ในกรณีนี้จำเป็นต้องใช้วิธี “การสะสมขยะ” (garbage collection) เพื่อกำหนดว่าเมื่อไรที่ค่าการอ้างอิงสุดท้ายถูกลบไปแล้ว และพื้นที่ในดิสก์ตรงนั้นสามารถนำมาจัดสรรใหม่ได้แล้ว

  46. ไดเรกทอรีแบบกราฟโดยทั่วไป(General Graph Directory) • การสะสมขยะจำเป็นสำหรับกราฟแบบมีวงจรเท่านั้น ดังนั้นกราฟแบบไม่มีวงจรใช้งานง่ายกว่ามาก ปัญหาก็คือการเลี่ยงไม่ให้เกิดวงจรเมื่อ link ใหม่ ถูกเพิ่มเข้ามาในโครงสร้าง เราจะรู้ได้อย่างไรว่าเมื่อไร link ใหม่จะเป็นวงจรอย่างสมบูรณ์ มีอัลกอริทึมในการค้นหาวงจรในกราฟ แต่มันเสียเวลา ดังนั้นโดยทั่วไปโครงสร้างไดเรกทอรีแบบต้นไม้น่าใช้กว่าโครงสร้างของกราฟแบบไม่มีวงจร

  47. การป้องกัน (Protection) ชนิดของการเข้าถึงแฟ้มข้อมูล(Types of Access) • Read – อ่านจากแฟ้มข้อมูล • Write – เขียนหรือเขียนอีกครั้ง (rewrite) แฟ้มข้อมูล • Execute – load แฟ้มข้อมูลเข้าสู่หน่วยความจำและทำงานนั้น • Append – เขียนสารสนเทศใหม่ต่อท้ายแฟ้มข้อมูล • Delete – ลบแฟ้มข้อมูลและคืนพื้นที่ให้สามารถใช้ใหม่ได้ • List – แสดงชื่อและคุณลักษณะของแฟ้มข้อมูล

  48. รายการเข้าถึงแฟ้มข้อมูลและกลุ่ม (Access Lists and Groups) • รายการการเข้าถึงแฟ้มข้อมูล (access list) คือ การเจาะจงชื่อของผู้ใช้และชนิดของการเข้าถึงแฟ้มข้อมูลของผู้ใช้แต่ละคน เมื่อผู้ใช้ร้องขอเข้าถึงแฟ้มข้อมูล ระบบปฏิบัติการจะตรวจสอบรายการการเข้าถึงแฟ้มข้อมูล (access list) ที่เกี่ยวข้องกับแฟ้มข้อมูลนั้น ถ้าการร้องขอนั้นมีในรายการของผู้ใช้คนนั้น การเข้าถึงก็จะได้รับอนุญาต มิฉะนั้นจะเป็นการฝ่าฝืนในการป้องกัน และงานของผู้ใช้จะถูกปฏิเสธการเข้าถึงแฟ้มข้อมูล (access denies)

  49. รายการเข้าถึงแฟ้มข้อมูลและกลุ่ม (Access Lists and Groups) • ปัญหาหลักเกี่ยวกับรายการการเข้าถึงแฟ้มข้อมูล คือ ความยาวของรายการ ถ้าเราต้องการให้ทุกคนอ่านแฟ้มข้อมูล เราต้องแสดง (list) รายการผู้ใช้ทุกคนด้วยการเข้าถึงแบบอ่าน (read access) การทำเช่นนี้มีผลลัพธ์ 2 ประการ • การสร้างรายการอาจจะเป็นงานที่น่าเบื่อและไม่ได้อะไร โดยเฉพาะถ้าเราไม่เห็นว่ารายการของผู้ใช้ในระบบมีข้อดีอะไร • ไดเรกทอรีต้องเปลี่ยนจากขนาดคงที่เป็นแบบแปรผัน ทำให้การจัดการพื้นที่ซับซ้อนขึ้นกว่าเดิม • ปัญหานี้แก้ได้โดยใช้ รายการการเข้าถึงแฟ้มข้อมูลแบบกะทัดรัด

  50. รายการเข้าถึงแฟ้มข้อมูลและกลุ่ม (Access Lists and Groups) • เพื่อบีบความยาวของรายการการเข้าถึงแฟ้มข้อมูลให้กะทัดรัด หลาย ๆ ระบบแบ่งประเภทของผู้ใช้เป็น 3 ประเภท ในการติดต่อกับแฟ้มข้อมูลแต่ละแฟ้ม • เจ้าของ (Owner)คือ ผู้ใช้ที่สร้างแฟ้มข้อมูลเป็นของตัวเอง • กลุ่ม (Group)คือ กลุ่มของผู้ใช้ที่ใช้แฟ้มข้อมูลร่วมกัน และต้องการการเข้าถึงแฟ้มข้อมูล (access ) ที่คล้ายกันในกลุ่มหรือกลุ่มงาน (workgroup) • คนอื่น (universe)คือ ผู้ใช้อื่น ๆ ทั้งหมดในระบบ

More Related