একটি প্রক্রিয়ার "অপেক্ষার চ্যানেল" কী?


36

জিনোম সিস্টেম মনিটরের প্রসেসস ট্যাবে একটি "ওয়েটিং চ্যানেল" কলাম রয়েছে। এখন পর্যন্ত আমি যে সাধারণ মানগুলি দেখি তা হ'ল পোল_স্কেলিউড_টাইমআউট , তবে আমি অন্যান্য মানগুলিও দেখতে পাই: 0 , do_exit , do_wait , futex_wait_queue_me , পাইপ_ওয়েট , __স্ক্যাব_আরকেভ_ডেটগ্রাম এবং ইউনিক্স_স্ট্রি_ডাটা_উইট

তাহলে এই "অপেক্ষার চ্যানেল" কলামটির অর্থ কী? এবং সম্ভবত এর অর্থগুলির মধ্যে এর অর্থ কী?

স্ক্রিনশট

উত্তর:


42

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

  • 0: প্রক্রিয়াটি অপেক্ষা করছে না

  • poll_schedule_timeout

    poll()I / O পরিচালনা করার জন্য ব্যবহৃত একটি সিস্টেম কল 1 । এটি অনুরূপ select()2

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

    অপেক্ষার চ্যানেলটি poll_schedule_timeoutইঙ্গিত দেয় যে কোনও কাজ আই / ও এর জন্য অপেক্ষা করছে, হয় কীবোর্ড এবং ইঁদুর, সাউন্ড ডিভাইস বা এমনকি নেটওয়ার্ক সকেটের মতো হার্ডওয়্যার।

    1. কার্নেলের একটি ফাংশন
    2. তারা সংজ্ঞায়িত করা হয় <linux/poll.h>pollসিস্টেম ভি-তে প্রথম দেখা একটি বাস্তবায়ন ছিল, selectএটি বিএসডি ইউনিক্স সমতুল্য।
  • futex_wait_queue_me:

    এটি ব্যাখ্যা করার জন্য, আমাদের লকগুলি দেখতে হবে। একটি লক সিস্টেমে একটি সংরক্ষিত অবস্থা যা সূচিত করে যে কোনও কাজ কোনও সংস্থান দিয়ে কাজ করে। উদাহরণস্বরূপ, কেবলমাত্র একটি কাজ যা একটি ফাইল পড়ে। এই টাস্কটি ফাইলটি লক করে দেবে, অন্য কোনও টাস্ক 1 যা ফাইলটি পড়ার চেষ্টা করে তা এটি লক হয়ে থাকতে পারে এবং এটি অ্যাক্সেস করার আগে লকটি চলে যাওয়ার অপেক্ষায় ছিল। প্রসেসরের সময়ের ক্ষেত্রেও একই ঘটনা ঘটে।

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

    যদি কোনও প্রক্রিয়া কোনও লক করা সংস্থার জন্য অপেক্ষা করে থাকে তবে এটিকে ব্যাসি ওয়েটিং বা "স্পিনিং" বলা হয়, এটি যতক্ষণ না সম্ভব এটি বার বার এটি অ্যাক্সেস করার চেষ্টা করে বলে উল্লেখ করে। কোনও কাজ স্পিন হয়ে গেলে তাকে অবরুদ্ধ করে বলা হয় ।

    আপনি যদি এটি পড়তে পারেন তবে আপনাকে এই উত্তরে কমপক্ষে একটি ভুল সংশোধন করতে বাধ্য: পি

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

    এই টাস্কগুলি ওয়েট কাতারে নিজেকে সজ্জিত করে , একটি সাধারণ ক্রিয়াসমূহ যা কিছু কাজ করা দরকার, একবার প্রক্রিয়া করার সময় পাওয়া গেলে, কার্যগুলি তাদের কাজ করে এবং সারি থেকে সরিয়ে ফেলা হয়।

    futex_wait_queue_meএকটি কাজ enqueues। এরপরে এটি সংকেত, একটি সময় শেষ হওয়ার বা জাগরণের অপেক্ষা করে its এই অপেক্ষার চ্যানেলে যে কাজগুলি অপেক্ষার সারিতে অপেক্ষা করছে না, তারা অপেক্ষা করার জন্য অপেক্ষা করছে।


    1. কোনও কাজ প্রক্রিয়া 3 বা থ্রেড 2 হতে পারে
    2. একটি থ্রেড একটি প্রক্রিয়ার একটি উপ-বিভাগ। অনেক থ্রেড সমান্তরাল চলতে পারে
    3. একটি প্রক্রিয়া একটি পূর্ণ-বিকাশযুক্ত প্রোগ্রাম, এতে এক বা একাধিক থ্রেড থাকে, যদিও কোনও প্রোগ্রামে একাধিক প্রক্রিয়াও থাকতে পারে।
    4. মনে রাখবেন, এটি এখনও জিনিসগুলির একটি খুব উচ্চ স্তরের দৃষ্টিভঙ্গি, এটি বাস্তবায়নের বিশদটি বিবেচনা করে না
  • __skb_recv_datagram

    লক হওয়া নেটওয়ার্ক সকেটে কিছু ডেটার জন্য অপেক্ষা করুন।

  • sk_wait_data

    কোনও নেটওয়ার্ক সকেটে কিছু ডেটার জন্য অপেক্ষা করুন।

  • do_exit

    এটি একটি প্রক্রিয়া ছাড়ার শেষ অংশ। পরেরটি do_exit()কল করে schedule(), অন্য প্রক্রিয়াটি নির্ধারণ করার জন্য। যখন do_exit()ডাকা হয়, প্রক্রিয়াটি একটি ZOMBIE

  • do_wait

    তফসিলকারীদের অপেক্ষা কাতারে একটি প্রক্রিয়া যুক্ত হয়।

  • pipe_wait, unix_stream_data_wait

    একটি প্রক্রিয়া একটি উপপ্রসেস থেকে ডেটার জন্য অপেক্ষা করছে। এটি ঘটে, উদাহরণস্বরূপ, আপনি যখন এই ধরণের কোড চালাবেন:

    echo | sleep 10 && echo hallo              # pipe
    

    অথবা

    cat < hello.c                              # unix data stream
    
  • hrtimer_nanosleep

    প্রক্রিয়াটি ঘুমিয়ে আছে, hrtimer_nanosleep()পদ্ধতিটি ব্যবহার করে । এই পদ্ধতিটি ন্যানোসেকেন্ডের যথার্থতার সাথে নির্দিষ্ট সময়ের জন্য ঘুমানোর প্রোগ্রামের জন্য ব্যবহার করা যেতে পারে।

এগুলি সব কিছু নয়, তবে আমি অন্য কাউকে পর্যবেক্ষণ করি নি। আমি কিছু মিস করেছি যদি একটি মন্তব্য পোস্ট করুন।


আমি ঘুমের_পরে_পরে_কিলাবল পেরিয়ে এসেছি?
মিস্টার অজিলাস

স্লিপ_ন_পেজ_কিলেবলের সর্বাধিক সম্ভবত কারণটি হ'ল প্রক্রিয়াটি এমন কোনও পৃষ্ঠা লোড করার চেষ্টা করছে যা স্মৃতিতে নেই, সুতরাং এটি একটি পৃষ্ঠা ত্রুটির কারণ হয়ে থাকে এবং পৃষ্ঠাটি লোড না হওয়া পর্যন্ত প্রক্রিয়াটি ঘুমিয়ে রাখতে হয়। যদি আই / ও সাবসিস্টেমটি ওভারলোড হয় (কারণ আপনি প্রচুর I / O করছেন) এটি ঘন ঘন প্রদর্শিত হতে পারে।
tsuna

কি signal? আমি এর মধ্যে দৌড়েছি। প্রক্রিয়াটি কি মারা গেছে? বোকচন্দর? অথবা কি? প্রক্রিয়া কি হবে?
নোটমিরিয়াল নাম

11

অপেক্ষার চ্যানেল মানটি কার্নেল ফাংশনটির নাম যেখানে প্রক্রিয়াটি বর্তমানে অবরুদ্ধ।

নামটি সাধারণত একটি সিস্টেম কলের সাথে সম্পর্কিত, যার ম্যানুয়াল পৃষ্ঠা থাকবে।

  • futex_wait_queue_me futex সম্পর্কিত । এটি এমন এক ধরণের মিউটেক্স লক (দ্রুত ব্যবহারকারী স্থান পারস্পরিক বর্জন) বোঝায় যা এক প্রসেসরের উপর কাজ করে অনেক প্রক্রিয়া নির্ধারণ করতে ব্যবহৃত হয়। রাষ্ট্রটি নির্দেশ করে যে আপনার প্রক্রিয়াটি লকটি পাওয়ার জন্য উত্সাহী। 2
  • do_wait সঙ্গে সম্পর্কযুক্ত অপেক্ষার
  • প্রভৃতি

আপনি যদি সত্যিই আরও বিশদ তথ্য চান তবে আপনি কার্নেল উত্সটি পরীক্ষা করতে পারেন ।

আপনি যদি cat /proc/some_pid/stackটার্মিনালে টাইপ করেন তবে আপনি এর মতো কিছু আউটপুট পাবেন:

[<c0227f4e>] poll_schedule_timeout+0x3e/0x60
[<c022879f>] do_select+0x55f/0x670
[<c0228f40>] core_sys_select+0x140/0x240
[<c0229241>] sys_select+0x31/0xc0
[<c05c9cc4>] syscall_call+0x7/0xb
[<ffffffff>] 0xffffffff

এবং প্রথম লাইনে আপনি সিস্টেম মনিটরে যা প্রদর্শিত হবে তা পান। যতদূর আমি জানি, পোল_শেজুল_টাইমআউটটি নির্দেশ করে যে আপনার প্রক্রিয়া কোনও কিছুর জন্য অপেক্ষা করছে।

এটি অ্যাসিক্রোনাস আই / ও এবং ভোটদানের সাথে সম্পর্কিত

উত্স (গুলি): 1. প্রক্রিয়া অপেক্ষা চ্যানেল (ডাব্লুসিএইচএন) এবং অ্যালার্ম? - 2. জিজ্ঞাসা উবুন্টু উত্তর



দেখে মনে হচ্ছে আপনি এর উত্তরটিকে উন্নত করতে আমি আপনার উত্তরটি পুনরায় ব্যবহার করেছি ;-) আপনি কী ধরণের বৈশিষ্ট্য রাখতে চান?
ম্যাক্সিমাম আর।

2
আপনার মন্তব্য আমাকে খুশি রাখার জন্য যথেষ্ট পরিমাণে :) আপনি যদি কীভাবে এন্টিগ্রেশনটি কাজ করে তা সম্পর্কে জানতে চান, তবে বিষয়টিতে একটি দুর্দান্ত এসও ব্লগ পোস্ট রয়েছে। যদিও এটি সম্পর্কে খুব বেশি চিন্তা করবেন না, আমি চাই লোকেরা আমার কাজটি যথাসম্ভব পুনরায় ব্যবহার করুন।
স্টেফানো প্যালাজো

1
ঠিক আছে, আমি এই বিষয়ে মেটাতে একটি প্রশ্ন লিখছিলাম। (ইতোমধ্যে ব্লগ পোস্টটি পড়েছিলেন)
ম্যাক্সিমাম আর।

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