กลับไปหน้าบทความ

อ่าน 4 นาที

บล็อกควบคุมไฟล์

บล็อกควบคุมไฟล์ ( FCB ) คือโครงสร้างระบบไฟล์ที่ใช้เก็บสถานะของไฟล์ ที่เปิด อยู่ FCB นั้นได้รับการจัดการโดยระบบปฏิบัติการ แต่จะอยู่ในหน่วยความจำของโปรแกรมที่ใช้งานไฟล์นั้น...

บล็อกควบคุมไฟล์

(Learn how and when to remove this message)

บล็อกควบคุมไฟล์ ( FCB ) คือโครงสร้างระบบไฟล์ที่ใช้เก็บสถานะของไฟล์ ที่เปิด อยู่ FCB นั้นได้รับการจัดการโดยระบบปฏิบัติการ แต่จะอยู่ในหน่วยความจำของโปรแกรมที่ใช้งานไฟล์นั้น ไม่ใช่ในหน่วยความจำของระบบปฏิบัติการ これにより ทำให้กระบวนการหนึ่งๆ สามารถเปิดไฟล์ได้พร้อมกันมากเท่าที่ต้องการ ตราบใดที่ยังมีหน่วยความจำเพียงพอสำหรับ FCB ต่อไฟล์

FCB มีต้นกำเนิดมาจากCP/Mและมีอยู่ในDOS เวอร์ชันส่วนใหญ่เช่นกัน แม้ว่าจะใช้เป็นมาตรการเพื่อความเข้ากันได้กับเวอร์ชันเก่าในMS-DOSเวอร์ชัน 2.0 และเวอร์ชันต่อมาเท่านั้น FCB เต็มรูปแบบมีความยาว 36 ไบต์ ในเวอร์ชันแรกๆ ของ CP/M มีความยาว 33 ไบต์ ขนาดคงที่นี้ ซึ่งไม่สามารถเพิ่มได้โดยไม่ทำให้ความเข้ากันได้ของแอปพลิเคชันเสียหาย นำไปสู่การที่ FCB หมดความสำคัญในฐานะวิธีการมาตรฐานในการเข้าถึงไฟล์ในที่สุด

ความหมายของฟิลด์หลายฟิลด์ใน FCB แตกต่างกันระหว่าง CP/M และ DOS และยังขึ้นอยู่กับการดำเนินการที่กำลังดำเนินการอยู่ด้วย ฟิลด์ต่อไปนี้มีความหมายที่สอดคล้องกัน: [ 1 ]

ออฟเซ็ตขนาดไบต์สารบัญ
0x00 1หมายเลขไดรฟ์ — 0 สำหรับค่าเริ่มต้น, 1 สำหรับ A:, 2 สำหรับ B:, ...
0x01 8 ชื่อไฟล์และนามสกุล ไฟล์ — เมื่อรวมกันแล้วจะได้ชื่อไฟล์ แบบ 8.3
0x09 3
0x0C 20ขึ้นอยู่กับการใช้งาน — ควรกำหนดค่าเริ่มต้นเป็นศูนย์ก่อนเปิด FCB
0x20 1หมายเลขระเบียนในส่วนปัจจุบันของไฟล์ — ใช้เมื่อทำการเข้าถึงแบบเรียงลำดับ
0x21 3หมายเลขระเบียนที่จะใช้เมื่อทำการเข้าถึงแบบสุ่ม

ฟิลด์ความยาว 20 ไบต์ที่เริ่มต้นที่ออฟเซ็ต 0x0C ประกอบด้วยฟิลด์ซึ่ง (รวมถึงฟิลด์อื่นๆ) ให้ข้อมูลเพิ่มเติมเกี่ยวกับไฟล์: [ 2 ]

ออฟเซ็ตขนาดไบต์สารบัญ
0x0E 2ความยาวของระเบียนไฟล์ในหน่วยไบต์
0x10 4ขนาดไฟล์ทั้งหมดเป็นไบต์
0x14 2วันที่แก้ไขเนื้อหาไฟล์ครั้งล่าสุด
0x16 2เวลาแก้ไขล่าสุด

ค่าเพิ่มเติมถูกใช้โดย DOS เวอร์ชันใหม่กว่า จนกระทั่งข้อมูลใหม่ไม่สามารถบรรจุลงใน 20 ไบต์นี้ได้อีกต่อไป ไบต์ "ออฟเซ็ตลบ" บางส่วนก่อนหน้านี้ถูกบีบจากพื้นที่ที่สงวนไว้ใน CP/M Zero Page และ DOS Program Segment Prefixสำหรับการจัดเก็บคุณลักษณะของไฟล์[ 1 ]

การใช้งาน

ใน CP/M, 86-DOSและPC DOS 1.x/MS-DOS 1.xx นั้น FCB เป็นวิธีเดียวในการเข้าถึงไฟล์ ภายใต้ DOS ฟังก์ชันย่อย INT 21h บางส่วนได้จัดเตรียมอินเทอร์เฟซเพื่อดำเนินการกับไฟล์โดยใช้ FCB [ 1 ] [ 3 ] [ 4 ]เมื่อมีการเตรียมการใน MS-DOS 2 เพื่อรองรับกระบวนการหรือผู้ใช้หลายคน[ 3 ] [ 4 ]การใช้ระบบไฟล์อื่น[ 3 ] [ 4 ]นอกเหนือจาก FAT หรือการแชร์ไฟล์[ 4 ]ผ่านเครือข่ายในอนาคต FCB ถูกมองว่ามีขนาดเล็กเกินไปที่จะจัดการกับข้อมูลเพิ่มเติมที่จำเป็นสำหรับคุณสมบัติดังกล่าว[ 4 ]ดังนั้น FCB จึงถูกมองว่าไม่เพียงพอสำหรับเส้นทางการขยายตัวในอนาคตต่างๆ[ 3 ]นอกจากนี้ยังไม่มีฟิลด์สำหรับระบุไดเร็กทอรีย่อย[ 3 ]การเปิดเผยข้อมูลที่เกี่ยวข้องกับระบบไฟล์ไปยังพื้นที่ผู้ใช้ยังถูกมองว่าเป็นความเสี่ยงด้านความปลอดภัยอีกด้วย[ 4 ] FCB จึงถูกแทนที่ด้วยแฮนเดิลไฟล์ดังที่ใช้ในUNIXและระบบปฏิบัติการที่พัฒนาต่อยอดจาก UNIX [ 3 ]แฮนเดิลไฟล์เป็นเพียงตัวเลขจำนวนเต็มที่เรียงลำดับกันซึ่งเชื่อมโยงกับไฟล์ที่เปิดอยู่โดยเฉพาะ

หากโปรแกรมใช้ API การจัดการไฟล์แบบใหม่เพื่อเปิดไฟล์ ระบบปฏิบัติการจะจัดการโครงสร้างข้อมูลภายในที่เกี่ยวข้องกับไฟล์นั้นในพื้นที่หน่วยความจำของตัวเอง ซึ่งมีข้อดีอย่างมากคือ โครงสร้างเหล่านี้สามารถขยายขนาดได้ในระบบปฏิบัติการเวอร์ชันต่อๆ ไปโดยไม่ทำให้โปรแกรมแอปพลิเคชันเสียหาย ข้อเสียคือ เนื่องจากการจัดการหน่วยความจำ ที่ค่อนข้างเรียบง่าย ของ DOS พื้นที่สำหรับโครงสร้างเหล่านี้จำนวนมากเท่าที่โปรแกรมที่ "ใช้ไฟล์มากที่สุด" น่าจะใช้จะต้องถูกสงวนไว้ในระหว่างการบูต และไม่สามารถนำไปใช้เพื่อวัตถุประสงค์อื่นใดในขณะที่คอมพิวเตอร์กำลังทำงาน การสงวนหน่วยความจำดังกล่าวทำได้โดยใช้ คำสั่ง FILES = ใน ไฟล์ CONFIG.SYSปัญหานี้จะไม่เกิดขึ้นกับ FCB ใน DOS 1 หรือใน CP/M เนื่องจากระบบปฏิบัติการจะจัดเก็บทุกสิ่งที่จำเป็นต้องรู้เกี่ยวกับไฟล์ที่เปิดอยู่ภายใน FCB ดังนั้นจึงไม่จำเป็นต้องใช้หน่วยความจำต่อไฟล์ในพื้นที่หน่วยความจำของระบบปฏิบัติการ เมื่อใช้ FCB ใน MS-DOS 3 หรือเวอร์ชันที่ใหม่กว่า รูปแบบของ FCB จะขึ้นอยู่กับว่า SHARE.EXE ถูกโหลดหรือไม่ และ FCB นั้นอ้างอิงถึงไฟล์ในเครื่องหรือไฟล์ระยะไกล และมักจะอ้างอิงถึงรายการ SFT ด้วยเหตุนี้ จำนวน FCB ที่สามารถเปิดพร้อมกันได้ใน DOS 3 หรือเวอร์ชันที่สูงกว่าจึงมีจำกัดเช่นกัน โดยปกติจะอยู่ที่ 4 รายการ การใช้ คำสั่ง FCBS = ในไฟล์ CONFIG.SYS สามารถเพิ่มจำนวน FCB ให้มากกว่านั้นได้หากจำเป็น ภายใต้DR-DOSทั้ง FILES และ FCBS มาจากพูลโครงสร้างแฮนเดิลภายในเดียวกัน และจะถูกกำหนดแบบไดนามิกตามความจำเป็น[ 5 ]

FCB ได้รับการสนับสนุนใน MS-DOS และWindows ทุกเวอร์ชัน จนกระทั่งมีการนำระบบไฟล์FAT32 มาใช้ Windows 95 , Windows 98และWindows Meไม่รองรับการใช้ FCB บนไดรฟ์ FAT32 เนื่องจากหมายเลขคลัสเตอร์ 32 บิต[ 4 ]ยกเว้นการอ่านป้ายชื่อไดรฟ์ ซึ่งทำให้แอปพลิเคชัน DOS เก่าบางตัว รวมถึงWordStarล้มเหลวใน Windows เวอร์ชันเหล่านี้

อินเทอร์เฟซ FCB ใช้งานไม่ได้อย่างถูกต้องบนWindows NT , 2000ฯลฯ – WordStar ไม่ทำงานอย่างถูกต้องบนระบบปฏิบัติการเหล่านี้ โปรแกรมจำลอง DOS อย่าง DOSEMUและDOSBoxสามารถใช้งานอินเทอร์เฟซ FCB ได้อย่างถูกต้อง ดังนั้นจึงเป็นวิธีหนึ่งในการเรียกใช้โปรแกรม DOS เก่าๆ ที่ต้องการ FCB บนระบบปฏิบัติการสมัยใหม่

พื้นที่ถ่ายโอนข้อมูลดิสก์

โครงสร้างข้อมูลเสริมที่ใช้ร่วมกับ FCB คือDisk Transfer Area (DTA) [ 2 ]นี่คือชื่อที่ใช้เรียกบัฟเฟอร์ซึ่งจะอ่าน/เขียนเนื้อหาไฟล์ (เรคอร์ด) เข้าไป ฟังก์ชันการเข้าถึงไฟล์ใน DOS ที่ใช้ FCB จะถือว่า DTA อยู่ในตำแหน่งคงที่ โดยในตอนแรกจะชี้ไปยังส่วนหนึ่งของ PSP (ดูส่วนถัดไป) ตำแหน่งนี้สามารถเปลี่ยนแปลงได้โดยการเรียกใช้ฟังก์ชัน DOS และการเข้าถึงไฟล์ในครั้งต่อๆ ไปจะใช้ตำแหน่งใหม่โดยปริยาย

เนื่องจากการยกเลิกการใช้งานเมธอด FCB ฟังก์ชันการเข้าถึงไฟล์แบบใหม่ที่ใช้แฮนเดิลไฟล์จึงได้ให้วิธีการระบุบัฟเฟอร์หน่วยความจำสำหรับเนื้อหาไฟล์ในการเรียกใช้ฟังก์ชันแต่ละครั้ง ซึ่งทำให้การรักษาบัฟเฟอร์อิสระที่ทำงานพร้อมกัน (ไม่ว่าจะเป็นสำหรับไฟล์ที่แตกต่างกันหรือไฟล์เดียวกัน) กลายเป็นเรื่องที่ทำได้จริงมากขึ้น

คำนำหน้าส่วนของโปรแกรมและการเริ่มต้นโปรแกรม

ทุกโปรแกรมปฏิบัติการ DOS ที่เริ่มต้นจากเชลล์ ( COMMAND.COM ) จะได้รับโครงสร้างข้อมูลที่เติมไว้ล่วงหน้าความยาว 256 ไบต์ที่เรียกว่าProgram Segment Prefix (PSP) ฟิลด์ที่เกี่ยวข้องภายในโครงสร้างนี้ได้แก่: [ 2 ]

ออฟเซ็ตขนาดไบต์สารบัญ
0x02 2หน่วยความจำที่โปรแกรมสามารถใช้ได้แบ่งเป็นส่วนๆ ละ 16 ไบต์
0x2C 2ที่อยู่ของเซ็กเมนต์ที่ประกอบด้วยตัวแปรสภาพแวดล้อมของโปรแกรม
0x5C 16เตรียม FCB สำหรับอาร์กิวเมนต์บรรทัดคำสั่งแรก (ยังไม่ได้เปิด)
0x6C 20เตรียม FCB สำหรับอาร์กิวเมนต์บรรทัดคำสั่งตัวที่สอง (ยังไม่ได้เปิด)
0x80 1ความยาวของบรรทัดคำสั่ง
0x81 127เนื้อหาบรรทัดคำสั่ง

โครงสร้างข้อมูลนี้สามารถพบได้ที่จุดเริ่มต้นของส่วนข้อมูลซึ่งที่อยู่ได้รับจาก DOS เมื่อเริ่มต้นโปรแกรมในรีจิสเตอร์ส่วน DS และ ES นอกจากการแสดงบรรทัดคำสั่งของโปรแกรมอย่างครบถ้วนที่ที่อยู่ 0x81 แล้ว DOS ยังพยายามสร้าง FCB สองตัวที่สอดคล้องกับคำสองคำแรกในบรรทัดคำสั่ง โดยมีจุดประสงค์เพื่อประหยัดเวลาในการทำงานของโปรแกรมเมอร์ในกรณีทั่วไปที่คำเหล่านั้นเป็นชื่อไฟล์ที่จะต้องดำเนินการ เนื่องจาก FCB เหล่านี้ยังไม่ได้เปิด จึงไม่มีปัญหาใด ๆ เกิดขึ้นแม้ว่าคำในบรรทัดคำสั่งเหล่านั้นจะไม่ได้อ้างอิงถึงไฟล์ก็ตาม

ที่อยู่เริ่มต้นของ DTA ถูกตั้งค่าให้ทับซ้อนกับพื้นที่ใน PSP (ที่อยู่ 0x80) ซึ่งเป็นที่เก็บอาร์กิวเมนต์บรรทัดคำสั่ง ดังนั้นโปรแกรมจึงจำเป็นต้องวิเคราะห์พื้นที่นี้เพื่อหาอาร์กิวเมนต์บรรทัดคำสั่งก่อนที่จะเรียกใช้ฟังก์ชัน DOS ที่ใช้ DTA (เช่น การอ่านระเบียนไฟล์) เว้นแต่ว่าโปรแกรมจะระมัดระวังในการเปลี่ยนที่อยู่ของ DTA ไปยังพื้นที่หน่วยความจำอื่น (หรือไม่ใช้ฟังก์ชัน DTA/FCB เลย ซึ่งต่อมาถูกยกเลิกและแทนที่ด้วยการใช้ตัวจัดการไฟล์)

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • Brown, Ralf D. , บรรณาธิการ (17 กรกฎาคม 2543). "210F: DOS 1+ - เปิดไฟล์โดยใช้ FCB" . รายการขัดจังหวะของ Ralf Brown 61 . ctyme.com. เก็บถาวรจากต้นฉบับเมื่อ 19 มิถุนายน 2559[7]
  • Elliott, John C. (2002-12-29). "CP/M File Control Block" . Seasip.info . เก็บถาวรจากต้นฉบับเมื่อ 2017-08-23 . เรียกดูเมื่อ2017-08-23 .
  • "CP/M Internals" . 2017-08-23. เก็บถาวรจากต้นฉบับเมื่อ 2017-08-23 . เรียกดูเมื่อ2017-08-23 .- คำอธิบายโดยละเอียดเกี่ยวกับ CP/M FCB
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=File_Control_Block&oldid=1260083507 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ บล็อกควบคุมไฟล์

บล็อกควบคุมไฟล์ ( FCB ) คือโครงสร้างระบบไฟล์ที่ใช้เก็บสถานะของไฟล์ ที่เปิด อยู่ FCB นั้นได้รับการจัดการโดยระบบปฏิบัติการ แต่จะอยู่ในหน่วยความจำของโปรแกรมที่ใช้งานไฟล์นั้น...

การใช้งาน

ใน CP/M, 86-DOS และ PC DOS 1.x/MS-DOS 1.xx นั้น FCB เป็นวิธีเดียวในการเข้าถึงไฟล์ ภายใต้ DOS ฟังก์ชันย่อย INT 21h บางส่วนได้จัดเตรียมอินเทอร์เฟซเพื่อดำเนินการกับไฟล์โดยใช้ FCB [ 1 ] [ 3 ] [ 4 ] เมื่อมีการเตรียมการใน MS-DOS 2...

พื้นที่ถ่ายโอนข้อมูลดิสก์

โครงสร้างข้อมูลเสริมที่ใช้ร่วมกับ FCB คือ Disk Transfer Area (DTA) [ 2 ] นี่คือชื่อที่ใช้เรียกบัฟเฟอร์ซึ่งจะอ่าน/เขียนเนื้อหาไฟล์ (เรคอร์ด) เข้าไป ฟังก์ชันการเข้าถึงไฟล์ใน DOS ที่ใช้ FCB จะถือว่า DTA อยู่ในตำแหน่งคงที่ โดยในตอนแรกจะชี้ไปยังส่วนหนึ่งของ PSP...

คำนำหน้าส่วนของโปรแกรมและการเริ่มต้นโปรแกรม

ทุกโปรแกรมปฏิบัติการ DOS ที่เริ่มต้นจากเชลล์ ( COMMAND.COM ) จะได้รับโครงสร้างข้อมูลที่เติมไว้ล่วงหน้าความยาว 256 ไบต์ที่เรียกว่า Program Segment Prefix (PSP) ฟิลด์ที่เกี่ยวข้องภายในโครงสร้างนี้ได้แก่: [ 2 ]