বিদ্যমান ফাইলটি পুনর্লিখন করুন যাতে এটি পরমাণুভাবে নতুন সংস্করণ দ্বারা প্রতিস্থাপিত হয়, শুধুমাত্র একবার সম্পূর্ণ লিখিত হয়


18

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

অন্য কথায়, অন্যান্য প্রক্রিয়া হয় পুরানো সংস্করণ বা নতুনটি দেখেছিল, কখনও অসম্পূর্ণভাবে লিখিত নয়।

কোন জ্ঞানবান ব্যক্তি আমাকে একটি রেফারেন্সে নির্দেশ করতে পারেন?


প্ল্যান 9 কি করতে পারে তার মত শোনাচ্ছে , তবে তা নয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

2
ওপেনভিএমএস -এ ফাইল -11 এর মতো শব্দগুলি : "প্রতিবার কোনও ফাইল সংরক্ষণ করা হয়, বিদ্যমান সংস্করণটি ওভাররাইট না করে একই নামযুক্ত একটি নতুন ফাইল তবে একটি বর্ধিত সংস্করণ নম্বর তৈরি করা হয় is"
মাদুর

কেন জিজ্ঞাসা করলেন? আপনার কি সেই কার্যকারিতা দরকার, না এটি কেবল কৌতূহল ছিল?
নীল

1
আমি সেই কার্যকারিতাটি পেয়ে খুশি হব এবং কোথাও এটির অস্তিত্বের পড়াটি স্মরণ করলাম। সুতরাং প্রয়োজন এবং কৌতূহল উভয়ের মিশ্রণ।
eudoxos

সমস্ত ইউনিক্স সিস্টেম এটিকে অন্য পদ্ধতিতে অনুমতি দেয় - একই ডিরেক্টরিতে নতুন ফাইল তৈরি করুন, পরিবর্তিত সামগ্রীগুলি পূরণ করুন এবং পারমাণবিক নামকরণ করুন। এটি ছোট পরিবর্তনগুলি কিন্তু কাজের জন্য অনেক বেশি ব্যয়বহুল।
নেট

উত্তর:


14

আপনি যা বর্ণনা করছেন তা হুবহু কোনও ফাইলের ওভাররাইটের জন্য পুনরায় নামকরণের মতো sounds

যখন আপনি একটি ফাইলের অন্যটির উপরে নাম পরিবর্তন / সরান, তখন পুরানো ফাইলটি লিঙ্কমুক্ত থাকে। অর্থ ফাইলটি এখনও বিদ্যমান, তবে এটি আর ফাইল সিস্টেম ট্রিতে নেই। সুতরাং পুরানো অ্যাপ্লিকেশনগুলি যতক্ষণ না ফাইলটি খোলা রাখে ততক্ষণ এটিকে অ্যাক্সেস করতে সক্ষম হতে থাকবে। সমস্ত অ্যাপ্লিকেশন একবার পুরানো ফাইলটি বন্ধ করে দিলে তারপরে এটি আসলে ডিস্কে আনলোকটেড।

renameসিস্টেম কল একটি পারমাণবিক অপারেশন। এটি করার জন্য আপনি একটি পৃথক নামে একটি নতুন ফাইল তৈরি করবেন এবং তারপরে renameঅস্থায়ী ফাইলটির নাম পরিবর্তন করতে চান যা আপনি প্রতিস্থাপন করতে চান। অপারেশনটি পারমাণবিক হওয়ায় ফাইলটি অনুপস্থিত রয়েছে এমন কোনও সময় নেই। এটি তাত্ক্ষণিকভাবে পুরানো ফাইল থেকে নতুন ফাইলে যায়।
নোট করুন যে অস্থায়ী ফাইল এবং ফাইলটি প্রতিস্থাপন করা হচ্ছে একই মাউন্ট পয়েন্টে থাকতে হবে।


আপনি কেবলমাত্র এটি ব্যবহার করতে পারেন যদি আপনার প্রোগ্রামটি নির্দিষ্টভাবে কার্যকারিতার কথা মাথায় রেখে লেখা থাকে। এই ক্ষেত্রে, এটি একটি ওএস বৈশিষ্ট্য ছিল, সেখান থেকে নিয়মিত প্রোগ্রামগুলি স্বয়ংক্রিয়ভাবে এই পারমাণবিক শব্দার্থতত্ত্ব দেওয়া হয়েছিল।
eudoxos

1
@ ইউডক্স আপনার মন্তব্যটি কোনও অর্থহীন নয়। আপনি বলছেন যে renameঅদলবদলের কাজটি করার জন্য প্রোগ্রামগুলিকে বিশেষভাবে লিখতে হবে । এমনকি যদি আপনি যেমন 'ওএস বৈশিষ্ট্য' সম্পর্কে কথা বলছেন তখনও, সেই প্রোগ্রামটির সুবিধা নেওয়ার জন্য এখনও প্রোগ্রামটি লিখতে হবে। পার্থক্য কি?
প্যাট্রিক

আপনি যদি সিস্কলে একটি (সম্ভবত অসমর্থিত) পতাকাটি পাস করেন openবা আপনার হাতে বর্ণিত যা করতে হয় তা পার্থক্য রয়েছে ।
ইউডক্সোস

মনে রাখবেন যে ক্র্যাশ হওয়ার ক্ষেত্রে পুরানো বা পুরোপুরি লিখিত নতুন সংস্করণটি রাখার জন্য আপনাকে নতুন ফাইলটি ডিস্কের সাথে ফিনসিঙ্ক বা অনুরূপের সাথে সিঙ্ক করতে হবে
পাঠ্যক্রম

@texttshell সিঙ্ক ছাড়া আপনি এখনও পরমাণু পেতে পারেন .... ঠিক স্থায়িত্ব নয় ... সঠিক? আমি এই ক্ষেত্রে goo.gl/qfQQfy এ যুক্তিটি বুঝতে পারি না । আমার ক্ষেত্রে আমার চূড়ান্ত বোঝার অধীনে একটি সিস্টেম রয়েছে এবং আমি ফাইল সিস্টেমের ফ্লাশ এড়াতে চাই এবং ফাইলটি ক্র্যাশ থেকে বেঁচে থাকলে আমার কোনও যত্ন নেই।
wcochran

6

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

এখন, কিছু তথ্যসূত্র:


man 3p renameআমাকে বলে যে renameএটি সত্যই পারমাণবিক, এবং আমার ধারণা এটি লিনাক্সের সমস্ত ফাইল সিস্টেমের জন্যই meant এবং আমি যখন আপনি লিঙ্কিত প্রথম নিবন্ধটি পড়েছি তখনও আমি মনে করি যে বিটিআরএফএস পুনর্নবীকরণ অপারেশনগুলি পারমাণবিক।
হেগেলো

1

এটি আমাকে ফ্ল্যাট অন ফ্লাশের স্মরণ করিয়ে দেয় । কোনও ফাইল সিস্টেম যখন এই বৈশিষ্ট্যটি ব্যবহার করে, সরাসরি ডিস্কে ডেটা লেখার পরিবর্তে, এটি ডিস্কের ফ্রি স্পেস কাউন্টার থেকে লেখার জন্য ডেটার আকারকে বিয়োগ করে এবং কোনও সিঙ্ক সিস্টেম কল সঞ্চালিত না হওয়া বা কার্নেল সিদ্ধান্ত না দেওয়া পর্যন্ত মেমরিতে ডেটা ধরে রাখে নোংরা বাফার ফ্লাশ করতে।

এই ক্ষেত্রে, যদি ফাইলটি একটি প্রক্রিয়া দ্বারা সংশোধন করা হয়, এবং অন্য প্রক্রিয়া দ্বারা খোলার পরে থাকে তবে পরবর্তী প্রক্রিয়াটি ফাইলটির আনমোডাইফাইড ( বা "পছন্দ হলে" "পুরানো" ) সংস্করণ "দেখবে" ।

অবশ্যই, উপরেরগুলি তাত্ত্বিক এবং বিভিন্ন কারণের উপর নির্ভরশীল এবং আমি কিছুটা অনাকাঙ্ক্ষিত বলব - যেহেতু কার্নেলটি নোংরা পৃষ্ঠাগুলি কখন প্রবাহিত করবে আপনি ঠিক জানেন না। উদাহরণস্বরূপ লিনাক্সে ( যেমন আপনি লিনাক্স কার্নেল বোঝার বিভাগের 15.3 অনুচ্ছেদেও পড়তে পারেন ), নোংরা পৃষ্ঠাগুলি নিম্নলিখিত শর্তে ডিস্কে লিখিত হয়:

  • পৃষ্ঠার ক্যাশেটি খুব বেশি পূর্ণ হয় এবং আরও পৃষ্ঠাগুলির প্রয়োজন হয়, বা নোংরা পৃষ্ঠাগুলির সংখ্যা খুব বড় হয়ে যায়।

  • একটি পৃষ্ঠা নোংরা থেকে থাকার কারণে খুব বেশি সময় কেটে গেছে।

  • একটি প্রক্রিয়া একটি ব্লক ডিভাইস বা একটি নির্দিষ্ট ফাইলের সমস্ত মুলতুবি পরিবর্তনগুলি ফ্লাশ করার জন্য অনুরোধ করে; এটি একটি সিঙ্ক (), fsync (), বা fdatasync () সিস্টেম কলের সাহায্যে এটি করে।

এই বৈশিষ্ট্যটি এইচএফএস +, এক্সএফএস, রিজার 4, জেডএফএস, বিটিআরএফ এবং এক্সট 4 ফাইল সিস্টেমে প্রয়োগ করা হবে বলে জানা যায়।


2
আপনি যা বর্ণনা করেছেন তা একটি ফাইল সিস্টেম কৌশল যা পসিক্স (ফাইল) সিস্টেমে ইউজারস্পেস থেকে অদৃশ্য হওয়া উচিত (এবং এভাবে আপনি যা নির্দেশ করেন তা করা উচিত নয়) লিখুন দেখুন : "যদি ফাইল ডেটার একটি পঠিত () কোনওভাবেই প্রমাণিত হতে পারে (তবে) ডেটা লেখার () পরে উপস্থিত হওয়ার জন্য অবশ্যই কলটি বিভিন্ন প্রক্রিয়া দ্বারা করা হয়ে থাকলেও তা () লিখতে প্রতিফলিত করে । ")। অন্যান্য প্রক্রিয়াগুলি পুরানো ডেটা দেখতে পাবে না (পসিক্সে)।
মাদুর

সংশোধনীর জন্য ধন্যবাদ. আমার ধারণা এই ফাইল সিস্টেমের কৌশলটি সম্পর্কে আমার বোঝাটি ভুল ছিল।
ডকরাগ্যাসিডিস

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