ไฟล์คืออะไร?


9

ฉันกำลังมองหาความหมายอย่างเป็นทางการของไฟล์ที่ไม่เพียงรวมที่เก็บข้อมูล แต่ยังรวมถึง abstractions เช่น procfs หรือ / dev / null (หรือไฟล์อิงฟิวส์) ที่ไม่เกี่ยวข้องกับการจัดเก็บ

จนถึงตอนนี้ฉันรู้ว่าไฟล์ทั้งหมดเป็นนามธรรมที่

  • สามารถระบุได้
  • สามารถมีชื่อ (มักจัดระเบียบในโครงสร้างแบบลำดับชั้น)
  • สามารถเข้าถึงได้เป็นสตรีมไบต์
  • มักจะให้สิทธิ์และข้อมูลเมตาอื่น ๆ (เฉพาะระบบ)

แต่ฉันไม่สามารถหาคำจำกัดความที่เป็นทางการที่มีประโยชน์ในหนังสือ OS ที่ฉันอ่านมา


คุณดู inodes หรือไม่?
Bhaskar

1
ฉันยืนยันว่าสิ่งต่าง ๆ เช่น / dev / null ไม่ใช่ไฟล์เลย แต่เป็นวิธีที่ทำให้เราสามารถเข้าถึงสิ่งที่ไม่ใช่ไฟล์ราวกับว่ามันเป็นไฟล์ นอกจากนี้ยังไม่ชัดเจนสำหรับฉันว่าคุณหมายถึง "เป็นทางการ" ภายในแบบใด
David Richerby

"ไฟล์เป็นสิ่งที่สามารถเปิดได้ด้วย fopen"
adrianN

@DavidRicherby ซอฟต์แวร์ใด ๆ ที่เป็นนามธรรมที่ทำงานเหมือนกับไฟล์เป็นไฟล์: เราสามารถกำหนดเอนทิตีของซอฟต์แวร์ในแง่ของพฤติกรรมของพวกเขา สำหรับพิธีการฉันกำลังมองหาบางสิ่งที่เข้มงวดจากมุมมองของ CS เรามีคำจำกัดความที่เป็นทางการสำหรับเครื่องจักรทัวริงเช่น
Giacomo Tesio

ระบบปฏิบัติการที่แตกต่างกันคุณลักษณะการดำเนินงานที่แตกต่างกันไปที่ไฟล์ดูเช่น * nix vs Windows หนึ่งสามารถลองหาพื้นทั่วไป แต่จะไม่แม่นยำ เพิ่มเติมใน CS หนึ่งไม่ค่อยพูดถึงไฟล์ - ฉันคิดว่ามันจะทำเฉพาะเมื่อออกแบบระบบปฏิบัติการระบบไฟล์บางที DBMS หรือในอัลกอริทึมบนดิสก์บางอย่าง (เช่น sort-merge) (และอีกสองสามคน)
ไค

คำตอบ:


6

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

จากมุมมอง * ระวังทุกอย่างคือไฟล์: ซ็อกเก็ตอุปกรณ์เทอร์มินัลหน้าจอ / จอภาพไฟล์ข้อมูลท่อและอื่น ๆ ในทางตรงกันข้าม Microsoft Windows มีแนวโน้มที่จะเรียก "ไฟล์" ข้อมูลการจัดเก็บข้อมูลถาวรและทรัพยากรที่มีความผันผวนไม่ว่าจะเป็นอะไรเช่นชื่อไปป์ซ็อกเก็ตอุปกรณ์แรสเตอร์ ฯลฯ ระบบอื่น ๆ อาจมีคำจำกัดความคล้ายกัน

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

ไฟล์ Punch Card]( Wikipedia )


ฉันอ่านคำนิยามของวิกิพีเดียแล้ว แต่มันเน้นไปที่การจัดเก็บมากเกินไป ตามที่ระบุไว้ฉันกำลังค้นหาคำจำกัดความที่ครอบคลุมไฟล์เช่น / dev / null ที่ไม่เก็บข้อมูล
Giacomo Tesio

@GiacomoTesio จุดสองจุดที่ฉันพยายามทำคือ (a) ไฟล์หมายถึงสิ่งต่าง ๆ สำหรับผู้แต่งที่แตกต่างกันถึงแม้ว่า (b) ไฟล์อย่างน้อยก็ถูกกำหนดให้เป็นทรัพยากร NUL และ / dev / null เป็นทรัพยากรพิเศษเพราะพวกเขาไม่ได้เก็บอะไรจริงๆ แต่เป็นทรัพยากรอย่างไรก็ตาม ทรัพยากรเป็นเพียงสิ่งที่สามารถรับส่งข้อมูล (หรือทั้งสองอย่าง) คำจำกัดความของหนังสือ OS ทั่วไปของไฟล์จะขึ้นอยู่กับมุมมองของผู้แต่ง
phyrfox

2

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

โปสเตอร์ก่อนหน้านั้นถูกต้องแล้วที่อุปกรณ์ต่างๆในขณะที่ถูกใช้เป็นไฟล์ไม่ใช่ไฟล์จริงๆ นี่เป็นแฮ็คที่มีประโยชน์มาก

ดังนั้นคำจำกัดความของไฟล์: ลำดับของไบต์ที่เก็บไว้ในหน่วยความจำ


2
"ดังนั้นคำจำกัดความของไฟล์: ลำดับของไบต์" คือลำดับของ (สมมติว่าเป็น UTF-8) มันเป็นไฟล์หรือไม่?
reinierpost

เรากำลังพูดถึง abstractions ซอฟต์แวร์สิ่งที่ทำงานเหมือนไฟล์เป็นไฟล์ ที่จริงแล้วเราไม่สามารถกำหนดเอนทิตีซอฟต์แวร์ใด ๆ ยกเว้นจากพฤติกรรมของมัน
Giacomo Tesio

"ฉันคิดว่าไฟล์เป็นลำดับของไบต์" นั่นไม่ใช่คำจำกัดความเดียวของ "ระบบไฟล์" ดูตัวอย่างen.wikipedia.org/wiki/Record-oriented_filesystem
นามแฝง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.