50
บทที4 การจัดการข้อมูล ( File Management) แนวความคิดเกี่ยวกับแฟ้มข้อมูล (File Concept) คอมพิวเตอร์สามารถเก็บสารสนเทศ ได้ในหลายๆ สื่อ เช่น จานแม่เหล็ก เทป แฟ้มข้อมูล (files) ถูกจับคู่โดยระบบปฏิบัติการ ไปสูอุปกรณ์ทางกายภาพ อุปกรณ์ที่ใช้เก็บข้อมูลเหล่านี ้เป็น แบบถาวร (nonvolatile) ถึงแม้ไฟดับหรือ boot เครื่องใหม่ข้อมูลก็ยังอยูแฟ้มข้อมูล คือ ชื่อของสารสนเทศที่สัมพันธ์กัน ซึ ่งถูกบันทึกไว้ในหน่วยเก็บข้อมูลสํารอง (secondary storage) ในมุมมองของผู้ใช้แฟ้มข้อมูลคือการจัดสรรที่เล็กที่สุดของหน่วยเก็บข้อมูล สํารองทางตรรกะ นั่นคือ ข้อมูลจะไม่ถูกเขียนลงในหน่วยเก็บข้อมูลสํารองถ้าไม่ได้เขียนลง แฟ้มข้อมูล ดังนั ้น แฟ้มข้อมูลจึงเป็นตัวแทนของโปรแกรมและข้อมูล แฟ้มข้อมูล อาจเป็นตัวเลข ตัวอักษร หรือ ตัวเลขปนตัวอักษร แฟ้มข้อมูลถูกกําหนดเป็นโครงสร้าง ตามชนิดของข้อมูล Text file คือ ลําดับของตัวอักษรที่เรียงกันในบรรทัด (หรือหน้า) Source file คือ ลําดับของโปรแกรมย่อย (subroutine) และฟังก์ชัน(อาจเป็นการประกาศค่าตาม ประโยค) Object file คือ ลําดับของไบต์ ที่จัดเรียงในบล็อกที่ตัวเชื่อมโยง (linker) ของระบบเข้าใจ Executable file คือ ลําดับของส่วนของรหัสโปรแกรมซึ ่งตัว load โปรแกรม (loader) นําเข้ามายัง หน่วยความจําและสั่งให้ทํางาน (execute) 4.1.1 ลักษณะของแฟ้มข้อมูล (File attributes) ชื่อ (Name) ชื่อแฟ้มข้อมูลคือ สัญลักษณ์ (สารสนเทศ) ที่เก็บไว้ในรูปแบบที่มนุษย์ สามารถอ่านได้ ชนิด (Type) ส่วนนี ้จําเป็นสําหรับระบบซึ ่งสนับสนุนชนิดของข้อมูลหลายๆชนิด ตําแหน่ง (Location) - เป็นตัวชี ้ไปยังอุปกรณ์และตําแหน่งของแฟ้มข้อมูลบนอุปกรณ์นั ้น ขนาด (Size) ขนาดของแฟ้มข้อมูลในปัจจุบัน (ไบต์ , คําหรือบล็อก) การป้องกัน (protection) การควบคุมให้สามารถ อ่าน เขียน ทํางาน ฯลฯ เวลา วันทีและเอกลักษณ์เฉพาะของผู ้ใช้ (Time , date , and user identification)

บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

บทท 4 การจดการขอมล ( File Management) แนวความคดเกยวกบแฟมขอมล (File Concept)

คอมพวเตอรสามารถเกบสารสนเทศ ไดในหลายๆ สอ เชน จานแมเหลก เทป แฟมขอมล (files) ถกจบคโดยระบบปฏบตการ ไปส อปกรณทางกายภาพ อปกรณทใชเกบขอมลเหลานเปนแบบถาวร (nonvolatile) ถงแมไฟดบหรอ boot เครองใหมขอมลกยงอย

แฟมขอมล คอ ชอของสารสนเทศทสมพนธกน ซงถกบนทกไวในหนวยเกบขอมลสารอง (secondary storage) ในมมมองของผใชแฟมขอมลคอการจดสรรทเลกทสดของหนวยเกบขอมลสารองทางตรรกะ นนคอ ขอมลจะไมถกเขยนลงในหนวยเกบขอมลสารองถาไมไดเขยนลงแฟมขอมล ดงนน แฟมขอมลจงเปนตวแทนของโปรแกรมและขอมล แฟมขอมล อาจเปนตวเลข ตวอกษร หรอ ตวเลขปนตวอกษร แฟมขอมลถกกาหนดเปนโครงสราง ตามชนดของขอมล Text file คอ ลาดบของตวอกษรทเรยงกนในบรรทด (หรอหนา) Source file คอ ลาดบของโปรแกรมยอย (subroutine) และฟงกชน(อาจเปนการประกาศคาตามประโยค) Object file คอ ลาดบของไบต ทจดเรยงในบลอกทตวเชอมโยง (linker) ของระบบเขาใจ Executable file คอ ลาดบของสวนของรหสโปรแกรมซงตว load โปรแกรม (loader) นาเขามายงหนวยความจาและสงใหทางาน (execute) 4.1.1 ลกษณะของแฟมขอมล (File attributes)

ชอ (Name) – ชอแฟมขอมลคอ สญลกษณ (สารสนเทศ) ทเกบไวในรปแบบทมนษยสามารถอานได

ชนด (Type) – สวนนจาเปนสาหรบระบบซงสนบสนนชนดของขอมลหลายๆชนด ตาแหนง (Location) - เปนตวชไปยงอปกรณและตาแหนงของแฟมขอมลบนอปกรณนน ขนาด (Size) – ขนาดของแฟมขอมลในปจจบน (ไบต, คาหรอบลอก) การปองกน (protection) – การควบคมใหสามารถ อาน เขยน ทางาน ฯลฯ เวลา วนท และเอกลกษณเฉพาะของผใช (Time , date , and user identification)

Page 2: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 179

– เกบขอมลพวก วนท สรางแฟมนขนมา , ปรบปรงครงสดทายเมอไหร, และใชครงสดทายเมอไหรขอมลเหลานจะเปนประโยชนในเรองการปองกน, การรกษาความปลอดภยและการควบคมการใชงาน

4.1.2 คณสมบตของแฟมขอมล (File Operation)

การสรางแฟมขอมล (Creating a file) 1. หาทวางในระบบแฟมขอมล 2. ชองวางของแฟมขอมลใหมตองถกสรางในไดเรกทอร (ไดเรกทอรจะบนทกชอแฟม และ

ตาแหนงในระบบแฟมขอมล)

การเขยนแฟมขอมล (Writing a file)

ใชการเรยกระบบใหเจาะจง ชอแฟมและสารสนเทศทจะถกเขยนลงแฟมขอมลโดยระบบจะคนหาไดเรกทอร เพอระบตาแหนงถดไปทจะตองเขยน

การอานแฟมขอมล (Reading a file)

ใชการเรยกระบบเพอเจาะจงชอแฟมและทซง(ในหนวยความจา) บลอกถดไปของแฟมขอมลควรจะอย จากนนไดเรกทอรจะถกคนหาและระบบจะเกบ read pointer เพอระบตาแหนงถดไปทตองอาน โดยทวไปแฟมทถกอานหรอเขยนระบบสวนใหญมกเกบ pointer ไวตวเดยว ทใชทงอานและเขยนไดเรยกวา “ตวชตาแหนงแฟมปจจบน” (current-file-position pointer) เพอประหยดพนทและลดความซบซอนของระบบ

การยายตาแหนงภายในแฟมขอมล (Repositioning within a file)

เรมจากคนหาไดเรกทอรทตองการและกาหนดคาใหตวชตาแหนงแฟมปจจบนการยายตาแหนงภายในแฟมขอมลไมจาเปนตองเกยวของกบ I/O จรงๆเลยการทางานของแฟมนเรยกวา การคนหา (seek) ขอมล

การลบแฟมขอมล (Deleting a file)

เรมจากการคนหาไดเรกทอรทมชอจากแฟมทจะลบเมอพบแลวเรากปลดปลอยทวางทงหมดของแฟมนน (ดงนนทวางดงกลาวกสามารถใหแฟมอนใชงานได) และลบขอมลนนใน ไดเรกทอรทง

การตดแฟมขอมลใหสนลง (truncating a file)

เมอผใชตองการใหแฟมขอมลมคณลกษณะเหมอนเดม แตตองการลบเนอหาของ

Page 3: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 180

แฟมขอมลแทนทจะลบและสรางใหม เราสามารถใชฟงกชนนเพอใหคณลกษณะตางๆ ยงคงอย (ยกเวนความยาวของแฟมขอมลจะถกตงใหมใหมความยาวเปนศนย

นอกจาก 6 ขอ ดงกลาวยงมการทางานอนอกเชน การตอทาย (appending) การเปลยนชอ (renaming) การคดลอก (copy) แฟมขอมลหรอคดลอกแฟมไปสอปกรณ รบสงขอมลอกตวหนง เชน เครองพมพ หรอ จอภาพ โดยตองมการสรางแฟมใหมและอานจากแฟมเกาเพอเขยนลงแฟมใหม

การทางานของแฟมขอมลโดยสวนใหญมกเกยวของกบการคนหาไดเรกทอร เพอหาชองทเกยวของกบชอแฟม เพอหลกเลยงการคนหานหลายๆระบบจะเปด (open) แฟมขอมลเมอถกใชครงแรก ระบบปฏบตการจะเกบตารางเลกๆ ทบรรจสารสนเทศเกยวกบการเปดแฟมขอมลทงหมด (open-file-table) เมอการทางานเกยวกบแฟมถกรองขอกเพยงแตใชดชนในตาราง ทาใหไมตองใชการคนหาอกตอไปเมอไมตองการใชแฟมขอมลน นแลว ก ปด (close) โดยกระบวนการและระบบปฏบตการจะเอามนออกจาก open – file table

โดยสรปมสารสนเทศหลายสวนทเกยวของกบการกบการเปดแฟมขอมล ดงน

ตวชแฟมขอมล (File pointer) – ระบบซงไมมระยะหางจากขอบของแฟมขอมล (file offset) ทเปนสวนหนงของคาสงเรยกระบบ read และ write ระบบตองตามรอยตาแหนงทอานหรอเขยนเปนครงสดทายเหมอนตวชตาแหนงแฟมขอมลปจจบน (current-file-position pointer)

การนบการเปดแฟมขอมล (File open count) - เมอแฟมขอมลถกปด ระบบปฏบตงานตองใชชองของตารางเปดแฟมขอมล (open file table ) อกครง หรอไมกใชทวางในตาราง เพราะกระบวนการหลายๆ กระบวนการอาจจะเปดแฟมขอมลระบบตองรอใหแฟมสดทายปดกอนจะลบชองในตารางเปดแฟมสดทาย ระบบจงจะลบชอง (entry) ได

ตาแหนงของแฟมขอมลบนดสก (Disk location of the file) - การทางานของแฟมขอมลสวนใหญตองการใหระบบปรบปรงขอมลภายในแฟมขอมลสารสนเทศทจาเปนสาหรบระบตาแหนงแฟมขอมลบนดสกถกเกบไวในหนวยความจาเพอหลกเลยงทจะตองอานจากดสกสาหรบการทางานแตละครง

4.1.2.1 ชนดของแฟมขอมล (File types) เทคนคทวๆไปสาหรบการนาชนดของแฟมขอมลไปใช คอการรวมชนดเขาเปนสวนหนง

ของชอแฟมขอมล ชอจะถกแบงเปน 2 สวนคอ ชอ และ นามสกล (extension) โดยทวไปจะแยกกนโดยใช (.) ดรป 4.1

Page 4: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 181

รปท 4.1 แสดงชนดของแฟมขอมลทวไป

วธนทาใหผใชและระบบปฏบตการทราบวาแฟมขอมลนนเปนแฟมชนดใด ตวอยางเชน ใน MS-DOS ชอยาวไมเกน 8 ตวอกษรแลวตามดวยจดและจบดวย นามสกล 3 ตวอกษรระบบจะใชนามสกลเพอบงชชนดของแฟมและชนดของการทางาน (operation)ซงสามารถทาไดกบแฟมนน ตวอยางเชน ไฟล “com” , “.exe” หรอ “.bat” , สามารถ execute ได “.com” และ “.exe” เปน binary executable file “.bat”เปนแฟมขอมลแบบกลม (batch)บรรจในรปแบบ ASCIIตวแปลภาษา assembly ยอมรจกแฟมขอมลทมนามสกลเปน “.asm” ในระบบ Macintosh รจกพวก “text” หรอ “pict” 4.1.2.2 โครงสรางของแฟมขอมล (File structure)

แฟมขอมลตองมโครงสรางทระบบปฏบตการเขาใจได เชน ระบบปฏบตการ อาจตองการ executable file ทมโครงสรางเฉพาะเพอเอาไปกาหนดวาจะ load แฟมขอมลวาไวยงตาแหนงใดในหนวยความจาและตาแหนงของคาสงแรก คออะไร

File Type Usual extension

Function

Executable exe, com, bin or none ready-to-run machine-language 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.

Page 5: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 182

ในระบบ UNIX แตละแฟมขอมลจะมบตทเรยงลาดบกน 8 บต โดยไมมการเปลยนแปลงบตเหลานจากระบบปฏบตการ วธนยดหยนทสดแตมการสนบสนนนอย โปรแกรมประยกตแตละโปรแกรมตองแนบรหสโปรแกรมของตวเองไปดวยเพอแปลแฟมนาเขาใหเปนโครงสรางทนาพอใจ อยางไรกตามระบบปฏบตการกตองสนบสนนอยางนอย 1 โครงสราง นนคอ executable file เพอใหระบบสามารถ load และ run โปรแกรมได

อกตวอยางหนงของระบบปฏบตการทสนบสนน โครงสรางของแฟมขอมลเลกนอยคอ Macintosh ซงแฟมขอมลม 2 สวน คอ resource fork และ data fork

resource fork บรรจสารสนเทศทผใชสนใจ เชน ตวฉลากบนปมทแสดงโดยโปรแกรมผใชตางประเทศอาจจะตองการเปลยนฉลากนนเปนภาษาของเขาเองซง Macintosh สนบสนนเครองมอทอนญาตใหปรบปรงขอมลใน resource fork ได

data fork บรรจโปรแกรม , รหสโปรแกรม (code) หรอขอมล(เนอหาของแฟมขอมลทวไป)

4.1.2.3 โครงสรางของแฟมขอมลภายใน (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) สามารถทาไดโดยโปรแกรมประยกตของผใชหรอโดยระบบปฏบตการ

อกกรณหนง แฟมขอมลอาจถกพจารณาเปนบลอกแบบเรยงลาดบฟงกชน I/O พนฐานทงหมดจะทางานในแบบของบลอก การแปลงจาก logical record ไปเปน physical block คอปญหาอยางงายของซอฟตแวร

สงเกตไดวา พนทวางในดสก มกถกจดสรรเปนบลอก บางสวนของบลอกสดทายของแตละแฟมขอมลอาจจะเสยไป ถาแตละบลอกม 512 ไบต ดงนนแฟมขนาด 1949 ไบต ควรม 4 บลอก (2048 ไบต) ทเหลอ 99 ไบต จะเสยไป นนคอ การสญเสยพนทยอยภายใน (internal fragmentation) ฉะนนถาบลอกขนาดใหญกจะเสยพนทมากตามไปดวย

4.1.3 วธการเขาถงระบบแฟมขอมล 4.1.3.1 การเขาถงขอมลแบบเรยงลาดบ (Sequential access)

สารสนเทศในแฟมขอมลถกดงเขาถงเปนลาดบ วธการเขาถงขอมลแบบนเปนวธธรรมดาทสด ตวอยางเชน editor และ compiler มกเขาถงแฟมขอมลตามวธน

Page 6: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 183

การทางาน (operation) บนแฟมขอมลคอ อาน และเขยน ตวอาน จะอานสวนถดไปของแฟม และเปลยนคาตวชแฟมขอมลโดยอตโนมตตามตาแหนงของ I/O คลายๆ กบการเขยนตอทายแฟมขอมลแตละแฟมขอมลสามารถกลบ ไปเรมตนใหมและบางระบบโปรแกรมอาจจะสามารถขามไปขางหนาหรอขางหลง N ระเบยน (record) ได เมอ N คอเลขจานวนเตม (บางท N=1) การเขาถงแฟมขอมลแบบเรยงลาดบถกบรรยายในรป 4.2

รปท 4.2 แสดงแฟมขอมลทมการเขาถงแบบเรยงลาดบ การเขาแฟมขอมลแบบเรยงลาดบเปนพนฐานของ เทป 4.1.3.2 การเขาถงแฟมขอมลโดยตรง (Direct Access)

หรอการเขาถงแฟมขอมลแบบสมพนธ (relative access) แฟมขอมลถกสรางขนเปน logical record ทมความยาวคงท ซงอนญาตใหโปรแกรมอานและเขยนระเบยนอยางรวดเรวโดยไมมลาดบ การเขาถงแฟมขอมลโดยตรงเปนพนฐานของดสก เมอ ดสกอนญาตใหเขาถงบลอคของแฟมขอมลแบบสม สาหรบการเขาถงแฟมขอมลโดยตรง แฟมขอมลจะถกมองเปนจานวนของ บลอคหรอระเบยนดงนนเราอาจจะอานบลอค 14 แลวอานบลอค 53 แลวเขยนบลอค 7 ได

หมายเลขบลอคทผใชเตรยมใหระบบปฏบตการคอ หมายเลขบลอคสมพนธ (relative block number) หมายเลขบลอคสมพนธ คอดชนทสมพนธกบจดเรมตนของแฟมขอมล ดงนน บลอคสมพนธแรกของแฟมขอมลคอ 0 ถดไปคอ 1 ไปเรอย ๆ อยางไรกตาม ตาแหนงของดสกจรงๆ อาจเปน 14703 สาหรบบลอคแรกและบลอคทสอง อาจเปน 3192 การใชหมายเลขบลอคสมพนธทาใหระบบปฏบตการตดสนใจวา แฟมขอมลควรจะถกเอาไปไวทไหนและชวยปองกนผใชจากการเขาถงสวนของระบบแฟมขอมลทไมใชสวนของเขา บางระบบเรมหมายเลขบลอคสมพนธนท 0 , บางระบบอาจเรมจาก 1 ระบบโดยทวไปไมสนบสนนท งแบบเรยงลาดบและโดยตรงบางระบบสนบสนนแบบเรยงลาดบ บางระบบเปนแบบโดยตรงบางระบบตองการให เมอเรมสรางแฟมขอมลกกาหนดไปเลยวาเปนแบบเรยงลาดบหรอโดยตรง อยางไรกตาม มนกไมยากทจะจาลองสถานการณจากแบบ

Beginnig

rewind read or write

current positionend

Page 7: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 184

เรยงลาดบใหเปนแบบโดยตรง ถาเรามตวแปร cp เปนตวกาหนดตาแหนงปจจบนของเรา ดงนนเราสามารถจาลองการทางานของแฟมแบบเรยงลาดบไดดงรป4.3

รปท 4.3 แสดงการจาลองการเขาถงแบบเรยงลาดบบนแฟมขอมลทมการเขาถงแบบโดยตรง

ในทางตรงกนขาม มนไมมประโยชนเลยถาจะลองใหเปลยนจากแบบโดยตรงมาเปนแบบเรยงลาดบ

4.1.3.3 การเขาถงขอมลแบบอน (Other Access Method) วธเสรมนเกยวของกบการสรางดชน (index) ใหแฟมขอมล ดชนน (เหมอนดชนทายหลง

หนงสอ) บรรจตวชบลอคในการหาระเบยนในแฟมขอมล ขนแรกเราตองคนหาดชนแลวใชตวชในการเขาถงแฟมขอมลโดยตรงและหาระเบยนทตองการ ตวอยางเชน แฟมขอมลเกบราคาสนคา แตละระเบยนประกอบดวย รหสสนคา 10 หลก ราคา 6 หลก รวมเปน 16 ไบต ถาดสกของเราม 1024 ไบต/บลอกราสามารถเกบได 64 ระเบยน/บลอกแฟมทม120,000 ระเบยนควรจะม 2,000 บลอก (2 ลานไบต) ดชนควรม 2,000 ชอง ของทกๆ 10 หลกหรอ 20,000 ไบต แลวควรเกบไวในหนวยความจา ในการคนหาราคาของสนคาเราสามารถคนหา (binary search) ดชน ในการคนหานเราควรจะรวาบลอคไหนบรรจระเบยนทตองการแลวจงเขาถงบลอกนน โครงสรางขอมลแบบนทาใหเราสามารถคนหาแฟมขอมลขนาดใหญไดดวยการทา I/O เพยงนดเดยว ถาแฟมขอมลมขนาดใหญ แฟมดชนกตองมขนาดใหญเกนจะเกบไวในหนวยความจาได วธแกวธหนง คอ สรางดชนสาหรบแฟมดชน (index file) แฟมขอมลปฐมภม (primary index file) ควรจะบรรจตวชไปยงแฟมขอมลทตยภม (secondary index file) ซงควรจะชไปยงขอมลจรง ตวอยางเชน ดชนแบบเรยงลาดบของ IBM (ISAM) ใช master index เลกๆ ซงชไปยง บลอคของดสกของดชนทตยภม (secondary index) ดชนทตยภมจะชไปยงบลอคของแฟมขอมลจรง แฟมขอมลถกเกบแบบเรยงลาดบโดยการกาหนด Key ขนมา เพอหาขอมลทตองการ ขนแรกเราตอง

Sequential Access Implementation for direct access

Reset cp := 0;

Read next Read cp; cp := cp +1;

Write next Write cp; cp := cp +1;

Page 8: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 185

คนหาแบบ binary เพอหา master index เพอจดเตรยมหมายเลขบลอกของดชนทตยภมบลอกถกอานแลวคนหาแบบ binary อกครง เพอหาบลอกทบรรจระเบยนทตองการขนสดทาย บลอกนจะถกคนหาแบบเรยงลาดบ ดวยวธการนระเบยนตางๆ สามารถระบตาแหนงจาก key ของมน โดยการอานแบบโดยตรงทง 2 ครง รปท4.4 แสดงสถานะการณคลายๆกน ซงนาไปใชโดยดชนและแฟมสมพนธของ VMS

รปท 4.4 แสดงตวอยางของแฟมดชนและแฟมขอมลแบบสมพนธ

4.1.4 โครงสรางของไดเรคทอร (Directory Structure)

การจดการขอมลเปน 100 gigabyte ของดสก ตองทาเปน 2 สวน

1. ระบบแฟมขอมลตองแบงเปน partitions ใน IBM เรยก minidisks ใน PC และ Macintosh เรยก Volume โดยทวไป แตละดสกบนระบบบรรจอยางนอย 1 partition ผใชจาเปนตองเกยวของแต logical directory และโครงสรางของแฟมขอมล และสามารถมองขามปญหาทางกายภาพในการจดการพนทวางของแฟมขอมลดวยเหตน partition กสามารถมองเปนดสกเสมอนได (virtual disk)

2. แตละ partition บรรจสารสนเทศเกยวกบ แฟมขอมลภายใน partition สารสนเทศถกเกบในชองใน device directory หรอ เนอหาของตารางจานวน (volume table of contents) device

Page 9: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 186

directory (โดยทวไปเรยก”ไดเรคทอร”) บนทกสารสนเทศ เชน ชอ , ตาแหนง, ขนาด และชนดของแฟมขอมลใน partition รป 4.5 แสดงตวอยางการจดระเบยบของระบบแฟมขอมล

รปท 4.5 แสดงตวอยางการจดระเบยบของระบบแฟมขอมล

4.1.4.1 ไดเรกทอรระดบเดยว (Single-Level Directory) แฟมขอมลทงหมดถกเกบไวในไดเรกทอรเดยวกน (ดงรปท 10.6) ไดเรกทอรระดบเดยวม

ขอจากดอยางมนยสาคญ เมอแฟมขอมลมมากขนหรอมผใชมากกวา 1 คน ถาแฟมขอมลทงหมดอยในไดเรกทอรเดยวกน แฟมเหลานนตองมชอเฉพาะตว ถามผใช 2 คน เรยกแฟมขอมลชอ test ของตวเอง (คนละไฟลชอเดยวกน) ดงนน กฎชอเฉพาะตวกถกทาลายลง นอกจากนนยงมขอจากดในเรองความยาว ในระบบ MS-DOS ชอแฟมขอมลยาวไดไมเกน 11 ตวอกษร (รวมนามสกล) UNIX 255 ตวอกษร

รปท 4.6 แสดงไดเรกทอรระดบ

Page 10: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 187

4.1.4.2 ไดเรกทอรสองระดบ (Two-Level Directory) ขอเสยของไดเรกทอรระดบเดยวคอความสบสนของชอแฟมขอมลระหวางผใชตาง ๆ วธแก

พนฐานคอการสรางไดเรกทอรแยกกนใหผใชแตละคน ในโครงสรางไดเรกทอรสองระดบ ผใชแตละคนจะม user file directory ของตวเอง (UFD)

แตละ UFD มโครงสรางคลาย ๆ กน แตแสดงรายการแฟมขอมลของผใชคนเดยว เมองานของผใชเรมขนหรอผใช log in เขามา master file directory (MFD) ของระบบจะถกคนหา MFD ถกระบโดยชอของผใช (user name) หรอหมายเลขบญช (account number) และแตละชองชไปยง UFD สาหรบผใชนน (ดงรปท 4.7)

รปท 4.7 แสดงโครงสรางของไดเรกทอรสองระดบ

เมอผใชอางถงแฟมขอมล UFD ของเขาจะถกคนหา ดงนนผใชตางกนอาจมแฟมขอมลชอเดยวกนได ตราบใดทชอเหลานนภายในแตละ UFD เปนชอเฉพาะตว (ไมซากนใน UFD)

ในการสรางแฟมขอมลสาหรบผใชคนหนง ระบบปฏบตการจะคนหา UFD ของผใชคนนนเพอหาวามไฟลชอนอยกอนหรอไม ในการลบแฟมขอมล ระบบปฏบตการจะคนหาใน UFD อยางจากด ดงนนจงไมสามารถเกดเหตการณ การลบแฟมขอมลทมชอเดยวกนของผใชอกคนหนงได

โครงสรางไดเรกทอรสองระดบ แกปญหาการชนกนของชอได แตมปญหาในเรองการแยกผใชคนหนงออกจากคนอนอยางมประสทธภาพ การแยกนเปนขอดเมอผใชเปนอสระกนอยางสมบรณ แตจะเปนขอเสยเมอผใชตองการประสานงานบางงานและเขาถงแฟมขอมลของอกคนหนง บางระบบไมใหแฟมขอมลของผใชถกเขาถงโดยผใชคนอน

ถาการเขาถงแฟมขอมลทาได ผใชคนหนงตองมความสามารถทจะระบชอแฟมขอมลในไดเรกทอรของคนอน การระบชอแฟมขอมลในไดเรกทอรสองระดบ เราตองใหทงชอของผใชและชอแฟมขอมล ไดเรกทอรสองระดบสามารถมองเปนตนไม ราก (root) ของตนไมคอ MFD ทายาทโดยตรงคอ UFD ทายาทของ UFD คอ แฟมขอมลของตวมนเอง แฟมขอมลคอใบไมของตนไมนง

Page 11: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 188

เอง ชอของผใชและชอของแฟมขอมลกาหนดเสนทาง (path) ในตนไมจากราก (MFD) สใบ (แฟมทตองการ) ดงนนชอของผใชและชอไฟลกาหนดชอของเสนทาง (path name) แฟมขอมลทกแฟมในระบบมชอของเสนทาง เพอระบชอแฟมขอมลทมลกษณะเฉพาะ ผใชตองรชอของเสนทางของแฟมทตองการ ตวอยางเชน ถาผใช A หวงจะเขาถงแฟมขอมลชอ test ของเธอเอง เธอสามารถอางอง test ไดเลย แตถาจะเขาถง test ของผใช B (ไดเรกทอรชอ userb) เธอตองอางถง /userb/test ทก ๆ ระบบจะมไวยากรณของมนเองสาหรบการระบชอแฟมในไดเรกทอรอน ตวอยางในระบบ MS-DOS อาจเปน “C:\userb\test” แยกเปน partition , ชอของไดเรกทอร , และ ชอแฟมขอมล ในระบบ VMS ไฟล “login.com” อาจเปน “u:[sst.jdeck]login.com;1” u คอชอของ partition , “sst” คอ ชอไดเรกทอร , “jdeck” คอ ชอของไดเรกทอรยอย (subdirectory) และ “1” คอ หมายเลขเวอรชน ระบบอน ชอแรกกใหเปนชอ partition ทเหลอกเปนไดเรกทอรและไฟล เชน “/u/pbg/test” u คอ partition , “pbg” คอ ไดเรกทอร และ “test” คอ แฟมขอมล (file) “test” คอ แฟมขอมล (file)

4.1.4.3 ไดเรกทอรทมโครงสรางแบบตนไม (Tree-Structured Directories) เมอเรารวาจะมองไดเรกทอรสองระดบใหเปนตนไมสองระดบ (two-level tree) ยงไง เราก

สามารถมองโครงสรางของไดเรกทอรใหเปนตนไมทมความสงเทาไรกไดตามใจ (ดงรปท 4.8)

รปท 4.8 แสดงโครงสรางของไดเรกทอรแบบตนไม

Page 12: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 189

หลกการนทาใหผใชสามารถสรางไดเรกทอรยอย (subdirectory) ของตวเองได และสามารถจดระเบยบแฟมขอมลของพวกเขาไดดวย ตวอยางเชนในระบบ MS-DOS ถกสรางโครงสรางเหมอนตนไม ตนไมม root directory ทก ๆ แฟมขอมลในระบบมชอของเสนทางเฉพาะตว (unique path name) ชอของเสนทาง คอ เสนทางทมาจาก root ผานมาเปนไดเรกทอรยอย เพอเจาะจงแฟมทตองการ

ไดเรกทอร (หรอไดเรกทอรยอย) บรรจกลมของแฟมขอมลหรอไดเรกทอรยอย ทกไดเรกทอรมรปแบบภายในเหมอน ๆ กน มบตหนงในแตละไดเรกทอรทกาหนดวาถาเปนแฟมขอมลจะมคาเปน 0 ถาเปนไดเรกทอรยอยจะมคาเปน 1 โปรแกรมเรยกระบบพเศษจะถกใชในการสรางและลบไดเรกทอรเหลาน

ในการใชงานปกต ผใชแตละคนจะม “ไดเรกทอรปจจบน” (current directory) ซงใชเกบแฟมขอมลทผใชสนใจในปจจบน เมอมการอางองแฟมขอมลกจะเกดการคนหาไดเรกทอรปจจบน ถาแฟมขอมลทตองการไมมในไดเรกทอรปจจบน ผใชตองระบชอของเสนทาง (path name) หรอเปลยนไดเรกทอรปจจบนไปเปนไดเรกทอรอน โปรแกรมเรยกระบบจะทาใหชอไดเรกทอรเปนเหมอนพารามเตอรและใชมนเพอกาหนดไดเรกทอรปจจบนใหม ดงนนผใชจงสามารถเปลยนไดเรกทอรปจจบนของเขาไดตามตองการ

ชอของเสนทาง (path name) ม 2 ชนด คอ ชอของเสนทางแบบสมบรณ (absolute path name) หรอ ชอของเสนทางแบบสมพนธ (relative path name) ชอของเสนทางแบบสมบรณ เรมตนท root แลวเดนทางลงมาจนถงแฟมขอมลทตองการ มการกาหนดชอของไดเรกทอรตลอดทาง ชอของเสนทางแบบสมพนธกาหนดเสนทางจากไดเรกทอรปจจบน ตวอยางเชน จากรปท 10.8 ถาไดเรกทอรปจจบนคอ root/spell/mail ดงนนชอของเสนทางแบบสมพนธคอ prt/first อางถงแฟมขอมลเดยวกนกบชอของเสนทางแบบสมบรณดงนคอ root/spell/mail/prt/first นโยบายในการลบไดเรกทอรของโครงสรางแบบตนไมน ถาไดเรกทอรวาง การลบไดเรกทอรกทาไดงาย แตถาไดเรกทอรไมวาง มไฟลหลายไฟล หรอมหลายไดเรกทอรยอย วธการจดการคอ

1. บางระบบ เชน MS-DOS จะลบไดเรกทอรไมไดถามนไมวาง ดงนนภาจะลบไดเรกทอร ผใชตองลบไฟลทงหมดในไดเรกทอรกอน ถามไดเรกทอรยอยอย กตองลบไฟลในไดเรกทอรยอยใหหมดกอน แลวจงลบไดเรกทอรยอยขนมาจนถงการลบไดเรกทอรทตองการลบ วธนทาใหตองทางานจานวนมาก

2. อกวธหนง เชน ในระบบ UNIX คาสง rm ใชลบไดเรกทอร ซงทงไฟลและไดเรกทอรยอยของ ไดเรกทอรนนจะถกลบทงหมด จะเหนไดวาวธนนาจะดในการนาไปใช เพราะสะดวก แตอนตรายมากเพราะทกไดเรกทอรสามารถถกลบไดดวยคาสงคาสงเดยว ถาคาสงเกดผดพลาด ไฟลและไดเรกทอรจานวนมากจาเปนทจะตองกกลบมาจาก backup เทปทจะตองกกลบมาจาก backup เทป

Page 13: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 190

4.1.4.4 ไดเรกทอรกราฟแบบไมเปนวงจร (Acyclic-Graph Directory) พจารณานกเขยนโปรแกรม 2 คน ททางานโครงการรวมกน แฟมขอมลทเกยวกบโครงการน

เกบไวในไดเรกทอรยอยทแยกมาจากโครงการอน แตนกเขยนโปรแกรมทงสองมความรบผดชอบตอโครงการนเทากน ทงคตองการไดเรกทอรยอยนเปนของตวเอง ซงไดเรกทอรยอยนควรจะถกใชรวมกน (share) การใชแฟมขอมลหรอไดเรกทอรรวมกน ไมไดเหมอนกบการม 2 สาเนา แตหมายถงมของจรงอยเพยงหนงเดยว การเปลยนแปลงททาโดยคน ๆ หนงควรจะทาใหคนอนเปนความเปลยนแปลงนไดในทนท แฟมขอมลใหมทถกสรางโดยคน ๆ หนงจะตองปรากฏในไดเรกทอรยอยทใชรวมกนทนทโดยอตโนมต โครงสรางแบบตนไมหามใหมการใชแฟมขอมลหรอไดเรกทอรรวมกน กราฟแบบไมเปนวงจร (acyclic graph) อนญาตใหมการใชไดเรกทอรและแฟมขอมลรวมกนได (ดงรปท 4.9)

รปท 4.9 แสดงโครงสรางของไดเรกทอรกราฟแบบไมเปนวงจร

แฟมขอมลหรอไดเรกทอรยอยอนเดยวกนอาจจะอยใน 2 ไดเรกทอรทตางกนได การใชแฟมขอมลและไดเรกทอรรวมกนสามารถนาไปใชไดหลาย ๆ ทาง เชน

1. ในระบบ UNIX การสรางไดเรกทอรใหมเรยกวา link link นคอตวชไปยงแฟมขอมลอกแฟมหนง หรออกไดเรกทอรยอย ตวอยางเชน link อาจเอาไปใชในชอของเสนทางแบบสมบรณ (เรยกวา symbolic link) เมอเกดการอางองแฟมขอมล เราจะคนหาไดเรกทอร ถาไดเรกทอรถกทาเครองหมายเปน link กจะไดมาซงชอของแฟมขอมลหรอไดเรกทอรจรง ๆ

Page 14: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 191

เราอธบาย link ไดอกโดยการใชชอของเสนทาง (path name) เพอหาตาแหนงแฟมขอมลจรง ๆ link จะถกจาแนกไดงายโดยรปแบบของมนในไดเรกทอร และถกระบชอโดยตวชทางออม (indirect pointer)

2. อกวธหนงในการใชแฟมขอมลรวมกน คอ การคดลอกสารสนเทศทงหมดไปไวในไดเรกทอรทใช

รวมกนทงค ดงนนไดเรกทอรทงคตองเหมอนกนและเทากน link จะแตกตางกนอยางชดเจนจากไดเรกทอรตนฉบบ ดงนนทงสองจงไมเทากน (ไดเรกทอรตนฉบบไมเทากบตวสาเนาทใชรวมกน) การคดลอกไดเรกทอรทาใหตนฉบบและตวสาเนาแยกกนได

ปญหาหลกของการคดลอกไดเรกทอรคอการบารงรกษาใหสอดคลองกนจะทาไดยงไง ถาแฟมขอมลมการปรบปรงไปแลว

อกปญหาหนงคอการลบ เมอไรดทเราจะลบได? ทางหนงทเปนไปไดคอ จะลบไฟลเมอมคนตองการลบมน แตการทาอยางนอาจทาใหเกดตวชอยางหลวม ๆ (dangling pointer) ชไปยงแฟมขอมลทไมมแลว ทแยกคอ ถาตวชแฟมขอมลเหลานเกบตาแหนงจรงของดสกไว และพนทดงกลาวถกใชโดยแฟมขอมลอนไปแลว ตวชอยางหลวม ๆ นอาจจะชไปยงตรงกลางของแฟมขอมลอนได

ในระบบทมการใชรวมกนแบบ symbolic link สถานการณแบบนแกไดงาย การลบ link จะไมสงผลตอไฟลตนฉบบ มแต link เทานนทถกลบ ถาแฟมขอมลถกลบ พนทของแฟมขอมลจะถกยดคนและทง link อยางหลวม ๆ ไป เราสามารถคนหา link เหลานและลบมนทง แตถารายการของ link ทเกยวของไมไดถกเกบไวในแตละแฟมขอมล การคนหานจะคอนขางเสยเวลา อกทางเลอกหนงคอ เราทง link ไปจนกวาจะใชมนอก เมอถงเวลาเราสามารถกาหนดใหแฟมขอมลไหนท link ไมมใหไปแกไขชอ link กอน

การแกไขนคลายกบ illegal filename (ในกรณนผออกแบบระบบควรพจารณาอยางถถวนวาอะไรควรทาเมอแฟมขอมลถกลบแลวอกแฟมขอมลทมชอเดมถกสรางขน กอนท symbolic link ของแฟมตนฉบบจะถกใช) ในระบบ UNIX symbolic link จะถกทงไปเมอแฟมขอมลถกลบ และมนขนอยกบผใชทจะคดเองวาแฟมตนฉบบหายไปแลวหรอถกแทนท

อกวธหนงในการลบ คอ สงวนแฟมขอมลไวจนกระทง การอางองทงหมดของมนถกลบไปแลว วธนเราตองมกลไกในการกาหนดวาการอางองสดทายของแฟมขอมลวาถกลบไปแลว เราควรเกบรายการของการอางองทงหมดไวในแฟมขอมล (ไดเรกทอร หรอ symbolic link) เมอ link หรอ การคดลอกไดเรกทอรถกสรางขน ขอมลใหมตองถกเพมเขาในรายการของแฟมอางอง เมอ link หรอไดเรกทอรถกลบ เรากจะลบขอมลมนออกจากรายการ แฟมขอมลจะถกลบเมอรายการในแฟมอางองวางเปลา

Page 15: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 192

ปญหาของวธนคอตวแปรและขนาดของรายการในแฟมอางองตองมขนาดใหญ แตอยางไรกตามเราไมตองเกบขอมลในรายการจรง ๆ เราเกบเฉพาะจานวนของการอางองกพอ ถามการสราง link หรอไดเรกทอรใหม เรากเพมคา ถาลบ link หรอไดเรกทอรกลดคา เมอนบได 0 แฟมขอมลนนกสามารถลบได

4.1.4.4 ไดเรกทอรแบบกราฟโดยทวไป (General Graph Directory)

ปญหาหลกของการใชโครงสรางของกราฟแบบไมเปนวงจรจะแนใจไดอยางไรวาจะไมม วงจรจรง ๆ ? ถาเราเรมจากไดเรกทอรสองระดบ แลวใหผใชสรางไดเรกทอรยอยเพมกกลายเปน ไดเรกทอรแบบตนไม ถงเราจะเพมแฟมขอมลและไดเรกทอรยอยอก กยงเปนไดเรกทอรแบบตนไมอยด แตถาเราเพมการเชอมโยงของไดเรกทอรทมอยแลว โครงสรางแบบตนไมกจะเสยไป เปนผลใหเกดโครงสรางแบบกราฟอยางงาย (ดงรปท 4.10)

รปท 4.10 แสดงไดเรกทอรแบบกราฟโดยทวไป

ถาเราพงจะคนหาแฟมขอมลในไดเรกทอรทใชรวมกน (share subdirectory) แลวไมเจอ เรานาจะหลกเลยงการคนหาไดเรกทอรยอยนนซา เพราะการหาซาทาใหเสยเวลา

ถาเราอนญาตใหมวงจรในไดเรกทอร นนคอเราตองการหลกเลยงการคนหาขอมลซ าเปนครงทสอง ถาออกแบบอลกอรทมไมดจะทาใหเกดการวนซา (loop) ไมรจบ การคนหาในวงจรกจะไมมวนจบสน วธแก คอ จากดจานวนของไดเรกทอร (ตามใจ) ทจะเขาใชในระหวางการคนหา

อกปญหาหนงคอในเรองการลบ ในไดเรกทอรแบบไมเปนวงจร คา 0 ในการนบการอางอง หมายถง แฟมขอมลนนลบได แตถามวงจรเกดขน คาการอางองอาจจะไมเปนศนย เมอแฟมขอมลหรอไดเรกทอรนนไมมแลว ในกรณนจาเปนตองใชวธ “การสะสมขยะ” (garbage collection) เพอ

Page 16: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 193

กาหนดวาเมอไรทคาการอางองสดทายถกลบไปแลว และพนทในดสกตรงนนสามารถนามาจดสรรใหมไดแลว

การสะสมขยะจาเปนสาหรบกราฟแบบมวงจรเทานน ดงนนกราฟแบบไมมวงจรใชงานงายกวามาก ปญหากคอการเลยงไมใหเกดวงจรเมอ link ใหม ถกเพมเขามาในโครงสราง เราจะรไดอยางไรวาเมอไร link ใหมจะเปนวงจรอยางสมบรณ มอลกอรทมในการคนหาวงจรในกราฟ แตมนเสยเวลา ดงนนโดยทวไปโครงสรางไดเรกทอรแบบตนไมนาใชกวาโครงสรางของกราฟแบบไมมวงจร

4.1.5 บอกวธการควบคมการเขาถงแฟมขอมลของผใช

เมอสารสนเทศถกเกบไวในระบบคอมพวเตอร สงทตองทาคอการปองกนขอมลจากความเสยหายทางกายภาพ (ความไวใจได) และการเขาถงขอมลอยางไมเหมาะสม (การปองกน)

4.1.5.1 ชนดของการเขาถงแฟมขอมล (Types of Access) กลไกการปองกนจดเตรยมการควบคมการเขาถงแฟมขอมลโดยจากดชนดของการเขาถงแฟมขอมลทสามารถทาได การเขาถงจะทาไดหรอไมขนอยกบปจจยหลายประการ หนงในนนคอชนดของการรองขอเขาถงแฟมขอมล ชนดของการทางานหลาย ๆ ชนดทตางกนอาจตองถกควบคม

Read – อานจากแฟมขอมล Write – เขยนหรอเขยนอกครง (rewrite) แฟมขอมล Execute – load แฟมขอมลเขาสหนวยความจาและทางานนน Append – เขยนสารสนเทศใหมตอทายแฟมขอมล Delete – ลบแฟมขอมลและคนพนทใหสามารถใชใหมได List – แสดงชอและคณลกษณะของแฟมขอมล

การทางานอน ๆ เชน การเปลยนชอ (renaming) การคดลอก (copying) หรอการปรบปรง (editing) แฟมขอมล กตองถกควบคมดวย 4.1.5.2 รายการเขาถงแฟมขอมลและกลม (Access Lists and Groups)

รายการการเขาถงแฟมขอมล (access list) คอ การเจาะจงชอของผใชและชนดของการเขาถงแฟมขอมลของผใชแตละคน เมอผใชรองขอเขาถงแฟมขอมล ระบบปฏบตการจะตรวจสอบรายการการเขาถงแฟมขอมล (access list) ทเกยวของกบแฟมขอมลนน ถาการรองขอนนมในรายการของผใชคนนน การเขาถงกจะไดรบอนญาต มฉะนนจะเปนการฝาฝนในการปองกน และงานของผใชจะถกปฏเสธการเขาถงแฟมขอมล (access denies)

Page 17: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 194

ปญหาหลกเกยวกบรายการการเขาถงแฟมขอมล คอ ความยาวของรายการ ถาเราตองการใหทกคนอานแฟมขอมล เราตองแสดง (list) รายการผใชทกคนดวยการเขาถงแบบอาน (read access) การทาเชนนมผลลพธ 2 ประการ

1. การสรางรายการอาจจะเปนงานทนาเบอและไมไดอะไร โดยเฉพาะถาเราไมเหนวารายการของผใชในระบบมขอดอะไร

2. ไดเรกทอรตองเปลยนจากขนาดคงทเปนแบบแปรผน ทาใหการจดการพนทซบซอนขนกวาเดม

ปญหานแกไดโดยใช รายการการเขาถงแฟมขอมลแบบกะทดรด

เพอบบความยาวของรายการการเขาถงแฟมขอมลใหกะทดรด หลาย ๆ ระบบแบงประเภทของผใชเปน 3 ประเภท ในการตดตอกบแฟมขอมลแตละแฟม

เจาของ (Owner) คอ ผใชทสรางแฟมขอมลเปนของตวเอง กลม (Group) คอ กลมของผใชทใชแฟมขอมลรวมกน และตองการการเขาถงแฟมขอมล

(access ) ทคลายกนในกลมหรอกลมงาน (workgroup) คนอน (universe) คอ ผใชอน ๆ ทงหมดในระบบ

ตวอยางเชน Sara กาลงเขยนหนงสอเลมใหม เธอจางคนทจบปรญญาตรมา 3 คน (Jim , Dawn , Jill) มาชวย ขอความในหนงสอเกบไวในไฟลชอ book การปองกนไฟลทาไดดงน

Sara ตองสามารถทางานบนไฟลนไดทกอยาง Jim , Dawn และ Jill ควรจะอานและเขยนไฟลนไดเทานน พวกเขาไมควรลบไฟลนได ผใชคนอนควรจะอานไฟลนได (เธอตองการใหคนทวไปไดอานและให feedback กลบมา)

เพอใหการปองกนสาเรจ เราตองสรางกลมใหม (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 ทตงให

Page 18: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 195

4.1.5.3 วธการปองกนอน ๆ (Other Protection Approaches) เชน การใชรหสผาน (password) การเขาถงแฟมขอมลแตละแฟมตองทาโดยรหสผาน แตกมขอเสย ถาแตละแฟมมรหสผานตางกน ผใชอาจจาไมไดหมด ถาใชรหสผานเหมอนกนหมดกบทกแฟม ถาเกดถกคนพบครงหนงทกแฟมกเขาไดหมด

ตวอยางใน UNIX (An Example : UNIX) การปองกนไดเรกทอร ทาไดคลาย ๆ การปองกนแฟมขอมล นนคอในแตละไดเรกทอรจะม 3 ฟลด (เจาของ, กลม และคนอน) แตละฟลดม 3 บต rwx ดงนนผใชสามารถเปลยนไดเรกทอรปจจบนไปอกไดเรกทอรนงไดถาบต x ของไดเรกทอรยอยนนถกตงให ตวอยางการแสดงรายการไดเรกทอรจาก UNIX แสดงดงรป 4.11 ฟลดแรกบรรยายถงการปองกนไฟลหรอไดเรกทอร ตวอกษรแรก d หมายถงไดเรกทอรยอย นอกจากนนยงแสดงจานวน link ของไฟล , ชอเจาของ , ชอของกลม , ขนาดของไฟลในหนวยของไบต , วนทสราง และ ชอของไฟล (ตามดวยนามสกล)

รปท 4.11 แสดงตวอยางการแสดงรายการของไดเรกทอร

-rw-rw-r- 1 pbg staff 31200 Sep 3 08:30 intro.ps drwx----- 5 pbg staff 512 Jul 8 09:33 private/ drwxrwxr-x 2 pbg staff 512 Jul 8 09:35 doc/ drwxrwx--- 2 pbg student 512 Aug 3 14:13 student-proj/ -rw-r-r- 1 pbg staff 9423 Feb 24 1993 program.c -rwxr-xr-x 1 pbg staff 20471 Feb 24 1993 program drwx-x-x 4 pbg faculty 512 Jul 31 10:31 lib/ drwx------ 3 pbg staff 1024 Aug 29 06:52 mail/ drwxrwxrwx 3 pbg staff 512 Jul 8 09:35 test/

Page 19: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 196

4.2 การใชงานระบบแฟมขอมล 4.2.1 วธการจดสรรแฟมขอมล

การจดการขอมลในแงของผใชจะยงเกยวกบการจดการแบงเกบขอมลลงไฟล และไดเรกทอร เพอใหใชไดสะดวก แตทจะกลาวถงตอไปนจะเปนการจดการขอมลในแงของ OS ซงจะเกยวของกบการจดการเนอทในอปกรณเกบขอมล (ดสก) และวธการจดเกบไฟล 4.2.1.1 การจดการเนอทในดสก

การเกบไฟลสวนใหญจะเกบลงบนดสก ดงนนการจดเนอทในดสกเพอการเกบไฟลจงเปนสงทสาคญ เพราะจะสงผลถงประสทธภาพการทางานของOS ดวย โดยทวไปแลววธการจดเกบไฟลลงดสกมอย 2 วธคอ เกบเนอหาในไฟลแตละไบตเรยงตดกนตลอดทงไฟล และแบงไฟลเปนบลอกเลกๆ ขนาดเทากน การเกบแตละบลอกของไฟลไมจาเปนตองเรยงตดกนกได

การเกบไฟลทใชเนอทในดสกเรยงตอเนองกนตลอดทงไฟล (continuous allocation) จะเกดปญหามากในการใชงานกลาวคอ ถาไฟลทเกบอยมขนาดใหญขนการเกบกตองการเนอทเพมมากขน ไฟลนนอาจไมสามารถถกเกบไวในตาแหนงเดมในดสกได เนองจากไมมทวางพอเพราะไฟลโตขน ดงนนจงตองหาทวางในดสกทใหมทมขนาดใหญเพยงพอสาหรบขนาดใหมของไฟลทโตขน ดวยเหตนใน OS เกอบทกระบบจะใชวธแบงไฟลออกเปนสวนเลกๆ ทมขนาดแนนอนเรยกวา บลอก (block) แตละบลอกของไฟลจะถกเกบไวทไหนในดสกกไดไมจาเปนตองเรยงตอกนทงไฟล เมอเลอกใชวธแบงไฟลปญหาทตามมากคอ ควรจะใหบลอกมขนาดเทากบเทาใด เซกเตอรแทรคหรอวงรอบ

สมมตวาเราเลอกขนาดของบลอกใหมขนาดใหญๆ เชน 1 วงรอบ ถงแมวาไฟลของเรามขนาดโตเพยงแค 1 ไบต ไฟลนกจะใชเนอทในดสกถง 1 วงรอบ เพราะแตละไฟลจะตองใชเนอทในดสกเพอเกบไฟลเปนจานวนเทาของขนาดบลอก สมมตวา 1 วงรอบมขนาด 32 กโลไบต และขนาดของไฟลโดยเฉลยแลวมขนาด 1 กโลไบต ดงนนเราจะเสยเนอทหนวยความจาในดสกคอ (32-1)/32 = 97% ในทางตรงกนขามถาเราเลอกขนาดของบลอกใหมขนาดเลก ไฟลแตละไฟลกจะประกอบดวยบลอกหลายบลอกมากเกนไป การอานหรอเขยนขอมลแตละบลอกจะตองเสยเวลาสาหรบเวลาแสวงหาและเวลาแฝง ดงนนถาไฟลประกอบดวยบลอกหลายบลอก การอานหรอเขยนขอมลจะชามาก

จะเหนวาถาขนาดของบลอกใหญเกนไปกจะเปลองเนอทในดสก แตถาขนาดของบลอกเลกเกนไป การอานหรอเขยนไฟลกจะชามาก ขนาดของบลอกทใชกนทวไปในระบบตางๆ ไดแก 512 ไบต 1 กโลไบต และ 2 กโลไบต สมมตวา เซกเตอรมขนาด 512 ไบต และเลอกใชบลอกขนาด 1 กโลไบต (1024 ไบต) ระบบไฟลจะใชสองเซกเตอรทตดกนเปนบลอก 1 บลอกบนฟลอปปดสก มขนาด 1 กโลไบต ดงนนขนาดของไฟลกจะตองเปนจานวนเตมของกโลไบตและไมวาไฟลจะมขนาดเลกเทาใดกตาม กตองใชเนอทในดสกอยางนอย 1 กโลไบต

Page 20: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 197

นอกจากเรองขนาดของบลอกแลว OS จะตองวธทจะใหรวาในดสกมบลอกวาง (ไมถกใช) บลอกใดบาง วธทใชกนทวไปม 2 วธ วธแรกใชลงคลสต (linked list) ของบลอกสมมตวาเราแบงเนอทในดสกเปนบลอกทมขนาด 1 กโลไบต และกาหนดหมายเลขประจาบลอกแตละบลอก (เรยกวาหมายเลขบลอก) มขนาด 2 ไบต ดงนนใน 1 บลอกจะเกบหมายเลขบลอกไดเทากบ 1024/2 = 512 หมายเลข (1 กโลไบตเทากบ 1024 ไบต) OS จะใชบลอกในดสกหลายๆบลอกเพอเกบหมายเลขบลอกทวางอย ในหนงบลอกจะเกบหมายเลขบลอกทวางอยเพยง 511 หมายเลขเทานน สวนหมายเลขสดทายจะเกบหมายเลขของบลอกถดไปทเกบหมายเลขบลอกวางไวดงในรป 4.12 ในบลอกหมายเลข 05,06 และ 10 เกบหมายเลขบลอกทวางไวในบลอกหมายเลข 05 หมายเลขสดทายจะเปนหมายเลข 06 เพอให OS ทราบวาบลอกหมายเลข 06 เปนบลอกทเกบหมายเลขสดทายจะเปนหมายเลข 06 เพอให OS ทราบวาบลอกหมายเลข 06 เปนบลอกทเกบหมายเลขบลอกวางเอาไว สวน 511 หมายเลขแรกจะเปนหมายเลขของบลอกวางใน บลอกหมายเลข 10 เกบหมายเลขบลอกวางเพยง 3 บลอกเทานน คอ 333 321 และ 345 หมายเลขบลอก OS จะเกบบลอกหมายเลข 00 ในดสกเพอใชงาน และสวนมากในเนอทของบลอกหมายเลข 00 OS จะเกบหมายเลขบลอกของบลอกแรกทเรมเกบหมายเลขบลอกวาง

รปท 4.12 ตวอยางลงคลสตของบลอกวาง

19

134

135

136

137

81

90

110

815

06

815

817

818

819

513

204

555

71

144

48

10

333

321

345

000

000

000

000

000

000

บลอกถดไปทเกบหมายเลขบลอคลาง

05 08

OSเกบไวในดสก

Page 21: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 198

วธทสองในการหาบลอกวางในดสก คอการใช บตแมป (bit map) ในดสกทถกแบงใหม n บลอกกจะใช n บตเรยงกนเพอตรวจสอบการถกใชงานของบลอกทกบลอกในดสก ถาบลอกท x วางไมถกใช บตท x ในบตแมปจะมคาเปน 1 แตถาถกใชไปแลวกจะมคาเปน 0 ดงเชนในรป 4.13

รปท 4.13 ตวอยางบตแมป สาหรบบลอกวาง ในดสกขนาด 20 เมกกะไบต ถาเราแบงเปนบลอกขนาด 1 กโลไบต ดงนนในดสกจะม 20 กโลบลอก ถาใชบตแมปเพอหาทวางในดสก กจะตองเสยเนอทสาหรบบตแมป 20 กโลบตหรอ 3 บลอก (20/8=2.5 กโลไบต) แตถาเราใชลงคลสต โดยใหหมายเลขบลอกมขนาด 2 ไบต จะตองเสยเนอทในดสก = 20x2 = 40 กโลไบต หรอ 40 บลอก จะเหนวาลงคลสตจะเปลองเนอทมากกวาแบบบตแมป เพราะบตแมปใช 1 บตแทน 1 บลอก แตลงคลสตใช 16 บต แทนบลอก อยางไรกตามถาเนอทวางในดสกมนอยลง จานวนบลอกวางกจะเหลอนอยลงลงลงคลสตมความยาวสนลง ทาใหแบบลงคลสตกจะเปลองเนอทในดสกนอยกวาแบบบตแมป 4.2.2 การจดการเนอทวาง

ทานองเดยวกบการหาบลอกวางในดสก OS ตองมวธทจะทราบวาแตละบลอกของไฟลหนงจะถกเกบไวในบลอกใดบางในดสก วธการแรกคอการใชลงคลสตซงมลกษณะคลายกบลงคลสตของบลอกวาง ในบลอกขนาด 1024 ไบต จะมเนอหาขอมลของไฟลอยเพยง 1022 ไบตเทานน สวน 2 ไบตสดทายจะเปนพอยนเตอรชไปยงบลอกถดไปของไฟล (หมายเลขบลอกถดไปของไฟล) วธนมขอเสยหลก 2 ประการคอ ประการแรกขนาดของเนอหาของไฟลทเกบลงในแตละบลอกในดสกไมเปนเลขของสองยกกาลง (เชน 2,4,8,16,32,64,…..) ซงกอใหเกดความไมสะดวกหลายอยางในการทางาน หรอจดการเกยวกบไฟลและประการทสองการเขาถงเนอหาขอมลของไฟลจะเปนการเขาถงแบบลาดบ เชนถาตองการอานขอมลในไบต 32768 ในไฟลจะตองเขาถงบลอกในดสกเทากบ 32768/1022 =33 ครง (33 บลอก) เพอใหไดขอมลทไบตตองการเขาถงจงกนเวลานาน

วธท 2 ไดทาการแกไขขอเสยทเกดขนในวธแรกทง 2 กรณ โดยสรางตารางเกบคาพอยตเตอรในแตละบลอกเอาไวแทนทจะเกบไวททายบลอกนนๆ สมมตวาเราแบงใหดสกม 2048 บลอก ตารางนกจะม 2048 ชอง คาทเกบไวในชองท x คอคาพอยนเตอรทเกบไวททายบลอก

1 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 . . . . . . . 0 0 11

ก บต : ก บลอก0 = บลอกทถกใช 1 = บลอกวาง

บลอกท 0, 1, 2, 5, 7, .... ยงวางและบลอกท3, 4, 6, 8, 10, 17, 18,... ถกใชงานแลว

Page 22: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 199

ของวธแรก ทาใหในบลอกไมตองเกบพอยนเตอรอกตอไป ใน 1 บลอกจงเกบเนอหาของไฟลไดเตมทงบลอกตารางนเรยกวา ตารางการจดสรรไฟล (file allocation table) หรอ FAT MS-DOS กใชวธน ในรป 4.14 แสดงตวอยางตารางการจดสรรไฟลในดสกทมไฟล A,B และ C อย จากรปจะเหนวาไฟล A ใชบลอกหมายเลข 6 8 4 และ 2 เกบเนอหาของไฟลเรยงตามลาดบ ในชองท 6 ของตารางการจดสรรไฟล จงเกบคา 8 เอาไวในชองท 8 เกบคา 4 ในชองท 4 เกบคา 2 ในชองท 2 เกบคา EOF (end of file) คอบอกใหทราบวาเปนบลอกสดทายของไฟล ดงนนอาศยขอมลทเกบไวในตารางการจดสรรไฟลเราสามารถเขาถงสวนใดของไฟลกได อยางไรกตามการใชตารางการจดสรรไฟลยงคงเปนการเขาถงแบบลาดบเหมอนวธแรกแตไมตองไลตามหาในบลอกตางๆ โดยทวไป ตารางการจดสรรไฟลจะถกโหลดขนมาเกบไวในหนวยความจาเพอลดเวลาเขาถง เนองจากการเขาถงในหนวยนนเรวมาก

รปท 4.14 ตวอยางตารางการจดสรรไฟล ขนาดของตารางการจดสรรไฟลขนอยกบจานวนบลอกในดสก (เทากบความจของดสก/ขนาดของบลอก) ยงดสกมจานวนบลอกมาก ตารางการจดสรรไฟลกจะมขนาดใหญมาก เชน MS-DOS 2.0 กาหนดฟลอปปดสกขนาด 5.25 นว ใหมความจ 360 กโลไบต ขนาดของบลอกเทากบ 1 กโลไบต ดงนนจงม 360 บลอกใชเลข 12 บต กาหนดหมายเลขบลอกทาใหตารางการจดสรรไฟลมขนาดเทากบ (360 x 12) /8 = 540 ไบต หรอในฮารดดสกขนาด 64 เมกกะไบต จะม 64

X

X

EOF

13

2

9

8

Free

4

12

3

Free

EOF

EOF

Free

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

FAT

File A

Flie B

File C

6 2

13

12

4

3

9

8

10

5

Page 23: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 200

กโลบลอกใช 2 ไบต กาหนดหมายเลขบลอก ดงนนตารางการจดสรรไฟลจะมขนาด 64 x 2 = 128 ไบต ถาจะโหลดตารางการจดสรรไฟลขนาด 128 กโลไบตเขาไปเกบไวในหนวยความจา การเขาถงขอมลในตารางการจดสรรไฟลจะยงเสยเวลามากขนไปอกเพราะตารางการจดสรรไฟลมขนาดถง 128 บลอก การเขาถงจะตองกระจายไปตาม 128 บลอกน วธแกปญหาคอเพมขนาดของบลอกใหโตขนเพอจานวนยบลอกลง เชนเปลยนจาก 1 กโลไบตเปน 8 หรอ 16 กโลไบตตารางการจดสรรไฟลกจะมขนาดเลกลง แตผลเสยทตามมากคอการสรงไฟลเลกๆ ในฮารดดสกกจะกนเนอท ในดสกหลายกโลไบตตามขนาดของบลอก

วธท 3 เปนวธทใชใน UNIX โดยสรางตารางเลกๆ ทเรยกวาไอโหนด (I-node) ใหไฟลแตละไฟล ไอโหนดจะเกบขอมลตางๆ ทเกยวของกบไฟลเอาไว ดงแสดงในรป 4.15

รปท 4.15 โครงสรางของ I – node ภายในโหลดจะมหลายเลขบลอกแบบ direct 10 หมายเลข แบบ Single indirect 1 หมายเลข แบบ double indirect 1 หมายเลข และแบบ triple indirect 1 หมายเลข หมายเลขบลอกแบบ direct คอ หมายเลขบลอกในดสกทเกบเนอหาขอมลของไฟลเอาไว สมมตวา 1 บลอกมขนาด 1 กโลไบต OS สามารถเขาถงเนอหาของไฟลได 10 กโลไบต โดยอาศยหมายเลขบลอกแบบ direct ในไอโหนดหมายเลขบลอกแบบ single indirect คอ หมายเลขบลอกของบลอกทเกบหมายเลขบลอกแบบ direct เอาไว ถาหมายเลขบลอกเปนเลขขนาด 4 ไบต ดงนน ใน 1 บลอกจะเกบหมายเลขบลอกไดเทากบ 1024/4 = 256 หมายเลข OS สามารถเขาถงเนอหาของไฟลเพมไดอก 256 กโลไบต โดย OS จะไปอานขอมลของบลอกทเปน Single indirect และดวาภายใน

File nodeNumber of link to file

Owner's uidOwner's qid

File sizeTime crealed

Time last accessedTime last modified

10 Disk block number

Single indirectDouble indirectTriple indirect

Poniter todata block

Poniter todata block

Poniter todata blocks

Poniter todata blocks

i-node

Page 24: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 201

บลอกนเกบหมายเลขบลอกอะไรไว หมายเลขบลอกเหลานกคอ บลอกทเกบเนอหาขอมลของไฟลเอาไวนนเอง (เปนบลอกแบบ direct) ในทานองเดยวกนบลอกทเปน double indirect จะเกบหมายเลขบลอกของบลอกทเปน single indirect ไว ดงนน OS สามารถเขาถง เพอหาขอมลของไฟลเพมไดอก 256 x 256 กโลไบต = 64 เมกกะไบตและในบลอกทเปน double indirect เกบหมายเลขบลอกทเปน double indirect ดงนน OS สามารถเขาถง เพอหาขอขอมลของไฟลเพมไดอก 256 x 64 เมกกะไบต = 16 จกะไบต (230 ไบต) ดงนนขนาดของไฟลท OS สามารถยนยอมใหมไดขนาดไดมากถง 16 จกะไบตกวา (16 จกะไบต + 64 เมกะไบต + 265 กโลไบต + 10 กโลไบต) จากลกษณะของไอโหนดทกลาวมาถาไฟลมขนาดนอยกวา 10 กโลไบต ชขอมลในไอโหนด (ในสวนหมายเลขบลอกแบบ direct) เพยงอยางเดยวกเพยงพอในการหาเนอหาของไฟลทงไฟลได ถาไฟลมขนาดมากกวา 10 กโลไบตแตนอยกวา 266 กโลไบต ตองใชไอโหนดกบอก 1 บลอก (single indirect) ถาไฟลมขนาดโตกวา 266 กโลไบตแตนอยกวา 65,802 กโลไบต (64 เมกกะไบต + 266 กโลไบต) ตองใชไอโหนดกบอก 3 ถง 258 บลอก ขนอยกบขนาดของไฟล จะเหนวาถาไฟลมขนาดใหญขนบลอกในดสกกจะถกใชในการเกบหมายเลขบลอกขอมลของไฟลกยงมากขน การเขาถงเนอหาของไฟลในตาแหนงตางๆ อยางมากทสดจะเขาถงบลอกในดสก 5 บลอกคอบลอกทเปนไอโหนด triple indirect, double indirect, single indirect และบลอกเนอหาขอมลของไฟล 4.2.3 การใชงานไดเรกทอร การทางานของไดเรกทอรมดงนคอ

คนหาแฟมขอมล (Search for a file) – เราอาจตองหาแฟมทมชอตรงกบทเราตองการ สรางแฟมขอมล (Create a file) – แฟมขอมลใหมจาเปนตองถกสรางและเพมเขาใน

ไดเรกทอร ลบแฟมขอมล (Delete a file) – เมอแฟมขอมลไมตองการแลว เราตองลบมนออกจาก

ไดเรกทอร แสดงไดเรกทอร (List a directory) – เราตองสามารถแสดงชอแฟมขอมลในไดเรกทอร

และเนอหาของไดเรกทอร สาหรบแตละแฟมในรายการ เปลยนชอแฟมขอมล (Remane a file) – เพราะวาชอแฟมขอมลเปนตวแทนของเนอหาของ

ผใช ดงนนชอจะตองเปลยนเมอเนอหาหรอการใชแฟมขอมลเปลยนไป การขามระบบแฟมขอมล (Traverse the file system) – มนเปนความคดทดทจะรกษา

เนอหาและโครงสรางของระบบแฟมขอมลทงหมด การรกษานมกทาไดโดยการคดลอก

Page 25: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 202

แฟมขอมลทงหมดลงเทปแมเหลก เทคนคนเปนการ backup ในกรณทระบบลมหรอแฟมขอมลเสย ในกรณนแฟมขอมลควรถกคดลอกลงเทป และพนทวางในดสกของแฟมเหลานนกจะถกปลอยใหแฟมอนไดใช

ไดเรกทอร (directory) คอสารบญทเกบรวบรวมรายชอไฟล และขอมลบางอยางทสาคญของไฟลเอาไวใน OS ทกระบบจะตองมไดเรกทอรเพอเกบรายชอไฟลทงหมดในระบบไวผสามารถตรวจดไฟลตางๆ ไดจากไดเรกทอร ไดเรกทอรเองกถอวาเปนไฟลเชนกน โครงสรางของไดเรกทอรประกอบดวยหนวยยอยหลายหนวยใน 1 หนวยจะเกบขอมลของไฟล 1 ไฟล เชน ชอ สวนขยาย ชนด ขนาด และอนๆ ดงแสดงในรป 4.16

รปท 4.16 โครงสรางไดเรกทอร

วธทาไดเรกทอรใหกบระบบทงายทสดคอ ในระบบจะมไดเรกทอรอยเพยงไดเรกทอรเดยว และใหไฟลทกๆ ไฟลในระบบรวมอยในไดเรกทอรเดยวกน ระบบนเรยกวา ระบบไดเรกทอรเดยว (single directory) หรอไดเรกทอร 1 ระดบ (level directory) ไดเรกทอรแบบนไมคอยสะดวกในการใชงาน ถามผใชหลายคน แตละคนมไฟลหลายไฟลหลายชนด ไฟลทงหมดนจะอยปนกน ไมสามารถจดแบงแยกไฟลของผใชแตละคนออกจากกน ถาเกดกรณทมการสรางไฟลของผใชคนหนงตรงกบไฟลของผใชคนอนๆ (มชอและสวนขยายเดยวกน) อาจทาใหไฟลของผใชคนนนทาลายไฟลเกาทมอยแลว (โดยถกเขยนทบ) หรออาจทาใหการสรางไฟลนนทาไมไดใน OS ของไมโครคอมพวเตอรรนเกาๆ เทานนทมการกระทาระบบไดเรกทอรเดยว

เพอแกปญหาของการตงชอไฟลตรงกน และไฟลของผใชทกคนอยปะปนกน ผออกแบบ OS ในระยะตอมาจงพฒนาโครงสรางของระบบไดเรกทอรเสยใหม คอใหผใชแตคนสามารถสรางไดเรกทอรของตนเองได 1 ไดเรกทอรเรยกวาเปนไดเรกทอรยอย (sub-dierectory) ไดเรกทอร

ชอ สวนขยาย ขนาด เจาของ เวลาสรางไฟล เวลาทถกแกไขครงลาสด เวลาทเขาถงลาสด บลอคในดสกทไฟลใช

ขอมลภายในไดเรกทอรของแตละหนวย

ไดเรกทอร

Page 26: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 203

ยอยนจะอยภายใตไดเรกทอรเดยวกน (ดรป 4.17 ข) เรยกวาเปน ไดเรกทอรราก (root directory) หรอเรยกสนๆ วารท (root) รทจะมไดเรกทอรยอยไดหลายไดเรกทอร ภายในไดเรกทอรยอยนมไฟลไดหลายๆ ไฟล ผใชสามารถตงชอไฟลและชนดใหตรงกบไฟลของผใชคนอนไดถาไฟลทง 2 นอยตางไดเรกทอรกน เราเรยกระบบไดเรกทอรแบบนวา ระบบไดเรกทอร 2 ระดบ (2 level directory )

อยางไรกตาม ไดเรกทอรแบบนยงมปญหากบผใชทมไฟลมากๆ เขายงคงไมสามารถแบงแยกหรอจดไฟลออกเปนหมวดหมได (ถงแมวาไมมไฟลทเกยวกบงานเขยนตาราเรยน ไฟลงานเขยนบทความ ไฟลการบานนกเรยนทสงมาไฟลของงานวจยนกาลงศกษาคนควาอย ไฟลเกยวกบผอปการะและทนการศกษา ไฟลทเปนเกมส และไฟลอนๆ ในลกษณะนเขากยงคงพบปญหาทไฟลหลายๆ ประเภทอยรวมปนกน

(ก)ไดเรกทอรเดยว (ข) ไดเรกทอร 2 ระดบ

BA A CCC

Root

CBA C CA

A CB

Root

Page 27: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 204

(ค)ไดเรกทอรหลายระดบ - ไดเรกทอร

- ไฟล

รปท 4.17 ไดเรกทอรหลายระดบ

เพอแกปญหาทเกดกบผใชในระบบไดเรกทอร 2 ระดบ OS ในรนหลงๆ นจงยอมใหผใชสามารถสรางไดเรกทอรยอยของตนเองได (ดรป 4.17 ค.) มากตามทตองการ เพอใหผใชสามารถแบงแยกไฟลประเภทเดยวกนใหอยในไดเรกทอรเดยวกน ไมปะปนรวมกนกบไฟล ประเภทอน เมอผใชสรางไดเรกทอรขนมามากมาย ทาใหระบบไดเรกทอรมลกษณะเหมอนเปนโครงสรางตนไม (tree structure) เราเรยกระบบไดเรกทอรนวา ไดเรกทอรหลายระดบ การอางถงไฟลแตละไฟลในไดเรกทอร ("ไฟล" ในทนหมายรวมถงไดเรกทอรดวย อยาลมวาไดเรกทอรกคอไฟลเชนกน) จาเปนจะตองบอกทอยหรอพาธ (path) ของไฟลนนๆ เพอใหระบบรวาเรากาลงอางถงไฟลในไดเรกทอรใดๆ (ไฟลคนละไฟลทอยในไดเรกทอรตางกนอาจมชอเหมอนกนได การบอกพาธจะทาใหระบบทราบวา เรากาลงอางถงไฟลใดและอยทไหนในระบบ) การอางถงไฟลม 2 วธ คอ การอางดวยชอพาธสมบรณ (absolute path name) หรอ ชอพาธสมพทธ (relative path name)

การอางถงไฟลโดยใชชอพาธสมบรณ เปนการอางถงไฟลโดยเรมตนจากรมเสมอ ตามดวยชอไดเรคทอรยอยตางๆ ไลลงมาตามลาดบของไดเรกทอร จนกระทงถงไดเรกทอรยอยทไฟลนนอย และจบลงดวยชอไฟลนน เรมตนรทดวยเครองหมายของรท เชน ในระบบ MS-DOS ใช '/' แทนรท หรอในระบบ UNIX ใชเครองหมาย '/' แทนรท ซงไดเรกทอรยอยจะถกแยกดวย

CC

CBB

B

A A

B

C

C

CCCC

Root

Page 28: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 205

เครองหมาย '/' แทนรท หรอในระบบ UNIX ใชเครองหมาย '/' แทนรท ชอไดเรกทอรยอยจะถกแยกดวยเครองหมาย '/' หรอ '\' (ขนอยกบเครองหมายรท) ตวอยางเชนเรามระบบไดเรกทอรดงในรป 4.18 การอางถงไฟล text.asm ในไดเรกทอร asm คอ /usr/pan/asm/test.asm หรอการอางถง test.pas ในไดเรกทอร jum คอ /usr/jum/test.pas

รปท 4.18 ตวอยางของระบบไดเรกทอร

สวนการอางถงไฟลโดยใชชอพาธสมพนธนน จะตองทาความเขาในเกยวกบไดเรกทอรปจจบน (working directory หรอ current directory) ผใชสามารถยายตาแหนงการทางานจากไดเรกทอรหนงไปยงอกไดเรกทอรหนงได ในขณะทผใชทางานอยบนไดเรกทอรใดเราจะเรยกไดเรกทอรหนงไปยงอกไดเรกทอรหนงได ในขณะทผใชทางานอยบนไดเรกทอรใดเราจะเรยกไดเรกทอรนนวา ไดเรกทอรปจจบน เชน ในรปท 4.18 สมมตไดวาไดเรกทอรปจจบนคอ jum และเราสงใหแสดงรายชอไฟลออกมาจะมไฟลเพยง 3 ไฟลเทานนทถกแสดงออกมาคอ test.pas ok.com และ s.bat ไฟลในไดเรกทอรอนจะไมถกแสดงออกมา ถาเรายายไดเรกทอรปจจบนจาก jum ไปยง asm และสงใหแสดงรายชอไฟลออกมา จะมไฟล 2 ไฟลทถกแสดงออกมาคอ test.asm และ proj1.asm ชอพาธสมพทธจะเรมตนจากไดเรกทอรปจจบนไลไปลาดบชนของไดเรกทอรทไฟลนนอย และจบลงดวยชอไฟล ตวอยางเชน สมมตวาไดเรกทอรปจจบนคอ usr (ในรป 4.18) ถาตองการ

test.pas

proj.asmtest.asm

s.batok.com asm pas

banjum

bin sfwUSR

/

- ไดเรกทอร

- ไฟล

Page 29: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 206

อางถงไฟล test.asm จะตองอางดวย asm/test.asm และถาไดเรกทอรปจจบนคอ arm จะอางเพยงแคชอไฟลเทานนคออางดวย test.asm

โดยทวไปในไดเรกทอรยอยจะมไดเรกทอรทชอ และ ไดเรกทอร จะหมายถงไดเรกทอรยอยนนเอง และไดเรกทอร หมายถง ไดเรกทอรทอยเหนอขนไปหนงระดบเชนสมมตวาไดเรกทอรปจจบนคอ ban ไดเรกทอรทชอ ภายใตไดเรกทอร ban จะหมายถงไดเรกทอร usr ดวยการใชไดเรกทอรชอ เราสามารถอางถงไฟลทกไฟลในระบบโดยใชชอพาธสมพนธไดไมวาจะอยทไดเรกทอรปจจบนใดกตาม เชน ไดเรกทอรปจจบนคอ pas การอางถงไฟล …/box.dat จะหมายถง box.dat ในไดเรกทอร ban ถาตองการอางถงไฟล proj1.asm ในไดเรกทอร asm ตองอางดวย …/asm/proj1.arm ถาตองการอางถงไฟล s.bat ในไดเรกทอร jum ตองอางดวย …/…/jum/s.bat

การแยกแยะพาธทเราอางถงวาเปนแบบพาธสมบรณ หรอชอพาธสมพนธนน สงเกตไดดวยเครองหมายรทเทานน ถาการอางถงไฟลขนตนดวยเครองหมาย "/" หรอ "\" (แลวแตตว OS) การอางนนคอ การอางโดยใชพาธสมบรณ แตถาเปนแบบพาธสมพนธจะตองขนตนดวยชอไดเรกทอรยอยหรอชอไฟล

4.2.4 การหาประสทธภาพของแฟมขอมล 4.2.4.1 ความถกตองในระบบไฟล

ความถกตองเปนองคประกอบหนงของความนาเชอถอในระบบไฟล การทางานทเกยวของกบระบบไฟลสวนใหญจะเปนการอานบลอกขอมลในดสกขนมาเปลยนแปลงขอมล แลวจงเขยนขอมลในบลอกนนกลบลงไปในดสก ถาเกดความผดปกตกบการทางานของระบบในระหวางชวงทระบบไฟลกาลงจะเขยนขอมลลงดกส เชนกระแสไฟฟาดวย ขอมลทถกแกไขแลวแตยงไมถกเขยนกลบลงดสกกจะสญเสยไป และเกดความไมถกตองขนในระบบไฟล ปญหาเรองความไมถกตองนจะสงผลกระทบรนแรงมาก ถาบลอกเหลานนเปนบลอกทเกบขอมลสาคญๆ เชน บลอกไอโหนด บลอกไดเรกทอร หรอบลอกทเปนลงคลสตของบลอกวา เปนตน

เพอขจดปญหาทเกดขนอนเนองมากจากของความไมถกตองในระบบไฟลระบบคอมพวเตอรสวนใหญจะมโปรแกรมชวยงานทสามารถตรวจสอบความถกตองของระบบไฟลไดโปรแกรมเหลานจะถกรนเมอเรมบต (boot) เครองใหมๆ โดยเฉพาะเมอเกดความผดปกตขนกบระบบจนเครองหยดการทางาน การทางานของโปรแกรมชวยงานทจะอธบายตอไปน ใชในระบบ UNIX สาหรบระบบอนๆ กมการทางานทคลาคลงกน

ถาระบบไฟลมความถกตอง แตละบลอกจะมคาของตวนบตวแรกเปน 1 และคาตวนบตวท 2 เปน 0 ดงเชนในรป 4.19 (ก) ถาเกดความไมถกตองขนในระบบไฟลตารางของตวนบอาจมคาเหมอนกบในรป 4.19 (ข) ซงบลอกหมายเลข 3 ไมใหปรากฏอยท งในไฟลและลสตวางลกษณะเชนนเรยกวา เกดบลอกสญหาย (missing block) ถงแมวาการเกดบลอกสญหายจะไมทาใหเกด

Page 30: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 207

ความเสยหายในระบบ แตกทาใหเสยเนอทในดสกไปโดยเปลาประโยชน การแกไขเรองบลอกสญหายทาไดงายมากคอ นาบลอกสญหายทงหมดทเกดขนไปไวรวมอยในลสตวางเทานระบบกสามารถนาเอาบลอกสญหายเหลานนกลบมาใชงานไดอก แตตองคอยระวงไวดวยวาบลอกสญหายนนตองไมใชบลอกเสย

รปท 4.19 ตารางตรวจสอบความถกตองของการใชบลอก

ในรป 4.19 (ค) บลอกหมายเลข 8 มปรากฏอยในลสตวาง 2 ครง (เกดขนเฉพาะระบบทใชลงคลสตของบลอกวางเทานน ในระบบทเปนบตแมปจะไมเกดเหตการณนขน) ในกรณนถาไมมการแกไขจะเกดปญหาการใชบลอกซาคอ อาจมไฟลหลายไฟลใชบลอกรวมกนขอมลในบลอกกจะปะปนกน การแกไขทาไดโดยแกไขลงลสตใหถกตองโดยตดหมายเลขบลอกทซ ากนออกเหลอเพยงหมายเลขเดยว

1

0

1

0

1

1

0

0

1

0

1

0

1

0

1

0

0

0

1

1

0

1

0

1

1

0

0 1 2 3 4 5 6 7 8 9 10 11 12 131

1

1

0

1

0

0

1

0

0

1

0

1

0

1

0

1

0

1

0

0

2

0

1

0

1

1

0

0 1 2 3 4 5 6 7 8 9 10 11 12 130

1

1

0

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

0

0

2

0

1

0

1

1

0

0 1 2 3 4 5 6 7 8 9 10 11 12 130

1

1

0

1

0

0

1

1

0

1

0

1

0

1

0

2

0

1

0

0

1

0

1

0

1

1

0

0 1 2 3 4 5 6 7 8 9 10 11 12 130

1

(ก) มความถกตอง

(ข) เกดบลอกสญหาย

(ค) มบลอกซาในดสกวาง

(ง) มบลอกถกใชซา

หมายเลขบลอก

บลอกทถกใช

บลอกวาง

หมายเลขบลอก

บลอกทถกใช

บลอกวาง

หมายเลขบลอก

บลอกทถกใช

บลอกวาง

หมายเลขบลอก

บลอกทถกใช

บลอกวาง

Page 31: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 208

กรณทแยทสดคอ ในกรณของรป 4.19 (ง) คอมบางบลอกถกใชโดยไฟลมากกวา 1 ไฟล บลอกหมายเลข 6 ถกใช 2 ครง โดยไฟล 2 ไฟล วธการแกไขกคอนาบลอกวางมาบลอกหนง สมมตใชบลอกวางหมายเลข 10 กอปปขอมลจากบลอกหมายเลข 6 ลงไปในบลอกหมายเลข 10 และแทรกบลอกใหมนเขาไปในอกไฟลหนงทใชบลอกหมายเลข 6 เหมอนกนในขณะนทง 2 กจะมขอมลในบลอกหมายเลข 6 เหมอนกนทงค แตไมมการใชบลอกซากน วธนขอมลภายในไฟลจะไมถกแกไข ถงแมวาอาจจะมขาดหายไปบาง แตอยางนอยทสดการใชงานบลอกกมความถกตอง ในกรณนโปรแกรมตรวจสอบควรแสดงขอความใหผใชเจาของไฟลทงสองทราบเพอใหผใชทาการตรวจสอบขอมลในไฟลเสยใหม

นอกจากตรวจสอบการใชงานบลอกแลว โปรแกรมจะตองตรวจสอบไฟลและไดเรกทอรดวย โดยใชตารางของตวนบเชนกนแตครงนเปนตวนบของไอโหนดไมใชของบลอก เรมจาการตรวจสอบทรท และไลลงไปเรอยๆ ตามโครงสรางตนไมของไดเรกทอร ตอนแรกคาของตวนบหทกตวจะเปน 0 หมด สาหรบทกๆ ไฟลในทกไดเรกทอรโปรแกรมจะเพมคาตวนบขน 1 ใหกบไอโหนดของไฟลนนๆ ดงนนเมอโปรแกรมทางานเสรจมนจะมตารางตวนบซงบงชดวยหมายเลขไอโหนด คาของตวนบจะแสดงถงจานวนไดเรกทอรทชไปยงไอโหนดนน (ดรป 4.20) นนหมายถงจานวนลงคของไฟลนน จากนนโปรแกรมจะเปรยบเทยบคาของจานวนลงคทถกเกบไวในไอโหนดกบคาตวนบในตาราง ถามความถกตองคาทง 2 ตองเทากน (เชน ไอโหนดหมายเลข 1 ในรป 4.20 ) ถาไมถกตองคาของตวนบอาจมากกวาหรอนอยกวาคาของจานวนลงคในไอโหนด (เชน ไอโหนด หมายเลข 3 และ 4 ในรป 4.20)

รปท 4.20 การตรวจสอบความถกตองของไฟล 4.2.4.2 การปรบทนกาลอตโนมต (automatic update)

การปรบทนกาลอตโนมต (automatic update) เปนการเกบขอมลทเรามเกบไวโดยมคณลกษณะดงน ในขณะทาการแกไขขอมล ขอมลชดเกาและขอมลทนามาใชเปลยนแปลงขอมลเกายงคงอยเหมอนเดมไมถกทาลายไป ดงนนถาระบบการทางานของเครองเกดขดของระหวางแกไขขอมล การแกไขขอมลยงคงทาไดโดยเรมตนกระบวนการแกไขตงตนใหม

1 1 2 2 2 1 3 1 1 - -

1 1 2 3 1 1 3 1 1 - -

0 1 2 3 4 5 6 7 8 - - หมายเลข i-nodeจานวนไดเรกทอรทช ไปยง i-node( จากการตรวจสอบของโปรแกรม)

จานวนลงทเกบไวใน i-node◌

Page 32: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 209

การใชวธการปรบทนการอตโนมต เปนการแกปญหาของการสญเสยขอมลทตนเหตเพราะวธนจะไมยอมใหขอมลเกดการสญหายไปจนกระทงการทางานเสรจสนลง แตการปรบทนกาลอตโนมตเสยคาใชจายสงมาก ตวอยางเชน เราใชดสกตวหนงเกบรายชอและจานวนสนคาในโกดง ใชดสกขนาดเทากนอกตวหนงทาการสารองขอมลรายการสนคานไวทกวน จานวนสนคาทมการเขา-ออกโกดงถกบนทกไวในดสกเลกๆ ซงบนทกเฉพาะรายการทมการเปลยนแปลงเทานน

ในตอนกลางคนเราจะแกไขขอมลในดสกทเกบขอมลใหมจานวนสนคาถกตอง วธการปรบทนกาลอตโนมตคอ อานขอมลจากดสกทเกบรายการสนคาและอานขอมลจากดสกทเกบรายการเปลยนแปลงในวนนน ทาการคานวณเขยนลงในดสกวางอกตวหนง จะเหนวาไมมการทาลายขอมลเดมใหสญหายไป เพราะดสกนนถกใชในการอานเทานน ไดถกเขยนทบลงไปถาระบบเกดขดของในขณะแกไขขอมล ขอมลทเกบลงในดสกวางเทานนทเสยหาย การแกไขชอขอมลสามารถเรมตนใหมไดหลงจากทระบบกลบสสภาพปกตแลว หลงจากทาการแกไขขอมลลงดสกวางเสรจแลว ทาการสารวจขอมลอกครงหนง ถาดสกทเกบรายการสนคาไวมการเสยหายอาจเนองจากฝ น ความชน หรอเหตใดๆ กตาม เรากยงมดสกสารองอกตวหนงทจะนามาใชงานแทนได จากทกลาวมาจะเหนวาการปรบทนกาลอตโนมตจะไมทาใหเกดการสญหายของขอมลแตตองใชดสกหลายตวทาใหมราคาแพงมาก

4.3 การใชงานอปกรณสารองขอมล 4.3.1 ลกษณะของอปกรณสารองขอมล (Device Characteristic)

โดยทวไปเราสามารถแบงแยกประเภทของอปกรณไดเปน 2 ประเภทคอ - อปกรณอนพต-เอาตพต (input/output device) - อปกรณเกบขอมล (storage device)

อปกรณอนพต-เอาตพต อปกรณอนพต คออปกรณททาใหคอมพวเตอรสามารถสมผสและรบรสงตางๆ จากโลก

ภายนอกได ตวอยางเชน เครองอานบตร คยบอรด เมาส (mouse) อปกรณเอาตพต คออปกรณททาใหคอมพวเตอรคอบคมหรอสงผลออกมาสโลกภายนอกได

ตวอยางเชน เครองเจาะบตร จอภาพเครองพมพ เราอาจแบงแยกอปกรณอนพต-เอาตพต ออกเปน 2 ประเภทไดดงน

1. อปกรณชนดขอมลเปนสาย (stream) อปกรณประเภทนขอมลทสงเขาออกจะเรยงมาเปนลาดบกอน-หลง การแบงแยกขอมลทาไดโดยการตรวจสอบลาดบของขอมล อปกรณประเภทนสามารถจดการไดงาย เพยงแตจดลาดบการรบ-สงขอมลใหถกตองกเพยงพอแลว ตวอยางของอปกรณชนดน ไดแก คยบอรด ซงขอมลทสงเขามาในระบบจะเปนไปตามลาดบการกดคย คยใด

Page 33: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 210

ถกกดกอนกจะถกสงมากอน เครองพมพกจดอยในอปกรณประเภทน ขอมลทถกสงไปกอนกจะถกพมพกอน ขอมลทถกสงไปทหลงกจะถกพมพทหลง

2. อปกรณชนดขอมลไมเปนสาย (non-stream) อปกรณประเภทน ขอมลทสงและรบไมขนอยกบลาดบการสง เราตองอาศยขอมลเพมเตมเพอทจะแยกแยะขอมลแตละตว การจดการอปกรณประเภทน OS จะตองมวธจดการโดยเฉพาะขนอยกบลกษณะชนดนนๆ ตวอยางของอปกรณชนดน เชน จอภาพของเครองไมโครคอมพวเตอร ขอมลหรอตวอกษรทแสดงอยบนจอภาพแสดงนน จะตองสงไปในตาแหนงทถกตอง ตาแหนงของตวอกษรทแสดงอยบนจอภาพแตละตวจะมแอดเดรสประจาตาแหนงนนๆ เมอเราสงตวอกษรไปยงแอดเดรสใดตวอกษรกจะปรากฏอยบนจอภาพ ณ ตาแหนงทตรงกนกบแอดเดรสนน ดงนน จะเหนไดวา การสงตวอกษรไปใหจอภาพไมจาเปนตองมลาดบการสงทถกตอง แตตองการแอดเดรสทตรงกบตาแหนงนนเทา อปกรณเกบขอมล

อปกรณเกบขอมล เปนอปกรณทคอมพวเตอรใชเกบขอมลตางๆ (โดยทวไปกระบวนการนเรยกวา การเขยน) ในลกษณะทขอมลนสามารถถกดงหรอเรยกกลบมาใชไดในภายหลง (กระบวนการนเรยกวา การอาน) อปกรณเกบขอมลนเปนอปกรณเกบขอมลนเปรยบเสมอนกลไกการเกบขอมลของมนษย เชนใชดนสอเขยนขอความตางๆ ไวในสมดเมอตองการจะใชภายหลงกนามาอานเพอรอฟนความจา

อปกรณเกบขอมลสามารถแบงแยกไดเปน 2 ประเภท 1. อปกรณทมการเขาถงแบบลาดบ (serial access storage device) ไดแก เทปลกษณะของ

อปกรณประเภทนการเขาถง (access) จะตองเปนไปตามลาดบ ตงแตตนเทป (หรอตาแหนงทหวเทปกาลงอานอย) เรยงไปจนถงตาแหนงทตองการ การเกบขอมลจะเกบเปนกลมๆ ไมมแอด เดรสของแตละกลม การอานจะตองอานเขามาทละกลม ตรวจสอบวาเปนกลมทตองการหรอไม ทาเชนนเรยงไปตามลาดบของการเกบจนกระทงพบกลมของขอมลทตองการ

2. อปกรณทมการเขาถงโดยตรง (direct access storage device) ไดแก ดสกขอมลทจะถกจดไวเปนกลม ในระดบบลอกหรอเซกเตอร แตละกลมจะมแอดเดรสของตวเอง การเขาถงทาไดโดยกาหนดแอดเดรสของขอมลกลมนน ซงจะทาใหอปกรณทราบวาขอมลกลมนนอยทไหนและสามารถเขาถงไดโดยตรง ไมตองผานกลมขอมลกลมอนๆ เหมอนในกรณของอปกรณทมการเขาถงแบบลาดบ

ดสก คอ กอนของหนวยเกบขอมลสารองสาหรบระบบคอมพวเตอรยคใหม เทปแมเหลกเคยถกใชเปนสอทใชสารองขอมลมากอน แตเวลาทใชในการเขาถงขอมลคอนขางขากวาดสก ดงนนในปจจบนเทปมกถกใชเปน backup มากกวา โดยใชเกบสารสนเทศทใชไมคอยบอย แลวยงเปนสอท

Page 34: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 211

ใชโอนยายสารสนเทศจากระบบหนงสอกระบบหนง และใชเกบขอมลทมปรมาณมากทไมเหมาะจะเกบในระบบดสก

เครองขบดสก (disk drive) ยคใหม ถกพดถงเหมอนเปนอารเรย 1 มตขนาดใหญของ บลอคทางตรรกะ (logical block) ซงบลอคทางตรรกะคอหนวยทเลกทสดของการโอนยายขอมล ขนาดของบลอคทางตรรกะมกมขนาด 512 ไบต ถงแมวาดสกบางตวจะสามารถทา “การจดระเบยบระดบตา” (low-level formatted) เพอเลอกขนาดของบลอคทตางออกไป เชน 1024 ไบต

อารเรย 1 มตของบลอคทางตรรกะถกจบค (map) ไปบนเซกเตอร (sector) ของดสกแบบเรยงลาดบ เซกเตอร 0 คอ เซกเตอรแรกของแทรก (track) แรกบนไซลนเดอร (cylinder) นอกสด การจบคดาเนนการผานแทรก แลวผานแทรกไปไซลนเดอร แลวผานไซลนเดอรจากนอกสดไปสชนในสด

โดยการใชการจบคแบบน ทาใหการแปลงหมายเลขบลอคทางตรรกะมาเปนตาแหนงของดสกจรง ๆ ซงประกอบดวย หมายเลขไซลนเดอร หมายเลขแทรก ภายในไซลนเดอรนน และหมายเลขเซกเตอรภายในแทรกนน สามารถเปนไปได ในทางปฏบต มนยากทจะแปลงเลขดงกลาวดวยเหตผล 2 ประการ

1. ดสกสวนใหญมเซกเตอรเสย แตการจบคจะทาไดโดยใชเซกเตอรอนในดสกแทน 2. จานวนของเซกเตอรตอแทรกไมคงท แทรกมาจากจดศนยกลางของดสก ยงแทรกยาวมาก

จานวนเซกเตอรกจะมากตาม ดงนนดสกยคใหมจะถกจดระเบยบเปนโซนของไซลนเดอร จานวนของเซกเตอรตอแทรกคอคาคงทภายในโซน แตเมอเราเคลอนจากโซนภายในไปสโซนภายนอก จานวนของเซกเตอรตอแทรกกจะเพมขน ตวอยางเชน แทรกในโซนนอกสดมเซกเตอร 40 % มากกวาในโซนในสด

จานวนของเซกเตอรตอแทรกมจานวนเพมขนเมอเทคโนโลยของดสก ไดรบการปรบปรง และเปนเรองปกตทจะมเซกเตอรตอแทรกมากกวา 100 เซกเตอร ในโซนภายนอกของดสก ในทานองเดยวกน จานวนของไซลนเดอรตอดสกกจะเพมขน 4.3.1.1 การจดตารางของดสก (Disk Scheduling)

หนงในความรบผดชอบของระบบปฏบตการ คอ ตองใชฮารดแวรอยางมประสทธภาพ สาหรบเครองขบดสก (disk drive) นนหมายถง มเวลาในการเขาถงอยางรวดเรว (fast access time) และ disk bandwidth ในเรองเวลาในการเขาถงม 2 องคประกอบหลก คอ

1. เวลาในการคนหา (seek time) คอ เวลาทแขนของดสกเคลอนหวอานไปสไซลนเดอรทมเซกเตอรทตองการ

Page 35: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 212

2. เวลาในการหมนหวอาน (rotational latency) คอ เวลาในการรอคอยทเพมขนสาหรบดสกในการหมนเซกเตอรทตองการมาสหวอาน

disk bandwidth คอ จานวนไบตทงหมดทถกโอนยาย มาจากเวลาทงหมดตงแตการรองขอบรการครงแรกจนถงการโอนยายครงสดทายเสรจสน เราสามารถปรบปรงทงเวลาในการเขาถง และ bandwidth โดยการจดตารางบรการของการรองขอรบ-สงขอมลของดสกในลาดบทด

เมอโปรเซสตองการ การรบขอมลจากดสกหรอสงขอมลไปสดสก จงเกดการเรยกระบบไปสระบบปฏบตการ การรองขอเจาะจงสารสนเทศหลายชน ดงนคอ

การปฏบตการน คอ การนาเขา (input) หรอ การสงออก (output) หรอไม ตาแหนงของดสกทใชในการโอนยายขอมลคออะไร ตาแหนงของหนวยความจาสาหรบการโอนยายขอมลคออะไร จานวนของไบตทถกโอนยายขอมลเปนเทาไร

ถาเครองขบดสก (disk drive) และตวควบคม (controller) วาง การรองขอจะไดรบบรการทนท ถามนไมวาง การรองขอใหมจาเปนตองนาไปไวในแถวคอย สาหรบระบบ multiprogramming ทมหลายกระบวนการ แถวคอยของดสก (disk queue) อาจมการรองขออยหลายตว ดงนนเมอการรองขอหนงไดรบบรการแลว ระบบปฏบตการจงมโอกาสทจะเลอกการรองขอมาใหบรการถดไป 1. การจดตารางแบบมากอน-ไดกอน (FCFS Scheduling) รปแบบทงายทสดของการจดตารางของดสก คอ มากอน-ไดกอน [first-come, first-served (FCFS)] พจารณาตวอยาง ถาแถวคอยของดสก มการรองขอการรบสงขอมลของบลอคบนไซลนเดอรดงน

98 , 183 , 37 , 122 , 14 , 124 , 65 , 67 ตามลาดบ ถาหวอานเรมตนทไซลนเดอรท 53 มนจะเรมเคลอนในครงแรกจาก 53 ไป 98 แลวจงไป 183 , 37 , 122 , 14 , 124 , 65 และสดทายท 67 สาหรบการเคลอนยายหวอานทงหมด 640 ไซลนเดอร การจดตารางนคอแผนภาพดงรปท 4.21

Page 36: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 213

รปท 4.21 แสดงการจดตารางของดสกแบบมากอน-ไดกอน (FCFS)

ปญหาของการจดตารางวธนดไดจากการเหวยงกวางจาก 122 ไป 14 แลวกลบมา 124 ถาการรองขอสาหรบไซลนเดอร 37 และ 14 ไดรบบรการตอกน กอนหรอหลงการรองขอท 122 และ 124 การเคลอนยายหวอานทงหมดนาจะลดลงอยางมาก ดงนนสมรรถนะ (performance) ควรจะไดรบการปรบปรง 2. การจดตารางแบบเวลาในการคนหาสนทสดไดกอน (SSTF Scheduling)

ฟงดมเหตผลทจะบรการ การรองขอทงหมดทอยใกลตาแหนงของหวอานในขณะนนกอนจะยายหวอานไกลออกไปเพอบรการการรองขออน สมมตฐานนคอพนฐานสาหรบ วธเวลาในการคนหาสนทสดไดกอน [shortest-seek-time-first (SSTF) algorithm] วธ SSTF จะเลอกการรองขอทมเวลาในการคนหานอยทสดจากตาแหนงปจจบนของหวอาน เมอเวลาในการคนหาเพมขนดวยจานวนของไซลนเดอรทถกอานโดยหวอาน SSTF จะเลอกการรองขอทใกลทสดกบตาแหนงปจจบนของหวอาน

จากตวอยางทแลว การรองขอทใกลกบตาแหนงเรมตนของหวอานทสด (53) คอท ไซลนเดอร 65 เมอเราเคลอนมาทไซลนเดอร 65 การรองขอทใกลทสดถดไปคอทไซลนเดอร 67 จากนนการรองขอทไซลนเดอร 37 จะใกลกวา 98 ดงนน 37 จะไดรบบรการถดไป ตอมาเราบรการการรองขอทไซลนเดอร 14 แลวเปน 98 , 122 , 124 และสดทายท 183 (ดงรปท 4.22) ผลลพธของวธการจดตารางแบบนการเคลอนยายหวอานทงหมดมเพยง 236 ไซลนเดอรเทานน นอยกวา 1 ใน 3 ของระยะทางของวธ FCFS วธนทาใหสมรรถนะไดรบการปรบปรงอยางมาก

Page 37: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 214

รปท 4.22 แสดงการจดตารางของดสกแบบเวลาในการคนหาสนทสดไดกอน (SSTF) การจดตารางแบบ SSTF จาเปนทสดสาหรบรปแบบของการจดตารางแบบ SJF และ

เหมอนกบ SJF มนอาจจะเกดปญหาการแชเยน (starvation) ยงจาไดหรอไมวาการรองขออาจมาถงทเวลาตาง ๆ กน สมมตวาเรามการรองขอ 2 ตวในแถวคอย สาหรบไซลนเดอร 14 และ 186 และขณะทกาลงบรการการรองขอจาก 14 การรองขอใหมใกล 14 มาถง การรองขอใหมนจะไดรบบรการเปนรายถดไป ทาใหการรองขอท 186 ตองรอกอน ในขณะทการรองขอนกาลงไดรบบรการ การรองขออกตวทใกล 14 มาถงอก ในทางทฤษฏถาสายการรองขออยางตอเนองทใกลอกตวหนงมาถงจะเปนเหตใหการรองขอสาหรบไซลนเดอร 186 จะตองรออยางไมสนสด สงนจะเปนการเพมแถวคอยการรองขอใหยาวขน ถงแมวาวธ SSTF คอ การปรบปรงอยางมากจาก FCFS แตมนยงไมดทสด จากตวอยาง เราสามารถทาไดดกวาโดยการเคลอนหวอานจาก 53 ไป 37 ถงแมวา 37 จะไมใกลทสด จากนนไป 14 กอนจะกลบไป 65 , 67 , 98 , 122 , 124 และ 183 กลยทธนเปนการลดการเคลอนยายหวอานทงหมดเหลอ 208 ไซลนเดอร 3. การจดตารางแบบกวาด (SCAN Scheduling)

ในวธแบบกวาด (SCAN) แขนของดสกเรมตนทจดสนสดจดหนงของดสก (A) และเคลอนไปยงจดสนสดอน (B) การบรการการรองขอจะทาไดเมอมนมาถงในแตละไซลนเดอร จนกระทงมนไปถงจดสนสดอนของดสก (B) ทจดสนสดอน (B) ทศทางของการเคลอนของหวอานจะถกยอนกลบและใหบรการตอไป หวอานจะกวาดไปขางหนาและขางหลงผานดสกไปเรอย ๆ พจารณาตวอยางเดม กอนจะใชวธจดตารางแบบกวาด กบการรองขอบนไซลนเดอร 98 , 183 , 37 , 122 , 14 , 124 , 65 และ 67 เราจาเปนตองรทศทางของการเคลอนหวอานกอน โดยถาตอนนตาแหนงปจจบนของหวอานคอ 53 ถาแขนของดสกกาลงเคลอนไปทาง 0 หวอานจะบรการ 37 และจากนนเปน 14 ท

Page 38: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 215

ไซลนเดอร 0 แขนจะยอนกลบและจะเคลอนผานจดสนสดอนของดสก (ทไมใช 0) การบรการการรองขอจะทาท 65 , 67 , 98 , 122 , 124 และ 183 (ดงรปท 4.23)

รปท 4.26 แสดงโครงราง (layout) ของดสกในระบบ MS-DOS 4.3.1.2 บลอคเสย (Bad Block)

ในระบบดสกอยางงาย เชน ดสกทมตวควบคมแบบ IDE เราสามารถจดการกบบลอคเสยได (โดยผใชสงใหทา) เชน คาสง format ของ MS-DOS เปนการจดระเบยบทางตรรกะและจะทาการหาบลอคเสยบนดสก ถาหาเจอมนจะเขยนคาพเศษไวในชองของ FAT ทตรงกนเพอบอกใหโปรแกรมยอยตาง ๆ ไมใหใชบลอคนน ถาบลอคเกดเสยในระหวางการทางานปกต โปรแกรมพเศษ (เชน chkdsk) ตองถกสงใหทางานเพอคนหาบลอคเสยและลอคบลอคเหลานนไวไมใหใช ขอมลทอยในบลอคเสยกจะเสยไปโดยปรยาย

สาหรบดสกแบบ SCSI สามารถกบลอคเสยคนได โดยตวควบคมจะเกบรายการของบลอคเสยบนดสก รายการนถกเกบมาตงแตตอนจดระเบยบดสกระดบตา (low-level format) จากโรงงาน และถกทาใหทนสมยตลอดเวลาของการใชดสก การจดระเบยบระดบตาจะจดเซกเตอรอะไหลทระบบปฏบตการมองไมเหนไว แลวตวควบคมจะทาการแทนทเซกเตอร

sector 0 sector 1

Boot Block

FAT

Root Directory

DATA BLOCKS (SUBDIRECTORIES)

Page 39: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 216

ทางตรรกะทเสยแตละเซกเตอรดวยเซกเตอรอะไหล วธการนเรยกวา การเกบเซกเตอรอะไหล (sector sparing) หรอการเปลยนท (forwarding)

ตวอยางของการเปลยนแปลงเซกเตอรเสยอาจเปนดงน ระบบปฏบตการพยายามอานบลอคทางตรรกะท 87 ตวควบคมจะทาการคานวณรหสถก-ผด (ECC) และพบวาเซกเตอรนนเสย มนจะ

รายงานการคนพบนไปสระบบปฏบตการ คราวหนาเมอบตระบบใหม คาสงพเศษจะทางานเพอบอกตวควบคม SCSI เพอ

แทนเซกเตอรทเสยดวยเซกเตอรอะไหล หลงจากนน เมอระบบรองขอบลอคทางตรรกะท 87 การรองขอนนจะถกแปลไป

ยงตาแหนงของเซกเตอรทถกแทนทโดยตวควบคม จะเหนไดวาการเปลยนทศทางโดยตวควบคมอาจจะทาให การจดตารางดสกของระบบปฏบตการผดพลาด ดวยเหตนดสกสวนใหญถกจดระเบยบเพอเตรยมเซกเตอรอะไหลไวเลกนอยในแตละไซลนเดอร เมอบลอคเสยถกพบ ตวควบคมจะใชเซกเตอรอะไหลจากไซลนเดอรเดยวกน ถาทาได

อกทางเลอกหนงของการเกบเซกเตอรอะไหล ตวควบคมสามารถสงใหแทนทบลอคเสยโดยเซกเตอรเลอน (sector slipping) ตวอยางเชน สมมตวาบลอคทางตรรกะตาแหนงท 17 เสย และเซกเตอรอะไหลแรกทใชไดอยท 202 ดงนนเซกเตอรเลอนจะจบตาแหนงใหมจาก 17 ไปถง 202 โดยเคลอนตาแหนงทงหมดลงหนงจด คอ เซกเตอร 202 จะถกใชเปนอะไหล ดงนนเซกเตอร 201 จะถกคดลอกไป 202 และดงนน 200 จะยายไป 201 ไปเรอย ๆ จนกระทงเซกเตอร 18 ถกคดลอกลงเซกเตอร 19 การเลอนเซกเตอรดวยวธนทาใหพนทของเซกเตอร 18 วาง ดงนนเซกเตอร 17 สามารถถกจบคไปตรงตาแหนงนนแทนได

การแทนทของบลอคเสยโดยทวไปยงไมเปนกระบวนการอยางอตโนมตซะทเดยว เพราะขอมลใน บลอคเสยมกจะเสยไป ดงนนแฟมขอมลทใชงานบลอคนนตองถกซอมแซม (เชน การกคนจาก backup เทป) โดยตองการใหคนเปนผแกไข

4.3.2 การรบสงขอมลของอปกรณสารองขอมล

เมอโปรแกรมตองการสงขอมลใหอปกรณตางๆ ขอมลทถกสงจะถกเกบไวในหนวยความจา (เปนหนวยความจาทถกครอบครองโดยโปรเซส) การสงจะกระทาโดยซพยเปนผดงขอมลมาจากหนวยความจาสวนน จากนนโปรเซสจงนาขอมลไปใชได วธการรบสงขอมล ไดอธบายไวแลวในบทท 1 ซงมอย 3 วธ คอ

- การพอลลง - การอนเตอรรพต

Page 40: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 217

- เมลบอกซ ทง 3 วธการรบสงขอมลตองผานซพยดงในรป 4.27

รปท 4.27 การรบสงขอมลแบบธรรมดา

การรบสงขอมลแบบนเปนไปไดชาและเปลองเวลาของซพย ดงนนถาเราสามารถรบสงขอมลไดโดยไมตองผานซพยกจะทาใหการรบสงขอมลเรวขน และยงสามารถใชซพยสาหรบรนโพรเซสเซอรอนไดตอไป วธการเชนนเรยกวา การทา DMA (direct memory access) ดงแสดงในรปท 4.28

รปท 4.28 การสงขอมลแบบ DMA

การรบสงขอมลแบบ DMA จาเปนตองอาศยแชนเนลหรอตวควบคม DMA (DMA controller) แชนเนลจะทาหนาทแทนซพยเมอตองการรบสงขอมลแบบ DMA แชนเนลจะสงสญญาณไปบอกใหซพยรบร ซพยจะสงใหแชนแนลทารทนควบคมการสงขอมลจากนนซพยจะไปทางานอน และเมอการทา DMA เสรจสน แชนเนลจะสงสญญาณบอกใหซพยรบรอกครงวา การทา DMA เสรจสนลงแลว

CPU

หนวยความจา

I/O

ขอมลเขา

ขอมลออก

CPU

หนวยความจา

I/O

Page 41: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 218

ในขณะทซพยรนงานอนอยและมการทา DMA เกดขนพรอมกนดวย การทางานของ DMA ไมไดเกดขนตลอดเวลา ในชวงเวลารบสงขอมลระหวางหนวยความจากบแชนแนลแชนแนลจาเปนตองใชบสขอมลและบสแอดเดรสของหนวยความจา ซพยเองกจาเปนตองใชบสทงสองดวยเชนกน ดงนน DMA จะเกดขนในชวงเวลาทซพยกาลงคานวณฟงกชนทางคณตศาสตร ซงไมจาเปนตองดงขอมลจากหนวยความจาไปใช ในชวงเวลาน บสขอมลและบสแอดเดรสไมถกใชงานโดยซพย ดงนนการทา DMA จงนาเนนไปได ถาเมอใดซพยตองการใชหนวยความจา DMA จะตองหยดลงชวคราวจนกวาซพยจะหยดใชหนวยความจา DMA จงทางานตอได ลกษณะท DMA ใชบสทง 2 ในขณะทซพยไมใชเรยกวา การขโมยรอบเวลา (cycle stealing) ดงแสดงในรปท 4.29

รปท 4.29 ชวงเวลาการทางานของ DMA 4.3.2.1 มลตเพลพาธ

หนวยควบคมอปกรณ (CU) ซงอปกรณแตละชนดตองม CU ของตวเอง CU หนงตวสามารถควบคมอปกรณไดหลายตว CU เหลานอยภายใตการควบคมของโพรเซสเซอรทเรยกวาแชนเนล แชนเนลกสามารถควบคม CU ไดหลายๆ ตวเชนกน ดงแสดงในรปท 4.30

CPU ทางาน

CPU ใชบส

DMA ทางาน

เวลา

Page 42: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 219

รปท 4.30 การตดตอระหวาง อปกรณกบซพย

ในรปท 4.30 การตดตอกบอปกรณ X1 ตองผานแชนเนล A และ CU1 ซงลกษณะนเปนการตดตอแบบพาธเดยว (single path) คอซพยไมสามารถตดตออปกรณ X1 ผานทางเสนทางอนได เชน ไมสามารถตดตอ X1 ผานแชนเนล B หรอ CU2 จะเหนวาลกษณะพาธเดยวนมขอเสยคอ ถาแชนเนล A หรอ CU1 เกดเสยหาย ทางานไมได ซพยจะไมสามารถตดตอกบอปกรณ X1 และ X2 ไดเลย

เพอแกไขปญหาในลกษณะน เราสามารถออกแบบการตดตอเสยใหมใหเปนมลตเพลพาธ (multiple path) กลาวคอ ซพย สามารถตดตอกบอปกรณตางๆ ไดหลายเสนทาง เชน ในรปท 4.31

รปท 4.31 ตวอยางโครงสรางแบบมลตเพลพาธ MULTIPLE PATH

CPU

Channel A

Channel B

Control Unit1 อปกรณ X1 อปกรณ X2

Control Unit 2 อปกรณ Y1

Control Unit 3 อปกรณ Z3

อปกรณ Z1 อปกรณ Z2

CPU

Channel A

Channel B

Control Unit 1

Control Unit 2

อปกรณ X

อปกรณ Y

Page 43: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 220

ในลกษณะเชนนซพยกบ อปกรณ X , Y สามารถตดตอกนไดหลายทางดงน 1. ซพย - แชนเนล A - CU1 - อปกรณ X

2. ซพย - แชนเนล A - CU2 - อปกรณ X 3. ซพย - แชนเนล B - CU1 - อปกรณ X 4. ซพย - แชนเนล B - CU2 - อปกรณ X 5. ซพย - แชนเนล A - CU1 - อปกรณ Y 6. ซพย - แชนเนล A - CU2 - อปกรณ Y 7. ซพย - แชนเนล A - CU1 - อปกรณ Y 8. ซพย - แชนเนล A - CU2 - อปกรณ Y

จะเหนวาซพยตดตอกบ อปกรณ X และ Y ไดถง 4 ทาง มลตเพลพาธทาใหระบบมความ

นาเชอถอ (reliability) สงขน กลาวคอ สมมตวาแชนเนล A เสยหายไมสามารถทางานไดซพยสามารถตดตอกบอปกรณ X และ Y ผานทางแชนเนล B ได การใชโครงสรางแบบมลตเพลพาธน ถาเราใหแชนเนลทกตวตดตอกบ CU ไดหมดระบบกจะมความคลองตวสงสด แตวาเราจะไมคอยพบเหนโครงสรางเชนน ทงนเพราะเสยคาใชจายสงมาก ในแงของตวอปกรณอปกรณกควรตดตอกบ CU ไดหลายตวเพอใหเกดความคลองตวในการทางาน แตอยาลมวา CU แตละตวควบคมอปกรณไดเพยงชนดเดยวเทานน ดงนนในกรณของรปท 9.9 อปกรณ X และ Y ตองเปนอปกรณชนดเดยวกน CU1 และ CU2 กตองเปนตวควบคมอปกรณชนดเดยวกน 4.3.2.2 การจดการดสก

แผนดสกเปนอปกรณทใชเกบขอมลตางๆ คลายๆ กบหนงสอเลมหนง หนงสอแตละเลมมการจดรปแบบตางกนไปขนอยกบผพมพเชนในหนาหนงๆ กาหนดใหม 2 คอลมน 28 บรรทดเหมอนกนทกหนา ดสกกเชนกนมการจดรปแบบการเกบในลกษณะของวงรอบ (cylinder) แทรก (track) และเซกเตอร (sector) โดยจานวนวงรอบ แทรก และเซกเตอรน CS เปนผกาหนดตวอยางการจดรปแบบการเกบขอมลของดสกบนเครอง IBM PC โดย MS - DOS มดงน จานวนวงรอบ = 40 จานวนแทรกตอวงรอบ = 2 จานวนเซกเตอรตอแทรก = 9 จานวนไบตตอเซกเตอร = 512 ดงแสดงในรปท 4.32

Page 44: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 221

รปท 4.32 แสดงการจดแทรกและเซกเตอรบนแผนดสกของ MS – DOS

คาวา วงรอบ นนจะหมายถง แทรกทกแทรกทอยในแนวเดยวกน ในดสกไดรฟบางตวของเครองคอมพวเตอรระบบใหญ จะมแผนดสกหลายแผนวางขนานกนอยบนแกนหมนแกนเดยวกนดสกทกแผนจะมการแบงแทรกเหมอนกน แทรกทอยในแนวเดยวกนกคอ อยบนวงรอบเดยวกนเชน แทรก 00 ของทกแผนคออก 1 วงรอบและตอๆ ไปเปนตน

ดสกไดรฟจะมหวอานเขยน (หรอเรยกส นๆ วาหวอาน) ซงทาหนาทบนทกขอมลลงแผนดสกหรออานขอมลจากแผนดสกขนมา หวอานนจะเลอนเขา-ออก ในแนวต งฉากกบจดศนยกลางการหมนของแผนดสก เมอมการเขาถงขอมล แผนดสกจะหมนรอบแกนหมนดวยความเรวรอบคาหนง แกนหวอานจะเลอนไปมาเพอทาการอานหรอเขยนขอมล ดงในรปท 4.33

Tracks 0 1 2 3 4 39

Sector 7

Sector 3

Sector 4

Sector 5

Sector 6

Sector 8

Sector 1

Sector 2

Page 45: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 222

รปท 4.33 การทางานของตวขบดสก เวลาในการเขาถงขอมล (access time) สาหรบดสกประกอบดวย 3 สวน คอ 1. เวลาแสวงหา (seek time) คอ ชวงเวลาทหวอานเลอนจากแทรกทอยในขณะนนไปอยเหนอแทรกทตองการ 2. เวลาแฝง (latency time) คอ ชวงเวลาทแผนดสกหมนตวเองจนกระทงแซกเตอรทตองการอยใตหวอาน 3. เวลาถานเทขอมล (transmission time) คอชวงเวลาทหวอานอานขอมล หรอเขยนขอมลลงบนแผนดสก

รปท 4.34 เวลาของการเขาถงขอมล

แกนหมน

แผนดสก

ทศทางการหมน หวอานเขยน

ทศทางของการเคลอนไหว ของหวอานเขยน

Seek time

Transmisssion time

Latency time

Page 46: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 223

ดงนน เวลาในการเขาถงขอมล = เวลาแสวงหา + เวลาแฝง + เวลาถายขอมล

โดยปกต ดสกจะหมนดวยความเรวสงทาใหเวลาแฝงมคานอยมากเมอเทยบกบสวนอน จนบางครงอาจตดทงได สาหรบเวลาถายเทขอมลจะขนอยกบปรมาณขอมลทตองการอานหรอเขยนและขอความเรวของการสงขอมล ซงคาท งสองนอยนอกเหนอการควบคมของ OS ดงนนจงมเวลาเพยงเวลาแสวงหาเทานน OS สามารถควบคมไดบางบางสวน เวลาในการเขาถงขอมลนมผลกระทบตอการทางานของระบบ ถาเวลาในการเขาถงนอยลง การทางานของระบบกจะดขนทางานไดเรว และไดปรมาณงานเพมขนในเวลาเทาเดม

หนาทอกประการหนงของ OS กคอ พยายามลดเวลาในการเขาถงใหนอยทสดเทาทจะทาได กลไกการจดสรรดสก (disk Scheduling) จะทาหนาทลดเวลาแสวงหาใหนอยทสดเทาทจะทาได กลไกการจดสรรดสกมหลายแบบขนอยกบผออกแบบ OS จะเลอกใช 4.3.3.3 การจดการเทป

เทปเปนอปกรณเกบขอมลอกชนดหนง ถงแมการทางานจะชาแตกยงนยมใชกนอยในปจจบน เพราะเทปมราคาถก การทางานของเทปทชากเนองจากลกษณะการทางานของตวเทปเอง การเขาถงขอมลเปนแบบลาดบตองอานขอมลขนมาตรวจสอบทกกลมจนกวาจะพบขอมลทตองการ

เชนเดยวกบดสก OS เปนผกาหนดรปแบบการเกบขอมลลงบนเทป เทปจะมการจดแบงการเกบขอมลเปนแทรก (track) เรคคอรด (record) และบลอก (block) ดงตวอยางในรปท 4.35

ก. การจดแทรกและเรคคอรดบนเทป

01234

ชองวางระหวางเรคคอรด

Track

5678

GAP

1 Byte

record

Page 47: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 224

ข. การจดบลอกบนเทป รปท 4.36 การจดวางขอมลเทป

การแบงแทรกจะแบงตามความยาวของเนอเทป ดงตวอยางในรปท 4.36 โดยทวไปเทปจะ

แบงเปน 9 แทรก สาหรบเกบขอมลขนาด 8 บต การเกบขอมล 1 ไบต (8 บต) จะเกบตามแนวขวางของเทป 1 บทตอ 1 แทรก แทรกทเหลอเปนพารตบต (parity bit) ไดตรวจสอบความผดพลาดของการเขยน-อาน หนงเรคคอรดจะมหลายไบต เชน 512 ไบตตอเรคคอรด ระหวางเรคคอรดจะมเนอทวางเรยกวา ชองวางระหวางเรคคอรด (inter-record gap) มไวเพอแบงแยกแตละเรคคอรดออกจากกนและไมมการเกบขอมลลงในชองวางนดวย หลายๆ เรคคอรดรวมเปน 1 บลอก และเชนเดยวกนระหวางบลอกแตละบลอกจะมเนอทวางทเรยกวา ชองวางระหวางบลอก (inter-block gap) โดยทวไปชองวางระวางบลอกจะกวางกวาชองระหวางเรคคอรด 4.3.3.4 การจดการคยบอรด

คยบอรดเปนอปกรณอนพตประเภททมการสงขอมลเปนสาย นนคอลาดบของการสงขอมลขนอยกบลาดบของการกดคยแตละคย การเรยงลาดบผดกจะเกดความหมายผดตาม ไปดวย เชน กด "a" และตามดวย "b" จะเกดลาดบของขอมลเปน "a b" ตางกบการกด "b" จะเกดลาดบของขอมลเปน "b a" ดงนนลาดบของขอมลจงมความสาคญ

การจดการคยบอรดของ OS แบงไดเปน 2 โหมดคอ โหมดดบ (raw mode) โหมดนอาจเรยกไดวาเปนการจดการเชงอกขระ (character enter) โดยมลกษณะการ

จดการเปนดงน สมมตวาผใชตงใจจะพมพคาวา 'date' แตเวลาพมพจรง ๆ พมพผดเปน 'dste' ดงนนเมอตองการแกไขตองกด backspace 3 ครง เพอลบตวอกษร 3 ตวหลงออก) และกด 'a' 'e' ตามดวย enter ตามลาดบ ในลกษณะนโปรแกรมของผใชจารบอกขระทงหมด 11 ตว (รวมอกขระทพมพผด backspace และ enter)

1 บลอก 1 บลอก

1 เรคคอรด ชองวางระหวางบลอก

Page 48: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 225

โหมดสก (cook mode) โหมดนอาจเรยกไดวาเปนการจดการเชงบรรทด (line - orient) ลกษณะการสงขอมลผาน

โหมดนจะตางกบโหมดดบเพยงเลกนอย ในกรณตวอยางทกลาวไวโหมดดบ OS จะสงอกขระใหโปรแกรมทงหมด 11 อกขระ แตถาเปนโหมดสก OS จะสงเฉพาะอกขระทถกแกไขถกตองแลวเทานน นนคอจะสงเพยง date ไปให ใน OS บางตวผใชสามารถเลอกโหมดการจดการรบขอมลไดทง 2 โหมด

OS จะจองหนวยความจาไวสวนหนงเพอรบขอมลจากคยบอรด กอนทจะสงใหโปรแกรมตางๆ เอาไปใช หนวยความจาสวนนเรยกวา บฟเฟอร (buffer) ในกรณของโหมดสกอกขระทถกสงเขาถกสงเขามาเกบในบฟเฟอรนกอน ถาผใชกอนแกไขกจะเกดการแกไขขอมลทเกบในบฟเฟอร จนกระทงเมอผใชกดแปน enter ขอมลหรอกลมของอกขระทผใชแกไขแลวจะถกสงอกขระใหโปรแกรมของผใชไดทนทไมตองเกบลงบฟเฟอร แตถาโปรแกรมของผใชยงไมพรอมทจะอนพตจากผใช ในกรณนอกขระตางๆ ทผใชคยไวจะถกเกบลงบฟเฟอร และจะถกสงใหเมอโปรแกรมของผใชพรอมทจะรบขอมล

การจะสรรบฟเฟอรของคยบอรด แบงไดเปน 2 วธทนยมใชกน วธแรก OS จะมบฟเฟอรขนาดเลกๆ หลายๆ ตวเชน มขนาด 10 ไบต รวมกนเปนกลมเรยกวากลมบฟเฟอรกลาง เมอผใชปอนขอมลเขามาทางคยบอรด OS จะนาขอมลตางๆ เกบลงในบฟเฟอร 1 ตวจากกลมบฟเฟอร 1 ตวเกบขอมลไดไมหมด เปนตนวาผใชปอนขอมลเขามา 48 อกขระ OS กจะยกบฟเฟอรใหผใช 5 ตวจากบฟเฟอรกลาง 5 ตว เกบได 50 อกขระ) เมอขอมลเหลานถกสงไปใหโปรแกรม คอนาไปใชงาน บฟเฟอรทง 5 ตวนจะถกสงใหกบกลมบฟเฟอรกลาง

วธทางาน OS กาหนดบฟเฟอรใหกบผใชแตละคนไปเลยไมยงเกยวกน และไมมกลมบฟเฟอรกลาง เนองจากวาในบางครงผใชตองปอนขอมลเขามาเปนจานวนมาก ดงนน บฟเฟอรสาหรบผใชแตละคนควรมขนาดโตพอสมควรเชนมขนาด 200 ไบต สมมตระบบคอมพวเตอรมเทอรมนลอย 100 เครอง นนคอสามารถมผใชเครองมอได 100 คนในเวลาเดยวกน ในกรณนระบบจะตองเสยหนวยความจาเพอทาบฟเฟอรไปถง 20,000 (200*100) ไบต ในขณะทเราใชวธแรกบฟเฟอรขนาด 5,000 ไบตกพยงพอแลว

ในขณะกดคยแตละคย คยบอรดอาจไมไดสงรหสแอสก ไปให OS โดยตรง แตสงรหสคย (key code) ไปใหแทน ในลกษณะน OS ตองมหนาทแปลงรหสคยทถกสงเขามาใหเปนรหสแอสกของคยนนๆ เชนเมอผใหกดแปน 'a' ซง OS จะมตารางการแปลงรหสเกบเอาไวการทาเชนนทาใหเพมความยดหยนในการใชงาน กลาวคอผใชสามารถเปลยนแปลงแปนตางๆ บนคยบอรดใหเปนอกขระทตองการได โดยไปเปลยนคาในตารางแปลงรหสเทานน

ในเชงกรรกแลวคยบอรดและจอภาพเปนอปกรณตางชนดกน แตเมอผใชกดคยใดๆ หรอปอนขอมลเขามาใหคอมพวเตอร ผใชยอมตองการจะเหนสงทเขาปอนถกแสดงบนจอภาพ

Page 49: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

การจดการขอมล 226

เทอรมนลบางชนดจะแสดงสงตางๆ ทผใชปอนเขามาออกทางจอภาพโดยอตโนมต (ใชฮารดแวร) ซงจะไมเหมาะสมกบกรณทมการปอนรหสลบ เพราะรหสลบจะถกแสดงออก บนจอภาพดวยเชนกน และนอกจากนยงอาจมปญหากบโปรแกรมตางๆ ดวย แตโชคดทเทอรมนลสวนใหญของคณสมบตเชนนน ดงนนจงเปนหนาทของซอฟตแวรทจะจดการแทนการทาเชนนเรยกวาการสะทอน (echoing) ซง OS กอานวยความสะดวกในเรองนดวย แตถาผใชไมตองการใชกบสะทอนทกระทาโดย OS ผใชกสามารถเขยนโปรแกรมจดการเองกได เชน โปรแกรมคยตางๆ จะจดการเรองการสะทอนเอง 4.3.4 อธบายการใชงานอปกรณแบบเสตปเปล(Stable-Storage Implement)

โดยนยามแลว ขอมลทอยในหนวยเกบขอมลชนดคงทจะไมมทางสญหายไปไหน การนาหนวยเกบขอมลไปใช เราจาเปนตองคดลอกขอมลทตองการไปไวยงอปกรณทใชเกบขอมลหลาย ๆ ท (อาจเกบในดสกดวย ในเทปดวย) ดวยโหมดทเปนอสระจากความลมเหลว เราตองการวธทจะทาใหขอมลทนสมย (update) ทรบประกนไดวา ความผดพลาดในระหวางการทาขอมลใหทนสมย จะไมทาใหขอมลเสยหาย และเมอเราทาการกคนจากทผดพลาด เราตองสามารถทาใหขอมลทงหมดมคาทถกตอง ถาเกดมการลมเหลวอกในระหวางการกคน เราจะตองทาอยางไร ดสกจะทางานจนไดผลลพธหนงในสามขอน คอ

สาเรจอยางสมบรณแบบ (Successful completion) ขอมลถกเขยนลงดสกไดอยางถกตอง

ลมเหลวบางสวน (Partial failure) ความลมเหลวเกดขนระหวางการโอนยายขอมล ดงนนเซกเตอรบางสวนจะถกเขยนดวยขอมลใหม และเซกเตอรทถกเขยนในระหวางการลมเหลวอาจจะผดพลาด

ลมเหลวทงหมด (Total failure) ความลมเหลวเกดขน กอนทดสกจะเรมเขยน ดงนนคาของขอมลบนดสกกจะเหมอนเดมกอนทจะเกดการเขยนใด ๆ

ถาความลมเหลวเกดในระหวางการเขยนบลอค เมอระบบตรวจพบแลวจะทาการกบลอคนนคน ระบบตองเกบบลอคทางกายภาพ 2 บลอก ไวใหบลอคทางตรรกะแตละบลอค ผลลพธทไดมดงน

1. เขยนขอมลลงบนบลอคทางกายภาพบลอคแรก 2. เมอเขยนบลอคแรกเรยบรอย กเขยนขอมลเดยวกนลงยงบลอคทางกายภาพอกบลอค 3. ประกาศวาการทางานเสรจสนหลงจากการเขยนบลอคทสองสาเรจเทานน (ถาเขยนไม

สาเรจจะไมประกาศ) ในระหวางการกระบบจากความลมเหลว บลอคทางกายภาพแตละคจะถกทดสอบ ถาทง 2 บลอก เหมอนกนและไมมการพบขอผดพลาด กไมตองทาอะไร ถามบลอคหนงพบวามขอผดพลาด เราจะแทนทเนอหาในบลอคนนดวยขอมลของอกบลอคหนง ถาทงสองบลอคไมพบขอผดพลาด แต

Page 50: บทท 4 ี่ - .th · 179 ระบบปฏิบตัิการ – เก็บข้อมูลพวก วนทัี่สร้างแฟ้มน้ีขึ้นมา

ระบบปฏบตการ 227

เนอหาตางกน เราจะเอาเนอหาของบลอคทสองเขาไปเกบแทนทในบลอคทหนง กระบวนการในการกคนนประกนไดวา การเขยนหนวยเกบขอมลชนดคงตองเสรจสมบรณหรอไมผลลพธทไดตองไมเปลยนแปลง