ฉันไม่มีความรู้เกี่ยวกับการทำงานภายในของระบบปฏิบัติการดังนั้นทำไมเราถึงมีข้อ จำกัด เกี่ยวกับจำนวนไฟล์ที่เปิดสูงสุดและกระบวนการทำงานใน Linux
ฉันจะขอบคุณถ้าใครสามารถช่วยฉันเข้าใจ
ฉันไม่มีความรู้เกี่ยวกับการทำงานภายในของระบบปฏิบัติการดังนั้นทำไมเราถึงมีข้อ จำกัด เกี่ยวกับจำนวนไฟล์ที่เปิดสูงสุดและกระบวนการทำงานใน Linux
ฉันจะขอบคุณถ้าใครสามารถช่วยฉันเข้าใจ
คำตอบ:
นี่คือเหตุผลหลักในประวัติศาสตร์ บนเมนเฟรม Linux เก่าผู้ใช้หลายคนจะเชื่อมต่อและใช้ทรัพยากรของเมนเฟรม แน่นอนว่าจำเป็นต้อง จำกัด และเนื่องจากการดำเนินการเช่นตัวจัดการไฟล์และกระบวนการถูกสร้างขึ้นในเคอร์เนลจึงมีข้อ จำกัด นอกจากนี้ยังช่วยโจมตีขีด จำกัด เช่นระเบิดส้อม ป้องกันกับระเบิดแบบฟอร์มการใช้ขีด จำกัด ของกระบวนการจะแสดงที่นี่
นอกจากนี้ยังช่วยรักษาบริการที่ซับซ้อนและ daemons ด้วยการตรวจสอบโดยไม่อนุญาตให้ฟอร์กฟอร์กและการเปิดไฟล์คล้ายกับที่ fork bomb พยายามทำ
สิ่งที่ต้องสังเกตก็คือปริมาณของ RAM และ CPU ที่มีอยู่และความจริงที่ว่าตัวนับ 32 บิตสามารถอ้างอิงได้มากเท่านั้น (รายการ 4294967296 เท่านั้นที่สามารถนับได้โดยตัวนับ 32 บิต) แต่ข้อ จำกัด นั้นอยู่ไกล เหนือสิ่งที่กำหนดโดยโปรแกรมเมอร์และผู้ดูแลระบบ อย่างไรก็ตามก่อนที่คุณจะมีกระบวนการ 4294967296 กระบวนการเครื่องของคุณอาจถูกรีบูตทั้งตามที่วางแผนไว้หรือตามที่มันเริ่มล็อคเนื่องจากทรัพยากรอื่นกำลังหิวโหย
นอกจากว่าคุณจะเรียกใช้Titanด้วยหน่วยความจำ 584 TiB (คุณจะไม่ทำเช่นนั้นเนื่องจาก Linux ไม่สามารถรันเป็นอินสแตนซ์เดียวบนซูเปอร์คอมพิวเตอร์) คุณอาจจะไม่ถึงขีด จำกัด กระบวนการนี้ในไม่ช้า แม้ว่ากระบวนการเฉลี่ยจะมีหน่วยความจำประมาณ 146KB เท่านั้นโดยไม่มีหน่วยความจำที่แชร์
มีข้อ จำกัด สำหรับทุกสิ่งส่วนใหญ่ทั้งในชีวิตและใน Linux บางครั้งข้อ จำกัด นั้นสูงมากและไม่คุ้มค่าที่จะกังวลและบางครั้งมันก็ต่ำเกินไปตั้งค่าโดยไม่ตั้งใจของโปรแกรมเมอร์ที่ขี้เกียจหรือตั้งไว้ตามข้อ จำกัด ของฮาร์ดแวร์
ข้อ จำกัด โดยพลการเกิดขึ้นเมื่อโปรแกรมเมอร์ตัดสินใจเช่นจำนวนอักขระสูงสุดที่อนุญาตในฟิลด์เช่นที่อยู่ การตั้งค่าขีด จำกัด เองง่ายกว่าการจัดสรรหน่วยความจำแบบไดนามิกตามที่จำเป็นได้ง่ายกว่ามาก คุณไม่ต้องการจัดสรรหน่วยความจำทั้งหมดที่มีให้กับฟิลด์อินพุตแบบง่าย แต่คุณไม่ต้องการอนุญาตให้อินพุตเขียนทับหน่วยความจำอื่นที่อาจมีความสำคัญเช่นกัน สำหรับไฟล์และกระบวนการที่เปิดอยู่อาจมีข้อ จำกัด ตามอำเภอใจหรืออาจถูก จำกัด โดยหน่วยความจำที่มีอยู่ ถ้าสิ่งหลังสิ่งเลวร้ายจะเริ่มเกิดขึ้นเมื่อคุณเข้าใกล้ขีด จำกัด และระบบอาจหยุดทำงานดังนั้นจึงเป็นเรื่องดีที่จะมีการ จำกัด การเล่นก่อนที่จะเกิดขึ้น บางครั้งข้อ จำกัด โดยพลการอาจกำหนดเมื่อเริ่มต้นขึ้นอยู่กับหน่วยความจำหรือพื้นที่ดิสก์และมักจะฉลาดพอสมควร
จากนั้นจะมีข้อ จำกัด ที่กำหนดโดยฮาร์ดแวร์เช่นขนาดของจำนวนเต็มหรือตัวอักษร หากคุณมีระบบ 32 บิตจะมีการ จำกัด ตามขนาดสูงสุดของจำนวนเต็ม (4,294,967,295 ถ้าไม่ได้ลงนามหรือครึ่งหนึ่งหากลงชื่อ)
สำหรับกระบวนการ / proc / sys / kernel / pid_max เป็น pid สูงสุดที่อนุญาตดังนั้นนี่คือขีด จำกัด สูงสุดของจำนวนกระบวนการที่สามารถทำงานได้ทันที อย่างไรก็ตามข้อ จำกัด ของหน่วยความจำมักเข้ามาเล่นได้ดีก่อนหน้านั้น
สำหรับขีด จำกัด สูงสุดของไฟล์ที่เปิดอยู่ในเครื่องทั้งหมด / proc / sys / fs / file-max เป็นขีด จำกัด ฮาร์ด นี้ขึ้นอยู่กับปริมาณของหน่วยความจำในเครื่องดังนั้นมันจะแตกต่างกันไป เคอร์เนลตั้งค่าเป็น:
n = (mempages * (PAGE_SIZE / 1024)) / 10;
files_stat.max_files = max_t(unsigned long, n, NR_FILE);
ซึ่งใช้งานได้ประมาณ 100 ต่อแรม 1 MB
ข้อ จำกัด ต่อกระบวนการนั้นแตกต่างกัน ulimit จะกำหนดสิ่งเหล่านี้
เรามีข้อ จำกัด เพราะคอมพิวเตอร์มีข้อ จำกัด ฉันมี 4GB of RAM ดังนั้นฉันจึงไม่สามารถรัน 15 เกมตอนนี้ได้ไหม
ฉันมักจะสามารถเรียกใช้ด้วยความล่าช้าบางอย่าง แต่มันจะไม่เป็นมนุษย์มันเป็นข้อ จำกัด ในพีซีของคุณและลินุกซ์ของ Kernal คุณจะต้องมีขนาดเล็กและใหญ่มากของแรมเพื่อให้สามารถเก็บโปรแกรมใด ๆ .
เช่นแล็ปท็อปของฉันเมื่อฉันใช้ Windows 7 ฉันสามารถเล่น Battlefield ได้ แต่ใช้ RAM ถึง 80% ดังนั้นถ้าฉันพยายามเล่น "Need For Speed" ซึ่งใช้เวลา 60% ตามปกติฉันสามารถเปิดได้ทั้งสองอย่าง แต่ระบบทั้งหมดของฉันคือ ช้าลงเนื่องจากฉันใช้งานโปรแกรมหนัก 2 รายการพวกเขากำลังต่อสู้เพื่อ RAM (Random Access Memory)
กล่าวโดยทั่วไปคอมพิวเตอร์ทั่วไปไม่สามารถเรียกใช้โปรแกรมได้มากมายในเวลาเดียวกัน Music, Notepad, เบราว์เซอร์, อีเมล, เกมคุณคิดว่ามันมีจำนวนมากบนคอมพิวเตอร์ แต่นั่นเป็นเพียงเกมอย่าง World of Warcraft ใช้ RAM มากกว่าและ ทำให้คอมพิวเตอร์ของคุณต้องดิ้นรน (เว้นแต่ว่าคุณมี RAM 8-16 GB เหมือนแล็ปท็อปราคาแพง)