আটকে থাকা প্রক্রিয়া: এটি কি খারাপ চিহ্ন?


23

কখনও কখনও কয়েকটি প্রক্রিয়া আটকে রয়েছে। উদাহরণ স্বরূপ:

PID    COMMAND          %CPU TIME     #TH  #WQ  #POR #MREGS RPRVT  RSHRD  RSIZE  VPRVT  VSIZE  PGRP  PPID  STATE
99357  plugin-container 0.1  12:07.07 10   1    224  2097   40M    84M    66M    82M    2757M  91688 99346 sleeping
99346  firefox          0.4  48:54.20 29   1    265  16250  467M   172M   799M   538M   4210M  91688 1     sleeping 
88029- Aquamacs       1.2  31:24.12 4    3    126  268    19M    49M    32M    36M    777M   88029 152   stuck

এটি প্রক্রিয়াটির স্বাভাবিক জীবনচক্রের অংশ? কেন এই প্রক্রিয়া বিশেষত?

এটা ঠিক এর অর্থ কি ?

উত্তর:


38

এটি অগত্যা কোনও খারাপ লক্ষণ নয়, তবে আমাকে প্রথমে আপনার শেষ প্রশ্নের উত্তর দিন:

এটা ঠিক এর অর্থ কি?

ইন topসোর্স কোড (থেকে http://www.opensource.apple.com/release/mac-os-x-1082/ ) আটকে রাষ্ট্র শনাক্তকারী হিসাবে উল্লেখ করা হয় LIBTOP_STATE_STUCK(থেকে libtop.c):

libtop_state_str(uint32_t state)
{
        const char *strings[] = {
                "zombie",
#define LIBTOP_STATE_ZOMBIE     0
                "running",
#define LIBTOP_STATE_RUN        1
                "stuck",
#define LIBTOP_STATE_STUCK      2
                "sleeping",
#define LIBTOP_STATE_SLEEP      3
                "idle",
#define LIBTOP_STATE_IDLE       4
                "stopped",
#define LIBTOP_STATE_STOP       5
                "halted",
#define LIBTOP_STATE_HALT       6
                "unknown"
#define LIBTOP_STATE_UNKNOWN    7
        };
(...)
}

পরে একই ফাইলে, LIBTOP_STATE_STUCKকার্নেল অবস্থায় ম্যাপ করা হয় TH_STATE_UNINTERRUPTIBLE:

/* Translate a mach state to a state in the state breakdown array. */
static int
libtop_p_mach_state_order(int state, long sleeptime)
{
        switch (state) {
                case TH_STATE_RUNNING:
                        return LIBTOP_STATE_RUN;
                case TH_STATE_UNINTERRUPTIBLE:
                        return LIBTOP_STATE_STUCK;
(...)
}

সুতরাং আটকে থাকা অবস্থায় একটি প্রক্রিয়া মানে প্রক্রিয়া / থ্রেডটি একটি নিরবচ্ছিন্ন অপেক্ষারTH_STATE_UNINTERRUPTIBLE স্থানে থাকে, এটি কার্নেল স্ট্রাক্টে কীভাবে সংজ্ঞায়িত হয় thread_basic_info(দেখুন http://web.mit.edu/darwin/src/modules/xnu/osfmk/ ম্যান / থ্রেড_বাসিক_ইনফো এইচটিএমএল ):

struct thread_basic_info
{
(...)
       integer_t        run_state;
(...)
};

কোথায় run_state:

রান_স্টেট: থ্রেডের রান স্টেট। সম্ভাব্য মানগুলি হ'ল:

(...)

  • TH_STATE_UNINTERRUPTIBLE: থ্রেডটি একটি অবিচ্ছিন্ন অপেক্ষার স্থানে রয়েছে।

(...)

এটি সাধারণত I / O এর অপেক্ষার প্রক্রিয়া দ্বারা ঘটে থাকে, অর্থাৎ, প্রক্রিয়াটি ডিস্ক বা নেটওয়ার্ক থেকে / পড়তে বা লিখতে অনুরোধ করে এবং সিস্টেম কলটি ফিরে আসার জন্য অপেক্ষা করে (দেখুন http://en.wikedia.org দেখুন / উইকি / স্লিপ_% 28 অপারেটিং_সিস্টেম% 29 # নিরবচ্ছিন্ন_স্লিপ বা আরও তথ্যের জন্য http://www.novell.com/support/kb/doc.php?id=7002725 )।

(বিএসডি বিকল্পগুলি ব্যবহার না করার সময়, এটি সাধারণত লিনাক্সের ক্ষেত্রে, ডি স্টেট psহিসাবে নিরবচ্ছিন্ন ঘুম দেখায় ))

এটি প্রক্রিয়াটির স্বাভাবিক জীবনচক্রের অংশ?

হ্যাঁ, তাই যেটি স্বাভাবিক নয় তা হ'ল কোনও প্রক্রিয়াটি দীর্ঘ সময়ের জন্য এই অবস্থায় থাকেএটি একটি খারাপ চিহ্ন।

কেন এই প্রক্রিয়া বিশেষত?

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

(এটি আলাদা জিজ্ঞাসা সম্পর্কিত সম্পর্কিত প্রশ্ন: /apple/58697/how-does-stuck-in-results-of-top-relate-to-not- সংশ্লিষ্ঠ- ইন- অ্যাক্টিভিটি- মি ।)


1
কোন প্রক্রিয়া ঠিক আটকে আছে তা আমি কীভাবে জানতে পারি?
মারিওরাফ্ট

3
@mareoraft সালে OS X এর, আউটপুট একটি 'ইউ' রাষ্ট্র কোড সহ বেশী ps axugবা ps -eo user,pid,stat,args। লিনাক্সে, একই psকমান্ডগুলির সাথে একটি 'ডি' রাষ্ট্র কোড সহ একটি । আরও তথ্যের জন্য রাষ্ট্র কীওয়ার্ড (ওএস এক্স) বা প্রসেস স্টেট কোডস বিভাগ (লিনাক্স) এর man psব্যাখ্যা দেখুন। অথবা, ওএস এক্সে, আপনি চালাতে topএবং stuckস্টেট কলামে চিহ্নিত প্রক্রিয়াগুলি সন্ধান করতে পারেন ।
জৌমে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.