คำถามติดแท็ก operating-systems

ระบบปฏิบัติการ (OS) เป็นซอฟต์แวร์พื้นฐานที่มีกฎคือข้อกำหนดซอฟต์แวร์ระดับกลางสำหรับทรัพยากรและฮาร์ดแวร์ที่มีอยู่จัดการอินพุต / เอาต์พุตการจัดสรรหน่วยความจำ / การจัดสรรคืนหน่วยความจำระบบไฟล์และงานพื้นฐานอื่น ๆ ที่อุปกรณ์ควรทำ

30
ฉันจะสร้างภาษาการเขียนโปรแกรมของตัวเองและคอมไพเลอร์ได้อย่างไร [ปิด]
ฉันถี่ถ้วนกับการเขียนโปรแกรมและได้เจอภาษาต่างๆเช่นภาษาเบสิกภาษาฟอร์แทรนภาษาโคบอล LISP โลโก้ Java, C ++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, Assembly เป็นต้น ฉันไม่เข้าใจว่าผู้คนสร้างภาษาการเขียนโปรแกรมและประดิษฐ์คอมไพเลอร์อย่างไร ฉันยังไม่เข้าใจว่าผู้คนสร้างระบบปฏิบัติการเช่น Windows, Mac, UNIX, DOS และอื่น ๆ อย่างไร สิ่งอื่น ๆ ที่ลึกลับสำหรับฉันคือวิธีที่ผู้คนสร้างห้องสมุดเช่น OpenGL, OpenCL, OpenCV, Cocoa, MFC และอื่น ๆ สิ่งสุดท้ายที่ฉันไม่สามารถเข้าใจได้ก็คือวิธีที่นักวิทยาศาสตร์คิดค้นภาษาแอสเซมบลีและแอสเซมเบลอร์สำหรับไมโครโปรเซสเซอร์ ฉันอยากจะเรียนรู้สิ่งเหล่านี้ทั้งหมดและฉันอายุ 15 ปี ฉันมักจะต้องการเป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่ชอบ Babbage, Turing, Shannon หรือ Dennis Ritchie ฉันได้อ่านหนังสือการออกแบบคอมไพเลอร์ของ Aho แล้วและแนวคิดระบบปฏิบัติการของ Tanenbaum และพวกเขาทั้งหมดพูดถึงแนวคิดและรหัสในระดับสูงเท่านั้น …

15
เหตุใด Tanenbaum จึงผิดในการโต้วาที Tanenbaum-Torvalds
ฉันเพิ่งได้รับมอบหมายให้อ่านจากการโต้วาที Tanenbaum-Torvaldsในระดับระบบปฏิบัติการของฉัน ในการโต้วาที Tanenbaum ทำการคาดการณ์บางอย่าง: Microkernels เป็นอนาคต x86 จะตายไปและสถาปัตยกรรม RISC จะครองตลาด (5 ปีจากนั้น) ทุกคนจะใช้ระบบปฏิบัติการ GNU ฟรี ฉันอายุหนึ่งปีเมื่อมีการอภิปรายเกิดขึ้นดังนั้นฉันจึงไม่มีสัญชาตญาณทางประวัติศาสตร์ เหตุใดการคาดการณ์เหล่านี้จึงไม่ปรากฎขึ้น สำหรับฉันแล้วดูเหมือนว่าจากมุมมองของ Tanenbaum พวกเขาก็มีเหตุผลพอสมควรในอนาคต เกิดอะไรขึ้นเพื่อที่พวกเขาจะไม่ผ่านไป

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

4
ระบบปฏิบัติการใดที่ใช้ในเครื่องบินและภาษาการเขียนโปรแกรมอะไรที่พัฒนาขึ้นมา [ปิด]
ฉันสงสัยว่าถ้าใครรู้ว่าระบบปฏิบัติการที่ใช้ในเครื่องบินพาณิชย์ (เช่นโบอิ้งหรือแอร์บัส) นอกจากนี้ภาษาโปรแกรมแบบเรียลไทม์ (ที่ต้องการ) คืออะไร ฉันได้ยินมาว่า Ada ถูกใช้ใน Boeing ดังนั้นคำถามของฉันคือ - ทำไม Ada Boeing-guys มีเกณฑ์อะไรบ้างในการเลือกภาษานี้ (ฉันเดาว่า Java จะไม่เป็นทางเลือกที่ดีถ้าเปิดออกอย่างรวดเร็วตัวเก็บรวบรวมขยะ)

12
วลี“ ซอฟต์แวร์สามารถเปลี่ยนฮาร์ดแวร์ได้” หมายถึงอะไร
การเรียนหลักสูตรผู้เริ่มต้นบนอินเทอร์เฟซฮาร์ดแวร์ / ซอฟต์แวร์และระบบปฏิบัติการมักจะเกิดหัวข้อว่าจะเป็นการดีกว่าถ้าจะแทนที่ส่วนฮาร์ดแวร์บางส่วนด้วยซอฟต์แวร์และในทางกลับกัน ฉันไม่สามารถเชื่อมต่อได้

11
ทำไมซอฟต์แวร์ OS จึงมีความเฉพาะ?
ฉันพยายามหารายละเอียดทางเทคนิคว่าทำไมซอฟต์แวร์ที่ผลิตโดยใช้ภาษาการเขียนโปรแกรมสำหรับระบบปฏิบัติการบางระบบสามารถใช้งานได้กับพวกเขาเท่านั้น ฉันเข้าใจว่าไบนารีนั้นมีความเฉพาะสำหรับโปรเซสเซอร์บางตัวเนื่องจากภาษาเครื่องเฉพาะของโปรเซสเซอร์ที่พวกเขาเข้าใจและชุดคำสั่งต่างกันระหว่างโปรเซสเซอร์ที่ต่างกัน แต่ความจำเพาะของระบบปฏิบัติการมาจากไหน? ฉันเคยคิดว่ามันเป็น API ที่จัดทำโดยระบบปฏิบัติการ แต่จากนั้นฉันเห็นแผนภาพนี้ในหนังสือ: ระบบปฏิบัติการ - ภายในและหลักการออกแบบ 7 ed - W. Stallings (Pearson, 2012) อย่างที่คุณเห็น APIs ไม่ได้ระบุว่าเป็นส่วนหนึ่งของระบบปฏิบัติการ ตัวอย่างเช่นถ้าฉันสร้างโปรแกรมอย่างง่ายใน C โดยใช้รหัสต่อไปนี้: #include<stdio.h> main() { printf("Hello World"); } คอมไพเลอร์ทำอะไรที่เฉพาะกับ OS เมื่อทำการคอมไพล์หรือไม่

10
ทำไมไม่มีระบบปฏิบัติการภาษาระดับสูง? ภาษาระดับต่ำมีประสิทธิภาพมากขึ้นหรือไม่
โดยไม่ต้องเกรงใจฉันอยากให้คุณพิจารณาความเป็นไปได้ของสิ่งนี้ ระบบปฏิบัติการส่วนใหญ่ในปัจจุบันนี้ใช้ภาษาระดับต่ำ (ส่วนใหญ่ C / C ++) แม้แต่ภาษาใหม่เช่น Android ใช้ JNI และการใช้งานพื้นฐานอยู่ใน C ในความเป็นจริง (นี่เป็นการสังเกตการณ์ส่วนตัว) หลายโปรแกรมที่เขียนใน C ทำงานเร็วกว่าโปรแกรมระดับสูง (เช่น: การส่ง (ไคลเอนต์ bittorrent บน Ubuntu) เป็นจำนวนมากเร็วกว่า Vuze (Java) หรือ Deluge (Python) ) แม้แต่คอมไพเลอร์ไพ ธ อนก็เขียนด้วยภาษา C ถึงแม้ว่า PyPy จะเป็นข้อยกเว้น ดังนั้นมีเหตุผลพิเศษสำหรับเรื่องนี้หรือไม่? ทำไมมันจึงเรียกว่า "ภาษาระดับสูง" ของเราที่มีแนวคิด "OOP" ที่ยอดเยี่ยมไม่สามารถใช้ในการสร้างระบบปฏิบัติการที่มั่นคง? ดังนั้นฉันมี 2 คำถามโดยทั่วไป เหตุใดแอปพลิเคชันที่เขียนด้วยภาษาระดับต่ำจึงมีประสิทธิภาพมากกว่า HLL ที่เป็นคู่กัน …

8
ทำไมการแบ่งส่วน (ไม่)
ฉันกำลังศึกษาระบบปฏิบัติการและสถาปัตยกรรม x86 และในขณะที่ฉันอ่านเกี่ยวกับการแบ่งส่วนและการแบ่งหน้าฉันก็อยากรู้อยากเห็นว่าระบบปฏิบัติการที่ทันสมัยจัดการการจัดการหน่วยความจำได้อย่างไร จากสิ่งที่ฉันพบ Linux และระบบปฏิบัติการอื่น ๆ ส่วนใหญ่หลีกเลี่ยงการแบ่งส่วนเพื่อสนับสนุนการแบ่งหน้า เหตุผลสองสามข้อที่ฉันพบคือความเรียบง่ายและพกพาสะดวก มีการใช้งานอะไรในทางปฏิบัติสำหรับการแบ่งส่วน (x86 หรืออย่างอื่น) และเราจะเคยเห็นระบบปฏิบัติการที่แข็งแกร่งใช้หรือจะใช้ระบบเพจแบบเพจต่อไป ตอนนี้ฉันรู้ว่านี่เป็นคำถามที่โหลด แต่ฉันอยากรู้ว่าการแบ่งส่วนจะจัดการกับระบบปฏิบัติการที่พัฒนาขึ้นใหม่ได้อย่างไร มันสมเหตุสมผลหรือไม่ที่จะชอบเพจที่ไม่มีใครจะพิจารณาแนวทาง 'แบบแบ่งส่วน' มากขึ้น? ถ้าเป็นเช่นนั้นทำไม และเมื่อฉันบอกว่าการแบ่งส่วน 'ชุน' ฉันหมายความว่าลีนุกซ์ใช้เท่าที่มันจะทำได้ เพียง 4 ส่วนสำหรับผู้ใช้และรหัสเคอร์เนล / ส่วนข้อมูล ในขณะที่อ่านเอกสารของ Intel ฉันเพิ่งรู้สึกว่าการแบ่งส่วนได้รับการออกแบบด้วยโซลูชั่นที่แข็งแกร่งกว่าในใจ จากนั้นอีกครั้งฉันถูกบอกในหลาย ๆ ครั้งว่าความซับซ้อนของ x86 สามารถทำได้ ฉันพบเรื่องราวเล็ก ๆ น้อย ๆ ที่น่าสนใจหลังจากเชื่อมโยงกับ 'ประกาศ' ดั้งเดิมของ Linux Torvald สำหรับ Linux เขาพูดเรื่องนี้ไม่กี่โพสต์ในภายหลัง: พูดง่ายๆว่าการย้ายพอร์ตนั้นเป็นไปไม่ได้ ส่วนใหญ่จะอยู่ใน C …

5
ทำไม Windows / Linux ไม่ใช้ฐานข้อมูลเชิงสัมพันธ์ (RDBMS)
ทำไม Windows / Linux ไม่ใช้ฐานข้อมูลเชิงสัมพันธ์ ( RDBMS ) ฉันรู้ว่าพวกเขาใช้ระบบไฟล์เพื่อจัดเก็บข้อมูลทั้งหมด แต่คุณไม่คิดว่ามันจะมีประสิทธิภาพมากกว่าในการใช้ฐานข้อมูลเหมือนที่เราใช้ในเว็บไซต์ / เว็บแอพ โปรดอธิบายอย่างละเอียดเกี่ยวกับการใช้ระบบไฟล์ผ่านฐานข้อมูลเพื่อการจัดเก็บ สิ่งนี้ไม่เหมือนกันเมื่อต้องการใช้ฐานข้อมูลมากกว่าการแยกข้อมูลจากไฟล์ข้อความหรือไม่ ฉันกำลังพูดถึงในแง่ของบริบทของระบบปฏิบัติการเท่านั้นและคำถามนั้นเป็นเรื่องทั่วไป

3
เว็บเซิร์ฟเวอร์โหมดเคอร์เนล: การเพิ่มประสิทธิภาพที่ฉลาดหรือฝันร้ายด้านความปลอดภัย?
ฉันอ่านเธรด Hacker Newsที่ผู้ใช้รายหนึ่งโพสต์ลิงก์จาก 2011 อธิบายว่าIIS เร็วกว่าเว็บเซิร์ฟเวอร์ (* nix) ส่วนใหญ่ ตอบกลับผู้ใช้คนอื่นอธิบายว่า IIS ได้รับประโยชน์ที่โดยมีเคอร์เนลโมดูลที่เรียกว่า HTTP.sys ตามความรู้ของฉันเว็บเซิร์ฟเวอร์ยอดนิยมอื่น ๆ ส่วนใหญ่ในปี 2015 ไม่ได้ทำเช่นนี้ ฉันจะไม่ต้องการเขียนเว็บเซิร์ฟเวอร์ในโหมดเคอร์เนลเพราะฉันไม่สามารถเชื่อใจตัวเองได้ว่าจะทำให้ปราศจากช่องโหว่ด้านความปลอดภัย (ซึ่งจะทำงานน้อยลงในวงแหวนป้องกันที่ต่ำกว่า) จากมุมมองของวิศวกรซอฟต์แวร์ (เมื่อเทียบกับลูกค้าสำหรับเว็บเซิร์ฟเวอร์) การทำงานในโหมดเคอร์เนลเป็นการตัดสินใจที่มีประสิทธิภาพหรือไม่? ความกังวลด้านความปลอดภัยสามารถลดลงในการพัฒนาแอปพลิเคชันจนถึงจุดที่ทำให้เซิร์ฟเวอร์โหมดเคอร์เนลเป็นกำไรสุทธิสำหรับผู้บริโภคได้หรือไม่?

3
เหตุใดจึงไม่“ fat ไบนารี” ใช้กันอย่างแพร่หลายสำหรับแอปพลิเคชันข้ามแพลตฟอร์ม
เท่าที่ฉันรู้เรียกว่า "fat ไบนารี" - ไฟล์ปฏิบัติการที่มีรหัสเครื่องสำหรับหลายระบบ - ใช้เฉพาะกับ Apple PC เท่านั้นและดูเหมือนว่าพวกเขาใช้เพียงเพราะพวกเขาต้องการเปลี่ยนจาก PowerPC ถึง x86 ทุกวันนี้ซอฟต์แวร์จำนวนมากข้ามแพลตฟอร์มและดูเหมือนว่าการสร้างไบนารีไขมันเพียงครั้งเดียวจะทำได้ง่ายกว่าการติดตามการดาวน์โหลดหลายโหลหรือหลายครั้งที่แตกต่างกันสำหรับการรวมกันของระบบปฏิบัติการและสถาปัตยกรรมแต่ละครั้ง ให้กับลูกค้าที่พวกเขาต้องการ ฉันสามารถคาดเดาได้มากมายว่าทำไมวิธีการนี้ถึงไม่ติดเช่น: การขาดเครื่องมือการคอมไพล์ข้ามการทำให้ไบนารีหลายระบบเป็นไปไม่ได้ คุณต้องทดสอบรหัสในแต่ละระบบปฏิบัติการดังนั้นคุณต้องมีระบบที่สามารถรวบรวมได้ในแต่ละระบบปฏิบัติการ เห็นได้ชัดว่าโปรแกรม 32 บิต "เพิ่งใช้งาน" ในเครื่อง 64 บิตแล้ว การลิงก์แบบไดนามิกทำงานแตกต่างกันไปในแต่ละระบบปฏิบัติการดังนั้น "ไลบรารีไขมัน" อาจไม่ทำงานแม้ว่าจะมี "แอปพลิเคชันอ้วน" แต่เนื่องจากฉันทำงานกับไลบรารีหรือกรอบงานที่ซ่อนรายละเอียดเฉพาะระบบปฏิบัติการและสถาปัตยกรรมเฉพาะทั้งหมดเหล่านี้จากฉันฉันจึงไม่ทราบว่าเป็นเรื่องจริงเพียงใดหรือถ้ามีปัญหามากขึ้นฉันก็ไม่รู้ เกี่ยวกับ ดังนั้นอะไรคือเหตุผลที่แท้จริงว่าทำไมไบนารีไขมันจึงไม่ถูกใช้โดยทั่วไปในการสร้างซอฟต์แวร์หลายสถาปัตยกรรมและ / หรือระบบปฏิบัติการหลายระบบ? (นอก Apple)

5
เป็นไปได้ไหมที่จะอ่านหน่วยความจำจากโปรแกรมอื่นโดยการจัดสรรพื้นที่ว่างทั้งหมดบนระบบ?
ในทางทฤษฎีถ้าฉันจะสร้างโปรแกรมที่จัดสรรหน่วยความจำที่ไม่ได้ใช้ทั้งหมดในระบบและยังคงร้องขอหน่วยความจำมากขึ้นเรื่อย ๆ เนื่องจากแอปพลิเคชันอื่น ๆ ปล่อยหน่วยความจำที่พวกเขาไม่ต้องการอีกต่อไป ? หรือระบบนี้ได้รับการปกป้องด้วยระบบปฏิบัติการสมัยใหม่หรือไม่? ฉันไม่มีแอปพลิเคชันที่ใช้งานได้สำหรับสิ่งนี้ฉันแค่อยากรู้ ฉันรู้ว่ามีปัญหาบางอย่างในการจัดสรร "หน่วยความจำที่มีอยู่ทั้งหมด" ในชีวิตจริง แก้ไข: เพื่อชี้แจงฉันขอเฉพาะเกี่ยวกับหน่วยความจำ "ปล่อยตัว" ไม่เข้าถึงหน่วยความจำที่ปัจจุบันจัดสรรโดยแอปพลิเคชันอื่น

8
ความแตกต่างพื้นฐานระหว่าง Unix และ Linux ในการออกแบบและด้านอื่น ๆ คืออะไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ฉันอ่านประโยคนี้ต่อไป: Linux เป็นระบบที่คล้าย Unix แต่ไม่ใช่ Unix ฉันไม่รู้ว่าอะไรคือความแตกต่างที่แท้จริงระหว่างสองสิ่งนี้ ฉันรู้ว่า Linux มีแนวคิดมากมายจาก Unix และลิขสิทธิ์ของทั้งสองนั้นแตกต่างกัน นอกเหนือจากนั้นเนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญในหนึ่งในนั้นฉันต้องการทราบว่ามีความแตกต่างพื้นฐานระหว่างพวกเขาในการออกแบบหรือด้านที่สำคัญอื่น ๆ

3
ในความเป็นจริงผู้พัฒนายังจัดการ DBMS และระบบด้วยหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันไม่รู้ว่าจะถามที่ไหน ดังนั้นที่นี่มันจะไป ฉันทำงานที่ บริษัท เล็ก ๆ ที่ทำซอฟต์แวร์ ERP และเว็บไซต์ 1 นักพัฒนาที่มีประสบการณ์มากกว่า 10 ปี 2 นักพัฒนาที่มีประสบการณ์ 3 ปี 3 นักพัฒนาที่มีประสบการณ์ 1 ปี แค่นั้นแหละ. ไม่มีทีมไม่มี DBA ไม่มีผู้ดูแลระบบ ไม่มีใครอยู่แถวนี้ที่มีความเชี่ยวชาญในการพัฒนาเว็บไซต์ดังนั้นฉันจึงรับผิดชอบการพัฒนาเว็บไซต์ แต่ฉันมีประสบการณ์ 3 ปี! ในฐานะนักพัฒนา! ฉันรู้ว่าใน บริษัท เล็ก ๆ คุณถูกขอให้ทำสิ่งต่าง ๆ มากมาย แต่มันมากเกินไปถ้าฉันต้องทำดูแลระบบสถาปัตยกรรมฐานข้อมูลการออกแบบซอฟต์แวร์และการพัฒนา? โอ้ฉันขอให้ทำทั้งหมดในแพลตฟอร์มที่แตกต่างกัน ฉันกำลังทำงานกับ JSP, ASP, MSSQL, …

8
มีระบบปฏิบัติการใดที่ง่ายพอสำหรับการเรียนรู้? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันอยากจะเข้าใจว่าระบบปฏิบัติการทำงานอย่างไรเบื้องหลัง อย่างไรก็ตามฉันคิดว่าเคอร์เนลของระบบปฏิบัติการโอเพ่นซอร์สส่วนใหญ่นั้นซับซ้อนเกินไปสำหรับวัตถุประสงค์ในการเรียนรู้แม้สำหรับโปรแกรมเมอร์เต็มเวลาที่จะเรียนรู้ มี OS แบบ "ง่าย" ที่สร้างขึ้นเพื่อวัตถุประสงค์ในการเรียนรู้เฉพาะที่นั่นหรือไม่?

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