কারণ কেন TCP / IP এর সকেট ব্যবহার ফাইল বর্ণনাকারী যে, যখন সকেট ইন্টারফেস প্রথম পরিকল্পিত এবং বাস্তবায়ন (হয়েছিল বাসদ ইউনিক্স মধ্যে 1983 সালে ), তার ডিজাইনার মনে হয়েছে যে, একটি নেটওয়ার্ক সংযোগ একটি ফাইলে অনুরূপ ছিল - আপনি যা করতে পারেন read
, write
এবং close
উভয় , এবং এটি "সবকিছুই একটি ফাইল" এর ইউনিক্স ধারণার সাথে পুরোপুরি ফিট করে।
অন্যান্য টিসিপি / আইপি নেটওয়ার্ক স্ট্যাক বাস্তবায়নগুলি তাদের ওএসের ফাইল-আই / হে সাবসিস্টেমের সাথে অগত্যা একীভূত হয়নি, এটি ম্যাকটিসিপি হ'ল একটি উদাহরণ । তবে বিএসডি সকেট ইন্টারফেসটি এত জনপ্রিয় ছিল, এমনকি এই অন্যান্য বাস্তবায়নগুলি সকেট এপিআইটিকে তার ইউনিক্সের মতো ফাংশনগুলির সাথে প্রতিলিপি করতে বেছে নিয়েছে, সুতরাং আপনি "ফাইল বর্ণনাকারী" পেয়েছেন, কেবলমাত্র টিসিপি / আইপি যোগাযোগের জন্য ব্যবহৃত সিস্টেমগুলিতে যা অন্যথায় না ফাইল বর্ণনাকারী আছে।
আপনার প্রশ্নের অন্য অংশটি কেন সীমা আছে? কারণ একটি ফাইল বর্ণনাকারী সন্ধানের সারণি কার্যকর করার দ্রুততম উপায়টি একটি অ্যারের সাথে রয়েছে। .তিহাসিকভাবে, সীমাটি কার্নেলের মধ্যে কঠোরভাবে কোডড ছিল।
ইউনিক্সের কোডটি এখানে প্রকাশিত 7-টি (1979) একটি হার্ড-কোডড সীমা সহ প্রক্রিয়া অনুসারে 20 ফাইল বর্ণনাকারী:
তুলনা করে, লিনাক্স গতিশীলভাবে একটি প্রক্রিয়া ফাইল বর্ণনাকারী টেবিলের জন্য স্থান বরাদ্দ করে। নিখুঁত সীমাটি 8192 এ ডিফল্ট হয় তবে আপনি এটি যা পছন্দ করতে পারেন সেট করতে পারেন। আমার সিস্টেম 191072 এ তালিকাবদ্ধ করে /proc/sys/fs/file-max
।
লিনাক্সে আর কোনও নিরঙ্কুশ সীমা না থাকা সত্ত্বেও আমরা প্রোগ্রামগুলিকে পাগল হতে দিতে চাই না, তাই অ্যাডমিনিস্ট্রেটর (বা বিতরণ প্যাকেজার) সাধারণত সংস্থানগুলির সীমাবদ্ধতা নির্ধারণ করে। একবার দেখুন /etc/security/limits.conf
, বা চালান ulimit -n
।