ইউনিক্স ডোমেন সকেট এবং ফিফো তাদের প্রয়োগের কিছু অংশ ভাগ করতে পারে তবে তারা ধারণাগতভাবে খুব আলাদা। ফিফো খুব নিম্ন স্তরে কাজ করে। একটি প্রক্রিয়া পাইপে বাইট লিখে এবং অন্য একটি এটি থেকে পড়ে। একটি ইউনিক্স ডোমেন সকেটের টিসিপি / আইপি সকেটের মতো আচরণ behavior
একটি সকেট দ্বি নির্দেশমূলক এবং একযোগে প্রচুর প্রক্রিয়া দ্বারা ব্যবহৃত হতে পারে। একটি প্রক্রিয়া একই সকেটে অনেক সংযোগ গ্রহণ করতে পারে এবং একই সাথে বেশ কয়েকটি ক্লায়েন্টকে উপস্থিত হতে পারে। কার্নেল প্রতিবার একটি নতুন ফাইল বর্ণনাকারী সরবরাহ করে connect(2)
বা accept(2)
সকেটে ডাকা হয়। প্যাকেটগুলি সর্বদা সঠিক প্রক্রিয়াতে যাবে।
একটি ফিফোতে, এটি অসম্ভব হবে। দ্বি নির্দেশমূলক যোগাযোগের জন্য আপনার দুটি ফিফো দরকার এবং আপনার প্রতিটি ক্লায়েন্টের জন্য আপনার একজোড়া ফিফো দরকার। নির্বাচনী উপায়ে লেখার বা পড়ার কোনও উপায় নেই, কারণ সেগুলি যোগাযোগের অনেক বেশি প্রাথমিক উপায়।
বেনামে পাইপ এবং FIFO গুলি খুব মিল। পার্থক্যটি হ'ল অজানা পাইপগুলি ফাইল সিস্টেমে ফাইল হিসাবে উপস্থিত নেই তাই কোনও প্রক্রিয়া open(2)
এটি করতে পারে না। এগুলি এমন প্রক্রিয়াগুলি দ্বারা ব্যবহৃত হয় যা তাদের অন্য পদ্ধতিতে ভাগ করে। যদি কোনও প্রক্রিয়া একটি এফআইএফওগুলি খোলে এবং তারপরে সম্পাদনা করে, উদাহরণস্বরূপ, ক fork(2)
, এর শিশু তার ফাইল বিবরণকারী এবং এর মধ্যে পাইপের উত্তরাধিকারী হবে।
UNIX ডোমেন সকেট, বেনামে পাইপ এবং FIFO গুলি ভাগ করে নেওয়া মেমরি বিভাগগুলিতে ব্যবহার করে এমনভাবে একই। বাস্তবায়নের বিশদটি এক সিস্টেম থেকে অন্য সিস্টেমে পরিবর্তিত হতে পারে তবে ধারণাটি সর্বদা একই থাকে: দুটি স্বতন্ত্র প্রক্রিয়া মেমরির ম্যাপিংয়ে মেমরির একই অংশ সংযুক্ত করুন যাতে তাদের ডেটা ভাগ করে নেওয়া হয়
( সম্পাদনা করুন: এটি বাস্তবায়নের একটি সুস্পষ্ট উপায় তবে তা হ'ল) এটি লিনাক্সে কীভাবে করা হয় তা নয়, যা কেবল বাফারদের জন্য কার্নেল মেমরি ব্যবহার করে, নীচে @ tjb63 দ্বারা উত্তর দেখুন)।
এর পরে কার্নেল সিস্টেম কলগুলি পরিচালনা করে এবং প্রক্রিয়াটি বিমূর্ত করে।