কেন কোনও বিজোড় উইন্ডোজ প্রক্রিয়া আইডি নেই?


160

উইন্ডোজে প্রসেস আইডি পরীক্ষা করার বিভিন্ন উপায় রয়েছে।

উদাহরণস্বরূপ, পাওয়ারশেল কমান্ডটি ব্যবহার করে:

ps | select Id, ProcessName  | Sort Id | ft -AutoSize

আমরা নিম্নলিখিত আউটপুট দেখতে:

  Id ProcessName         
  -- -----------         
   0 Idle                
   4 System              
 264 svchost             
 388 smss                
 476 csrss               
 536 wininit             
 580 winlogon                      
 620 services            
 628 lsass                          
 728 svchost             
 828 dwm                                     
1060 chrome              
1080 rundll32            
1148 vmms                                        
1620 spoolsv                                                
2912 taskhostex          
3020 explorer       
...     

সমস্ত প্রক্রিয়া আইডি সমান সংখ্যা এবং তদ্ব্যতীত, তারা সমস্ত 4 এর গুণক

উইন্ডোজ এনটি ভিত্তিক উইন্ডোজের কোনও সংস্করণে কোনও বিজোড় প্রক্রিয়া আইডি নেই।

এটার কারণ কি?


6
সম্ভবত আকর্ষণীয়: লিনাক্স সম্পর্কে কিছু ডিটাইল - justtskins.com/forums/why-are-process-ids-204416.html
ডেভ

13
আসলে কিছু নেই। অদ্ভুত জিনিস.
AndreKR

উত্তর:


168

"কেন কোনও বিজোড় উইন্ডোজ প্রক্রিয়া আইডি নেই?"

কার্নেল হ্যান্ডলগুলি বরাদ্দ করা একই কোডটি প্রক্রিয়া এবং থ্রেড আইডি বরাদ্দ করতেও ব্যবহৃত হয়। যেহেতু কার্নেল হ্যান্ডলগুলি চারটির একাধিক, তাই প্রক্রিয়া এবং থ্রেড আইডিও রয়েছে।


প্রক্রিয়া এবং থ্রেড আইডি চারটির গুণক কেন?

উইন্ডোজ এনটি-ভিত্তিক অপারেটিং সিস্টেমগুলিতে, প্রক্রিয়া এবং থ্রেড আইডি সর্বদা চারটির একাধিক হয়ে থাকে। শুধু এই একটি কাকতালীয় হয়?

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

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

উত্স প্রক্রিয়া এবং থ্রেড আইডি চারটির গুণক কেন?


কার্নেল হ্যান্ডেলগুলি সর্বদা চারটির একাধিক কেন হয়?

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

নীচের দুটি বিটের প্রাপ্যতা ntdef.h শিরোনাম ফাইলটিতে সমাহিত করা হয়েছে:

//
// Low order two bits of a handle are ignored by the system and available
// for use by application code as tag bits.  The remaining bits are opaque
// and used to store a serial number and table index.
//

#define OBJ_HANDLE_TAGBITS  0x00000003L

কার্নেল HANDLEs এর কমপক্ষে নীচের বিটটি সর্বদা শূন্য থাকে GetQueuedCompletionStatus ফাংশন দ্বারা, যা নির্দেশ করে যে আপনি ইভেন্ট হ্যান্ডেলের নীচের অংশটি সমাপ্তি বন্দর বিজ্ঞপ্তি দমন করতে পারেন। এটি কাজ করার জন্য, নীচের বিটটি অবশ্যই শূন্য হতে হবে।

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

উত্স কেন কার্নেল হ্যান্ডলগুলি সর্বদা চারটির একাধিক হয়?


আরও পড়া



3
একটি উদ্ধৃতি বলেছে যে "এটি প্রোগ্রামিং চুক্তির অংশ না হওয়ায় আপনার উপর নির্ভর করা উচিত নয়," তবে পরবর্তী দাবিগুলি এনটিডিএফ এইচটি বলে যে বিটগুলি "ট্যাগ বিট হিসাবে অ্যাপ্লিকেশন কোড দ্বারা ব্যবহারের জন্য উপলব্ধ" " পাবলিক শিরোলেখ ফাইলটিতে ডকুমেন্টেশন আপনি যতটা "প্রোগ্রামিং চুক্তি" পেতে পারেন তত কাছাকাছি , তাই প্রথম দাবিটি ভুল is
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

2
ব্লুরাজ, "খুব বেশি পরিচিত নয় যে কার্নেল হ্যান্ডলগুলির নীচের দুটি বিট সর্বদা শূন্য থাকে; অন্য কথায়, তাদের সংখ্যাসূচক মানটি সর্বদা 4 এর একাধিক হয় " এনটিডিএফ.এচ. কোডটি অন্য ধরণের হ্যান্ডলগুলিতেও প্রযোজ্য (ব্যবহারকারী হ্যান্ডেলস, জিডিআই হ্যান্ডলস, মাল্টিমিডিয়া হ্যান্ডেলগুলি ...)
ডেভিডপস্টিল

37
@ ব্লুরাজা: কার্নেল হ্যান্ডলগুলি চারটির একাধিক এবং এটি চুক্তিবদ্ধ, যাতে আপনি এটির উপর নির্ভর করতে পারেন; প্রক্রিয়া আইডি (যা হয় না একই প্রক্রিয়া হিসেবে পরিচালনা), পরিবর্তে, ঘটতে চার একাধিক হতে, কিন্তু যে মাত্র একটি বাস্তবায়ন বিস্তারিত, তাই আপনি এর উপর নির্ভর করা উচিত নয়।
মাত্তেও ইটালিয়া

6
@ ব্লুরাজা আমি মনে করি রেমন্ড আপনাকে বলবে যে যে ডকুমেন্টেশন লিখেছিল সে কার্নেল রঙের চশমার মাধ্যমে বিশ্বের দিকে নজর রেখেছিল এবং কেবল কার্নেল হ্যান্ডলগুলিকেই উল্লেখ করা হয় অন্য ধরণের হ্যান্ডলগুলিকে নয়।
কোডসইনচাউস

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