টিসিপি / আইপি সকেটগুলিকে "ওপেন ফাইল" হিসাবে বিবেচনা করা হয় কেন?


29

লিনাক্সের একটি মৌলিক ধারণা: খোলার ফাইলের সীমা আমার কাছে নিশ্চিত যা বোঝার জন্য আমার কিছুটা সহায়তা দরকার। বিশেষত, কেন আমি উন্মুক্ত সকেটগুলিতে কোনও সিস্টেমে "খোলার ফাইল" এর মোট সংখ্যার দিকে গণনা করতে পারি তা নিয়ে আমি বিভ্রান্ত।

কেউ দয়া করে এর কারণ সম্পর্কে বিস্তারিত বলতে পারেন? আমি বুঝতে পারি যে এটি সম্ভবত লিনাক্সের পুরো "সবকিছুই একটি ফাইল" নীতিতে ফিরে আসে তবে কোনও অতিরিক্ত বিশদ প্রশংসা করা হবে।

উত্তর:


34

"ওপেন ফাইলগুলি" এর সীমাটি কেবলমাত্র ফাইলগুলির জন্য নয়। এটি একবারে একক প্রক্রিয়া ব্যবহার করতে পারে এমন কার্নেলের সংখ্যার সীমাবদ্ধতা । .তিহাসিকভাবে, প্রোগ্রামগুলি সাধারণত প্রচুর পরিমাণে ফাইল খুলতে পারে, তাই এটি ওপেন ফাইলের সংখ্যার সীমা হিসাবে পরিচিতি লাভ করে। প্রক্রিয়াগুলি বলতে প্রচুর পরিমাণে ফাইল খোলা এবং দুর্ঘটনাক্রমে সেগুলি বন্ধ করতে ভুলে যাওয়া থেকে প্রক্রিয়াগুলি রোধে সহায়তা করার সীমা রয়েছে which যা পরিণামে সিস্টেম-ব্যাপী সমস্যা তৈরি করবে।

সকেট সংযোগটিও একটি কর্নেল হ্যান্ডেল। সুতরাং একই সীমা একই কারণে একই কারণে প্রযোজ্য - নেটওয়ার্ক সংযোগ খোলার এবং এগুলি বন্ধ করতে ভুলে যাওয়া কোনও প্রক্রিয়ার পক্ষে সম্ভব।

মন্তব্যে উল্লিখিত হিসাবে, কার্নেল হ্যান্ডলগুলি tradition তিহ্যগতভাবে ইউনিক্সের মতো সিস্টেমে ফাইল বর্ণনাকারী বলা হয় ।


23
"কার্নেল হ্যান্ডলস" একটি উইন্ডোজ পরিভাষা। আপনি বরং "ফাইল বর্ণনাকারী" উল্লেখ করতে চাই যা ইউনিটস এবং লিনাক্সের সাহায্যে এই সত্তাগুলি কীভাবে সাধারণত ডাকা হয়।
jlliagre

11
এই উত্তরটি খুব বেশি হেজ করে। সকেট হয় ফাইল। এগুলি read/ writeইন্টারফেসের মাধ্যমে বাইটের স্ট্রিমগুলিতে অ্যাক্সেস সরবরাহ করে যা এটি ফাইল হওয়ার অর্থ কী তা হৃদয়স্থল।

4
@ WumpusQ.Wumbley, তবে তারপরে আপনার সিস্টেমে shutdown(2)ফাইল রয়েছে তবে ফাইলগুলিতে নয় এবং আপনি কোনও সকেট ব্যবহার করে পড়তে পারবেন না cat- কারণটি netcatতৈরি করা হয়েছে। আমি বলব যে ইউনিক্সের মতো কার্নেলগুলির (ভাগ্যক্রমে) সকেটগুলি I / O এর ক্ষেত্রে ফাইলগুলির মতো আচরণ করে তবে মিলটি ঠিক সেখানেই শেষ হয়। (সত্যি বলতে, আমি প্ল্যান 9 এর অভিজ্ঞতার সাথে কারও কাছ থেকে শুনতে চাই কারণ আমি শুনেছি যে তারা এই জিনিসগুলিকে .তিহ্যবাহী কাজগুলির চেয়ে আরও বেশি সংহত করেছে)।
kostix

@ মাইকেবি, এই বইটি আপনাকে বেশিরভাগ ইউনিক্স-সম্পর্কিত ধারণাগুলির সাথে গতিময় করে তুলতে হবে। অত্যন্ত বাঞ্ছনীয়.
kostix

3
"সবকিছুই একটি ফাইল" ধারণাটির অর্থ "ফাইল" হ'ল একটি বিমূর্ত ডেটা অনেক ধরণের টাইপযুক্ত type সমস্ত ফাইলে সমর্থন করে এমন বেসিক স্টাফ ছাড়াও বেশিরভাগ সাব টাইপ অতিরিক্ত পদ্ধতি সমর্থন করে। সকেট অতিরিক্ত অতিরিক্ত আছে। ব্লক ডিভাইস এবং নিয়মিত ফাইলগুলি সন্ধান করেছে। ডিরেক্টরিগুলি সত্যই অদ্ভুত (লেখার ফলে কাজ হয় না এবং যদি এটি কাজ করে তবে এটি কার্যকর নয়)। অতিরিক্ত পদ্ধতির উপস্থিতি মানে এই নয় যে এই জিনিসগুলিকে আমরা "ফাইল" বলি তার সাধারণ বিভাগের অংশ নয়।

27

কারণ কেন TCP / IP এর সকেট ব্যবহার ফাইল বর্ণনাকারী যে, যখন সকেট ইন্টারফেস প্রথম পরিকল্পিত এবং বাস্তবায়ন (হয়েছিল বাসদ ইউনিক্স মধ্যে 1983 সালে ), তার ডিজাইনার মনে হয়েছে যে, একটি নেটওয়ার্ক সংযোগ একটি ফাইলে অনুরূপ ছিল - আপনি যা করতে পারেন read, writeএবং closeউভয় , এবং এটি "সবকিছুই একটি ফাইল" এর ইউনিক্স ধারণার সাথে পুরোপুরি ফিট করে।

অন্যান্য টিসিপি / আইপি নেটওয়ার্ক স্ট্যাক বাস্তবায়নগুলি তাদের ওএসের ফাইল-আই / হে সাবসিস্টেমের সাথে অগত্যা একীভূত হয়নি, এটি ম্যাকটিসিপি হ'ল একটি উদাহরণ । তবে বিএসডি সকেট ইন্টারফেসটি এত জনপ্রিয় ছিল, এমনকি এই অন্যান্য বাস্তবায়নগুলি সকেট এপিআইটিকে তার ইউনিক্সের মতো ফাংশনগুলির সাথে প্রতিলিপি করতে বেছে নিয়েছে, সুতরাং আপনি "ফাইল বর্ণনাকারী" পেয়েছেন, কেবলমাত্র টিসিপি / আইপি যোগাযোগের জন্য ব্যবহৃত সিস্টেমগুলিতে যা অন্যথায় না ফাইল বর্ণনাকারী আছে।

আপনার প্রশ্নের অন্য অংশটি কেন সীমা আছে? কারণ একটি ফাইল বর্ণনাকারী সন্ধানের সারণি কার্যকর করার দ্রুততম উপায়টি একটি অ্যারের সাথে রয়েছে। .তিহাসিকভাবে, সীমাটি কার্নেলের মধ্যে কঠোরভাবে কোডড ছিল।

ইউনিক্সের কোডটি এখানে প্রকাশিত 7-টি (1979) একটি হার্ড-কোডড সীমা সহ প্রক্রিয়া অনুসারে 20 ফাইল বর্ণনাকারী:

তুলনা করে, লিনাক্স গতিশীলভাবে একটি প্রক্রিয়া ফাইল বর্ণনাকারী টেবিলের জন্য স্থান বরাদ্দ করে। নিখুঁত সীমাটি 8192 এ ডিফল্ট হয় তবে আপনি এটি যা পছন্দ করতে পারেন সেট করতে পারেন। আমার সিস্টেম 191072 এ তালিকাবদ্ধ করে /proc/sys/fs/file-max

লিনাক্সে আর কোনও নিরঙ্কুশ সীমা না থাকা সত্ত্বেও আমরা প্রোগ্রামগুলিকে পাগল হতে দিতে চাই না, তাই অ্যাডমিনিস্ট্রেটর (বা বিতরণ প্যাকেজার) সাধারণত সংস্থানগুলির সীমাবদ্ধতা নির্ধারণ করে। একবার দেখুন /etc/security/limits.conf, বা চালান ulimit -n


এই বিষয়টির সেরা উত্তরের একটি, ধন্যবাদ
ব্যবহারকারী 859375

6

ফাইলগুলি কেবল ডিস্কে বা মেমরিতে থাকা ফাইল নয়; তারা ডেটা স্ট্রিম, যার মধ্যে সেগুলি দুটি উদাহরণ।

রিমোট এন্ডপয়েন্টগুলি তৃতীয় উদাহরণ এবং আপনি সকেটগুলি ব্যবহার করে তাদের সাথে ইন্টারঅ্যাক্ট করেন।


2
ইউ ও এল.এসই তে আপনাকে স্বাগতম। আমি এই উত্তরটি পছন্দ করি।
eyoung100
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.