বোকচন্দর প্রক্রিয়া কোনও সিস্টেমের সংস্থান ব্যবহার করে না বলে জেম্বো প্রক্রিয়াটির কার্য সম্পাদন বা স্বচ্ছলতার কোনও প্রভাব পড়বে না।
দ্রষ্টব্য: - কার্যতঃ, এটি এখনও পিআইডি (যা একটি সীমাবদ্ধ সংস্থান) ব্যবহার করে, এবং প্রক্রিয়াটির জন্য কার্নেল ডেটা স্ট্রাকচারগুলি এখনও বরাদ্দ করা হয়। সাধারণত, এটি খুব বেশি গুরুত্ব দেয় না, তবে খুব সীমিত মেমরির সিস্টেমগুলিতে কার্নেল মেমরির ব্যবহার উল্লেখযোগ্য হতে পারে।
জম্বি প্রক্রিয়া দ্বারা সমস্যা
প্রতিটি জম্বি প্রক্রিয়া তার প্রক্রিয়া আইডি ধরে রাখে। লিনাক্স সিস্টেমগুলিতে সীমাবদ্ধ সংখ্যক প্রসেস আইডি রয়েছে - 32-বিট সিস্টেমে ডিফল্টরূপে 32767 z
দ্রষ্টব্য : -৪-বিট সিস্টেমে আপনি সর্বাধিক পিআইডি বাড়িয়ে নিতে পারেন, /unix//a/16884/170373 দেখুন
তবে চারদিকে ঝুলন্ত কয়েকটি জম্বি প্রক্রিয়া কোনও সমস্যা নয় - যদিও তারা আপনার সিস্টেমে তাদের পিতামাতার প্রক্রিয়া সহ একটি বাগ নির্দেশ করে indicate
ব্যাখ্যা:
লিনাক্সে যখন কোনও প্রক্রিয়া মারা যায়, তখন তা সমস্তই তাত্ক্ষণিক স্মৃতি থেকে সরানো হয় না - এর প্রক্রিয়া বর্ণনাকারী স্মৃতিতে থাকে।
প্রক্রিয়াটির অবস্থা হয়ে যায় EXIT_ZOMBIE
এবং প্রক্রিয়াটির পিতামাতাকে অবহিত করা হয় যে তার সন্তানের প্রক্রিয়াটি SIGCHLD
সংকেত দিয়ে মারা গেছে ।
মূল প্রক্রিয়াটির পরে ডেড প্রক্রিয়াটির প্রস্থান স্থিতি এবং অন্যান্য তথ্য পড়তে অপেক্ষা () সিস্টেম কলটি কার্যকর করা হবে। এটি পিতামাতার প্রক্রিয়াটিকে মৃত প্রক্রিয়া থেকে তথ্য পেতে সহায়তা করে। অপেক্ষা () বলা হওয়ার পরে, জম্বি প্রক্রিয়াটি মেমরি থেকে পুরোপুরি সরিয়ে ফেলা হয়।
এটি সাধারণত খুব দ্রুত ঘটে থাকে, তাই আপনি আপনার সিস্টেমে জম্বি প্রক্রিয়াগুলি জমে দেখবেন না। তবে, যদি কোনও পিতামাতার প্রক্রিয়াটি সঠিকভাবে প্রোগ্রাম না করা হয় এবং কখনই অপেক্ষা () না কল করে তবে এর জম্বি বাচ্চারা পরিষ্কার না হওয়া অবধি স্মৃতিতে আটকে থাকবে।
রেজোলিউশন:
আপনি জম্বি প্রক্রিয়াগুলিকে হত্যা করতে পারবেন না কারণ আপনি সিগ্কিল সিগন্যালের সাহায্যে স্বাভাবিক প্রক্রিয়াগুলি মেরে ফেলতে পারেন - জম্বি প্রক্রিয়া ইতিমধ্যে মারা গেছে।
জম্বি মারার একটি উপায় হ'ল পিতামাতার প্রক্রিয়াতে SIGCHLD সংকেত পাঠানো। এই সংকেত পিতামাতার প্রক্রিয়াটি ওয়েট () সিস্টেম কলটি কার্যকর করতে এবং এর জম্বি বাচ্চাদের পরিষ্কার করতে বলে। কমান্ড কমান্ডের সাহায্যে সিগন্যাল প্রেরণ করুন, নীচের কমান্ডে পিডকে পিতামাতার প্রক্রিয়াটির পিআইডি সহ প্রতিস্থাপন করুন:
kill -s SIGCHLD pid
জম্বিগুলি তৈরি করার প্রক্রিয়াটি শেষ হয়ে গেলে, ডি জম্বি প্রক্রিয়াগুলির উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং তাদের নতুন পিতামাতায় পরিণত হয়। (বুট করার সময় লিনাক্সে আরম্ভ করা প্রথম প্রক্রিয়া এবং পিআইডি 1 নির্ধারিত হয়)
দ্রষ্টব্য: - লিনাক্স ৩.৪ থেকে প্রসেসগুলি PR_SET_CHILD_SUBREAPER বিকল্পের সাথে prctl () সিস্টেম কল ইস্যু করতে পারে এবং ফলস্বরূপ তারা # 1 প্রক্রিয়া নয়, তাদের অনাথ বংশধর প্রক্রিয়ার পিতামাত্রে পরিণত হবে। উল্লেখ করুন: /unix//a/177361/5132
আইএনআইটি তার পরে তার জম্বি বাচ্চাদের পরিষ্কার করার জন্য ওয়েট () সিস্টেম কলটি কার্যকর করে, তাই উদ্যোগ জম্বিগুলির সংক্ষিপ্ত কাজ করবে। আপনি বন্ধ করার পরে পিতামাতার প্রক্রিয়াটি পুনরায় চালু করতে পারেন।