คำถามติดแท็ก architecture

คำถามทั่วไปเกี่ยวกับสถาปัตยกรรมระบบปฏิบัติการ (UNIX)

4
วิธีทำความเข้าใจท่อ
เมื่อฉันใช้ไปป์ในการทุบตีฉันไม่ได้คิดถึงเรื่องนี้มากขึ้น แต่เมื่อฉันอ่านตัวอย่างรหัส C โดยใช้ system call pipe () ร่วมกับ fork () ฉันสงสัยว่าจะเข้าใจไพพ์ได้อย่างไรรวมถึงไพพ์นิรนามและไพพ์ที่มีชื่อ มักจะได้ยินว่า "ทุกอย่างใน Linux / Unix เป็นไฟล์" ฉันสงสัยว่าไพพ์เป็นไฟล์จริงหรือไม่เพื่อให้ส่วนหนึ่งเชื่อมต่อการเขียนไปยังไฟล์ไพพ์และอีกส่วนหนึ่งอ่านจากไฟล์ไพพ์หรือไม่ ถ้าใช่ไฟล์ไพพ์ของไพพ์นิรนามจะถูกสร้างขึ้นที่ไหน? ใน / tmp, / dev หรือ ... ? อย่างไรก็ตามจากตัวอย่างของ pipes ที่มีชื่อฉันยังได้เรียนรู้ว่าการใช้ไพพ์มีข้อได้เปรียบด้านพื้นที่และเวลามากกว่าการใช้ไฟล์ชั่วคราวอย่างชัดเจนอาจเป็นเพราะไม่มีไฟล์ที่เกี่ยวข้องในการใช้ไพพ์ ท่อดูเหมือนจะไม่เก็บข้อมูลเช่นเดียวกับไฟล์ ดังนั้นฉันจึงสงสัยว่าไพพ์เป็นไฟล์จริงๆ

2
คำสั่งระบบเช่น ls ถูกสร้างขึ้นได้อย่างไร?
ฉันมีข้อสงสัยเกี่ยวกับ * ระวัง ฉันไม่ทราบว่าไฟล์เรียกทำงานประเภทใดlsไม่ว่าจะเป็น. sh หรือ. ksh หรือระบบปฏิบัติการประเภทอื่น ๆ หากเป็นเช่นนั้นมันคืออะไร เมื่อฉันพยายามที่จะดูว่าซอร์สโค้ดของlsคำสั่งมีลักษณะอย่างไรจะแสดงสิ่งที่อ่านไม่ได้วิธีใดที่ * nix ใช้ในการสร้างไฟล์ที่อ่านไม่ได้ประเภทเหล่านี้และฉันสามารถทำให้ไฟล์ของฉันคล้ายกับไฟล์เหล่านี้ (เช่นls- ไม่สามารถอ่านได้)

4
มีการนำไดเรกทอรีไปใช้ในระบบไฟล์ Unix อย่างไร?
คำถามของฉันคือการใช้งานไดเรกทอรีอย่างไร? ฉันสามารถเชื่อว่าโครงสร้างข้อมูลเช่นตัวแปรเช่นตารางอาร์เรย์หรือคล้ายกัน เนื่องจาก UNIX เป็นโอเพ่นซอร์สฉันสามารถค้นหาในซอร์สได้ว่าโปรแกรมทำอะไรเมื่อสร้างไดเรกตอรีใหม่ คุณสามารถบอกฉันได้ว่าจะดูหรือทำอย่างละเอียดในหัวข้อ? นั่นเป็นไดเรกทอรี "คือ" ไฟล์ที่ฉันเข้าใจและเป็นไดเรกทอรีจริงๆหรือไม่ ฉันไม่แน่ใจว่ามันเป็นความจริงที่ว่าไฟล์ถูกเก็บไว้ "ใน" ไฟล์ในขณะที่ยังอยู่ในวิธีที่คุณสามารถพูดคำว่าไฟล์เกี่ยวกับเกือบทุกอย่างและฉันไม่แน่ใจว่าสิ่งที่ไม่เป็นไฟล์อย่างแน่นอนเพราะคุณสามารถเรียกได้ว่า ไฟล์. ตัวอย่างเช่นลิงค์ไม่ใช่ไฟล์และลิงค์ก็เหมือนไดเรกทอรี แต่นี่เป็นการละเมิดว่าไดเรกทอรีเป็นไฟล์หรือไม่?

4
อะไรคือแอปพลิเคชันระบบไฟล์รูทขั้นต่ำที่ต้องใช้ในการบูทลินุกซ์เต็ม?
เป็นคำถามเกี่ยวกับแอปพลิเคชันพื้นที่ผู้ใช้ แต่ได้ยินฉัน! สาม "แอปพลิเคชัน" ดังนั้นต้องพูดเพื่อบูตการแจกจ่ายการทำงานของ Linux: Bootloader - สำหรับการฝังตัวโดยทั่วไปคือ U-Boot แม้ว่าจะไม่ใช่ข้อกำหนดที่ยาก เคอร์เนล - มันค่อนข้างตรงไปตรงมา ระบบไฟล์รูท - ไม่สามารถบูตเชลล์ได้ มีระบบไฟล์ที่เคอร์เนลบูทไปยังและตำแหน่งที่initเรียกว่าฟอร์ม คำถามของฉันเกี่ยวกับ # 3 หากมีคนต้องการสร้าง rootfs น้อยที่สุด (สำหรับคำถามนี้สมมติว่าไม่มี GUI, shell เท่านั้น) ไฟล์ / โปรแกรมใดที่จำเป็นต้องใช้ในการบู๊ตเชลล์

3
ความสัมพันธ์ระหว่างการเรียกของระบบการส่งข้อความและการขัดจังหวะคืออะไร?
ฉันอ่านบทความวิกิพีเดียสำหรับการจัดการกระบวนการ ฉันมุ่งเน้นไปที่ Linux ฉันไม่สามารถหาความสัมพันธ์และความแตกต่างระหว่างการเรียกของระบบการส่งข้อความและขัดจังหวะในแนวคิดและวัตถุประสงค์ของพวกเขา พวกเขาทั้งหมดสำหรับกระบวนการในการร้องขอเคอร์เนลสำหรับทรัพยากรและบริการ? บางคำพูดจากบทความและอื่น ๆ : มีสองวิธีที่เป็นไปได้สำหรับระบบปฏิบัติการที่จะได้รับการควบคุมของหน่วยประมวลผลในระหว่างการดำเนินการของโปรแกรมเพื่อให้ระบบปฏิบัติการที่จะทำการจัดสรรหรือการจัดสรร: กระบวนการออกสายระบบ (บางครั้งเรียกว่าซอฟต์แวร์ขัดจังหวะ); ตัวอย่างเช่นคำขอ I / O เกิดขึ้นเพื่อขอให้เข้าถึงไฟล์บนฮาร์ดดิสก์ การขัดจังหวะของฮาร์ดแวร์เกิดขึ้น ตัวอย่างเช่นมีการกดแป้นบนแป้นพิมพ์หรือตัวจับเวลาหมด (ใช้ในมัลติทาสก์แบบ pre-emptive) มีสองเทคนิคที่โปรแกรมดำเนินการในโหมดผู้ใช้สามารถร้องขอบริการของเคอร์เนลได้: * System call * Message passing อินเทอร์รัปต์เป็นสัญญาณอะซิงโครนัสที่ระบุถึงความต้องการความสนใจหรือเหตุการณ์ซิงโครนัสในซอฟต์แวร์ที่ระบุถึงความต้องการการเปลี่ยนแปลงในการดำเนินการ ฮาร์ดแวร์ขัดจังหวะทำให้โปรเซสเซอร์บันทึกสถานะของการดำเนินการและเริ่มต้นการดำเนินการของตัวจัดการขัดจังหวะ การขัดจังหวะของซอฟต์แวร์มักจะนำมาใช้เป็นคำแนะนำในชุดคำสั่งซึ่งทำให้การสลับบริบทเป็นตัวจัดการขัดจังหวะคล้ายกับการขัดจังหวะฮาร์ดแวร์

2
เคอร์เนล Linux / Unix ต่างกันหรือไม่?
ฉันสามารถใช้เคอร์เนล Linux และใช้ร่วมกับพูด FreeBSD และในทางกลับกัน (เคอร์เนล FreeBSD พูดเป็น Debian) ได้หรือไม่ มีคำตอบสากลหรือไม่? ข้อ จำกัด คืออะไร? สิ่งกีดขวางคืออะไร?


3
การติดตั้ง FreeBSD ครั้งแรก มีอะไรที่ฉันควรรู้เกี่ยวกับความแตกต่างระหว่าง Linux และ BSD หรือไม่
ฉันต้องการติดตั้ง FreeBSD วันนี้บน HDD สำรองที่ฉันมีอยู่ ฉันต้องการทดลองใช้งานเรียนรู้สิ่งต่าง ๆ และถ้ามันเหมาะกับฉันฉันจะแทนที่ Ubuntu 10.10 'เซิร์ฟเวอร์ / NAS / กล่องเข้ารหัส' ปัจจุบันของฉันด้วย Ubuntu ความอยากรู้เป็นเหตุผลหลัก ฉันยังต้องการที่จะเห็นข้อผิดพลาดที่สำคัญส่วนใหญ่รีดออกจาก GNOME 3 / Unity ก่อนที่ฉันจะกระโดดข้ามการทำซ้ำ Ubuntu ครั้งต่อไป ฉันไม่มีประสบการณ์กับ BSD (ยกเว้น OS X) แต่ฉันได้ติดตั้งและใช้งาน Linux distros มาหลายปีแล้ว ฉันมีความเป็นธรรมความเข้าใจที่ดีของวิธีการที่จะได้รับลินุกซ์และทำงานรวมทั้งบางส่วนของ distros ม้วนของคุณเองเช่น Arch แต่ฉันไม่ใช่ผู้เชี่ยวชาญด้วยจินตนาการที่กว้างไกล โดยพื้นฐานแล้วฉันว่าฉันดีกว่าคุณยาย มีสิ่งใดบ้างที่ฉันควรทราบเมื่อติดตั้ง FreeBSD เป็นครั้งแรก โดยเฉพาะมีความแตกต่างที่สำคัญระหว่างการติดตั้งและตั้งค่า FreeBSD และ distro Linux หรือไม่ …

2
dpkg: ข้อผิดพลาด: ไม่สามารถลบสถาปัตยกรรม 'i386' ที่ฐานข้อมูลใช้อยู่ในปัจจุบัน
ฉันใช้คำสั่งนี้เพื่อเพิ่มซุ้ม i386: sudo dpkg --add-architecture i386 และหลังจากนั้นทันทีโดยไม่ต้องติดตั้งแพ็คเกจใด ๆ ฉันพยายามลบ arch i386 ดังนี้: sudo dpkg --remove-architecture i386 และฉันได้รับข้อผิดพลาด: dpkg: error: cannot remove architecture 'i386' currently in use by the database วิธีแก้ไขที่ฉันได้เห็นแล้วเกี่ยวกับการลบแพ็คเกจ i386 ฉันยังไม่ได้ติดตั้งใด ๆ แพ็คเกจที่ติดตั้งนั้นมีความสำคัญต่อการทำงานของระบบปฏิบัติการ ฉันจะทำอย่างไร แก้ไขโปรดอ่านต่อไปนี้เพื่อหลีกเลี่ยงการทำลายระบบปฏิบัติการของคุณ: ปรากฎว่าระบบปฏิบัติการ Linux แบบ 64 บิตมีส่วนโค้ง i386 อยู่แล้วดังนั้นคำสั่งsudo dpkg --add-architecture i386จึงไม่ได้ทำอะไรเลย

3
กลไก set-user-ID ทำงานอย่างไรใน Unix
ใครช่วยอธิบายกลไก set-user-ID ใน Unix ได้ไหม? เหตุผลเบื้องหลังการตัดสินใจออกแบบนี้คืออะไร มันแตกต่างจากกลไก ID ผู้ใช้ที่มีประสิทธิภาพอย่างไร

5
ขั้นตอนวิธีการตั้งเวลาใดที่ใช้ใน Linux
เมื่อเร็ว ๆ นี้ในการสัมภาษณ์ฉันถูกถามเกี่ยวกับอัลกอริทึมการจัดกำหนดการที่ใช้โดยระบบปฏิบัติการ Linux อัลกอริทึมใช้อะไรทำไม? นอกจากนี้อัลกอริทึมแบบใดที่ใช้ในระบบปฏิบัติการแบบเรียลไทม์และทำไม

4
ความแตกต่างระหว่างการเรียกระบบและฟังก์ชั่นห้องสมุด
ฉันเคยผ่านคำตอบของคำถามนี้แต่ไม่เข้าใจความแตกต่างระหว่างการโทรของระบบและฟังก์ชั่นห้องสมุด ตามหลักการแล้วอะไรคือความแตกต่างระหว่างทั้งสอง

3
เข้าสู่ระบบและภายใน internals
ฉันพยายามเข้าใจว่าการอนุญาตของผู้ใช้ทำงานใน Linux เคอร์เนลบูทและเริ่มต้นinitเป็น root ใช่ไหม Init จากนั้นเรียกใช้สคริปต์เริ่มต้นและเรียกใช้getty( agetty) อีกครั้งในฐานะรูท Agetty เพิ่งอ่านชื่อผู้ใช้และเรียกใช้loginยังคงเป็น root ฉันคิดว่า ยังไม่มีอะไรน่าสนใจ แต่เข้าสู่ระบบทำอะไร? ฉันไม่สามารถค้นหาอะไรที่ดีไปกว่า "พยายามลงชื่อเข้าใช้" สมมติว่าการเข้าสู่ระบบพบว่ารหัสผ่านตรงกัน (และเราพยายามเข้าสู่ระบบในฐานะผู้ใช้ปกติ) มันจะเปลี่ยนรหัสผู้ใช้อย่างไร ฉันคิดว่าควรจะมีการเรียกของระบบ แต่ฉันไม่สามารถหามันได้ (บางทีฉันอาจจะตาบอดก็ได้) suนอกจากนี้เกี่ยวกับ suมีการตั้งค่าบิต 'setuid' ดังนั้นเมื่อเราเรียกใช้มันจะทำงานเหมือนรูทเสมอ แต่เมื่อเราบอกให้ล็อกอินเป็นผู้ใช้ปกติก็ต้องเปลี่ยนรหัสผู้ใช้อีกครั้ง ฉันเข้าใจอย่างถูกต้องหรือไม่ว่า "เวทมนต์" อันเดียวกันนั้นเกิดขึ้นในsuและloginเมื่อพวกเขาต้องเปลี่ยนผู้ใช้? ถ้าใช่ทำไมมีสองโปรแกรมที่แตกต่างกัน มีธุรกิจประเภทใดบ้างที่เกิดขึ้นอย่างจริงจังเมื่อลงชื่อเข้าใช้?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.