जरूरी नहीं कि यह एक बुरा संकेत हो, लेकिन मुझे आपके आखिरी सवाल का जवाब पहले देना चाहिए:
इसका सही मतलब क्या है?
में 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/ man / thread_basic_info.html ):
struct thread_basic_info
{
(...)
integer_t run_state;
(...)
};
कहाँ run_state
है:
run_state: थ्रेड की रन स्थिति। संभावित मूल्य हैं:
(...)
- TH_STATE_UNINTERRUPTIBLE: थ्रेड एक अन-इंटरप्टेबल प्रतीक्षा स्थिति में है।
(...)
यह आमतौर पर I / O की प्रतीक्षा करने वाली प्रक्रिया के कारण होता है, अर्थात, प्रक्रिया ने डिस्क या नेटवर्क से पढ़ने / लिखने का अनुरोध किया है और सिस्टम कॉल के वापस आने का इंतजार किया है (देखें http://en.wikipedia.org / wiki / Sleep_% 28operating_system% 29 # अधिक जानकारी के लिए Uninterruptible_sleep या http://www.novell.com/support/kb/doc.php?id=7002725 )।
(जब बीएसडी विकल्पों का उपयोग नहीं किया जाता है, जैसा कि आमतौर पर लिनक्स में होता है, डी राज्य के ps
रूप में अबाधित नींद दिखाता है ।)
क्या यह प्रक्रिया के सामान्य जीवन चक्र का हिस्सा है?
हाँ यही है। क्या सामान्य नहीं है कि एक प्रक्रिया रहता है एक लंबे समय के लिए इस राज्य में। यह एक बुरा संकेत है।
यह प्रक्रिया विशेष रूप से क्यों?
कहना मुश्किल है। यह आमतौर पर I / O अड़चनों के कारण होता है जब नेटवर्क फाइल सिस्टम (मेरे अनुभव में सबसे सामान्य परिदृश्य) का उपयोग करते समय भारी डिस्क गतिविधि या अपमानित कनेक्टिविटी होती है।
(यह पूछें अलग में एक संबंधित प्रश्न है: /apple/58697/how-does-stuck-in-results-of-top-relate-to-not-respolding-in-activity- मी ।)