কম্পিউটারগুলি যদি 0 এ গণনা শুরু করে তবে ডিআইসি প্রক্রিয়াটিতে 1 এর পিড কেন থাকবে?


27

শরীরে এখানে রাখার মতো বেশি কিছু নেই।


18
pid0 এর kill(2)সিস্টেম কলের জন্য একটি বিশেষ অর্থ রয়েছে যেখানে এটি আমার এবং waitpid(2)যেখানে এটির জন্য অন্তত আমার প্রক্রিয়া গ্রুপের কোনও প্রক্রিয়া বোঝায় । উল্লেখ না করা যে fork()ফিরে আসার 0অর্থ হল আমরা সন্তানের মধ্যে আছি।
স্টাফেন চেজেলাস

1
আপনার উত্তর হিসাবে এটি পোস্ট করা উচিত
জোনাথন মুলার

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

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

এটি সম্ভবত প্রোগ্রামিংয়ের অন্তর্নিহিত দৃষ্টান্তগুলির বিরোধিতা করার একটি ক্ষেত্রে: বিশেষ পতাকার মানগুলির জন্য প্রোগ্রামারের মাধ্যাকর্ষণ (শূন্য, নেতিবাচক এক) শূন্য-ভিত্তিক সংখ্যায়ন ব্যবস্থার জন্য চালকের কম টান দেয়।
মাইকেল 25

উত্তর:


29

প্রক্রিয়াগুলির একটি প্যারেন্ট (পিপিআইডি) থাকা দরকার। কার্নেল, সত্যিকারের প্রক্রিয়া না হওয়া সত্ত্বেও, কিছু বাস্তব প্রক্রিয়া হ্যান্ডক্র্যাফ্ট করছে কমপক্ষে init হিসাবে, এবং নিজেকে প্রক্রিয়া আইডি দিচ্ছে 0.. ওএসের উপর নির্ভর করে এটি psআউটপুটে একটি প্রক্রিয়া হিসাবে প্রদর্শিত হতে পারে বা সর্বদা প্রদর্শিত হয় পিপিআইডি হিসাবে:

যেমন লিনাক্স:

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

সোলারিসে:

$ ps -ef|head
     UID   PID  PPID   C    STIME TTY         TIME CMD
    root     0     0   0   Oct 19 ?           0:01 sched
    root     5     0   0   Oct 19 ?          11:20 zpool-rpool1
    root     1     0   0   Oct 19 ?           0:13 /sbin/init
    root     2     0   0   Oct 19 ?           0:07 pageout
    root     3     0   1   Oct 19 ?         117:10 fsflush
    root   341     1   0   Oct 19 ?           0:15 /usr/lib/hal/hald --daemon=yes
    root     9     1   0   Oct 19 ?           0:59 /lib/svc/bin/svc.startd
...

নোট যে PID 0(এবং -1এবং যে বিষয়টি জন্য অন্যান্য নেতিবাচক মান) ফাংশন ব্যবহার তাদের পছন্দ কি উপর নির্ভর করে ভিন্ন অর্থ আছে kill, forkএবং waitpid

শেষ initঅবধি #1, প্রক্রিয়াটি traditionতিহ্যগতভাবে পিড দেওয়া হলেও, যখন সোলারিস জোনের মতো ওএস স্তরের ভার্চুয়ালাইজেশন ব্যবহৃত হয় তখন এটি আর হয় না কারণ একাধিক initচলমান থাকতে পারে :

$ ps -ef|head
     UID   PID  PPID   C    STIME TTY         TIME CMD
    root  4733  3949   0 11:07:25 ?           0:26 /lib/svc/bin/svc.configd
    root  4731  3949   0 11:07:24 ?           0:06 /lib/svc/bin/svc.startd
    root  3949  3949   0 11:07:14 ?           0:00 zsched
  daemon  4856  3949   0 11:07:46 ?           0:00 /lib/crypto/kcfd
    root  4573  3949   0 11:07:23 ?           0:00 /usr/sbin/init
  netcfg  4790  3949   0 11:07:34 ?           0:00 /lib/inet/netcfgd
    root  4868  3949   0 11:07:48 ?           0:00 /usr/lib/pfexecd
    root  4897  3949   0 11:07:51 ?           0:00 /usr/lib/utmpd
  netadm  4980  3949   0 11:07:54 ?           0:01 /lib/inet/nwamd

5

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

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


4

সাধারণত, 0 টি প্রায়শই 'নাল রেফারেন্স' বোঝাতে ব্যবহৃত হয়। এর অর্থ হ'ল 0 মান বিদ্যমান থাকলেও আপনি এটি ব্যবহার করতে পারবেন না কারণ আপনি শূন্য একটি বিশেষ মান বোঝাতে চান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.