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

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

25
ฉันจะสร้างไดเรกทอรีที่ซ้อนกันได้อย่างปลอดภัยได้อย่างไร
เป็นวิธีที่หรูหราที่สุดในการตรวจสอบว่าไดเรกทอรีไฟล์จะถูกเขียนไปยังอยู่และถ้าไม่สร้างไดเรกทอรีโดยใช้ Python? นี่คือสิ่งที่ฉันพยายาม: import os file_path = "/my/directory/filename.txt" directory = os.path.dirname(file_path) try: os.stat(directory) except: os.mkdir(directory) f = file(filename) ยังไงก็เถอะฉันคิดถึงos.path.exists(ขอบคุณ Kanja, Blair และ Douglas) นี่คือสิ่งที่ฉันมีตอนนี้: def ensure_dir(file_path): directory = os.path.dirname(file_path) if not os.path.exists(directory): os.makedirs(directory) มีการตั้งค่าสถานะสำหรับ "เปิด" ที่ทำให้เกิดขึ้นโดยอัตโนมัติหรือไม่

30
ความแตกต่างระหว่างกระบวนการและเธรดคืออะไร?
ความแตกต่างทางเทคนิคระหว่างกระบวนการและเธรดคืออะไร ฉันรู้สึกว่าคำว่า 'กระบวนการ' ถูกใช้มากเกินไปและยังมีฮาร์ดแวร์และซอฟต์แวร์เธรด กระบวนการเกี่ยวกับน้ำหนักเบาในภาษาอย่างErlang เป็นอย่างไร? มีเหตุผลที่ชัดเจนที่จะใช้คำหนึ่งในอีกคำหนึ่งหรือไม่?


28
ทรัพยากรบางอย่างสำหรับการเริ่มต้นใช้งานในการพัฒนาระบบปฏิบัติการมีอะไรบ้าง [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน5 ปีที่ผ่านมา สิ่งหนึ่งที่ฉันอยากทำอยู่เสมอคือการพัฒนาระบบปฏิบัติการของตัวเอง (ไม่จำเป็นต้องแฟนซีเช่น Linux หรือ Windows แต่ดีกว่าบูตโหลดเดอร์ธรรมดาที่ฉันได้ทำไปแล้ว) ฉันมีปัญหาในการค้นหาแหล่งข้อมูล / คำแนะนำที่ทำให้คุณผ่านการเขียนระบบปฏิบัติการ "Hello World" ที่เรียบง่าย ฉันรู้ว่าผู้คนจำนวนมากอาจจะแนะนำให้ฉันดูที่ Linux หรือ BSD; แต่ฐานของรหัสสำหรับระบบเช่นนี้นั้นใหญ่มากจนฉันไม่รู้ว่าจะเริ่มจากตรงไหน ข้อเสนอแนะใด ๆ อัปเดต: เพื่อให้ง่ายขึ้นสำหรับผู้ที่ลงจอดบนโพสต์นี้ผ่าน Google นี่คือแหล่งข้อมูลสำหรับการพัฒนาระบบปฏิบัติการ: การเขียนระบบปฏิบัติการของคุณเอง (ขอบคุณอดัม) Linux ตั้งแต่เริ่มต้น (ขอขอบคุณ John) SharpOS (ระบบปฏิบัติการ C #) (ขอบคุณ lomaxx) Minix3และMinix2 (ขอบคุณไมค์) OS Dev Wikiและฟอรัม (ขอบคุณ …

20
ฉันจะกำหนดระบบปฏิบัติการโดยใช้โปรแกรมใน Java ได้อย่างไร
ฉันต้องการพิจารณาระบบปฏิบัติการของโฮสต์ที่โปรแกรม Java ของฉันใช้งานโดยทางโปรแกรม (ตัวอย่างเช่น: ฉันต้องการโหลดคุณสมบัติที่แตกต่างกันโดยขึ้นอยู่กับว่าฉันอยู่บนแพลตฟอร์ม Windows หรือ Unix) วิธีที่ปลอดภัยที่สุดในการทำเช่นนี้คือความน่าเชื่อถือ 100%

16
application binary interface (ABI) คืออะไร?
ฉันไม่เคยเข้าใจชัดเจนว่า ABI คืออะไร โปรดอย่านำฉันไปที่บทความ Wikipedia ถ้าฉันเข้าใจได้ฉันจะไม่โพสต์ข้อความยาว ๆ ที่นี่ นี่คือความคิดของฉันเกี่ยวกับอินเทอร์เฟซต่าง ๆ : รีโมตทีวีเป็นอินเทอร์เฟซระหว่างผู้ใช้กับทีวี เป็นนิติบุคคลที่มีอยู่ แต่ไร้ประโยชน์ (ไม่มีฟังก์ชั่นใด ๆ ) ด้วยตัวเอง ฟังก์ชั่นทั้งหมดสำหรับแต่ละปุ่มบนรีโมทนั้นมีการใช้งานในเครื่องรับโทรทัศน์ อินเทอร์เฟซ:เป็นเลเยอร์ "เอนทิตีที่มีอยู่" ระหว่าง functionalityและconsumerของฟังก์ชันการทำงานนั้น ส่วนต่อประสานไม่ได้ทำอะไรเลย มันแค่เรียกใช้ฟังก์ชั่นที่อยู่ข้างหลัง ตอนนี้ขึ้นอยู่กับผู้ใช้ที่มีอินเทอร์เฟซชนิดต่าง ๆ Command Line Interface (CLI)คำสั่งเป็นเอนทิตีที่มีอยู่ผู้บริโภคคือผู้ใช้และหน้าที่การใช้งานอยู่ด้านหลัง functionality: ฟังก์ชั่นซอฟต์แวร์ของฉันที่แก้จุดประสงค์บางอย่างที่เราอธิบายอินเตอร์เฟซนี้ existing entities: คำสั่ง consumer: ผู้ใช้งาน หน้าต่างส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI)ปุ่มและอื่น ๆ เป็นสิ่งที่มีอยู่และอีกครั้งที่ผู้บริโภคคือผู้ใช้ functionality: ฟังก์ชั่นซอฟต์แวร์ของฉันที่แก้ปัญหาที่เราอธิบายอินเตอร์เฟซนี้ existing entities: หน้าต่างปุ่ม ฯลฯ consumer: ผู้ใช้งาน …

4
ไบต์ส่วนตัว, ไบต์เสมือน, ชุดการทำงานคืออะไร
ฉันพยายามใช้ยูทิลิตี perfmon windows เพื่อดีบักการรั่วไหลของหน่วยความจำในกระบวนการ นี่คือวิธีที่ perfmon อธิบายข้อกำหนด: Working Setเป็นขนาดปัจจุบันเป็นไบต์ของ Working Set ของกระบวนการนี้ Working Set เป็นชุดของหน้าหน่วยความจำที่เพิ่งสัมผัสโดยเธรดในกระบวนการ หากหน่วยความจำว่างในคอมพิวเตอร์สูงกว่าขีด จำกัด หน้าเว็บจะอยู่ในชุดการทำงานของกระบวนการแม้ว่าจะไม่ได้ใช้งานก็ตาม เมื่อหน่วยความจำที่ว่างต่ำกว่าเกณฑ์หน้าจะถูกตัดออกจากชุดการทำงาน หากพวกเขาต้องการพวกเขาจะถูกนำกลับไปที่ชุดการทำงานก่อนที่จะออกจากหน่วยความจำหลัก ไบต์เสมือนเป็นขนาดปัจจุบันเป็นไบต์ของพื้นที่ที่อยู่เสมือนที่กระบวนการใช้ การใช้พื้นที่ที่อยู่เสมือนไม่จำเป็นต้องบ่งบอกถึงการใช้งานที่สอดคล้องกันของหน้าดิสก์หรือหน่วยความจำหลัก พื้นที่เสมือนมี จำกัด และกระบวนการสามารถจำกัดความสามารถในการโหลดไลบรารี Private Bytesเป็นขนาดหน่วยความจำปัจจุบันของหน่วยความจำที่กระบวนการนี้จัดสรรไว้ซึ่งไม่สามารถแชร์กับกระบวนการอื่นได้ นี่คือคำถามที่ฉันมี: เป็นไบต์ส่วนตัวที่ฉันควรวัดเพื่อให้แน่ใจว่ากระบวนการมีการรั่วไหลใด ๆ เนื่องจากไม่เกี่ยวข้องกับไลบรารีที่ใช้ร่วมกันและการรั่วไหลใด ๆ หากเกิดขึ้นจะมาจากกระบวนการเองหรือไม่ หน่วยความจำทั้งหมดที่ใช้โดยกระบวนการเป็นเท่าใด มันเป็นไบต์เสมือนหรือเป็นผลรวมของไบต์เสมือนและชุดการทำงาน มีความสัมพันธ์ระหว่างไบต์ส่วนตัว, ชุดการทำงานและไบต์เสมือนหรือไม่? มีเครื่องมืออื่นใดที่ให้แนวคิดที่ดีกว่าเกี่ยวกับการใช้หน่วยความจำหรือไม่?

11
คำอธิบายไฟล์คืออะไรอธิบายด้วยคำง่ายๆ
อะไรจะเป็นคำอธิบายที่ง่ายขึ้นของ file descriptors เทียบกับ Wikipedia ทำไมพวกเขาต้องการ? สมมติว่าใช้กระบวนการเชลล์เป็นตัวอย่างและนำไปใช้อย่างไร ตารางกระบวนการมีตัวอธิบายไฟล์มากกว่าหนึ่งไฟล์หรือไม่ ถ้าใช่ทำไม

13
Windows, Mac OS X และ Linux เขียนด้วยภาษาใด
ฉันแค่สงสัยว่าใครรู้ว่าภาษาการเขียนโปรแกรม Windows, Mac OS X และ Linux ประกอบด้วยอะไรและภาษาใดที่ใช้สำหรับแต่ละส่วนของระบบปฏิบัติการ (เช่น: เคอร์เนล, สถาปัตยกรรมปลั๊กอิน, ส่วนประกอบ GUI, ฯลฯ ) ฉันคิดว่ามีหลายภาษาสำหรับแต่ละคนและแน่นอนฉันรู้เคอร์เนล Linux เขียนใน C. ฉันคาดเดาทั้งหมดที่นี่ว่า Mac OS X มีโค้ด Objective-C จำนวนมากเนื่องจากเป็นภาษาของ Apple ที่ได้รับจาก NeXT Windows, ฉันเคยได้ยินมี C, C ++ และ Intel Assembly Linux หรือ Mac OS มีรหัสชุดประกอบหรือไม่? นอกจากนี้ยังมีภาษาสคริปต์เช่น Ruby, Python และอื่น ๆ ที่นักพัฒนาระบบปฏิบัติการใช้สำหรับการเขียนสคริปต์ส่วนต่างๆของระบบปฏิบัติการหรือไม่ ส่วนใดของระบบปฏิบัติการที่จะเขียนในแต่ละภาษา?

13
ทรัพยากรใดบ้างที่ใช้ร่วมกันระหว่างเธรด
เมื่อเร็ว ๆ นี้ฉันถูกถามคำถามในการสัมภาษณ์ความแตกต่างระหว่างกระบวนการและเธรดคืออะไร จริงๆฉันไม่รู้คำตอบ ฉันคิดหนึ่งนาทีและให้คำตอบที่แปลกมาก เธรดใช้หน่วยความจำเดียวกันร่วมกันกระบวนการทำไม่ได้ หลังจากตอบคำถามนี้ผู้สัมภาษณ์ให้รอยยิ้มชั่วร้ายแก่ฉันและไล่คำถามต่อไปนี้มาที่ฉัน: Q. คุณรู้ส่วนที่โปรแกรมแบ่งหรือไม่? คำตอบของฉัน: อ๋อ (คิดว่าเป็นเรื่องง่าย) Stack, Data, Code, Heap ถามบอกฉันหน่อย: กลุ่มหัวข้อใดที่แชร์กันบ้าง ฉันไม่สามารถตอบคำถามนี้และจบลงด้วยการบอกพวกเขาทั้งหมด ได้โปรดใครบ้างสามารถแสดงคำตอบที่ถูกต้องและน่าประทับใจสำหรับความแตกต่างระหว่างกระบวนการและเธรดได้หรือไม่?

26
Context.startForegroundService () ไม่ได้เรียก Service.startForeground ()
ฉันใช้Serviceคลาสบนระบบปฏิบัติการ Android O ฉันวางแผนที่จะใช้Serviceในพื้นหลัง Android เอกสารระบุว่า หากแอปของคุณกำหนดเป้าหมาย API ระดับ 26 ขึ้นไประบบจะกำหนดข้อ จำกัด ในการใช้หรือสร้างบริการพื้นหลังยกเว้นว่าแอพนั้นอยู่ในเบื้องหน้า หากแอปต้องการที่จะสร้างบริการเบื้องหน้า, app startForegroundService()ควรจะเรียก ถ้าคุณใช้startForegroundService()การServiceโยนข้อผิดพลาดดังต่อไปนี้ Context.startForegroundService() did not then call Service.startForeground() เกิดอะไรขึ้นกับสิ่งนี้?

3
จะรันโปรแกรมโดยไม่มีระบบปฏิบัติการได้อย่างไร?
คุณรันโปรแกรมด้วยตัวเองโดยไม่ต้องใช้ระบบปฏิบัติการได้อย่างไร คุณสามารถสร้างแอสเซมบลีโปรแกรมที่คอมพิวเตอร์สามารถโหลดและรันเมื่อเริ่มต้นเช่นบูตคอมพิวเตอร์จากแฟลชไดรฟ์และรันโปรแกรมที่อยู่บน CPU หรือไม่

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


16
ฉันจะตรวจสอบระบบปฏิบัติการด้วยคำสั่งพรีโปรเซสเซอร์ได้อย่างไร
ฉันต้องการรหัสของฉันเพื่อทำสิ่งต่าง ๆ ตามระบบปฏิบัติการที่ได้รับการรวบรวม ฉันกำลังมองหาบางสิ่งเช่นนี้: #ifdef OSisWindows // do Windows-specific stuff #else // do Unix-specific stuff #endif มีวิธีทำเช่นนี้หรือไม่? มีวิธีที่ดีกว่าในการทำสิ่งเดียวกันหรือไม่?

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