লিনাক্সে খোলা ফাইল এবং চলমান প্রক্রিয়াগুলির সংখ্যা সীমাবদ্ধ কেন?


14

অপারেটিং সিস্টেমের অভ্যন্তরীণ কাজগুলি সম্পর্কে আমার খুব বেশি জ্ঞান নেই, তবে লিনাক্সে কেন আমাদের সর্বাধিক সংখ্যক খোলার ফাইল এবং চলমান প্রক্রিয়াগুলির সীমা থাকবে?

যদি কেউ আমাকে বুঝতে সাহায্য করতে পারে তবে আমি এটির প্রশংসা করব।

উত্তর:


16

এটি মূলত historicalতিহাসিক কারণে। পুরানো লিনাক্স মেইনফ্রেমে, অনেক ব্যবহারকারী মেইনফ্রেমের সংস্থানগুলি সংযুক্ত করে ব্যবহার করতে পারেন। অবশ্যই এটি সীমাবদ্ধ করা প্রয়োজন, এবং যেহেতু ফাইল হ্যান্ডলগুলি এবং প্রক্রিয়াগুলি যেমন কার্নেলের মধ্যে নির্মিত হয়েছিল তাই এটি সেখানে সীমাবদ্ধ ছিল। এটি কাঁটাচামচের বোমার মতো আক্রমণকে সীমাবদ্ধ করতেও সহায়তা করে । প্রক্রিয়া সীমা ব্যবহার করে ফর্ম বোমার বিরুদ্ধে একটি প্রতিরক্ষা এখানে দেখানো হয়েছে

এটি কাঁটাচামচ বোমা যা করার চেষ্টা করে তার মতোই পলাতক কাঁটাচামক ও ফাইল খোলার অনুমতি না দিয়ে জটিল পরিষেবা এবং ডেমোনগুলিকে তদারকি করতে সহায়তা করে।

এছাড়াও লক্ষণীয় যে র‌্যাম এবং সিপিইউয়ের পরিমাণ উপলব্ধ like সাধারণত প্রোগ্রামার এবং সিস্টেম প্রশাসক দ্বারা সেট করা এর উপরে set যাইহোক, আপনার 4294967296 প্রক্রিয়া হওয়ার অনেক আগে, আপনার মেশিনটি সম্ভবত পরিকল্পনা অনুসারে পুনরায় বুট করা হয়ে থাকতে পারে অথবা অন্য কোনও উত্সাহীন হয়ে থাকার কারণে এটি লক করা শুরু করেছিল।

আপনি যদি 584 টিআইবি মেমরির সাহায্যে টাইটান চালনা না করেন (আপনি পারবেন না, যেহেতু লিনাক্স একটি সুপার কম্পিউটারে একটি উদাহরণ হিসাবে চালানো যায় না), আপনি সম্ভবত এই প্রক্রিয়া সীমাটি শীঘ্রই পৌঁছাতে পারবেন না। তারপরেও, গড় প্রক্রিয়াটি মোটামুটি 146KB মেমরি থাকবে, ভাগ না করা মেমরি ধরে নিবে।


2
কাঁটা বোমার জন্য +1, দেখিয়েছে যে সতর্কতা ছাড়াই শেল ব্যবহার করা গেলে এই পুনরাবৃত্তির পদ্ধতিগুলি কতটা বিপজ্জনক হতে পারে!
ওরফে_লাইনার

9

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

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

তারপরে হার্ডওয়্যার দ্বারা সীমাবদ্ধতা রয়েছে যেমন কোনও পূর্ণসংখ্যা বা চরিত্রের আকার। আপনার যদি 32-বিট সিস্টেম থাকে তবে পূর্ণসংখ্যার সর্বোচ্চ আকার দ্বারা সীমাবদ্ধতা রয়েছে (স্বাক্ষরিত না হলে 4,294,967,295, বা স্বাক্ষরিত হলে অর্ধেক)।


1
স্বেচ্ছাসেবী প্রদর্শিত সীমা আসলে মান ভিত্তিক হতে পারে। আন্তর্জাতিক মানের ডাক ঠিকানা লাইন 39 টি অক্ষরে সীমাবদ্ধ। এ জাতীয় সীমা নির্বিচারে উপস্থিত হতে পারে। কোনও ঠিকানার জন্য 60 টি অক্ষরের সীমা সম্ভবত নির্বিচারে হবে। দুর্ভাগ্যক্রমে, খুব কম প্রোগ্রামার মানদণ্ড পরীক্ষা করে তাই অনেকগুলি (কখনও কখনও সঠিক) সীমাটি নির্বিচারে সিদ্ধান্ত নেওয়া হয়।
বিলথোর

আমি রাজী; যখন আমি এখনও প্রোগ্রামার হিসাবে কাজ করছিলাম তখন আমি অনেক সময় ব্যয় করলাম বিবৃত সীমাগুলির জন্য, যেমনটি আপনি বলেছেন, অথবা ওএসে ম্যাক্রো হিসাবে সংজ্ঞায়িত হয়েছে (যেমন ম্যাক্সপথ ইত্যাদি)। তবে আমি বলতে হবে যে স্বেচ্ছাসেবী সীমা সাধারণত কোনও সীমা ছাড়াই ভাল, বিশেষত ক্ষেত্রের দৈর্ঘ্যের জন্য। :)
মার্টি ফ্রাইড

7

প্রক্রিয়াগুলির জন্য, / proc / sys / কার্নেল / পিড_ম্যাক্স সর্বাধিক পিড অনুমোদিত, সুতরাং এটি যে কোনও প্রসেসের যে তাত্ক্ষণিকভাবে চলতে পারে তার সংখ্যার কঠোর সীমা। যাইহোক, মেমরির সীমাবদ্ধতা সাধারণত এর আগে ভাল খেলায় আসে।

পুরো মেশিনে খোলা ফাইলগুলির উপরের সীমাটির জন্য, / proc / sys / fs / file-max হ'ল হার্ড সীমা; এটি মেশিনে মেমরির পরিমাণের উপর ভিত্তি করে, তাই এটি পৃথক হবে। কার্নেল এটি হতে সেট করে:

    n = (mempages * (PAGE_SIZE / 1024)) / 10;
    files_stat.max_files = max_t(unsigned long, n, NR_FILE);

যা প্রতি 1 এমবি র‌্যামের জন্য প্রায় 100 হয়ে থাকে।

প্রতি প্রক্রিয়া সীমা পৃথক। ulimit এগুলি সংজ্ঞায়িত করবে।


-5

কম্পিউটারের সীমাবদ্ধতা রয়েছে বলে আমাদের একটি সীমা রয়েছে, আমার 4 গিগাবাইট র্যাম রয়েছে, তাই আমি এখন 15 টি গেম চালাতে পারি না?

আমি সম্ভবত এটি কিছুটা পিছিয়ে দিয়ে চালাতে পারি তবে এটি মানবিক হবে না, এটি আপনার পিসি এবং লিনাক্সের কর্নালের সীমা, আপনার উপর নিক্ষেপিত কোনও প্রোগ্রাম রাখতে সক্ষম হওয়ার জন্য আপনার আরও ভাল কর্নাল এবং প্রচুর র‌্যামের প্রয়োজন হবে would ।

উইন্ডোজ চালানোর সময় আমার ল্যাপটপের মত আমিও যুদ্ধক্ষেত্র খেলতে পারতাম, তবে এটি আমার র্যামের ৮০% লেগেছিল তাই যদি আমি "গতির জন্য গতি" খেলতে চেষ্টা করি, তবে এটি 60% অবধি গ্রহণ করে, আমি উভয়ই খুলতে পারি তবে আমার সম্পূর্ণ সিস্টেমটি হয় যেহেতু আমি 2 ভারী দায়িত্ব প্রোগ্রাম পরিচালনা করছি, তারা দুজনেই র‌্যামের জন্য লড়াই করছে (র‌্যান্ডম অ্যাক্সেস মেমোরি)

সংক্ষিপ্ত কথায়, একটি সাধারণ কম্পিউটার একবারে প্রচুর প্রোগ্রাম চালাতে পারে না মিউজিক, নোটপ্যাড, ব্রাউজার, ইমেল, গেম, আপনি মনে করেন যে এটি একটি কম্পিউটারে অনেক বেশি তবে এটি নিছক, ওয়ার্কফ্রাস্টের মতো একটি গেম অনেক বেশি র‍্যাম নেয় এবং আপনার কম্পিউটারকে লড়াই করে তোলে (যদি আপনার ব্যয়বহুল ল্যাপটপের মতো 8-16 গিগাবাইট র্যাম না থাকে!)


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

আমি উন্মুক্ত ফাইলগুলির একটি সীমা সম্পর্কে জানি না, আমি এটি মোটেও অনুভব করি না, সম্ভবত এটি আমার কম্পিউটারের তুলনায় আমার তুলনায় সীমিত, আমি এ ব্যাপারে অনিশ্চিত। আমার সর্বদা কয়েকটি 10 ​​টি ফাইল খোলা থাকে, তারপরে একটি ওয়েব ব্রাউজার, সঙ্গীত প্লেয়ার এবং টার্মিনাল খোলা থাকে।
উবিসফ্ট তেরজুজ

এটি আমার সাথে সাধারণত ঘটে যখন আমার মাইএসকিএল ডাটাবেস আমাকে "120428 20:30:01 [ERROR] / usr / sbin / mysqld: ফাইল খুলতে পারে না: './djlabo_open/cart_layout.frm' (এররন: 24)" ত্রুটি লগতে ত্রুটি কারণ লিনাক্স এটি এই ডাটাবেস ফাইলটি খুলতে দিচ্ছে না।
ওরফে_লাইনার

এটি সম্ভবত কিছু অপেক্ষারত তখন ফাইলগুলি খোলার জন্য একটি ওএস সীমা।
Nanne

1
@ টারজুজ এটি সত্যই নির্ভর করে যে লোকেরা একে অপরের উত্তরকে সত্যই সঠিক বলে বিবেচনা করে। অনেক লোককে (দুর্ভাগ্যক্রমে আমাকে সহ) মনে হয় যেন এই উত্তরটি সম্ভবত প্রশ্নের মধ্যে বর্ণিত সীমাটি নয়, তবে অন্যান্য সীমাগুলিকে সম্বোধন করছে।
মনিকা পুনরায় ইনস্টল করুন - ζ--
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.