สำหรับการทำงานกับอุปกรณ์เก็บข้อมูลเราต้องการระบบไฟล์แล้วพื้นที่สว็อปล่ะ?
หากไม่มีระบบไฟล์ระบบปฏิบัติการจะทำงานอย่างไร ข้อมูลถูกเขียนไปยังดิสก์อย่างไรและเข้าถึงได้อย่างไรอีกครั้ง
สำหรับการทำงานกับอุปกรณ์เก็บข้อมูลเราต้องการระบบไฟล์แล้วพื้นที่สว็อปล่ะ?
หากไม่มีระบบไฟล์ระบบปฏิบัติการจะทำงานอย่างไร ข้อมูลถูกเขียนไปยังดิสก์อย่างไรและเข้าถึงได้อย่างไรอีกครั้ง
คำตอบ:
การสลับทางเทคนิคไม่มีระบบไฟล์เฉพาะ วัตถุประสงค์ทั้งหมดของระบบไฟล์คือการจัดโครงสร้างข้อมูลในลักษณะที่แน่นอน โดยเฉพาะอย่างยิ่งการสลับพาร์ติชันไม่มีโครงสร้าง แต่มีส่วนหัวเฉพาะซึ่งสร้างขึ้นโดยmkswap
โปรแกรม โดยเฉพาะอย่างยิ่งสิ่งนี้ (นำมาจากkernel.org ):
25 union swap_header {
26 struct
27 {
28 char reserved[PAGE_SIZE - 10];
29 char magic[10];
30 } magic;
31 struct
32 {
33 char bootbits[1024];
34 unsigned int version;
35 unsigned int last_page;
36 unsigned int nr_badpages;
37 unsigned int padding[125];
38 unsigned int badpages[1];
39 } info;
40 };
แต่ละพาร์ติชันมีรหัสเฉพาะที่เกี่ยวข้องและตามTLDP :
รหัสสำหรับ ext2 คือ 0x83 และการแลกเปลี่ยน linux คือ 0x82
เมื่อมีการแลกเปลี่ยนไฟล์นั่นเป็นเรื่องที่แตกต่างออกไปเล็กน้อย เคอร์เนลต้องเคารพความจริงที่ว่าระบบไฟล์อาจมีวิธีการจัดโครงสร้างข้อมูลของตนเอง จากลิงค์ kernel.org เดียวกัน:
โปรดจำไว้ว่าระบบไฟล์อาจมีวิธีการจัดเก็บไฟล์และดิสก์ของตัวเองและมันก็ไม่ง่ายเหมือนพาร์ติชั่นสว็อปซึ่งข้อมูลอาจถูกเขียนลงดิสก์โดยตรง หากหน่วยเก็บข้อมูลสำรองเป็นพาร์ติชันดังนั้นบล็อกขนาดหน้าเดียวต้องใช้ IO และเนื่องจากไม่มีระบบไฟล์ที่เกี่ยวข้อง bmap () จึงไม่จำเป็น
โดยสรุปแล้วในทางเทคนิคคุณสามารถเรียกพื้นที่สว็อปของระบบไฟล์ที่เป็นประเภทของตัวเองได้ แต่มันก็ไม่สามารถเทียบเคียงได้กับระบบไฟล์เช่น NTFS หรือ ext4
คุณได้ถามด้วย
ฉันต้องการทราบว่าเป็นไปได้อย่างไรที่จะเขียนลงในพื้นที่จัดเก็บโดยไม่มีระบบไฟล์
พูดอย่างเคร่งครัดไม่จำเป็นต้องจัดโครงสร้างแรม อย่างไรก็ตามส่วนของ RAM สามารถจัดโครงสร้างเป็นtmpfsภายใต้ระบบปฏิบัติการ Unix-like นอกจากนี้ยังมีramfsและ initramfs ซึ่งเป็นสิ่งที่ได้รับการโหลดในระหว่างกระบวนการบูต แต่ในทางเทคนิคแล้วข้อมูล RAM นั้นควรจะเป็นข้อมูลดิบ 1 และ 0 ดังนั้นจึงไม่จำเป็นต้องจัดโครงสร้างข้อมูลเหล่านั้น
เคอร์เนลใช้พื้นที่สวอปเพื่อเก็บเพจของหน่วยความจำระบบ (RAM) ชั่วคราวเมื่อมันเต็ม เคอร์เนลใช้เป็นตารางภายในของตัวเองในการ "จดจำ" ตำแหน่งที่อยู่ในแผ่นสลับที่วางหน้าเว็บไว้ เป็นผลให้แผ่นแลกเปลี่ยนไม่มีระบบไฟล์ที่เหมาะสมและมักจะเป็นเพียงพาร์ทิชันที่ว่างเปล่าบนดิสก์
สิ่งที่คุณอาจสนใจคือ RAM-disk ซึ่งเป็นระบบไฟล์ขนาดเล็กที่เก็บไว้ในหน่วยความจำของระบบ หากจำเป็นต้องใช้หน่วยความจำเพิ่มเติมเคอร์เนลจะดัน (และเนื้อหาอื่น ๆ ) ออกไปที่พื้นที่สว็อป ดูที่นี่สำหรับคำแนะนำในการตั้งค่าหนึ่งขึ้น
พื้นที่สว็อปถูกแบ่งออกเป็นบล็อกขนาดเดียวกับหน้าหน่วยความจำ (ปกติคือ 4kB) และการบันทึกการแมปของหน้าเหล่านี้ไปยังหน่วยความจำของแอปพลิเคชันจะเป็นการขยายระบบย่อยหน่วยความจำเสมือนใน CPU และ OS
นั่นคือมีระบบการแมประหว่างพื้นที่หน่วยความจำของแอปพลิเคชันและที่อยู่หน่วยความจำกายภาพจริง แอปพลิเคชันจะได้รับพื้นที่ที่อยู่หน่วยความจำขนาดใหญ่ซึ่งสามารถใช้มากหรือน้อยได้ เนื่องจากมีการใช้พื้นที่แอดเดรสหน่วยความจำนี้มากขึ้นหน่วยความจำกายภาพจะถูกแมปกับแอปพลิเคชันนั้นเพื่อทำหน้าที่เป็นสื่อบันทึกข้อมูล
เมื่อหน่วยความจำถูกสลับไปยังดิสก์ระบบที่เกี่ยวข้องจะทำการแมปพื้นที่หน่วยความจำของแอปพลิเคชันนั้นไปยังบล็อกบนดิสก์
ตารางการแมปเองไม่ได้จัดเก็บไว้ในดิสก์และข้อมูลที่เหลืออยู่ในดิสก์จะไม่มีประโยชน์หลังจากรีบูต