Bu mutlaka kötü bir işaret değil, ilk önce son sorunuzu cevaplamama izin verin:
Tam olarak ne anlama geliyor?
Olarak top
(kaynak kodu http://www.opensource.apple.com/release/mac-os-x-1082/ ) sıkışmış halde tanımlayıcısı olarak ifade edilir LIBTOP_STATE_STUCK
(dan 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
};
(...)
}
Aynı dosyada, LIBTOP_STATE_STUCK
daha sonra çekirdek durumuna eşlenir 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;
(...)
}
Dolayısıyla, sıkışmış durumda olan bir işlem, işlemin / iş parçacığının,TH_STATE_UNINTERRUPTIBLE
çekirdek yapısında nasıl tanımlandığı gibi kesintisiz bir bekleme durumunda olduğu anlamına gelirthread_basic_info
(bkz. Http://web.mit.edu/darwin/src/modules/xnu/osfmk/ man / thread_basic_info.html ):
struct thread_basic_info
{
(...)
integer_t run_state;
(...)
};
nerede run_state
:
run_state: İş parçacığının çalışma durumu. Olası değerler:
(...)
- TH_STATE_UNINTERRUPTIBLE: İş parçacığı kesilemez bir bekleme durumunda.
(...)
Bu genellikle G / Ç'de bekleyen bir işlemden kaynaklanır, yani işlem, diskten veya ağdan okumak veya yazmaktan ve sistem çağrısının geri dönmesini bekler (bkz. Http://en.wikipedia.org). / wiki / Sleep_% 28operating_system% 29 # Kesintisiz_sleep veya http://www.novell.com/support/kb/doc.php?id=7002725 daha fazla bilgi için).
(BSD seçeneklerini kullanmadığınızda, genellikle Linux'ta olduğu gibi ps
, kesintisiz uyku durumunu D durumu olarak gösterir .)
Sürecin normal yaşam döngüsünün bir parçası mı?
Evet öyle. Normal olmayan, bir sürecin uzun süre bu durumda kalmasıdır . Bu kötü bir işaret.
Neden bu işlem özellikle?
Söylemesi zor. Genellikle ağ dosya sistemlerini (deneyimlerime göre en yaygın senaryo) kullanırken ağır disk etkinliğine veya bozulmuş bağlantıya sahip G / Ç darboğazları nedeniyle oluşur.
(Bu, Farklı Sorma ile ilgili bir soru: /apple/58697/how-does-stuck-in-results-of-top-relate-to-not-responding-in-activity- m .)