বিভিন্ন প্রসেসে একই এফডি একই ফাইলের দিকে কীভাবে নির্দেশ করতে পারে?


25

বলুন আমার কাছে প্রক্রিয়া 1 এবং প্রক্রিয়া 2 রয়েছে । উভয়ের কাছে পূর্ণসংখ্যা 4 এর সাথে সম্পর্কিত একটি ফাইল বর্ণনাকারী রয়েছে।

প্রতিটি প্রক্রিয়াতে ফাইল বর্ণনাকারী 4 কার্নেলের ওপেন ফাইল সারণীতে সম্পূর্ণ ভিন্ন ফাইলের দিকে নির্দেশ করে:

এখানে চিত্র বর্ণনা লিখুন

কীভাবে সম্ভব? কোনও ফাইল বিবরণকারীকে ওপেন ফাইল সারণিতে কোনও রেকর্ডের সূচক হিসাবে মনে করা উচিত নয়?


1
ভাল প্রশ্ন! আমার অনুমান যে ফাইল বর্ণনাকারীদের অনুবাদ করা হয়েছে, যাতে 4উভয় প্রসেসে এফডি এটির নিজের খোলার এফডির সংখ্যার সাথে সম্পর্কিত। FD এর 0-2(stdin, stdout- এ, sdterr) সবসময় একটি নতুন প্রক্রিয়ার জন্য খোলা এবং সংখ্যার শুধু তাই প্রক্রিয়ার জন্য সংরক্ষিত নেই।


@ jw013 আমি ভেবেছিলাম এটি পরিচিত হবে। P @ পিথিকোস এটি কীভাবে নকল নয়?
মাইকেল মরোজেক

1
এটি একটি দুর্বল চিত্র - এটি দেখানো উচিত যে ফাইল বর্ণনাকারী 4 এর অর্থ বামদিকে ফাইল বর্ণনাকারী টেবিলের চতুর্থ প্রবেশ [ভাল, পঞ্চম, এটি শূন্য থেকে গণনা করা হয়েছে], একটি এন্ট্রি নয় যা "4" রয়েছে। প্রকৃত "4" নম্বরটি আপনার ব্যবহারকারী স্পেসে পরিবর্তনশীল থাকে। অন্য প্রশ্নের চিত্রটি আরও ভাল।
র্যান্ডম 832

2
@ র্যান্ডম 832 ভাল যদি আমি জানতাম কোন ডায়াগ্রামটি সঠিক ছিল তবে আমি সম্ভবত কখনও এই প্রশ্নটি করতাম না।
পিথিকোস

উত্তর:


35

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


2
রেকর্ডের জন্য, বেশিরভাগ সিস্টেমে কেবলমাত্র একটি "ফাইল বর্ণনাকারী পতাকা" রয়েছে, এক্স-এক্স-এক্সিকিউট ফ্ল্যাগ। অন্যান্য সমস্ত "প্রতি-এফডি" অবস্থা (অফসেট এবং অ্যাক্সেস মোড সহ) উন্মুক্ত ফাইল সারণী প্রবেশের অংশ।
র্যান্ডম 832

24

প্রতিটি প্রক্রিয়ার নিজস্ব ফাইল বর্ণনাকারী টেবিল থাকে। প্রক্রিয়ায় ফাইল বর্ণনাকারী 4 1234 পয়েন্টের অভ্যন্তরে 1234 পয়েন্টের অভ্যন্তরে রয়েছে 34 প্রক্রিয়া 566 এর টেবিলের মধ্যে 563 পয়েন্টের প্রক্রিয়াতে ফাইল বিবরণকারী 4 ফাইল করুন। আপনি যে কেসটির সাথে পরিচিত হতে হবে তা হ'ল ফাইল বর্ণনাকারী 0, 1 এবং 2 যা প্রতিটি প্রক্রিয়াটির জন্য স্ট্যান্ডার্ড ইনপুট, স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি, যেখানে এগুলিতে পুনঃনির্দেশিত হয়েছিল সেখানে নির্দেশ করে।

একটি প্রক্রিয়া একই ফাইলটি একাধিকবার খুলতে পারে। এটি কাকতালীয়ভাবে ঘটতে পারে, উদাহরণস্বরূপ, যখন কোনও প্রক্রিয়াটির স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি একই টার্মিনাল বা একই ফাইলটিতে পুনঃনির্দেশিত হয়। অন্তর্নিহিত ফাইল টেবিল এন্ট্রি (যেমন লিনাক্সstruct file ) ফাইল সম্পর্কিত তথ্যের চেয়ে বেশি বহন করে; এগুলিতে খোলার মোডগুলি রয়েছে (যেমন পড়ুন বা লিখুন) এবং অন্যান্য রাষ্ট্র (যেমন পতাকা, যেমন ক্লোজ-অন-এক্সিকিউট)। উদাহরণস্বরূপ, কোনও প্রক্রিয়াতে কেবল ফাইল বর্ণনাকারী 0 এ পড়ার জন্য একটি টার্মিনাল খোলা হতে পারে এবং একই টার্মিনালটি কেবল ফাইল বর্ণনাকারীর উপর লেখার জন্য খোলা হয় File ফাইল টেবিলের এন্ট্রিগুলিতেও ফাইলটিতে প্রক্রিয়াটির অবস্থান থাকে; একটি প্রক্রিয়া lseekএকই ফাইলে দুটি পৃথক অবস্থান করতে চায় এবং তাই সেই ফাইলটিতে dupদুটি হ্যান্ডলগুলি ব্যবহার করতে পারে।


2
এটি সম্পূর্ণ সঠিক নয়। ম্যান পৃষ্ঠা / চশমা অনুসারে, dupটিনের উপরে এটি যা বলেছে ঠিক তেমনই করে: ফলস্বরূপ উভয় বর্ণনাকারী একই ফাইল টেবিলের প্রবেশের দিকে ইঙ্গিত করে এবং এইভাবে একই অফসেটটি ভাগ করে দেয়। 2 টি পৃথক ফাইল সারণী এন্ট্রি পেতে, আমি নিশ্চিত যে আপনার openদুবার ফাইলের প্রয়োজন ।
jw013

@ গিলস "ফাইলের বর্ণনাকারী 4 প্রক্রিয়ায় 1234 পয়েন্টের মধ্যে 1234 পয়েন্টের প্রক্রিয়া চলছে" আপনি কোন টেবিল বলতে চাইছেন? প্রক্রিয়াটির একমাত্র সারণীটি আমি যা জানি তা থেকে ফাইল বর্ণনাকারী সারণি যেখানে প্রতিটি রেকর্ডটি কার্নেলের একক ওপেন ফাইল সারণিকে নির্দেশ করে ।
পিথিকোস

আরও সুনির্দিষ্ট বর্ণনার জন্য unix.stackexchange.com/questions/195057/… দেখুন ।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

8

প্রতিটি প্রক্রিয়ার নিজস্ব ফাইল বর্ণনাকারী টেবিল থাকে। এখানেই শেষ.

রিচার্ড স্টিভেন্সের ইউনিক্স নেটওয়ার্ক প্রোগ্রামিং- এ এটি খুব সুন্দরভাবে বর্ণিত হয়েছে যদি আপনি এটি গভীরভাবে শিখতে চান।


আপনি কোন টেবিলের কথা উল্লেখ করছেন?
পিথিকোস

1
ফাইল বর্ণনাকারী সারণী
মাইকেলł Šরাজের

7

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


2
উৎস জ্ঞানী বৃদ্ধলোক সম্ভবত ডেভিড হুইলার হয়। দেখা যাচ্ছে তিনি আরও বলেছিলেন, " তবে এটি সাধারণত অন্য একটি সমস্যা তৈরি করবে। " :)
jw013
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.