Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
บทท 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)
ระบบปฏบตการ 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)
เมอผใชตองการใหแฟมขอมลมคณลกษณะเหมอนเดม แตตองการลบเนอหาของ
การจดการขอมล 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
ระบบปฏบตการ 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.
การจดการขอมล 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 มกเขาถงแฟมขอมลตามวธน
ระบบปฏบตการ 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
การจดการขอมล 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;
ระบบปฏบตการ 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
การจดการขอมล 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 แสดงไดเรกทอรระดบ
ระบบปฏบตการ 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 คอ แฟมขอมลของตวมนเอง แฟมขอมลคอใบไมของตนไมนง
การจดการขอมล 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 แสดงโครงสรางของไดเรกทอรแบบตนไม
ระบบปฏบตการ 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 เทป
การจดการขอมล 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 กจะไดมาซงชอของแฟมขอมลหรอไดเรกทอรจรง ๆ
ระบบปฏบตการ 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 หรอไดเรกทอรถกลบ เรากจะลบขอมลมนออกจากรายการ แฟมขอมลจะถกลบเมอรายการในแฟมอางองวางเปลา
การจดการขอมล 192
ปญหาของวธนคอตวแปรและขนาดของรายการในแฟมอางองตองมขนาดใหญ แตอยางไรกตามเราไมตองเกบขอมลในรายการจรง ๆ เราเกบเฉพาะจานวนของการอางองกพอ ถามการสราง link หรอไดเรกทอรใหม เรากเพมคา ถาลบ link หรอไดเรกทอรกลดคา เมอนบได 0 แฟมขอมลนนกสามารถลบได
4.1.4.4 ไดเรกทอรแบบกราฟโดยทวไป (General Graph Directory)
ปญหาหลกของการใชโครงสรางของกราฟแบบไมเปนวงจรจะแนใจไดอยางไรวาจะไมม วงจรจรง ๆ ? ถาเราเรมจากไดเรกทอรสองระดบ แลวใหผใชสรางไดเรกทอรยอยเพมกกลายเปน ไดเรกทอรแบบตนไม ถงเราจะเพมแฟมขอมลและไดเรกทอรยอยอก กยงเปนไดเรกทอรแบบตนไมอยด แตถาเราเพมการเชอมโยงของไดเรกทอรทมอยแลว โครงสรางแบบตนไมกจะเสยไป เปนผลใหเกดโครงสรางแบบกราฟอยางงาย (ดงรปท 4.10)
รปท 4.10 แสดงไดเรกทอรแบบกราฟโดยทวไป
ถาเราพงจะคนหาแฟมขอมลในไดเรกทอรทใชรวมกน (share subdirectory) แลวไมเจอ เรานาจะหลกเลยงการคนหาไดเรกทอรยอยนนซา เพราะการหาซาทาใหเสยเวลา
ถาเราอนญาตใหมวงจรในไดเรกทอร นนคอเราตองการหลกเลยงการคนหาขอมลซ าเปนครงทสอง ถาออกแบบอลกอรทมไมดจะทาใหเกดการวนซา (loop) ไมรจบ การคนหาในวงจรกจะไมมวนจบสน วธแก คอ จากดจานวนของไดเรกทอร (ตามใจ) ทจะเขาใชในระหวางการคนหา
อกปญหาหนงคอในเรองการลบ ในไดเรกทอรแบบไมเปนวงจร คา 0 ในการนบการอางอง หมายถง แฟมขอมลนนลบได แตถามวงจรเกดขน คาการอางองอาจจะไมเปนศนย เมอแฟมขอมลหรอไดเรกทอรนนไมมแลว ในกรณนจาเปนตองใชวธ “การสะสมขยะ” (garbage collection) เพอ
ระบบปฏบตการ 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)
การจดการขอมล 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 ทตงให
ระบบปฏบตการ 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/
การจดการขอมล 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 กโลไบต
ระบบปฏบตการ 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เกบไวในดสก
การจดการขอมล 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,... ถกใชงานแลว
ระบบปฏบตการ 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
การจดการขอมล 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
ระบบปฏบตการ 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) – มนเปนความคดทดทจะรกษา
เนอหาและโครงสรางของระบบแฟมขอมลทงหมด การรกษานมกทาไดโดยการคดลอก
การจดการขอมล 202
แฟมขอมลทงหมดลงเทปแมเหลก เทคนคนเปนการ backup ในกรณทระบบลมหรอแฟมขอมลเสย ในกรณนแฟมขอมลควรถกคดลอกลงเทป และพนทวางในดสกของแฟมเหลานนกจะถกปลอยใหแฟมอนไดใช
ไดเรกทอร (directory) คอสารบญทเกบรวบรวมรายชอไฟล และขอมลบางอยางทสาคญของไฟลเอาไวใน OS ทกระบบจะตองมไดเรกทอรเพอเกบรายชอไฟลทงหมดในระบบไวผสามารถตรวจดไฟลตางๆ ไดจากไดเรกทอร ไดเรกทอรเองกถอวาเปนไฟลเชนกน โครงสรางของไดเรกทอรประกอบดวยหนวยยอยหลายหนวยใน 1 หนวยจะเกบขอมลของไฟล 1 ไฟล เชน ชอ สวนขยาย ชนด ขนาด และอนๆ ดงแสดงในรป 4.16
รปท 4.16 โครงสรางไดเรกทอร
วธทาไดเรกทอรใหกบระบบทงายทสดคอ ในระบบจะมไดเรกทอรอยเพยงไดเรกทอรเดยว และใหไฟลทกๆ ไฟลในระบบรวมอยในไดเรกทอรเดยวกน ระบบนเรยกวา ระบบไดเรกทอรเดยว (single directory) หรอไดเรกทอร 1 ระดบ (level directory) ไดเรกทอรแบบนไมคอยสะดวกในการใชงาน ถามผใชหลายคน แตละคนมไฟลหลายไฟลหลายชนด ไฟลทงหมดนจะอยปนกน ไมสามารถจดแบงแยกไฟลของผใชแตละคนออกจากกน ถาเกดกรณทมการสรางไฟลของผใชคนหนงตรงกบไฟลของผใชคนอนๆ (มชอและสวนขยายเดยวกน) อาจทาใหไฟลของผใชคนนนทาลายไฟลเกาทมอยแลว (โดยถกเขยนทบ) หรออาจทาใหการสรางไฟลนนทาไมไดใน OS ของไมโครคอมพวเตอรรนเกาๆ เทานนทมการกระทาระบบไดเรกทอรเดยว
เพอแกปญหาของการตงชอไฟลตรงกน และไฟลของผใชทกคนอยปะปนกน ผออกแบบ OS ในระยะตอมาจงพฒนาโครงสรางของระบบไดเรกทอรเสยใหม คอใหผใชแตคนสามารถสรางไดเรกทอรของตนเองได 1 ไดเรกทอรเรยกวาเปนไดเรกทอรยอย (sub-dierectory) ไดเรกทอร
ชอ สวนขยาย ขนาด เจาของ เวลาสรางไฟล เวลาทถกแกไขครงลาสด เวลาทเขาถงลาสด บลอคในดสกทไฟลใช
ขอมลภายในไดเรกทอรของแตละหนวย
ไดเรกทอร
ระบบปฏบตการ 203
ยอยนจะอยภายใตไดเรกทอรเดยวกน (ดรป 4.17 ข) เรยกวาเปน ไดเรกทอรราก (root directory) หรอเรยกสนๆ วารท (root) รทจะมไดเรกทอรยอยไดหลายไดเรกทอร ภายในไดเรกทอรยอยนมไฟลไดหลายๆ ไฟล ผใชสามารถตงชอไฟลและชนดใหตรงกบไฟลของผใชคนอนไดถาไฟลทง 2 นอยตางไดเรกทอรกน เราเรยกระบบไดเรกทอรแบบนวา ระบบไดเรกทอร 2 ระดบ (2 level directory )
อยางไรกตาม ไดเรกทอรแบบนยงมปญหากบผใชทมไฟลมากๆ เขายงคงไมสามารถแบงแยกหรอจดไฟลออกเปนหมวดหมได (ถงแมวาไมมไฟลทเกยวกบงานเขยนตาราเรยน ไฟลงานเขยนบทความ ไฟลการบานนกเรยนทสงมาไฟลของงานวจยนกาลงศกษาคนควาอย ไฟลเกยวกบผอปการะและทนการศกษา ไฟลทเปนเกมส และไฟลอนๆ ในลกษณะนเขากยงคงพบปญหาทไฟลหลายๆ ประเภทอยรวมปนกน
(ก)ไดเรกทอรเดยว (ข) ไดเรกทอร 2 ระดบ
BA A CCC
Root
CBA C CA
A CB
Root
การจดการขอมล 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
ระบบปฏบตการ 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
/
- ไดเรกทอร
- ไฟล
การจดการขอมล 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) ถงแมวาการเกดบลอกสญหายจะไมทาใหเกด
ระบบปฏบตการ 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
(ก) มความถกตอง
(ข) เกดบลอกสญหาย
(ค) มบลอกซาในดสกวาง
(ง) มบลอกถกใชซา
หมายเลขบลอก
บลอกทถกใช
บลอกวาง
หมายเลขบลอก
บลอกทถกใช
บลอกวาง
หมายเลขบลอก
บลอกทถกใช
บลอกวาง
หมายเลขบลอก
บลอกทถกใช
บลอกวาง
การจดการขอมล 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◌
ระบบปฏบตการ 209
การใชวธการปรบทนการอตโนมต เปนการแกปญหาของการสญเสยขอมลทตนเหตเพราะวธนจะไมยอมใหขอมลเกดการสญหายไปจนกระทงการทางานเสรจสนลง แตการปรบทนกาลอตโนมตเสยคาใชจายสงมาก ตวอยางเชน เราใชดสกตวหนงเกบรายชอและจานวนสนคาในโกดง ใชดสกขนาดเทากนอกตวหนงทาการสารองขอมลรายการสนคานไวทกวน จานวนสนคาทมการเขา-ออกโกดงถกบนทกไวในดสกเลกๆ ซงบนทกเฉพาะรายการทมการเปลยนแปลงเทานน
ในตอนกลางคนเราจะแกไขขอมลในดสกทเกบขอมลใหมจานวนสนคาถกตอง วธการปรบทนกาลอตโนมตคอ อานขอมลจากดสกทเกบรายการสนคาและอานขอมลจากดสกทเกบรายการเปลยนแปลงในวนนน ทาการคานวณเขยนลงในดสกวางอกตวหนง จะเหนวาไมมการทาลายขอมลเดมใหสญหายไป เพราะดสกนนถกใชในการอานเทานน ไดถกเขยนทบลงไปถาระบบเกดขดของในขณะแกไขขอมล ขอมลทเกบลงในดสกวางเทานนทเสยหาย การแกไขชอขอมลสามารถเรมตนใหมไดหลงจากทระบบกลบสสภาพปกตแลว หลงจากทาการแกไขขอมลลงดสกวางเสรจแลว ทาการสารวจขอมลอกครงหนง ถาดสกทเกบรายการสนคาไวมการเสยหายอาจเนองจากฝ น ความชน หรอเหตใดๆ กตาม เรากยงมดสกสารองอกตวหนงทจะนามาใชงานแทนได จากทกลาวมาจะเหนวาการปรบทนกาลอตโนมตจะไมทาใหเกดการสญหายของขอมลแตตองใชดสกหลายตวทาใหมราคาแพงมาก
4.3 การใชงานอปกรณสารองขอมล 4.3.1 ลกษณะของอปกรณสารองขอมล (Device Characteristic)
โดยทวไปเราสามารถแบงแยกประเภทของอปกรณไดเปน 2 ประเภทคอ - อปกรณอนพต-เอาตพต (input/output device) - อปกรณเกบขอมล (storage device)
อปกรณอนพต-เอาตพต อปกรณอนพต คออปกรณททาใหคอมพวเตอรสามารถสมผสและรบรสงตางๆ จากโลก
ภายนอกได ตวอยางเชน เครองอานบตร คยบอรด เมาส (mouse) อปกรณเอาตพต คออปกรณททาใหคอมพวเตอรคอบคมหรอสงผลออกมาสโลกภายนอกได
ตวอยางเชน เครองเจาะบตร จอภาพเครองพมพ เราอาจแบงแยกอปกรณอนพต-เอาตพต ออกเปน 2 ประเภทไดดงน
1. อปกรณชนดขอมลเปนสาย (stream) อปกรณประเภทนขอมลทสงเขาออกจะเรยงมาเปนลาดบกอน-หลง การแบงแยกขอมลทาไดโดยการตรวจสอบลาดบของขอมล อปกรณประเภทนสามารถจดการไดงาย เพยงแตจดลาดบการรบ-สงขอมลใหถกตองกเพยงพอแลว ตวอยางของอปกรณชนดน ไดแก คยบอรด ซงขอมลทสงเขามาในระบบจะเปนไปตามลาดบการกดคย คยใด
การจดการขอมล 210
ถกกดกอนกจะถกสงมากอน เครองพมพกจดอยในอปกรณประเภทน ขอมลทถกสงไปกอนกจะถกพมพกอน ขอมลทถกสงไปทหลงกจะถกพมพทหลง
2. อปกรณชนดขอมลไมเปนสาย (non-stream) อปกรณประเภทน ขอมลทสงและรบไมขนอยกบลาดบการสง เราตองอาศยขอมลเพมเตมเพอทจะแยกแยะขอมลแตละตว การจดการอปกรณประเภทน OS จะตองมวธจดการโดยเฉพาะขนอยกบลกษณะชนดนนๆ ตวอยางของอปกรณชนดน เชน จอภาพของเครองไมโครคอมพวเตอร ขอมลหรอตวอกษรทแสดงอยบนจอภาพแสดงนน จะตองสงไปในตาแหนงทถกตอง ตาแหนงของตวอกษรทแสดงอยบนจอภาพแตละตวจะมแอดเดรสประจาตาแหนงนนๆ เมอเราสงตวอกษรไปยงแอดเดรสใดตวอกษรกจะปรากฏอยบนจอภาพ ณ ตาแหนงทตรงกนกบแอดเดรสนน ดงนน จะเหนไดวา การสงตวอกษรไปใหจอภาพไมจาเปนตองมลาดบการสงทถกตอง แตตองการแอดเดรสทตรงกบตาแหนงนนเทา อปกรณเกบขอมล
อปกรณเกบขอมล เปนอปกรณทคอมพวเตอรใชเกบขอมลตางๆ (โดยทวไปกระบวนการนเรยกวา การเขยน) ในลกษณะทขอมลนสามารถถกดงหรอเรยกกลบมาใชไดในภายหลง (กระบวนการนเรยกวา การอาน) อปกรณเกบขอมลนเปนอปกรณเกบขอมลนเปรยบเสมอนกลไกการเกบขอมลของมนษย เชนใชดนสอเขยนขอความตางๆ ไวในสมดเมอตองการจะใชภายหลงกนามาอานเพอรอฟนความจา
อปกรณเกบขอมลสามารถแบงแยกไดเปน 2 ประเภท 1. อปกรณทมการเขาถงแบบลาดบ (serial access storage device) ไดแก เทปลกษณะของ
อปกรณประเภทนการเขาถง (access) จะตองเปนไปตามลาดบ ตงแตตนเทป (หรอตาแหนงทหวเทปกาลงอานอย) เรยงไปจนถงตาแหนงทตองการ การเกบขอมลจะเกบเปนกลมๆ ไมมแอด เดรสของแตละกลม การอานจะตองอานเขามาทละกลม ตรวจสอบวาเปนกลมทตองการหรอไม ทาเชนนเรยงไปตามลาดบของการเกบจนกระทงพบกลมของขอมลทตองการ
2. อปกรณทมการเขาถงโดยตรง (direct access storage device) ไดแก ดสกขอมลทจะถกจดไวเปนกลม ในระดบบลอกหรอเซกเตอร แตละกลมจะมแอดเดรสของตวเอง การเขาถงทาไดโดยกาหนดแอดเดรสของขอมลกลมนน ซงจะทาใหอปกรณทราบวาขอมลกลมนนอยทไหนและสามารถเขาถงไดโดยตรง ไมตองผานกลมขอมลกลมอนๆ เหมอนในกรณของอปกรณทมการเขาถงแบบลาดบ
ดสก คอ กอนของหนวยเกบขอมลสารองสาหรบระบบคอมพวเตอรยคใหม เทปแมเหลกเคยถกใชเปนสอทใชสารองขอมลมากอน แตเวลาทใชในการเขาถงขอมลคอนขางขากวาดสก ดงนนในปจจบนเทปมกถกใชเปน backup มากกวา โดยใชเกบสารสนเทศทใชไมคอยบอย แลวยงเปนสอท
ระบบปฏบตการ 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) คอ เวลาทแขนของดสกเคลอนหวอานไปสไซลนเดอรทมเซกเตอรทตองการ
การจดการขอมล 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
ระบบปฏบตการ 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 วธนทาใหสมรรถนะไดรบการปรบปรงอยางมาก
การจดการขอมล 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 ท
ระบบปฏบตการ 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)
การจดการขอมล 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 วธ คอ
- การพอลลง - การอนเตอรรพต
ระบบปฏบตการ 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
การจดการขอมล 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 ทางาน
เวลา
ระบบปฏบตการ 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
การจดการขอมล 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
ระบบปฏบตการ 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
การจดการขอมล 222
รปท 4.33 การทางานของตวขบดสก เวลาในการเขาถงขอมล (access time) สาหรบดสกประกอบดวย 3 สวน คอ 1. เวลาแสวงหา (seek time) คอ ชวงเวลาทหวอานเลอนจากแทรกทอยในขณะนนไปอยเหนอแทรกทตองการ 2. เวลาแฝง (latency time) คอ ชวงเวลาทแผนดสกหมนตวเองจนกระทงแซกเตอรทตองการอยใตหวอาน 3. เวลาถานเทขอมล (transmission time) คอชวงเวลาทหวอานอานขอมล หรอเขยนขอมลลงบนแผนดสก
รปท 4.34 เวลาของการเขาถงขอมล
แกนหมน
แผนดสก
ทศทางการหมน หวอานเขยน
ทศทางของการเคลอนไหว ของหวอานเขยน
Seek time
Transmisssion time
Latency time
ระบบปฏบตการ 223
ดงนน เวลาในการเขาถงขอมล = เวลาแสวงหา + เวลาแฝง + เวลาถายขอมล
โดยปกต ดสกจะหมนดวยความเรวสงทาใหเวลาแฝงมคานอยมากเมอเทยบกบสวนอน จนบางครงอาจตดทงได สาหรบเวลาถายเทขอมลจะขนอยกบปรมาณขอมลทตองการอานหรอเขยนและขอความเรวของการสงขอมล ซงคาท งสองนอยนอกเหนอการควบคมของ OS ดงนนจงมเวลาเพยงเวลาแสวงหาเทานน OS สามารถควบคมไดบางบางสวน เวลาในการเขาถงขอมลนมผลกระทบตอการทางานของระบบ ถาเวลาในการเขาถงนอยลง การทางานของระบบกจะดขนทางานไดเรว และไดปรมาณงานเพมขนในเวลาเทาเดม
หนาทอกประการหนงของ OS กคอ พยายามลดเวลาในการเขาถงใหนอยทสดเทาทจะทาได กลไกการจดสรรดสก (disk Scheduling) จะทาหนาทลดเวลาแสวงหาใหนอยทสดเทาทจะทาได กลไกการจดสรรดสกมหลายแบบขนอยกบผออกแบบ OS จะเลอกใช 4.3.3.3 การจดการเทป
เทปเปนอปกรณเกบขอมลอกชนดหนง ถงแมการทางานจะชาแตกยงนยมใชกนอยในปจจบน เพราะเทปมราคาถก การทางานของเทปทชากเนองจากลกษณะการทางานของตวเทปเอง การเขาถงขอมลเปนแบบลาดบตองอานขอมลขนมาตรวจสอบทกกลมจนกวาจะพบขอมลทตองการ
เชนเดยวกบดสก OS เปนผกาหนดรปแบบการเกบขอมลลงบนเทป เทปจะมการจดแบงการเกบขอมลเปนแทรก (track) เรคคอรด (record) และบลอก (block) ดงตวอยางในรปท 4.35
ก. การจดแทรกและเรคคอรดบนเทป
01234
ชองวางระหวางเรคคอรด
Track
5678
GAP
1 Byte
record
การจดการขอมล 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 เรคคอรด ชองวางระหวางบลอก
ระบบปฏบตการ 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 จะมตารางการแปลงรหสเกบเอาไวการทาเชนนทาใหเพมความยดหยนในการใชงาน กลาวคอผใชสามารถเปลยนแปลงแปนตางๆ บนคยบอรดใหเปนอกขระทตองการได โดยไปเปลยนคาในตารางแปลงรหสเทานน
ในเชงกรรกแลวคยบอรดและจอภาพเปนอปกรณตางชนดกน แตเมอผใชกดคยใดๆ หรอปอนขอมลเขามาใหคอมพวเตอร ผใชยอมตองการจะเหนสงทเขาปอนถกแสดงบนจอภาพ
การจดการขอมล 226
เทอรมนลบางชนดจะแสดงสงตางๆ ทผใชปอนเขามาออกทางจอภาพโดยอตโนมต (ใชฮารดแวร) ซงจะไมเหมาะสมกบกรณทมการปอนรหสลบ เพราะรหสลบจะถกแสดงออก บนจอภาพดวยเชนกน และนอกจากนยงอาจมปญหากบโปรแกรมตางๆ ดวย แตโชคดทเทอรมนลสวนใหญของคณสมบตเชนนน ดงนนจงเปนหนาทของซอฟตแวรทจะจดการแทนการทาเชนนเรยกวาการสะทอน (echoing) ซง OS กอานวยความสะดวกในเรองนดวย แตถาผใชไมตองการใชกบสะทอนทกระทาโดย OS ผใชกสามารถเขยนโปรแกรมจดการเองกได เชน โปรแกรมคยตางๆ จะจดการเรองการสะทอนเอง 4.3.4 อธบายการใชงานอปกรณแบบเสตปเปล(Stable-Storage Implement)
โดยนยามแลว ขอมลทอยในหนวยเกบขอมลชนดคงทจะไมมทางสญหายไปไหน การนาหนวยเกบขอมลไปใช เราจาเปนตองคดลอกขอมลทตองการไปไวยงอปกรณทใชเกบขอมลหลาย ๆ ท (อาจเกบในดสกดวย ในเทปดวย) ดวยโหมดทเปนอสระจากความลมเหลว เราตองการวธทจะทาใหขอมลทนสมย (update) ทรบประกนไดวา ความผดพลาดในระหวางการทาขอมลใหทนสมย จะไมทาใหขอมลเสยหาย และเมอเราทาการกคนจากทผดพลาด เราตองสามารถทาใหขอมลทงหมดมคาทถกตอง ถาเกดมการลมเหลวอกในระหวางการกคน เราจะตองทาอยางไร ดสกจะทางานจนไดผลลพธหนงในสามขอน คอ
สาเรจอยางสมบรณแบบ (Successful completion) ขอมลถกเขยนลงดสกไดอยางถกตอง
ลมเหลวบางสวน (Partial failure) ความลมเหลวเกดขนระหวางการโอนยายขอมล ดงนนเซกเตอรบางสวนจะถกเขยนดวยขอมลใหม และเซกเตอรทถกเขยนในระหวางการลมเหลวอาจจะผดพลาด
ลมเหลวทงหมด (Total failure) ความลมเหลวเกดขน กอนทดสกจะเรมเขยน ดงนนคาของขอมลบนดสกกจะเหมอนเดมกอนทจะเกดการเขยนใด ๆ
ถาความลมเหลวเกดในระหวางการเขยนบลอค เมอระบบตรวจพบแลวจะทาการกบลอคนนคน ระบบตองเกบบลอคทางกายภาพ 2 บลอก ไวใหบลอคทางตรรกะแตละบลอค ผลลพธทไดมดงน
1. เขยนขอมลลงบนบลอคทางกายภาพบลอคแรก 2. เมอเขยนบลอคแรกเรยบรอย กเขยนขอมลเดยวกนลงยงบลอคทางกายภาพอกบลอค 3. ประกาศวาการทางานเสรจสนหลงจากการเขยนบลอคทสองสาเรจเทานน (ถาเขยนไม
สาเรจจะไมประกาศ) ในระหวางการกระบบจากความลมเหลว บลอคทางกายภาพแตละคจะถกทดสอบ ถาทง 2 บลอก เหมอนกนและไมมการพบขอผดพลาด กไมตองทาอะไร ถามบลอคหนงพบวามขอผดพลาด เราจะแทนทเนอหาในบลอคนนดวยขอมลของอกบลอคหนง ถาทงสองบลอคไมพบขอผดพลาด แต
ระบบปฏบตการ 227
เนอหาตางกน เราจะเอาเนอหาของบลอคทสองเขาไปเกบแทนทในบลอคทหนง กระบวนการในการกคนนประกนไดวา การเขยนหนวยเกบขอมลชนดคงตองเสรจสมบรณหรอไมผลลพธทไดตองไมเปลยนแปลง