init প্রক্রিয়া: সমস্ত প্রক্রিয়ার পূর্বপুরুষ?


26

আমি সবসময় শিখেছি যে আরম্ভ প্রক্রিয়াটি সমস্ত প্রক্রিয়ার পূর্বপুরুষ। প্রক্রিয়া 2 এর 0 পিপিআইডি থাকে কেন?

$ ps -ef | head -n 3
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 May14 ?        00:00:01 /sbin/init
root         2     0  0 May14 ?        00:00:00 [kthreadd]

উত্তর:


32

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

আধুনিক লিনাক্স সিস্টেমে অতিরিক্ত কয়েকটি প্রক্রিয়া রয়েছে যা কার্নেল কোড চালায়, তবে সময়সূচী সম্পর্কিত হিসাবে ব্যবহারকারী প্রসেস হিসাবে পরিচালিত হয়। (কার্নেল কোড চালাচ্ছেন বলে তারা সাধারণ মেমরি পরিচালনার নিয়ম মানেন না)) এই প্রক্রিয়াগুলি সমস্তই তৈরি করা হয় kthreadd(এটি কার্নেল থ্রেডের সূচনা)। আপনি তাদের প্যারেন্ট প্রসেস আইডি (2) বা সাধারণত psতাদের বর্গাকার বন্ধনীগুলির মধ্যে একটি নামের সাথে তালিকার সাথে বা /proc/2/exe(সাধারণত কার্যকরভাবে প্রক্রিয়াটির কার্যকর করার জন্য একটি প্রতীকী লিঙ্ক) পড়া যায় না এমন তথ্য দ্বারা তাদের সনাক্ত করতে পারেন।

1 ( init) এবং 2 ( kthreadd) প্রক্রিয়াগুলি বুট সময়ে সরাসরি কার্নেল দ্বারা তৈরি করা হয়, সুতরাং তাদের কোনও পিতামাতাই নেই। তাদের পিপিড ক্ষেত্রে 0 টি মানটি এটি নির্দেশ করতে ব্যবহৃত হয়। 0 কে এখানে "কর্নেল নিজেই" অর্থ হিসাবে ভাবেন।

লিনাক্সের কার্নেলের ব্যবহারকারীর প্রসেস শুরু করার জন্য কিছু সুবিধা রয়েছে যার অবস্থানটি নির্দিষ্ট পরিস্থিতিতে সিসটেল প্যারামিটারের মাধ্যমে নির্দেশিত হয় । উদাহরণস্বরূপ, কার্নেলটি মডিউল লোডিং ইভেন্টগুলিকে ট্রিগার করতে পারে (উদাহরণস্বরূপ যখন নতুন হার্ডওয়্যার সন্ধান করা হয়, বা যখন কিছু নেটওয়ার্ক প্রোটোকল প্রথম ব্যবহৃত হয়) প্রোগ্রামটিকে kernel.modprobeসিসেক্টল মানটিতে কল করে । যখন কোনও প্রোগ্রাম কোর ডাম্প করে, কার্নেল প্রোগ্রামটি kernel.core_patternযদি কল করে তবে তা কল করে ।


1
তাই initসব "পূর্বপুরুষ" হয় user threads, যখন [kthreadd ]সব "পিতা বা মাতা" হয় kernel threads, ঠিক? ধন্যবাদ!
নান জিয়াও

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