سؤال

ما هي المفاضلة بين استخدام نظام V و Posix إشارة?

هل كانت مفيدة؟

المحلول

من أورايلي:

  • أحد فرق واضح بين النظام V POSIX سيمافور تطبيقات في النظام V يمكنك التحكم في مقدار الإشارة العد يمكن أن يزيد أو ينقص;بينما في POSIX ، إشارة العد هو زيادة بنسبة 1.
  • POSIX الإشارات لا تسمح التلاعب إشارة الأذونات ، في حين أن نظام V الإشارات تسمح لك لتغيير أذونات الإشارات إلى مجموعة فرعية من الأصلي إذن.
  • التهيئة وإنشاء الإشارات هي الذرية (من المستخدم منظور) في POSIX الإشارات.
  • من استخدام منظور النظام V الإشارات هي الخرقاء ، في حين POSIX الإشارات هي على التوالي إلى الأمام
  • قابلية POSIX الإشارات (باستخدام اسمه الإشارات) بكثير أعلى من نظام V الإشارات.في المستخدم/العميل السيناريو ، حيث أن كل مستخدم يخلق بلدها الحالات من خادم ، سيكون من الأفضل استخدام POSIX الإشارات.
  • النظام الخامس الإشارات ، عند إنشاء إشارة كائن يخلق مجموعة من الإشارات في حين POSIX الإشارات إنشاء واحد فقط.بسبب هذا الميزة ، سيمافور الخلق (الذاكرة البصمة الحكمة) هو أكثر تكلفة في النظام V الإشارات بالمقارنة مع POSIX الإشارات.
  • وقد قيل أن POSIX إشارة أداء أفضل من نظام V القائم على الإشارات.
  • POSIX الإشارات توفير آلية عملية واسعة الإشارات بدلا من ذلك من المنظومة الإشارات.حتى إذا المطور ينسى إغلاق إشارة على عملية الخروج سيمافور هو تنظيف.في بسيط حيث POSIX الإشارات توفير آلية غير ثابتة الإشارات.

نصائح أخرى

واثنين من مشاكل كبيرة مع POSIX المشتركة / الإشارات اسمه المستخدمة في عمليات منفصلة (لا موضوع): توفر الإشارات POSIX لا توجد آلية لايقاظ عملية الانتظار عندما تموت عملية مختلفة في حين عقد قفل الإشارة. هذا النقص في تنظيف يمكن أن يؤدي إلى غيبوبة الإشارات التي سوف يسبب أي عملية أخرى أو اللاحقة التي يحاول استخدامها لطريق مسدود. وهناك أيضا أي وسيلة POSIX من سرد الإشارات في نظام التشغيل لمحاولة تحديد وتنظيفها. قسم POSIX على SysV IPC لا تحدد الدولي للسلامة الكيميائية والأدوات ipcrm لإدراج والتلاعب الموارد SysV IPC العالمية. لم يتم تحديد هذه الأدوات أو حتى آليات POSIX IPC، على الرغم من على لينكس كثيرا ما يمكن العثور على هذه الموارد تحت / SHM. وهذا يعني أن إشارة KILL لعملية خاطئة في الوقت الخطأ يمكن أن طريق مسدود نظام كامل للتفاعل العمليات حتى إعادة التشغيل.

وثمة عيب آخر هو استخدام دلالات ملف الإشارات POSIX. وهذا يعني أن يمكن أن يكون هناك أكثر من واحد مشترك إشارة يحمل نفس الاسم، ولكن في ولايات مختلفة. على سبيل المثال المكالمات عملية sem_open، ثم sem_unlink قبل sem_close. هذه العملية يمكن الاستمرار في استخدام إشارة فقط مثل الفك ملف مفتوح قبل إغلاقه. عملية 2 المكالمات sem_open على نفس الإشارة بين المكالمات sem_unlink وsem_close من عملية 1، و(وفقا لوثائق) يحصل على إشارة العلامة التجارية الجديدة مع نفس الاسم، ولكن في حالة مختلفة من عملية 1. اثنان الإشارات المشتركة بنفس الاسم تعمل بشكل مستقل الهزائم الغرض من الإشارات المشتركة.

وحدود واحدة فوق يجعل POSIX المشتركة الإشارات غير صالحة للاستعمال في نظام العالم الحقيقي دون ضمان أن الإشارات uncatchable لا يمكن إرسالها. الحد اثنين يمكن التخفيف من الترميز دقيق، تولي السيطرة على كل التعليمات البرمجية التي سيتم استخدام إشارة معينة. بصراحة، في دهشة أكثر من قليلا جعلوه في معيار كما هي.

وأعرف أن هذا هو القديم، ولكن لصالح أولئك الذين ما زالوا في هذه القراءة من باب المجاملة جوجل، والسبب رقم 1 أجد لاستخدام الإشارات نظام V على POSIX (على مستوى النظام) الإشارات هو القدرة على الحصول على الموارد الإشارة في طريقة التي يتم إرجاعها تلقائيا من قبل نواة مهما المخارج العملية.

وأوافق على أن مضاعفات نادرا ما تستخدم (ذرية) عمليات ملوحة (على الرغم من أنها يمكن أن تكون مفيدة أثناء انطلاق)، والتي واجهة نظام V هي غريبة، ولكن هناك ببساطة أي وسيلة لتحقيق موثوق نفس دلالات تنظيف مع POSIX الإشارات.

وأتساءل ما الذي يجعل الناس تصميم وAPI سيئة مثل نظام V أعمدة الإشارة ! Uneless لديك أسباب قوية جدا للذهاب مع الإشارات نظام V (مثل عمليات الذرية مع عدة الزيادة و النقصان في خطوة واحدة)، يجب أن العصا مع الإشارات POSIX اسمه.

ويناقش هذا المقال يرتبط ما هو الخطأ وغير بديهية مع نظام V أعمدة الإشارة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top