Tongji University CS "ระบบปฏิบัติการ" การออกแบบหลักสูตร: ระบบไฟล์
โครงการนี้ออกแบบมาสำหรับหลักสูตรระบบปฏิบัติการของภาควิชาวิทยาศาสตร์คอมพิวเตอร์และเทคโนโลยีของมหาวิทยาลัย Tongji ในปี 2564 การใช้ระบบไฟล์ที่มีลักษณะคล้าย Unix

การมอบหมายงานใหญ่ที่ง่ายที่สุดในภาคการศึกษานี้ (ส่วนใหญ่ไม่มี GUI) ใช้เวลา 10 วันในการพัฒนาระบบไฟล์
ถ้าคลังสินค้านี้ช่วยคุณให้ดาวฉันได้ไหม?
หากคุณมีคำถามใด ๆ คุณสามารถยกระดับพวกเขาในปัญหาให้คนอื่นอ้างถึงหรือพูดคุยกันด้วยกัน?
ที่เก็บเป็นไปตามโปรโตคอลโอเพนซอร์ส MIT
ตัวแปรนี้ส่วนใหญ่จะใช้เพื่อบันทึกความยาวไฟล์ที่อ่านในปัจจุบัน การมีอยู่ของตัวแปรนี้จะช่วยลดความยากลำบากในการจัดทำดัชนีไฟล์ผสม ฟังก์ชั่นไม่จำเป็นต้องคำนวณจำนวนดัชนีบล็อกที่ใช้ไฟล์และไม่จำเป็นต้องรู้ว่าโครงสร้างดัชนีผสมของไฟล์คืออะไร พวกเขาถือว่าไฟล์ดัชนีโดยตรงเป็นไฟล์ยักษ์ที่มีบล็อกดัชนีทั้งหมดถึงขนาดสูงสุด เริ่มการสำรวจไฟล์จากดัชนีโดยตรงจากนั้นไปยังดัชนีระดับแรกจากนั้นไปยังดัชนีระดับที่สอง เมื่อความยาวถึงขนาดไฟล์คุณสามารถออกจากการสำรวจไฟล์ได้ทุกขนาด อย่างไรก็ตามข้อเสียของวิธีนี้คือทุกครั้งที่คุณอ่านไฟล์มันเริ่มต้นจากส่วนหัวไฟล์ซึ่งจะช่วยลดประสิทธิภาพของการอ่านและการเขียนแบบสุ่ม
ตัวแปรนี้ส่วนใหญ่จะใช้เพื่อระบุว่าบรรทัดใดที่ตัวแก้ไขเริ่มแสดงข้อความ ตัวแปรนี้เริ่มมีผลเมื่อจำนวนบรรทัดไฟล์เกินความสูงของคอนโซล จำนวนบรรทัดที่แมปกับข้อความจริงของเคอร์เซอร์คอนโซลจะต้องเพิ่มลงในตัวแปร start_line เมื่อเคอร์เซอร์ย้ายไปที่บรรทัดล่างให้กดปุ่มลูกศรอีกครั้ง start_line จะเพิ่มหน้าลงของข้อความในตัวแก้ไขและในทางกลับกัน
ตัวแปรนี้เป็นของคลาสอินเทอร์เฟซผู้ใช้บรรทัดคำสั่งและส่วนใหญ่จะบันทึกเส้นทางของผู้ใช้ในระบบไฟล์ เนื่องจากในระบบไฟล์อินเทอร์เฟซการดำเนินการทั้งหมดจะขึ้นอยู่กับเส้นทางสัมบูรณ์และคำสั่งที่ป้อนโดยผู้ใช้ในอินเตอร์เฟสบรรทัดคำสั่งจะขึ้นอยู่กับเส้นทางที่สัมพันธ์กัน cur_dir ดังนั้นเมื่ออินเทอร์เฟซผู้ใช้ใช้อินเทอร์เฟซระบบไฟล์ cur_dir ควรเชื่อมต่อกับอินพุตพา ธ โดยผู้ใช้และเส้นทางสัมบูรณ์ควรส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันอินเตอร์เฟสของระบบที่เงียบ


ระบบไฟล์นี้ทำงานด้วยระบบปฏิบัติการ Windows 64 บิต ขนาดปริมาณไฟล์จำลองของระบบไฟล์คือ 128MB โปรดตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างเพียงพอในไดเรกทอรีโปรแกรม
ห้ามปิดโปรแกรมโดยตรงเมื่อออกจากโปรแกรม คุณต้องใช้คำสั่ง EXIT เพื่อออกจากระบบไฟล์มิฉะนั้นอาจทำให้เกิดข้อผิดพลาดของระบบไฟล์หรือขัดข้อง
แก้ไขไฟล์ /etc/users.txt และ /etc/groups.txt อย่างระมัดระวัง ไฟล์ทั้งสองนี้เกี่ยวข้องกับการจัดการผู้ใช้ หากรูปแบบไม่ได้รับการแก้ไขอย่างถูกต้องอาจทำให้ระบบไฟล์ไม่สามารถเข้าสู่ระบบหรือปัญหาการอนุญาตอื่น ๆ
หากปัญหาสองประการข้างต้นเกิดขึ้นโปรดลองจัดรูปแบบระบบไฟล์
คำสั่งพร้อมใช้งานเมื่อไม่เข้าสู่ระบบ:
| คำสั่ง | พารามิเตอร์ | การทำงาน |
|---|---|---|
| เข้าสู่ระบบ | ชื่อผู้ใช้ (สตริง) | เข้าสู่ระบบผู้ใช้ |
| การออก | ออกจากระบบ | |
| รูปแบบ | รูปแบบระบบไฟล์ | |
| ช่วย | แสดงรายการพรอมต์คำสั่ง |
คำสั่งที่มีอยู่ในสถานะเข้าสู่ระบบ:
| คำสั่ง | พารามิเตอร์ | การทำงาน |
|---|---|---|
| ออกจากระบบ | ออกจากระบบของผู้ใช้ | |
| การออก | ออกจากระบบ | |
| mkdir | ชื่อไดเรกทอรี (สตริงความยาวน้อยกว่า 28 ไบต์ไม่สามารถเป็นไดเรกทอรีหลายระดับ) | สร้างไดเรกทอรีย่อย |
| ซีดี | ชื่อไดเรกทอรี (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไดเรกทอรีย่อยในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) | ไปที่ไดเรกทอรีย่อย |
| LS | แสดงรายชื่อไดเรกทอรีปัจจุบัน | |
| Rmdir | ชื่อไดเรกทอรี (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไดเรกทอรีย่อยในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) | ลบไดเรกทอรีย่อย |
| สัมผัส | ชื่อไฟล์ (สตริงความยาวน้อยกว่า 28 ไบต์ไม่สามารถเป็นไดเรกทอรีหลายระดับ) | สร้างไฟล์ใหม่ |
| chmod | ชื่อไฟล์ (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไฟล์ในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) ได้) (หมายเลขแปดหลักสามหลัก) | แก้ไขสิทธิ์ไฟล์หรือไดเรกทอรี |
| RM | ชื่อไฟล์ (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไฟล์ในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) | ลบไฟล์ |
| userAdd | ชื่อผู้ใช้ (สตริง) ชื่อกลุ่มผู้ใช้ (สตริงกลุ่มผู้ใช้จะต้องมีอยู่แล้ว) | เพิ่มผู้ใช้ |
| ผู้ใช้ | ชื่อผู้ใช้ (สตริงผู้ใช้จะต้องมีอยู่แล้ว) | ลบผู้ใช้ |
| กลุ่ม | ชื่อกลุ่มผู้ใช้ (สตริง) | เพิ่มกลุ่มผู้ใช้ |
| กลุ่ม | ชื่อกลุ่มผู้ใช้ (สตริงกลุ่มผู้ใช้จะต้องมีอยู่แล้ว) | ลบกลุ่มผู้ใช้ |
| DF | ตรวจสอบการใช้ดิสก์ | |
| แสดง | ชื่อไฟล์ (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไฟล์ในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) | พิมพ์เนื้อหาไฟล์ หากไฟล์ไม่ใช่ไฟล์อักขระอาจทำให้เกิดข้อผิดพลาด |
| VI | ชื่อไฟล์ (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไฟล์ในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) | เปิดไฟล์ด้วยตัวแก้ไข |
| รูปแบบ | รูปแบบระบบไฟล์ | |
| Win2FS | พา ธ ไฟล์ภายใต้ Windows (สตริงสอดคล้องกับข้อมูลจำเพาะของพา ธ ไฟล์ Windows) ชื่อไฟล์ภายใต้ไดเรกทอรีปัจจุบันของระบบไฟล์ FS (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไฟล์ภายใต้ไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) | คัดลอกเนื้อหาไฟล์ Windows ไปยังไฟล์ระบบไฟล์ FS |
| fs2win | ชื่อไฟล์ในไดเรกทอรีปัจจุบันของระบบไฟล์ FS (สตริงความยาวน้อยกว่า 28 ไบต์ชื่อไฟล์ในไดเรกทอรีปัจจุบันไม่สามารถเป็นไดเรกทอรีหลายระดับ) พา ธ ไฟล์ใน Windows (สตริงสอดคล้องกับข้อกำหนดเส้นทางไฟล์ Windows ไฟล์) | คัดลอกเนื้อหาของระบบไฟล์ FS ไปยังไฟล์ Windows |
| CLS | ล้างหน้าจอ | |
| ช่วย | แสดงรายการพรอมต์คำสั่ง |
คำแนะนำบรรณาธิการ:
หลังจากเข้าสู่ตัวแก้ไขคุณสามารถย้ายเคอร์เซอร์ผ่านปุ่มลูกศร เมื่อเคอร์เซอร์อยู่ที่ขอบเขตบนและล่างคุณสามารถย้ายเคอร์เซอร์ไปยังขอบเขตอีกครั้งเพื่อให้การหมุนหน้าข้อความของข้อความเสร็จสิ้นให้ป้อนปุ่ม ENTER เพื่อลบอักขระก่อนเคอร์เซอร์ให้ป้อนอักขระอื่น ๆ เพื่อแทรกอักขระที่เคอร์เซอร์กดปุ่ม ESC เพื่อออกและบันทึกข้อความ "□" ในตัวแก้ไขระบุคีย์ ENTER และ "#" หมายถึงจุดสิ้นสุดของไฟล์ โปรดทราบว่าตัวแก้ไขสามารถจัดการกับอักขระ ASCII เท่านั้น
โปรแกรมอาจทำให้เกิดข้อยกเว้นต่าง ๆ เนื่องจากอินพุตคำสั่งที่ไม่เหมาะสมพื้นที่ระบบไฟล์เต็มรูปแบบการอนุญาตที่ผิดกฎหมาย ฯลฯ เมื่อมีข้อยกเว้นเกิดขึ้นโปรแกรมจะส่งออกข้อมูลข้อยกเว้นไปยังคอนโซล โปรดแก้ไขข้อยกเว้นตามข้อมูลผลลัพธ์ หากข้อยกเว้นไม่เคยได้รับการแก้ไขลองจัดรูปแบบระบบไฟล์
คำจำกัดความของมาโครของพารามิเตอร์ที่ปรับได้นั้นอยู่ในไฟล์ filesystem.h
| พารามิเตอร์ | อธิบาย |
|---|---|
| รุ่น | เวอร์ชันระบบไฟล์ |
| disk_name | จำลองชื่อไฟล์ปริมาณไฟล์ |
| ดิสก์ _size | ขนาดดิสก์ระดับเสียงไฟล์อย่างน้อยมากกว่า 1024*512 ไบต์ ขอแนะนำให้ตั้งค่าเป็น (261120+1024) *512 ไบต์นั่นคือ 128MB |
| ชื่อไฟล์ | อธิบาย |
|---|---|
| FileSystem.h | ไฟล์ส่วนหัวของระบบไฟล์ |
| filesystem.cpp | ไฟล์ระบบไฟล์ C ++ |
| main.cpp | ไฟล์หลัก C ++ ไฟล์ (อินเทอร์เฟซผู้ใช้บรรทัดคำสั่ง) |
| test.cpp | ไฟล์ทดสอบอินเทอร์เฟซไฟล์ของไฟล์ไฟล์ไม่ได้รวบรวมไว้ในโปรแกรมปฏิบัติการสุดท้าย |
| fs.data | จำลองปริมาณไฟล์ดิสก์ |
| File System.exe | โปรแกรมที่ใช้งานได้ (อินเทอร์เฟซผู้ใช้บรรทัดคำสั่ง) |







