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

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

7
ทำไมเราต้องแยกเพื่อสร้างกระบวนการใหม่
ใน Unix ทุกครั้งที่เราต้องการสร้างกระบวนการใหม่เราแยกกระบวนการปัจจุบันสร้างกระบวนการลูกใหม่ซึ่งเหมือนกับกระบวนการแม่ จากนั้นเราทำการเรียกระบบ exec เพื่อแทนที่ข้อมูลทั้งหมดจากกระบวนการหลักด้วยกระบวนการนั้นสำหรับกระบวนการใหม่ เหตุใดเราจึงสร้างสำเนาของกระบวนการหลักในตอนแรกและไม่สร้างกระบวนการใหม่โดยตรง

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

6
Linux ที่สามารถเรียกใช้งานได้จะถูกคอมไพล์ใน "รสชาติ" ของ Linux หรือไม่
ความสามารถในการเรียกใช้งานของโปรแกรมขนาดเล็กและเรียบง่ายอย่างยิ่งเช่นที่แสดงด้านล่างซึ่งรวบรวมไว้ใน Linux หนึ่งรสชาติที่รันบนรสชาติที่แตกต่างกันหรือไม่? หรือจะต้องทำการคอมไพล์ใหม่? สถาปัตยกรรมของเครื่องจักรมีความสำคัญในกรณีเช่นนี้หรือไม่? int main() { return (99); }


3
ทำไม rm อนุญาตให้ลบไฟล์ภายใต้ความเป็นเจ้าของของผู้ใช้คนอื่น?
จากการโพสต์ทำไม rm สามารถลบไฟล์แบบอ่านอย่างเดียวได้? ฉันเข้าใจว่าrmต้องมีสิทธิ์เขียนในไดเรกทอรีเพื่อลบไฟล์ แต่ฉันพบว่ามันยากที่จะแยกแยะพฤติกรรมที่เราสามารถลบไฟล์ที่เจ้าของและกลุ่มต่าง ๆ ได้อย่างง่ายดาย ฉันพยายามต่อไปนี้ mtk: ชื่อผู้ใช้ของฉัน abc: สร้างผู้ใช้ใหม่ $ ls -l file -rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file $ sudo chown abc file $ sudo chgrp abc file $ ls -l file -rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file $ rm …

8
บนระบบ Unix ทำไมเราต้อง `open () 'และ` close () `ไฟล์อย่างชัดเจนเพื่อให้สามารถอ่านไฟล์ read ()` `หรือ` write ()' ได้
ทำไมopen()และclose()มีอยู่ในการออกแบบระบบไฟล์ Unix ระบบปฏิบัติการไม่สามารถตรวจพบในครั้งแรกread()หรือwrite()ถูกเรียกและทำสิ่งใดopen()ตามปกติ

1
การขัดจังหวะของซอฟต์แวร์และฮาร์ดแวร์คืออะไรและมีการประมวลผลอย่างไร
ฉันไม่แน่ใจว่าฉันเข้าใจแนวคิดของการขัดจังหวะฮาร์ดแวร์และซอฟต์แวร์หรือไม่ หากฉันเข้าใจอย่างถูกต้องวัตถุประสงค์ของการขัดจังหวะฮาร์ดแวร์คือการได้รับความสนใจจาก CPU ซึ่งเป็นส่วนหนึ่งของการใช้งานมัลติทาสก์ของ CPU ถ้าเช่นนั้นปัญหาฮาร์ดแวร์ขัดจังหวะอะไร มันเป็นกระบวนการของไดรเวอร์ฮาร์ดแวร์หรือไม่ ถ้าใช่กระบวนการของฮาร์ดแวร์ไดรเวอร์ทำงานอยู่ที่ไหน ถ้ามันทำงานบนซีพียูมันจะไม่ต้องสนใจ CPU โดยการขัดจังหวะโดยฮาร์ดแวร์ใช่มั้ย แล้วมันวิ่งไปที่อื่นเหรอ? ฮาร์ดแวร์ขัดจังหวะซีพียูขัดจังหวะโดยตรงหรือไม่หรือจะติดต่อกระบวนการเคอร์เนลก่อนและกระบวนการเคอร์เนลจะติดต่อ / ขัดจังหวะ CPU หรือไม่ ในทางกลับกันฉันคิดว่าจุดประสงค์ของการขัดจังหวะของซอฟต์แวร์คือกระบวนการที่กำลังทำงานบน CPU เพื่อขอทรัพยากรบางอย่าง ทรัพยากรคืออะไร? พวกเขาทั้งหมดอยู่ในรูปแบบของกระบวนการที่กำลังทำงานอยู่หรือไม่? ตัวอย่างเช่นกระบวนการไดรเวอร์ CPU และกระบวนการไดรเวอร์หน่วยความจำแสดงถึงทรัพยากร CPU และหน่วยความจำ กระบวนการควบคุมของอุปกรณ์ I / O แสดงถึงทรัพยากร I / O หรือไม่ กระบวนการทำงานอื่น ๆ ที่กระบวนการต้องการสื่อสารกับทรัพยากรด้วยหรือไม่ ถ้าใช่ซอฟต์แวร์ขัดจังหวะการติดต่อกระบวนการ (ซึ่งแสดงถึงทรัพยากร) โดยอ้อมผ่านกระบวนการเคอร์เนลหรือไม่? ถูกต้องหรือไม่ว่าอินเตอร์รัปต์ฮาร์ดแวร์ซอฟต์แวร์อินเตอร์รัปต์ไม่ขัดจังหวะ CPU โดยตรง แต่จะขัดจังหวะ / ติดต่อกระบวนการเคอร์เนลหรือไม่

15
เชลล์เชิงอ็อบเจ็กต์สำหรับ * ระวัง
คำนำ: ฉันรักการทุบตีและไม่มีความตั้งใจที่จะเริ่มโต้เถียงหรือสงครามศักดิ์สิทธิ์และหวังว่านี่จะไม่ใช่คำถามที่ไร้เดียงสาอย่างยิ่ง คำถามนี้ค่อนข้างเกี่ยวข้องกับโพสต์นี้ใน superuser แต่ฉันไม่คิดว่า OP รู้จริง ๆ ว่าเขาขออะไร ฉันใช้ bash บน FreeBSD, linux, OS X และ cygwin บน Windows ฉันเคยมีประสบการณ์มากมายกับ PowerShell บน Windows เมื่อเร็ว ๆ นี้ มีเชลล์สำหรับ * nix, มีอยู่แล้วหรือในงานที่เข้ากันได้กับ bash แต่เพิ่มเลเยอร์ของสคริปต์เชิงวัตถุลงในมิกซ์หรือไม่ สิ่งเดียวที่ฉันรู้ว่าใกล้เข้ามาคือคอนโซลหลาม แต่เท่าที่ฉันสามารถบอกได้ว่ามันไม่ได้ให้การเข้าถึงสภาพแวดล้อมเชลล์มาตรฐาน ตัวอย่างเช่นผมไม่สามารถเพียงcd ~และlsจากนั้นchmod +x fileภายในคอนโซลหลาม ฉันจะต้องใช้หลามเพื่อทำงานเหล่านั้นมากกว่าไบนารียูนิกซ์มาตรฐานหรือโทรไบนารีโดยใช้รหัสหลาม มีเชลล์อยู่จริงหรือไม่?

6
ระบบ unix หรือ linux ทำงานอย่างไร [ปิด]
ผมอยากจะทราบวิธีการทำงานของระบบปฏิบัติการสั้น : ส่วนประกอบพื้นฐานที่สร้างขึ้น องค์ประกอบเหล่านั้นทำงานร่วมกันอย่างไร อะไรทำให้ยูนิกซ์ยูนิกซ์ สิ่งที่ทำให้แตกต่างจากระบบปฏิบัติการอื่น ๆ เช่น Windows

2
คำอธิบายของคนธรรมดาสำหรับ“ ทุกอย่างเป็นไฟล์” - อะไรคือสิ่งที่แตกต่างจาก Windows
ฉันรู้ว่า "ทุกอย่างเป็นไฟล์" หมายความว่าแม้กระทั่งอุปกรณ์ที่มีชื่อไฟล์และพา ธ ในระบบ Unix และ Unix-like และสิ่งนี้ทำให้เครื่องมือทั่วไปสามารถใช้กับทรัพยากรที่หลากหลายโดยไม่คำนึงถึงลักษณะของพวกเขา แต่ฉันไม่สามารถเปรียบเทียบได้กับ Windows ซึ่งเป็นระบบปฏิบัติการอื่นที่ฉันทำงานด้วย ฉันได้อ่านบทความบางอย่างเกี่ยวกับแนวคิด แต่ฉันคิดว่าพวกเขาค่อนข้างลำบากที่จะเข้าใจผู้ที่ไม่ใช่นักพัฒนา คำอธิบายของคนธรรมดาคือสิ่งที่ผู้คนต้องการ! ตัวอย่างเช่นเมื่อฉันต้องการคัดลอกไฟล์ไปยังการ์ด CF ที่ติดกับเครื่องอ่านการ์ดฉันจะใช้สิ่งที่ชอบ zcat name_of_file > /dev/sdb ใน Windows ฉันคิดว่าเครื่องอ่านการ์ดจะปรากฏเป็นไดรเวอร์และเราจะทำสิ่งที่คล้ายกันฉันคิดว่า ดังนั้นปรัชญา "ทุกอย่างเป็นไฟล์" สร้างความแตกต่างได้อย่างไรที่นี่

2
เทอร์มินัล Linux ทำงานอย่างไร
หากคุณเรียกใช้งานเทอร์มินัลและเรียกใช้งานโปรแกรมที่เรียกใช้งานได้ (สมมติว่าเป็นส่วนหนึ่งของสายที่เน้นความเรียบง่าย) คุณจะได้รับคำตอบจากคำสั่งของโปรแกรมที่ใช้งานได้ สิ่งนี้จะพิมพ์ให้คุณ (ผู้ใช้) ได้อย่างไร? เครื่องเทอร์มินัลทำอะไรเช่นนี้pexpect? (แบบสำรวจรอการส่งออก) หรืออะไร จะทราบวิธีการพิมพ์ออกมาได้อย่างไร? และเทอร์มินัลเริ่มโปรแกรมอย่างไร? (มันเป็นสิ่งที่คล้ายกับ os.fork ของ python ()?) ฉันงงว่าเทอร์มินัลทำงานอย่างไรฉันเล่นกับเทอร์มินัลอีมูเลเตอร์และฉันก็ยังไม่เข้าใจว่าเวทย์มนตร์นี้ทำงานอย่างไร ฉันกำลังดูที่แหล่งของ konsole (kde) และ yakuake (อาจใช้ konsole) และฉันไม่สามารถรับสิ่งที่เวทมนตร์นั้นเกิดขึ้นได้

3
สัญญาณทำงานอย่างไรภายใน
โดยทั่วไปจะฆ่ากระบวนการที่เราสร้างสัญญาณเช่นSIGKILL, SIGTSTPฯลฯ แต่จะทราบได้อย่างไรว่าใครสั่งให้สัญญาณนั้นใครส่งไปยังกระบวนการเฉพาะและโดยทั่วไปสัญญาณทำงานอย่างไร สัญญาณภายในทำงานอย่างไร

2
การขัดจังหวะของการโทรของระบบเมื่อจับสัญญาณ
จากการอ่าน man page บนread()และการwrite()โทรปรากฏว่าการโทรเหล่านี้ถูกขัดจังหวะด้วยสัญญาณโดยไม่คำนึงว่าพวกเขาจะต้องปิดกั้นหรือไม่ โดยเฉพาะสมมติว่า กระบวนการสร้างตัวจัดการสำหรับสัญญาณบางอย่าง อุปกรณ์ถูกเปิด (พูดเทอร์มินัล) โดยที่O_NONBLOCK ไม่ได้ตั้งค่า (เช่นทำงานในโหมดบล็อก) กระบวนการนี้ทำให้การread()เรียกระบบอ่านจากอุปกรณ์และผลลัพธ์จะดำเนินการพา ธ ควบคุมเคอร์เนลในเคอร์เนลพื้นที่ ในขณะที่กระบวนการดำเนินการอยู่read()ใน kernel-space สัญญาณที่ติดตั้งตัวจัดการไว้ก่อนหน้านี้จะถูกส่งไปยังกระบวนการนั้นและตัวจัดการสัญญาณถูกเรียกใช้ การอ่าน man man และส่วนที่เหมาะสมในSUSv3 'System Interfaces volume (XSH)' , หนึ่งพบว่า: ผม. หาก a read()ถูกขัดจังหวะโดยสัญญาณก่อนที่จะอ่านข้อมูลใด ๆ (นั่นคือต้องปิดกั้นเพราะไม่มีข้อมูล) จะส่งกลับ -1 ด้วยการerrnoตั้งค่าเป็น [EINTR] ii หาก a read()ถูกขัดจังหวะโดยสัญญาณหลังจากอ่านข้อมูลเรียบร้อยแล้ว (เช่นเป็นไปได้ที่จะเริ่มให้บริการตามคำขอทันที) มันจะส่งคืนจำนวนไบต์ที่อ่าน คำถาม A): ฉันถูกต้องหรือไม่ที่จะสมมติว่าในกรณีใด ๆ (บล็อก / ไม่มีบล็อก) …

2
ทำไมถึงมี `/ lib` และ` / lib64 'แต่มีเพียง `/ bin'?
ในแล็ปท็อปของฉัน: $ cat /etc/issue Ubuntu 18.04 LTS \n \l มีสองโฟลเดอร์ที่แตกต่างกันสำหรับไลบรารีx86และx86_64: ~$ ls -1 / bin lib lib64 sbin ... ทำไมไบนารีจึงมีเพียงไดเรกทอรีเดียว? ป.ล. ฉันสนใจ Android ด้วย แต่ฉันหวังว่าคำตอบนั้นควรเหมือนกัน

1
วิธีการบรรทัดคำสั่งง่าย ๆ ในการกำหนดสตริงสถาปัตยกรรม ARM?
ฉันพยายามเขียนสคริปต์ซึ่งจะกำหนดการดำเนินการตามสถาปัตยกรรมของเครื่อง ฉันใช้uname -mในการรวบรวมสายสถาปัตยกรรม แต่ผมไม่ทราบว่าหลายสถาปัตยกรรม ARM มีหรือจะทราบได้อย่างไรว่าเป็นหนึ่งarmhf, หรือarmelarm64 เช่นนี้เป็นสิ่งจำเป็นสำหรับสคริปต์นี้เพื่อตรวจสอบว่าบางส่วนของสคริปต์ที่สามารถทำงานได้หรือไม่ฉันกำลังพยายามที่จะหาวิธีง่ายๆในการตรวจสอบว่าเป็นสถาปัตยกรรมarmhf, หรือarmel arm64มีผู้ใดหนึ่งซับหรือคำสั่งง่ายๆที่สามารถนำมาใช้เพื่อการส่งออกอย่างใดอย่างหนึ่งarmhf, armelหรือarm64? สคริปต์นี้เขียนขึ้นโดยเฉพาะสำหรับระบบ Debian และ Ubuntu และฉันกำลังติดแท็กด้วยเช่นนี้ในใจ (มันจะปิดโดยอัตโนมัติหากคุณไม่ได้อยู่ในหนึ่งใน distros เหล่านั้น มีคำสั่งอยู่ แก้ไข: เรียนรู้เมื่อเร็ว ๆ นี้ว่า Armel นั้นตายแล้วและผู้สร้างซอฟต์แวร์ arm64 (PPA หรือ virtual based) นั้นไม่เสถียรที่สุด ดังนั้นฉันมีการค้นหาการค้นหาตัวแทนarm*และสมมติว่า armhf แต่ก็ยังจำเป็นต้องคิดซับหนึ่งที่ส่งกลับหนึ่งในสาม - ไม่ว่าจะเป็นคำสั่ง Ubuntu / Debian หรือการโทรเคอร์เนลหรืออะไร

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