Score:-2

เหตุใดระบบปฏิบัติการจึงต้องการให้สอดคล้องกับ POSIX

ธง de

อะไรคือปัญหาใหญ่ของ POSIX และมันรบกวนการใช้งานโดยรวมของระบบปฏิบัติการอย่างไร?

joeqwerty avatar
cv flag
มันรบกวนได้อย่างไร? ฉันไม่เข้าใจสิ่งที่คุณถาม
Ricardo Silva avatar
de flag
@joeqwerty คำถามคือ ถ้า O.S ไม่รองรับ POSIX ผลที่ตามมาคืออะไร มันรบกวนการใช้งาน O.S หรือไม่ทำให้เกิดการเปลี่ยนแปลงใดๆ เลย?
jm flag
หากแอปพลิเคชันของคุณต้องการการปฏิบัติตาม POSIX ก็จะได้รับผลกระทบ หากคุณกำลังเขียนแอปพลิเคชันเฉพาะสำหรับระบบปฏิบัติการเฉพาะ ความยากอาจแตกต่างกันไป การปฏิบัติตาม POSIX สามารถทำให้แอปพลิเคชันพกพาได้มากขึ้น
Ricardo Silva avatar
de flag
@ doneal24 ขอบคุณมากสำหรับคำตอบ ... จริง ๆ แล้วเรื่องใหญ่คือถ้าคุณกำลังเขียนแอปพลิเคชันเพื่อทำงานบนระบบปฏิบัติการที่สอดคล้องกับ POSIX คุณอาจ (หรือไม่) ต้องเขียนแอปพลิเคชันที่สอดคล้องด้วย มิฉะนั้น จะมีผลกับการทำงานของแอพพลิเคชั่นนั้นๆ ใช่ไหมครับ?
jm flag
ไม่ ตราบใดที่คุณทำตาม API ที่ระบบปฏิบัติการจัดเตรียมไว้ให้ คุณก็ไม่เป็นไร มีหลายมาตรฐานที่คุณสามารถปฏิบัติตามได้ตัวอย่างเช่น ไลบรารี GNU C เข้ากันได้กับ ISO C11, POSIX.1-2008, BSD และ API เฉพาะ OS หลายตัว ต้องระบุลิงก์ [xkcd](https://xkcd.com/927)
Score:1
ธง jo

การเปรียบเทียบที่สมเหตุสมผลคือการเรียนรู้ที่จะขับรถ มีกฎ ระเบียบปฏิบัติที่ต้องปฏิบัติตาม และมาตรฐานด้านคุณภาพและความทนทานในตัวรถและผู้ขับขี่

  • รถยนต์มีพวงมาลัย
  • บางคันมีเกียร์ธรรมดาและบางคันเป็นเกียร์อัตโนมัติ
  • คุณ (ในประเทศส่วนใหญ่) ขับรถทางขวามือของถนน
  • ป้ายบอกวิธีการขับขี่บนถนนสายใดสายหนึ่ง
  • หน่วยการวัด (ส่วนใหญ่) เป็นกม./ชม.
  • เชื้อเพลิงที่ใช้ในรถเป็นส่วนผสมและมาตรฐานที่แน่นอน
  • ผู้ขับขี่ได้รับการฝึกอบรมและคาดว่าจะปฏิบัติตามมาตรฐานการขับขี่ที่กำหนด

ตอนนี้ คุณอาจแนะนำ (ฉันไม่ใช่คนที่มีวัฒนธรรมแบบนั้นและให้ใบอนุญาตบทกวีแก่ตัวเอง) ว่าถนนในยุโรปนั้น "เป็นไปตามมาตรฐาน" ซึ่งกันและกัน เช่น ถ้าคุณเรียนรู้ที่จะขับรถในสเปน คุณสามารถขับรถได้ทุกที่ในยุโรป อาจใช้กับรถคันเดียวกันหรืออย่างน้อยก็อาจเป็นรถคนละคันโดยที่ส่วนต่อท้ายและไม้ทั้งหมดอยู่ในตำแหน่งที่คุณคาดว่าจะเป็น

ตัวอย่างเช่น คุณสามารถคิดค้นวิธีการขับรถแบบใหม่ทั้งหมด โดยอาจใช้ป้ายที่แตกต่างกันโดยสิ้นเชิง โดยคุณขับรถข้างใดข้างหนึ่งของถนน ใช้จอยสติ๊กในการขับรถ และคุณวัดระยะทางเป็นหน่วยลูกบาศก์ต่อชั่วโมง อย่างไรก็ตาม การโยกย้ายไปยังระบบดังกล่าวจาก สิ่งที่คุณคุ้นเคยต้องใช้ความพยายามมากขึ้น

POSIX นั้นเหมาะกับรุ่นที่คล้ายกัน แต่แทนที่จะเป็นรถยนต์ ถนน ความเร็ว และจุดหมายปลายทาง มันอ้างอิงถึงอินพุต ข้อความ โปรแกรม เอาต์พุต และคุณสมบัติต่างๆ

โดยทั่วไปแล้ว ดีที่สุด (ในฐานะโปรแกรมเมอร์และผู้ใช้) ที่จะมีกฎบางอย่างที่ควบคุมคุณลักษณะ/ฟังก์ชันและอินพุต/เอาต์พุตที่มีให้สำหรับคุณ ดังนั้นคุณอาจเขียนโปรแกรมที่เหมาะกับมาตรฐานเหล่านี้ จากนั้นจึงสร้างโปรแกรมเดิมขึ้นมาใหม่เพื่อให้ทำงานต่อไปได้โดยไม่ต้องใช้ความพยายามมากนัก ระบบอื่นซึ่งใช้อินพุต/เอาต์พุตเดียวกันด้วย

ตัวอย่างเช่น ระบบ Linux เรียก อ่าน และ เขียน เป็นไปตามมาตรฐาน posix พวกเขารับอินพุตบางอย่างในลำดับที่แน่นอนและส่งคืนเอาต์พุตบางอย่างพร้อมกฎที่ควบคุมว่าเอาต์พุตนั้นอาจเป็นหรือเป็นตัวแทนในบางสถานการณ์

คุณสามารถเขียนโปรแกรมบน Linux ที่เปิดไฟล์สองไฟล์ได้ อ่าน และ เขียน เพื่อถ่ายโอนข้อมูลระหว่างกันและปิดอีกครั้ง จากนั้นอาจสร้างใหม่เพื่อให้ทำงานบน Mac ได้โดยไม่ต้องเขียนซอร์สโค้ดพื้นฐานใหม่

อย่างไรก็ตาม คุณยังสามารถดำเนินการแบบเดียวกันได้ -- เร็วขึ้นมาก -- โดยการเปิดไฟล์สองไฟล์โดยใช้ไฟล์ ส่งไฟล์ การเรียกของระบบเพื่อย้ายข้อมูลระหว่างกันและปิดอีกครั้ง (เว้นแต่คุณจะใช้เคอร์เนลที่เก่ามาก) ปัญหาที่นี่คือว่า ส่งไฟล์ การโทรของระบบ ไม่ใช่ สอดคล้องกับ POSIX -- คุณไม่สามารถรับประกันได้ว่าการเรียกระบบดังกล่าวมีอยู่อย่างถูกต้องบนระบบเพื่อทำสิ่งที่คุณต้องการ

ในความเป็นจริง หากคุณตรวจสอบหน้าคนของ Mac สำหรับ ส่งไฟล์ การโทรแม้ว่าจะเรียกว่าการดำเนินการเดียวกัน แต่ก็ใช้ชุดพารามิเตอร์ที่แตกต่างกันและมีคุณสมบัติที่แตกต่างกัน (นอกจากนี้ ในทางเทคนิคคุณไม่สามารถใช้มันเพื่อคัดลอกจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่งบนดิสก์ได้)

ดังนั้นคุณจึงไม่สามารถรันโปรแกรมโดยใช้ลินุกซ์ได้ ส่งไฟล์ คาดเดาได้ในระบบอย่างน้อยโดยไม่ต้องเปลี่ยนโปรแกรมหรือใช้ชั้นความเข้ากันได้อื่น ๆ

นี่คือเหตุผลที่ผู้คนสนใจเกี่ยวกับ POSIX หลีกเลี่ยงการประดิษฐ์วงล้อใหม่และอาจอนุญาตให้คุณย้ายไปยังระบบปฏิบัติการ 'ที่สอดคล้องกับ posix' โดยรวมที่ดีขึ้น หรืออย่างน้อยก็มุ่งเน้นไปที่การส่งมอบผลิตภัณฑ์ของคุณแทนที่จะกังวลเกี่ยวกับคุณภาพของวัสดุที่ใช้สร้างรากฐาน

ฉันได้ข้ามสิ่งที่เกี่ยวกับเมื่อ POSIX ไม่ได้รับการปฏิบัติตามอย่างแท้จริงและสมบูรณ์แม้แต่โดยผู้ที่อ้างว่าระบบของพวกเขาเป็นไปตาม POSIX แต่นั่นคือแนวคิดของแนวคิดนี้

ประเด็นสุดท้ายที่ฉันอยากจะทำให้ชัดเจน หากคุณเขียนโค้ดเป็นตัวส่วนร่วมที่ต่ำที่สุดของมาตรฐาน (เช่น POSIX) คุณจะพลาดประสิทธิภาพที่เพิ่มขึ้นอย่างมาก มิฉะนั้น คุณอาจใช้ประโยชน์จากส่วนขยายที่ไม่ได้มาตรฐานบนระบบปฏิบัติการที่คุณกำลังเขียนโค้ด

ดังนั้นมันจึงเป็นทางเลือกในการออกแบบด้วย หากคุณตั้งเป้าไปที่ประสิทธิภาพสูง/ปริมาณงานสูง เพื่อให้ได้สิ่งนั้น คุณอาจไม่เขียนโค้ดให้สอดคล้องกับ POSIX

แม้ว่าการจ้างโปรแกรมเมอร์ที่รู้วิธีเขียนโปรแกรม 'Posixally' (รู้วิธี เปิด, อ่าน, เขียน เธรด และ ปิด ทำงานใน POSIX) จะตรงไปตรงมามากกว่าการจ้างคนที่เขียนโปรแกรมเฉพาะมาตรฐานที่ไม่ได้ใช้แปลกๆ

ดังนั้นมันจึงไม่ใช่แค่เรื่องสมรรถนะ (รถยนต์) แต่ยังรวมถึงศักยภาพในการปรับตัว (ความชำนาญในการขับขี่รถยนต์ด้วย)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา