Operating System

Download Report

Transcript Operating System

Operating System
บทที่ 10 ส่ วนต่ อประสานของระบบแฟ้ มข้ อมูล
(FILE-SYSTEM INTERFACE)
แนวความคิดเกี่ยวกับแฟ้มข้ อมูล (File Concept)
• แฟ้มข้ อมูลถูกกาหนดเป็ นโครงสร้ าง ตามชนิดของข้ อมูล
• Text file คือ ลาดับของตัวอักษรที่เรียงกันในบรรทัด (หรือหน้ า)
• Source file คือ ลาดับของโปรแกรมย่อย (subroutine) และ
ฟังก์ชัน(อาจเป็ นการประกาศค่ าตามประโยค)
• Object file คือ ลาดับของไบต์ ทีจ่ ัดเรียงในบล็อคที่ตวั เชื่อมโยง
(linker) ของระบบเข้ าใจ
• Executable file คือ ลาดับของส่ วนของรหัสโปรแกรมซึ่งตัว load
โปรแกรม (loader) นาเข้ ามายังหน่ วยความจาและสั่ งให้ ทางาน
(execute)
คุณลักษณะของแฟ้มข้ อมูล (File attributes)
• ชื่อ (Name) – ชื่อแฟ้มข้ อมูลคือ สั ญลักษณ์ (สารสนเทศ) ทีเ่ ก็บไว้ ใน
รู ปแบบทีม่ นุษย์ สามารถอ่ านได้
• ชนิด (Type) – ส่ วนนีจ้ าเป็ นสาหรับระบบซึ่งสนับสนุนชนิดของข้ อมูล
หลายๆชนิด
• ตาแหน่ ง (Location) - เป็ นตัวชี้ไปยังอุปกรณ์ และตาแหน่ งของ
แฟ้มข้ อมูลบนอุปกรณ์ น้ัน
• ขนาด (Size) – ขนาดของแฟ้มข้ อมูลในปัจจุบัน (ไบต์ , คาหรือบล็อค)
• การป้องกัน (protection) – การควบคุมให้ สามารถ อ่ าน เขียน
ทางาน ฯลฯ
คุณลักษณะของแฟ้มข้ อมูล (File attributes)
• เวลา วันที่ และเอกลักษณ์ เฉพาะของผู้ใช้
(Time , date , and user identification)
• – เก็บข้ อมูลพวก วันที่ สร้ างแฟ้มนีข้ นึ้ มา , ปรับปรุ งครั้งสุ ดท้ ายเมือ่ ไหร่ , และ
ใช้ ครั้งสุ ดท้ ายเมือ่ ไหร่
•
ข้ อมูลเหล่ านีจ้ ะเป็ นประโยชน์ ในเรื่องการป้ องกัน, การรักษาความปลอดภัย
และการควบคุมการใช้ งาน
การทางานของแฟ้มข้ อมูล (File Operation)
• การสร้ างแฟ้มข้ อมูล (Creating a file)
• หาทีว่ ่ างในระบบแฟ้มข้ อมูล
• ช่ องว่ างของแฟ้มข้ อมูลใหม่ ต้องถูกสร้ างในไดเรกทอรี (ไดเรกทอรีจะบันทึกชื่อ
แฟ้ม และตาแหน่ งในระบบแฟ้มข้ อมูล)
การเขียนแฟ้มข้ อมูล (Writing a file)
• ใช้ การเรียกระบบให้ เจาะจง ชื่อแฟ้มและสารสนเทศทีจ่ ะถูกเขียนลงแฟ้มข้อมูลโดย
ระบบจะค้ นหาไดเรกทอรี เพือ่ หาตาแหน่ งของแฟ้มข้ อมูลระบบต้ องเก็บ write
pointer เพือ่ ระบุตาแหน่ งถัดไปทีจ่ ะต้ องเขียน
การอ่ านแฟ้มข้ อมูล (Reading a file)
• ใช้ การเรียกระบบเพือ่ เจาะจงชื่อแฟ้มและทีซ่ ึ่ง(ในหน่ วยความจา) บล็อคถัดไป
ของแฟ้มข้ อมูลควรจะอยู่ จากนั้นไดเรกทอรีจะถูกค้ นหาและระบบจะเก็บ read
pointer เพือ่ ระบุตาแหน่ งถัดไปทีต่ ้ องอ่ าน โดยทัว่ ไปแฟ้มทีถ่ ูกอ่ านหรือ
เขียนระบบส่ วนใหญ่ มกั เก็บ pointer ไว้ ตวั เดียว ทีใ่ ช้ ท้งั อ่านและเขียนได้
เรียกว่ า “ตัวชี้ตาแหน่ งแฟ้มปัจจุบัน” (current-file-position
pointer) เพือ่ ประหยัดพืน้ ที่และลดความซับซ้ อนของระบบ
การย้ ายตาแหน่ งภายในแฟ้มข้ อมูล
(Repositioning within a file)
• เริ่มจากค้ นหาไดเรกทอรีทตี่ ้ องการและกาหนดค่ าให้ ตวั ชี้ตาแหน่ งแฟ้มปัจจุบันการ
ย้ ายตาแหน่ งภายในแฟ้มข้ อมูลไม่ จาเป็ นต้ องเกีย่ วข้ องกับ I/O จริงๆเลยการ
ทางานของแฟ้มนีเ้ รียกว่ า การค้ นหา (seek) ข้ อมูล
การลบแฟ้มข้ อมูล (Deleting a file)
• เริ่มจากการค้ นหาไดเรกทอรีทมี่ ชี ื่อจากแฟ้มทีจ่ ะลบเมือ่ พบแล้ วเราก็ปลดปล่ อย
ทีว่ ่ างทั้งหมดของแฟ้มนั้น (ดังนั้นที่ว่างดังกล่ าวก็สามารถให้ แฟ้มอืน่ ใช้ งานได้ )
และลบข้ อมูลนั้นในไดเรกทอรีทงิ้
การตัดแฟ้มข้ อมูลให้ สัน้ ลง (truncating a file)
• เมือ่ ผู้ใช้ ต้องการให้ แฟ้มข้ อมูลมีคุณลักษณะเหมือนเดิม แต่ ต้องการลบเนือ้ หาของ
แฟ้มข้ อมูลแทนทีจ่ ะลบและสร้ างใหม่ เราสามารถใช้ ฟังก์ ชันนีเ้ พือ่ ให้ คุณลักษณะ
ต่ างๆ ยังคงอยู่ (ยกเว้ นความยาวของแฟ้มข้ อมูลจะถูกตั้งใหม่ ให้ มคี วามยาวเป็ น
ศูนย์
โดยสรุ ปมีสารสนเทศหลายส่ วนที่เกี่ยวข้ องกับการกับการเปิ ด
แฟ้มข้ อมูล ดังนี ้
• ตัวชี้แฟ้มข้ อมูล (File pointer) – ระบบซึ่งไม่ มีระยะห่ างจากขอบ
ของแฟ้มข้ อมูล (file offset) ทีเ่ ป็ นส่ วนหนึ่งของคาสั่ งเรียกระบบ
read และ write ระบบต้ องตามรอยตาแหน่ งทีอ่ ่ านหรือเขียนเป็ นครั้ ง
สุ ดท้ ายเหมือนตัวชี้ตาแหน่ งแฟ้มข้ อมูลปัจจุบัน (current-fileposition pointer)
• การนับการเปิ ดแฟ้มข้ อมูล (File open count) - เมือ่ แฟ้มข้ อมูลถูก
ปิ ด ระบบปฏิบัตงิ านต้ องใช้ ช่องของตารางเปิ ดแฟ้มข้ อมูล (open file
table ) อีกครั้ง หรือไม่ กใ็ ช้ ทวี่ ่ างในตาราง เพราะกระบวนการหลายๆ
กระบวนการอาจจะเปิ ดแฟ้มข้ อมูลระบบต้ องรอให้ แฟ้มสุ ดท้ ายปิ ดก่ อนจะลบช่ อง
ในตารางเปิ ดแฟ้มสุ ดท้ าย ระบบจึงจะลบช่ อง (entry) ได้
โดยสรุ ปมีสารสนเทศหลายส่ วนที่เกี่ยวข้ องกับการกับการเปิ ด
แฟ้มข้ อมูล ดังนี ้
• ตาแหน่ งของแฟ้มข้ อมูลบนดิสก์ (Disk location of the file)
– การทางานของแฟ้มข้ อมูลส่ วนใหญ่ ต้องการให้ ระบบปรับปรุ งข้ อมูลภายใน
แฟ้มข้ อมูลสารสนเทศทีจ่ าเป็ นสาหรับระบุตาแหน่ งแฟ้มข้ อมูลบนดิสก์ ถูกเก็บไว้
ในหน่ วยความจาเพือ่ หลีกเลีย่ งที่จะต้ องอ่ านจากดิสก์สาหรับการทางานแต่ ละครั้ง
ชนิดของแฟ้มข้ อมูล (File types)
•
เทคนิคทัว่ ๆไปสาหรับการนาชนิดของแฟ้ มข้ อมูลไปใช้ คือการรวมชนิดเข้ าเป็ นส่ วน
หนึ่งของชื่อแฟ้ มข้ อมูล ชื่อจะถูกแบ่ งเป็ น 2 ส่ วนคือ ชื่อ และ นามสกุล
(extension) โดยทัว่ ไปจะแยกกันโดยใช้ (.) ดูรูป 10.1
ชนิดของแฟ้มข้ อมูล (File types)
File Type
Usual extension
Function
Executable
exe, com, bin or none
ready-to-run machinelanguage program
Object
obj, o
complied, machine
language, not linked
Source code
c, p, pas, 177, asm, a
source code in various
languages
Batch
bat, sh
commands to the command
interpreter
Text
txt, doc
textual data documents
Word processor
wp, tex, rrf, etc.
various word-processor
formats
Library
lib, a
libraries of routines
Print or view
ps, dvi, gif
ASCII or binary file
Archive
arc, zip, tar
related files grouped into
one file, sometimes
compressed.
โครงสร้ างของแฟ้มข้ อมูล (File structure)
• แฟ้ มข้ อมูลต้ องมีโครงสร้ างทีร่ ะบบปฏิบตั ิการเข้ าใจได้ เช่ น ระบบปฏิบตั ิการ อาจต้ องการ
executable file ทีม่ โี ครงสร้ างเฉพาะเพือ่ เอาไปกาหนดว่ าจะ load แฟ้ มข้ อมูล
ว่ าไว้ ยงั ตาแหน่ งใดในหน่ วยความจาและตาแหน่ งของคาสั่ งแรก คืออะไร
• ตัวอย่ างหนึ่งของระบบปฏิบตั ิการทีส่ นับสนุน โครงสร้ างของแฟ้ มข้ อมูลเล็กน้ อยคือ
Macintosh ซึ่งแฟ้ มข้ อมูลมี 2 ส่ วน คือ resource fork และ data
fork
• resource fork บรรจุสารสนเทศทีผ่ ้ ูใช้ สนใจ เช่ น ตัวฉลากบนปุ่ มทีแ่ สดงโดย
โปรแกรมผู้ใช้ ต่างประเทศอาจจะต้ องการเปลีย่ นฉลากนั้นเป็ นภาษาของเขาเองซึ่ง
Macintosh สนับสนุนเครื่องมือทีอ่ นุญาตให้ ปรับปรุงข้ อมูลใน resource
fork ได้
• data fork บรรจุโปรแกรม , รหัสโปรแกรม (code) หรือข้ อมูล(เนือ้ หาของ
แฟ้ มข้ อมูลทัว่ ไป)
โครงสร้ างของแฟ้มข้ อมูลภายใน
(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)
สามารถทาได้ โดยโปรแกรมประยุกต์ ของผู้ใช้ หรือโดยระบบปฏิบัติการ
วิธีการเข้ าถึงแฟ้มข้ อมูล (Access Methods)
•
•
•
การเข้ าถึงข้ อมูลแบบเรียงลาดับ
(Sequential access)
สารสนเทศในแฟ้มข้ อมูลถูกดึงเข้ าถึงเป็ นลาดับ
การทางาน (operation) บนแฟ้มข้ อมูลคือ อ่ าน และเขียน ตัวอ่ าน จะ
อ่ านส่ วนถัดไปของแฟ้ม และเปลีย่ นค่ าตัวชี้แฟ้มข้ อมูลโดยอัตโนมัติตามตาแหน่ ง
ของ I/O คล้ ายๆ กับการเขียนต่ อท้ ายแฟ้มข้ อมูลแต่ ละแฟ้มข้ อมูลสามารถกลับ
ไปเริ่มต้ นใหม่ และบางระบบโปรแกรมอาจจะสามารถข้ ามไปข้ างหน้ าหรือข้ าง
หลัง N ระเบียน (record) ได้ เมื่อ N คือเลขจานวนเต็ม
การเข้ าถึงแฟ้มข้ อมูลโดยตรง (Direct Access)
•
หรือการเข้ าถึงแฟ้มข้ อมูลแบบสั มพันธ์ (relative access)
แฟ้มข้ อมูลถูกสร้ างขึน้ เป็ น logical record ทีม่ ีความยาวคงที่ ซึ่ง
อนุญาตให้ โปรแกรมอ่ านและเขียนระเบียนอย่ างรวดเร็วโดยไม่ มลี าดับ การเข้ าถึง
แฟ้มข้ อมูลโดยตรงเป็ นพืน้ ฐานของดิสก์ เมือ่ ดิสก์ อนุญาตให้ เข้ าถึงบล็อคของ
แฟ้มข้ อมูลแบบสุ่ ม สาหรับการเข้ าถึงแฟ้มข้ อมูลโดยตรง แฟ้มข้ อมูลจะถูกมอง
เป็ นจานวนของบล็อคหรือระเบียนดังนั้นเราอาจจะอ่านบล็อค 14 แล้วอ่าน
บล็อค 53 แล้วเขียน บล็อค 7 ได้
• ระบบโดยทัว่ ไปไม่ สนับสนุนทั้งแบบเรียงลาดับและโดยตรงบางระบบสนับสนุน
แบบเรียงลาดับ บางระบบเป็ นแบบโดยตรงบางระบบต้ องการให้ เมือ่ เริ่มสร้ าง
แฟ้มข้ อมูลก็กาหนดไปเลยว่ าเป็ นแบบเรียงลาดับหรือโดยตรง อย่ างไรก็ตาม มันก็
ไม่ ยากทีจ่ ะจาลองสถานการณ์ จากแบบเรียงลาดับให้ เป็ นแบบโดยตรง ถ้ าเรามีตัว
แปร cp เป็ นตัวกาหนดตาแหน่ งปัจจุบันของเรา ดังนั้นเราสามารถจาลองการ
ทางานของแฟ้มแบบเรียงลาดับได้ ดงั รู ป10.3
การเข้ าถึงข้ อมูลแบบอื่น
(Other Access Methods)
▫
วิธีเสริ มนี้เกี่ยวข้ องกับการสร้ างดัชนี (index)
ให้
แฟ้มข้ อมูล ดัชนีนี้ (เหมือนดัชนีท้ายหลังหนังสื อ) บรรจุตัวชี้ บล็อค
ในการหาระเบียนในแฟ้มข้ อมูล ขั้นแรกเราต้ องค้ นหาดัชนีแล้ วใช้ ตัวชี้
ในการเข้ าถึงแฟ้มข้ อมูลโดยตรงและหาระเบียนทีต่ ้ องการ
▫ ถ้ าแฟ้มข้ อมูลมีขนาดใหญ่ แฟ้มดัชนีกต็ ้ องมีขนาดใหญ่ เกินจะเก็บไว้ ใน
หน่ ว ยความจ าได้ วิ ธี แ ก้ วิ ธี ห นึ่ ง คื อ สร้ างดั ช นี ส าหรั บแฟ้ มดั ช นี
(index
file)
แฟ้มข้ อมู ลปฐมภูมิ (primary
index file) ควรจะบรรจุตัวชี้ไปยังแฟ้มข้ อมูลทุติยภูมิ
(secondary index file) ซึ่งควรจะชี้ไปยังข้ อมูลจริง
การเข้ าถึงข้ อมูลแบบอื่น
(Other Access Methods)
โครงสร้ างของไดเรคทอรี
(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 แสดงตัวอย่ างการจัดระเบียบของระบบ
แฟ้ มข้ อมูล
โครงสร้ างของไดเรคทอรี
(Directory Structure)
การทางานของไดเรกทอรี มีดังนีค้ ือ
• ค้ นหาแฟ้มข้ อมูล (Search for a file) – เราอาจต้ องหาแฟ้มที่มชี ื่อ
ตรงกับทีเ่ ราต้ องการ
• สร้ างแฟ้มข้ อมูล (Create a file) – แฟ้มข้ อมูลใหม่ จาเป็ นต้ องถูก
สร้ างและเพิม่ เข้ าในไดเรกทอรี
• ลบแฟ้มข้ อมูล (Delete a file) – เมือ่ แฟ้มข้ อมูลไม่ ต้องการแล้ ว เรา
ต้ องลบมันออกจากไดเรกทอรี
• แสดงไดเรกทอรี (List a directory) – เราต้ องสามารถแสดงชื่อ
แฟ้มข้ อมูลในไดเรกทอรีและเนือ้ หาของไดเรกทอรี สาหรับแต่ ละแฟ้มในรายการ
การทางานของไดเรกทอรี มีดังนีค้ ือ
• เปลีย่ นชื่อแฟ้มข้ อมูล (Rename a file) – เพราะว่ าชื่อแฟ้มข้ อมูล
เป็ นตัวแทนของเนือ้ หาของผู้ใช้ ดังนั้นชื่อจะต้ องเปลีย่ นเมือ่ เนือ้ หาหรือการใช้
แฟ้มข้ อมูลเปลีย่ นไป
• การข้ ามระบบแฟ้มข้ อมูล (Traverse the file system) –
มันเป็ นความคิดทีด่ ที จี่ ะรักษาเนือ้ หาและโครงสร้ างของระบบแฟ้มข้ อมูลทั้งหมด
การรักษานีม้ กั ทาได้ โดยการคัดลอกแฟ้มข้ อมูลทั้งหมดลงเทปแม่ เหล็ก เทคนิคนี้
เป็ นการ backup ในกรณีทรี่ ะบบล่ มหรือแฟ้มข้ อมูลเสี ย ในกรณีนี้
แฟ้มข้ อมูลควรถูกคัดลอกลงเทป และพืน้ ทีว่ ่ างในดิสก์ ของแฟ้มเหล่านั้นก็จะถูก
ปล่อยให้ แฟ้มอืน่ ได้ ใช้
ไดเรกทอรี ระดับเดียว
(Single-Level Directory)
•
แฟ้มข้ อมูลทั้งหมดถูกเก็บไว้ ในไดเรกทอรีเดียวกัน (ดังรู ปที่ 10.6)
ไดเรกทอรีระดับเดียวมีข้อจากัดอย่ างมีนัยสาคัญ เมือ่ แฟ้มข้ อมูลมีมากขึน้ หรือมี
ผู้ใช้ มากกว่ า 1 คน ถ้ าแฟ้มข้ อมูลทั้งหมดอยู่ในไดเรกทอรีเดียวกัน แฟ้มเหล่านั้น
ต้ องมีชื่อเฉพาะตัว ถ้ ามีผ้ ใู ช้ 2 คน เรียกแฟ้มข้ อมูลชื่อ test ของตัวเอง (คน
ละไฟล์ชื่อเดียวกัน) ดังนั้น กฎชื่อเฉพาะตัวก็ถูกทาลายลง นอกจากนั้นยังมี
ข้ อจากัดในเรื่องความยาว ในระบบ MS-DOS ชื่อแฟ้มข้ อมูลยาวได้ ไม่ เกิน
11 ตัวอักษร (รวมนามสกุล) UNIX 255 ตัวอักษร
ไดเรกทอรี ระดับเดียว
(Single-Level Directory)
ไดเรกทอรี สองระดับ (Two-Level Directory)
•
•
ข้ อเสี ยของไดเรกทอรีระดับเดียวคือความสั บสนของชื่อแฟ้มข้ อมูลระหว่ างผู้ใช้
ต่ าง ๆ วิธีแก้ พนื้ ฐานคือการสร้ างไดเรกทอรีแยกกันให้ ผ้ ใู ช้ แต่ ละคน
ในโครงสร้ างไดเรกทอรีสองระดับ ผู้ใช้ แต่ ละคนจะมี user file
directory ของตัวเอง (UFD) แต่ ละ UFD มีโครงสร้ างคล้ าย ๆ
กัน แต่ แสดงรายการแฟ้มข้ อมูลของผู้ใช้ คนเดียว เมือ่ งานของผู้ใช้ เริ่มขึน้ หรือผู้ใช้
log in เข้ ามา master file directory (MFD) ของ
ระบบจะถูกค้ นหา MFD ถูกระบุโดยชื่อของผู้ใช้ (user name)
หรือหมายเลขบัญชี (account number) และแต่ ละช่ องชี้ไปยัง
UFD สาหรับผู้ใช้ น้ัน (ดังรู ปที่ 10.7)
ไดเรกทอรี สองระดับ (Two-Level Directory)
ไดเรกทอรี สองระดับ (Two-Level Directory)
• การระบุชื่อแฟ้มข้ อมูลในไดเรกทอรีสองระดับ เราต้ องให้ ท้งั ชื่อของผู้ใช้ และชื่อ
แฟ้มข้ อมูล ไดเรกทอรีสองระดับสามารถมองเป็ นต้ นไม้ ราก (root) ของ
ต้ นไม้ คอื MFD ทายาทโดยตรงคือ UFD ทางยากของ UFD คือ
แฟ้มข้ อมูลของตัวมันเอง แฟ้มข้ อมูลคือใบไม้ ของต้ นไม้ นั่งเอง ชือ่ ของผู้ใช้ และชื่อ
ของแฟ้มข้ อมูลกาหนดเส้ นทาง (path) ในต้ นไม้ จากราก (MFD) สู่ ใบ
(แฟ้มที่ต้องการ) ดังนั้นชื่อของผู้ใช้ และชื่อไฟล์ กาหนดชื่อของเส้ นทาง
(path name) แฟ้มข้ อมูลทุกแฟ้มในระบบมีชื่อของเส้ นทาง เพือ่ ระบุชื่อ
แฟ้มข้ อมูลทีม่ ลี กั ษณะเฉพาะ ผู้ใช้ ต้องรู้ ชื่อของเส้ นทางของแฟ้มที่ต้องการ
ไดเรกทอรี สองระดับ (Two-Level Directory)
• ตัวอย่างในระบบ MS-DOS อาจเป็ น “C:\userb\test” แยก
เป็ น partition , ชื่อของไดเรกทอรี , และ ชื่อแฟ้มข้ อมูล ในระบบ
VMS ไฟล์ “login.com” อาจเป็ น
“u:[sst.jdeck]login.com;1”
u คือชื่อของ
partition , “sst” คือ ชื่อไดเรกทอรี , “jdeck” คือ ชื่อของ
ไดเรกทอรีย่อย (subdirectory) และ “1” คือ หมายเลขเวอร์ ชัน
ไดเรกทอรี ท่ มี ีโครงสร้ างแบบต้ นไม้
(Tree-Structured Directories)
ไดเรกทอรี ท่ มี ีโครงสร้ างแบบต้ นไม้
(Tree-Structured Directories)
• ในการใช้ งานปกติ ผู้ใช้ แต่ ละคนจะมี “ไดเรกทอรี ปัจจบุ ัน” (current
directory) ซึ่งใช้ เก็บแฟ้มข้ อมูลทีผ่ ้ ใู ช้ สนใจในปัจจุบัน เมือ่ มีการอ้างอิง
แฟ้มข้ อมูลก็จะเกิดการค้ นหาไดเรกทอรีปัจจุบัน ถ้ าแฟ้มข้ อมูลทีต่ ้ องการไม่ มีใน
ไดเรกทอรีปัจจุบัน ผู้ใช้ ต้องระบุชื่อของเส้ นทาง (path name) หรือ
เปลีย่ นไดเรกทอรีปัจจุบันไปเป็ นไดเรกทอรีอนื่ โปรแกรมเรียกระบบจะทาให้ ชื่อ
ไดเรกทอรีเป็ นเหมือนพารามิเตอร์ และใช้ มนั เพือ่ กาหนดไดเรกทอรีปัจจุบันใหม่
ดังนั้นผู้ใช้ จึงสามารถเปลีย่ นไดเรกทอรีปัจจุบันของเขาได้ ตามต้ องการ
ไดเรกทอรี ท่ มี ีโครงสร้ างแบบต้ นไม้
(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
ไดเรกทอรี ท่ มี ีโครงสร้ างแบบต้ นไม้
(Tree-Structured Directories)
• นโยบายในการลบไดเรกทอรีของโครงสร้ างแบบต้ นไม้ นี้ ถ้ าไดเรกทอรีว่าง การลบ
ไดเรกทอรีกท็ าได้ ง่าย แต่ ถ้าไดเรกทอรีไม่ ว่าง มีไฟล์หลายไฟล์ หรือมีหลาย
ไดเรกทอรีย่อย วิธีการจัดการคือ
• บางระบบ เช่ น MS-DOS จะลบไดเรกทอรีไม่ ได้ ถ้ามันไม่ ว่าง ดังนั้นภ้ าจะ
ลบไดเรกทอรี ผู้ใช้ ต้องลบไฟล์ ท้งั หมดในไดเรกทอรีก่อน ถ้ ามีไดเรกทอรีย่อยอยู่ ก็
ต้ องลบไฟล์ในไดเรกทอรีย่อยให้ หมดก่อน แล้วจึงลบไดเรกทอรีย่อยขึน้ มาจนถึง
การลบไดเรกทอรีทตี่ ้ องการลบ วิธีนีท้ าให้ ต้องทางานจานวนมาก
ไดเรกทอรี ท่ มี ีโครงสร้ างแบบต้ นไม้
(Tree-Structured Directories)
•
อีกวิธีหนึ่ง เช่ น ในระบบ UNIX คาสั่ ง rm ใช้ ลบไดเรกทอรี ซึ่งทั้งไฟล์
และไดเรกทอรีย่อยของ ไดเรกทอรีน้ันจะถูกลบทั้งหมด จะเห็นได้ ว่าวิธีนีน้ ่ าจะ
ดีในการนาไปใช้ เพราะสะดวก แต่ อนั ตรายมากเพราะทุกไดเรกทอรีสามารถถูก
ลบได้ ด้วยคาสั่ งคาสั่ งเดียว ถ้ าคาสั่ งเกิดผิดพลาด ไฟล์และไดเรกทอรีจานวนมาก
จาเป็ นทีจ่ ะต้ องกู้กลับมาจาก backup เทป
ไดเรกทอรี กราฟแบบไม่ เป็ นวงจร
(Acyclic-Graph Directory)
•
พิจารณานักเขียนโปรแกรม 2 คน ที่ทางานโครงการร่ วมกัน แฟ้มข้ อ มูลที่
เกีย่ วกับโครงการนีเ้ ก็บไว้ ในไดเรกทอรีย่อยที่แยกมาจากโครงการอืน่ แต่ นักเขียน
โปรแกรมทั้งสองมีความรับผิดชอบต่ อโครงการนีเ้ ท่ ากัน ทั้งคู่ต้องการไดเรกทอรี
ย่ อยนี้เป็ นของตัว เอง ซึ่ งไดเรกทอรี ย่อยนี้ควรจะถู กใช้ ร่วมกัน (share)
การใช้ แฟ้มข้ อมูลหรื อไดเรกทอรี ร่วมกัน ไม่ ได้ เหมือนกับการมี 2 สาเนา แต่
หมายถึงมีของจริงอยู่เพียงหนึ่งเดียว การเปลี่ยนแปลงที่ทาโดยคน ๆ หนึ่งควรจะ
ทาให้ คนอื่นเป็ นความเปลี่ยนแปลงนี้ได้ ในทันที แฟ้มข้ อมูลใหม่ มที่ถูกสร้ างโดย
คน ๆ หนึ่งจะต้ องปรากฏในไดเรกทอรีย่อยที่ใช้ ร่วมกันทันทีโดยอัตโนมัติ
ไดเรกทอรี กราฟแบบไม่ เป็ นวงจร
(Acyclic-Graph Directory)
• โครงสร้ างแบบต้ นไม้ ห้ามให้ มกี ารใช้ แฟ้มข้ อมูลหรือไดเรกทอรีร่วมกัน กราฟแบบ
ไม่ เป็ นวงจร (acyclic graph) อนุญาตให้ มกี ารใช้ ไดเรกทอรีและ
แฟ้มข้ อมูลร่ วมกันได้ (ดังรู ปที่ 10.9)
ไดเรกทอรี กราฟแบบไม่ เป็ นวงจร
(Acyclic-Graph Directory)
ไดเรกทอรี กราฟแบบไม่ เป็ นวงจร
(Acyclic-Graph Directory)
• แฟ้มข้ อมูลหรือไดเรกทอรีย่อยอันเดียวกันอาจจะอยู่ใน 2 ไดเรกทอรีทตี่ ่ างกันได้
• การใช้ แฟ้มข้ อมูลและไดเรกทอรีร่วมกันสามารถนาไปใช้ ได้ หลาย ๆ ทาง เช่ น
• ในระบบ UNIX การสร้ างไดเรกทอรีใหม่ เรียกว่ า link link นีค้ อื ตัวชี้
ไปยังแฟ้มข้ อมูลอีกแฟ้มหนึ่ง หรืออีกไดเรกทอรีย่อย ตัวอย่ างเช่ น link อาจเอา
ไปใช้ ในชื่อของเส้ นทางแบบสั มบูรณ์ (เรียกว่ า symbolic link) เมื่อ
เกิดการอ้ างอิงแฟ้มข้ อมูล เราจะค้ นหาไดเรกทอรี ถ้ าไดเรกทอรีถูกทาเครื่องหมาย
เป็ น link ก็จะได้ มาซึ่งชื่อของแฟ้มข้ อมูลหรือไดเรกทอรีจริงๆ
ไดเรกทอรี กราฟแบบไม่ เป็ นวงจร
(Acyclic-Graph Directory)
•
อีกวิธีหนึ่งในการใช้ แฟ้มข้ อมูลร่ วมกัน คือ การคัดลอกสารสนเทศทั้งหมดไปไว้
ในไดเรกทอรีทใี่ ช้ ร่วมกันทั้งคู่ ดังนั้นไดเรกทอรีท้งั คู่ต้องเหมือนกันและเท่ ากัน
link จะแตกต่ างกันอย่ างชัดเจนจากไดเรกทอรีต้นฉบับ ดังนั้นทั้งสองจึงไม่
เท่ ากัน (ไดเรกทอรีต้นฉบับไม่ เท่ ากับตัวสาเนาที่ใช้ ร่วมกัน) การคัดลอก
ไดเรกทอรีทาให้ ต้นฉบับและตัวสาเนาแยกกันได้
ไดเรกทอรี แบบกราฟโดยทั่วไป
(General Graph Directory)
•
ปัญหาหลักของการใช้ โครงสร้ างของกราฟแบบไม่ เป็ นวงจรจะแน่ ใจได้ อย่างไรว่ า
จะไม่ มี วงจรจริง ๆ ? ถ้ าเราเริ่มจากไดเรกทอรีสองระดับ แล้ วให้ ผ้ ใู ช้ สร้ าง
ไดเรกทอรีย่อยเพิม่ ก็กลายเป็ น ไดเรกทอรีแบบต้ นไม้ ถึงเราจะเพิม่ แฟ้มข้ อมูล
และไดเรกทอรีย่อยอีก ก็ยงั เป็ นไดเรกทอรีแบบต้ นไม้ อยู่ดี แต่ ถ้าเราเพิม่ การ
เชื่อมโยงของไดเรกทอรีทมี่ อี ยู่แล้ ว โครงสร้ างแบบต้ นไม้ กจ็ ะเสี ยไป เป็ นผลให้
เกิดโครงสร้ างแบบกราฟอย่ างง่ าย (ดังรู ปที่ 10.10)
ไดเรกทอรี แบบกราฟโดยทั่วไป
(General Graph Directory)
ไดเรกทอรี แบบกราฟโดยทั่วไป
(General Graph Directory)
• ถ้ าเราพึง่ จะค้ นหาแฟ้มข้ อมูลในไดเรกทอรีทใี่ ช้ ร่วมกัน (share
subdirectory) แล้วไม่ เจอ เราน่ าจะหลีกเลีย่ งการค้ นหาไดเรกทอรีย่อย
นั้นซ้า เพราะการหาซ้าทาให้ เสี ยเวลา
•
ถ้ าเราอนุญาตให้ มวี งจรในไดเรกทอรี นั่นคือเราต้ องการหลีกเลีย่ งการค้ นหา
ข้ อมูลซ้าเป็ นครั้งทีส่ อง ถ้ าออกแบบอัลกอริทมึ ไม่ ดจี ะทาให้ เกิดการวนซ้า
(loop) ไม่ ร้ ู จบ การค้ นหาในวงจรก็จะไม่ มวี นั จบสิ้น วิธีแก้ คือ จากัดจานวน
ของไดเรกทอรี (ตามใจ) ทีจ่ ะเข้ าใช้ ในระหว่ างการค้ นหา
ไดเรกทอรี แบบกราฟโดยทั่วไป
(General Graph Directory)
• อีกปัญหาหนึ่งคือในเรื่องการลบ ในไดเรกทอรีแบบไม่ เป็ นวงจร ค่ า 0 ในการนับ
การอ้ างอิง หมายถึง แฟ้มข้ อมูลนั้นลบได้ แต่ ถ้ามีวงจรเกิดขึน้ ค่าการอ้างอิงอาจจะ
ไม่ เป็ นศูนย์ เมือ่ แฟ้มข้ อมูลหรือไดเรกทอรีน้ันไม่ มแี ล้ ว ในกรณีนีจ้ าเป็ นต้ องใช้ วธิ ี
“การสะสมขยะ” (garbage collection) เพือ่ กาหนดว่ าเมือ่ ไรที่
ค่ าการอ้ างอิงสุ ดท้ ายถูกลบไปแล้ ว และพืน้ ทีใ่ นดิสก์ ตรงนั้นสามารถนามาจัดสรร
ใหม่ ได้ แล้ว
ไดเรกทอรี แบบกราฟโดยทั่วไป
(General Graph Directory)
• การสะสมขยะจาเป็ นสาหรับกราฟแบบมีวงจรเท่ านั้น ดังนั้นกราฟแบบไม่มีวงจร
ใช้ งานง่ ายกว่ ามาก ปัญหาก็คอื การเลีย่ งไม่ ให้ เกิดวงจรเมือ่ link ใหม่ ถูกเพิม่ เข้ า
มาในโครงสร้ าง เราจะรู้ ได้ อย่ างไรว่ าเมือ่ ไร link ใหม่ จะเป็ นวงจรอย่างสมบูรณ์
มีอลั กอริทมึ ในการค้ นหาวงจรในกราฟ แต่ มนั เสี ยเวลา ดังนั้นโดยทัว่ ไปโครงสร้ าง
ไดเรกทอรีแบบต้ นไม้ น่าใช้ กว่ าโครงสร้ างของกราฟแบบไม่ มวี งจร
การป้องกัน (Protection)
•
•
•
•
•
•
ชนิดของการเข้ าถึงแฟ้มข้ อมูล (Types of Access)
Read – อ่ านจากแฟ้มข้ อมูล
Write – เขียนหรือเขียนอีกครั้ง (rewrite) แฟ้มข้ อมูล
Execute – load แฟ้มข้ อมูลเข้ าสู่ หน่ วยความจาและทางานนั้น
Append – เขียนสารสนเทศใหม่ ต่อท้ ายแฟ้มข้ อมูล
Delete – ลบแฟ้มข้ อมูลและคืนพืน้ ทีใ่ ห้ สามารถใช้ ใหม่ ได้
List – แสดงชื่อและคุณลักษณะของแฟ้มข้ อมูล
รายการเข้ าถึงแฟ้มข้ อมูลและกลุ่ม
(Access Lists and Groups)
•
รายการการเข้ าถึงแฟ้มข้ อมูล (access list) คือ การเจาะจงชื่อของผู้ใช้
และชนิดของการเข้ าถึงแฟ้มข้ อมูลของผู้ใช้ แต่ ละคน เมือ่ ผู้ใช้ ร้องขอเข้ าถึง
แฟ้มข้ อมูล ระบบปฏิบัตกิ ารจะตรวจสอบรายการการเข้ าถึงแฟ้มข้ อมูล
(access list) ทีเ่ กีย่ วข้ องกับแฟ้มข้ อมูลนั้น ถ้ าการร้ องขอนั้นมีใน
รายการของผู้ใช้ คนนั้น การเข้ าถึงก็จะได้ รับอนุญาต มิฉะนั้นจะเป็ นการฝ่ าฝื นใน
การป้ องกัน และงานของผู้ใช้ จะถูกปฏิเสธการเข้ าถึงแฟ้มข้ อมูล (access
denies)
รายการเข้ าถึงแฟ้มข้ อมูลและกลุ่ม
(Access Lists and Groups)
• ปัญหาหลักเกีย่ วกับรายการการเข้ าถึงแฟ้มข้ อมูล คือ ความยาวของรายการ ถ้ าเรา
ต้ องการให้ ทุกคนอ่ านแฟ้มข้ อมูล เราต้ องแสดง (list) รายการผู้ใช้ ทุกคนด้ วย
การเข้ าถึงแบบอ่าน (read access) การทาเช่ นนีม้ ีผลลัพธ์ 2 ประการ
• การสร้ างรายการอาจจะเป็ นงานที่น่าเบื่อและไม่ ได้ อะไร โดยเฉพาะถ้ าเราไม่ เห็นว่ า
รายการของผู้ใช้ ในระบบมีข้อดีอะไร
• ไดเรกทอรีต้องเปลีย่ นจากขนาดคงที่เป็ นแบบแปรผัน ทาให้ การจัดการพืน้ ที่
ซับซ้ อนขึน้ กว่ าเดิม
• ปัญหานีแ้ ก้ ได้ โดยใช้ รายการการเข้ าถึงแฟ้มข้ อมูลแบบกะทัดรัด
รายการเข้ าถึงแฟ้มข้ อมูลและกลุ่ม
(Access Lists and Groups)
• เพือ่ บีบความยาวของรายการการเข้ าถึงแฟ้มข้ อมูลให้ กะทัดรัด หลาย ๆ ระบบแบ่ ง
ประเภทของผู้ใช้ เป็ น 3 ประเภท ในการติดต่ อกับแฟ้มข้ อมูลแต่ ละแฟ้ม
• เจ้ าของ (Owner) คือ ผู้ใช้ ทสี่ ร้ างแฟ้มข้ อมูลเป็ นของตัวเอง
• กลุ่ม (Group) คือ กลุ่มของผู้ใช้ ทใี่ ช้ แฟ้มข้ อมูลร่ วมกัน และต้ องการการ
เข้ าถึงแฟ้มข้ อมูล (access ) ทีค่ ล้ ายกันในกลุ่มหรือกลุ่มงาน
(workgroup)
• คนอืน่ (universe) คือ ผู้ใช้ อนื่ ๆ ทั้งหมดในระบบ
รายการเข้ าถึงแฟ้มข้ อมูลและกลุ่ม
(Access Lists and Groups)
• ตัวอย่างเช่ น Sara กาลังเขียนหนังสื อเล่มใหม่ เธอจ้ างคนที่จบปริ ญญาตรีมา 3
คน (Jim , Dawn , Jill) มาช่ วย ข้ อความในหนังสื อเก็บไว้ ในไฟล์
ชื่อ book การป้องกันไฟล์ทาได้ ดงั นี้
• Sara ต้ องสามารถทางานบนไฟล์ นีไ้ ด้ ทุกอย่ าง
• Jim , Dawn และ Jill ควรจะอ่านและเขียนไฟล์นีไ้ ด้ เท่ านั้น พวกเขา
ไม่ ควรลบไฟล์นีไ้ ด้
• ผู้ใช้ คนอืน่ ควรจะอ่ านไฟล์ นีไ้ ด้ (เธอต้ องการให้ คนทัว่ ไปได้ อ่านและให้
feedback กลับมา)
รายการเข้ าถึงแฟ้มข้ อมูลและกลุ่ม
(Access Lists and Groups)
• เพือ่ ให้ การป้ องกันสาเร็จ เราต้ องสร้ างกลุ่มใหม่ (new group) เรียกว่ า text ให้ มี
สมาชิกคือ Jim , Dawn และ Jill ชื่อของกลุ่ม text ต้ องเกีย่ วข้ องกับไฟล์
book และการเข้ าถึงอย่ างถูกต้ องเราต้ องตั้งตามนโยบายข้ างต้ น
• ตัวอย่ างในระบบ UNIX มีการกาหนดบิตขึน้ 3 บิต rwx r ควบคุมการเข้ าถึงแบบอ่ าน
(read), w ควบคุมการเขียน (write), x ควบคุมการทางาน
(execution) ดังนั้นจากตัวอย่ างของเรา การป้ องกันไฟล์ book ทาได้ ดงั นี้
• สาหรับเจ้ าของ (owner) Sara ทั้ง 3 บิตต้ องถูกตั้ง (set) ให้
• สาหรับกลุ่ม (group) text บิต r และ w ถูกตั้งให้
• และสาหรับคนอืน่ (universe) มีแต่ บิต r ทีต่ ้ังให้
วิธีการป้องกันอื่น ๆ
(Other Protection Approaches)
•
เช่ น การใช้ รหัสผ่าน (password) การเข้ าถึงแฟ้มข้ อมูลแต่ ละแฟ้ ม
ต้ องทาโดยรหัสผ่าน แต่ กม็ ขี ้ อเสี ย ถ้ าแต่ ละแฟ้มมีรหัสผ่านต่ างกัน ผู้ใช้ อาจจาไม่ ได้
หมด ถ้ าใช้ รหัสผ่ านเหมือนกันหมดกับทุกแฟ้ม ถ้ าเกิดถูกค้ นพบครั้งหนึ่งทุกแฟ้มก็
เข้ าได้ หมด
ตัวอย่ างใน UNIX (An Example : UNIX)
•
•
การป้ องกันไดเรกทอรี ทาได้ คล้ าย ๆ การป้ องกันแฟ้มข้ อมูล นั่นคือในแต่ ละ
ไดเรกทอรีจะมี 3 ฟิ ลด์ (เจ้ าของ, กลุ่ม และคนอืน่ ) แต่ ละฟิ ลด์ มี 3 บิต
rwx ดังนั้นผู้ใช้ สามารถเปลีย่ นไดเรกทอรีปัจจุบันไปอีกไดเรกทอรีนึงได้ ถ้า
บิต x ของไดเรกทอรีย่อยนั้นถูกตั้งให้
ตัวอย่างการแสดงรายการไดเรกทอรีจาก UNIX แสดงดังรู ป 10.11
ฟิ ลด์ แรกบรรยายถึงการป้องกันไฟล์หรือไดเรกทอรี ตัวอักษรแรก d หมายถึง
ไดเรกทอรีย่อย นอกจากนั้นยังแสดงจานวน link ของไฟล์ , ชื่อเจ้ าของ ,
ชื่อของกลุ่ม , ขนาดของไฟล์ในหน่ วยของไบต์ , วันที่สร้ าง และ ชื่อของไฟล์
(ตามด้ วยนามสกุล)
ตัวอย่ างใน UNIX (An Example : UNIX)