লিনাক্স আলাদাভাবে কী করছে যা উইন্ডোজ যে ফাইল বর্তমানে ব্যবহার করছে সেই অভিযোগের সাথে ফাইলগুলি সরিয়ে / প্রতিস্থাপনের অনুমতি দেয়?


29

আমার উদাহরণটি মাইনক্রাফ্ট। লিনাক্সে বুককিট চালানোর সময় আমি / প্লাগইন ফোল্ডারে .jar ফাইলগুলি সরিয়ে বা আপডেট করতে পারি এবং কেবল 'রিলোড' কমান্ডটি চালাতে পারি।

উইন্ডোজে, আমাকে পুরো সার্ভার প্রক্রিয়াটি নেমে যেতে হবে কারণ এটি অভিযোগ করবে যে আমি যখন এটি অপসারণ বা প্রতিস্থাপন করার চেষ্টা করি তখন .jar ফাইলটি বর্তমানে ব্যবহার করা হচ্ছে।

এটি আমার কাছে দুর্দান্ত, তবে কেন এটি ঘটে? লিনাক্স এখানে অন্যভাবে কি করছে?

উত্তর:


34

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

নামক মাল্টিলেভাল স্ট্রাকচারে ফাইলটি ডিস্কে রাখা হয় i-node। প্রতিটি আই-নোডের একক ফাইল সিস্টেমে একটি স্বতন্ত্র সংখ্যা রয়েছে। আই-নোড কাঠামো কোনও ফাইল সম্পর্কিত বিভিন্ন তথ্য যেমন ফাইলের আকার, ফাইলের জন্য বরাদ্দকৃত ডেটা ব্লক ইত্যাদি রাখে তবে এই উত্তরের জন্য সবচেয়ে গুরুত্বপূর্ণ ডেটা উপাদানটি হ'ল একটি link counter। এই directoriesফাইলগুলি ফাইলগুলি সম্পর্কে রেকর্ড রাখে। প্রতিটি রেকর্ডে আই-নোড নম্বর থাকে যা ফাইল নামের দৈর্ঘ্য এবং ফাইলের নাম নিজেই উল্লেখ করে। এই স্কিমটিতে একজনকে 'পয়েন্টার' রাখতে, অর্থাত্ বিভিন্ন নামের একই জায়গায় একই লিঙ্কে 'লিঙ্কগুলি' থাকতে দেয়। আই-নোডের লিঙ্ক কাউন্টারটি আসলে এই আই-নোডকে উল্লেখ করে এমন লিঙ্কের সংখ্যা রাখে।

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

একটি ফাইল মুছতে লিনাক্স লাইব্রেরি কল বলা হয় unlink । এই ফাংশনটি একটি ডিরেক্টরি থেকে ফাইল রেকর্ড সরিয়ে দেয় এবং আই-নোডের লিঙ্ক কাউন্টারকে হ্রাস করে। যদি সিস্টেমটি জানতে পারে যে একটি ইন-মেমরি আই-নোড কাঠামো বিদ্যমান রয়েছে এবং এর উন্মুক্ত কাউন্টারটি শূন্য নয় তবে এই কলটি অ্যাপ্লিকেশনটিতে নিয়ন্ত্রণটি ফিরিয়ে দেয়। অন্যথায় এটি পরীক্ষা করে থাকে যে লিংক-কাউন্টারটি শূন্য হয়েছে এবং যদি এটি হয় তবে সিস্টেমটি আই-নোড এবং আই-নোডের জন্য বরাদ্দকৃত সমস্ত ব্লককে মুক্তি দেয় এবং অ্যাপ্লিকেশনটিতে ফিরে আসে।

কোন অ্যাপ্লিকেশন একটি ফাইল বন্ধ করে দেয় তা কী ঘটে? ফাংশনটি close()ওপেন কাউন্টারকে হ্রাস করে এবং এর মান পরীক্ষা করে। যদি মানটি শূন্য হয় তবে ফাংশনটি অ্যাপ্লিকেশনটিতে ফিরে আসে। অন্যথায় এটি আই-নোড লিঙ্কের কাউন্টার শূন্য কিনা তা পরীক্ষা করে। যদি এটি শূন্য হয় তবে এটি অ্যাপ্লিকেশনটিতে ফিরে আসার আগে ফাইল এবং আই-নোডের সমস্ত ব্লককে মুক্ত করে।

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

আরও বেশি, এই বৈশিষ্ট্যটি আপনাকে গ্লাবসি (libc) - সমস্ত অ্যাপ্লিকেশনগুলির মূল গ্রন্থাগার - আপনার সিস্টেমে এর স্বাভাবিক ক্রিয়াকলাপ ব্যাহত না করে আপডেট করতে দেয়।

উইন্ডোজ

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

এই উত্তর। সংক্ষিপ্ত নয়, তবে এখন আপনার ধারণাটি রয়েছে।

সম্পাদনা করুন : Win32মেসের উত্সগুলিতে একটি ভাল পঠন : https://blogs.msdn.microsoft.com/oldnewthing/20040607-00/?p=38993 @ জনের ক্রেডিট


1
সার্ভার চলাকালীন প্লাগইন ফাইলটির নাম পরিবর্তন করার চেষ্টা করা হয়েছে: i.imgur.com/xibyF.png
মেটাগুরু

সেন্টিমিডি উইন্ডোটি খুলুন, এই ডিরেক্টরিতে পরিবর্তন করুন এবং ব্যবহার করুন ren MonsterB.jar MonsterB.ja_- এটি কাজ করা উচিত। এটি অবশ্যই dll এবং এক্স ফাইলের জন্য কাজ করে।
সার্জ

1
না, উইন্ডোজ এক্সিকিউটেবল ফাইলের অংশগুলিকে মেমোরিতে মানচিত্র করে দেয়
সার্জ

9
এনটিএফএস আসলে এটি সমর্থন করে, তবে সি লাইব্রেরি fopenকমান্ডটি পতাকাটির CreateFileসাথে কল করে FILE_SHARE_DELETE, তাই এটি বেশিরভাগ প্রোগ্রামগুলির জন্য ফাইলটিকে খোলার অনুমতি দেয় না।
র্যান্ডম 832

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