我正在研究一個在C中實現的簡單搶佔式內核,它將執行的主要路徑置於一個稱爲「主線程」的線程中。 線程由堆疊和含有`結構線程:爲什麼內核有一個主線程
tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ uint8_t *stack; /* Saved stack pointer. */ int priority; /* Priority. */ struct list_elem allelem; /* List element for all threads list. */ unsigned magic; /* Detects stack overflow. */
還有一些其它部件是無關緊要的。
我不明白的部分是爲什麼主要執行路徑綁定到整個線程?據我瞭解,執行的主要途徑是CPU'unmasked'進行初始化和線程交換。其他一切都是通過CPU穿着不同的「面具」來完成的。 現在,爲什麼執行的主要路徑需要擁有一個線程的所有組件?它只需要寄存器(包含在CPU中)和堆棧(可以從軟件管理)。 那麼是不是struct thread
部分是多餘的呢?它只需要一個線程的一部分:堆棧。
我無法弄清楚這可能意味着什麼。 –
「執行的主要路徑」是什麼意思?對我而言,這並不清楚,但我可以在結構的其他成員中看到有用的信息(即magic,溢出,名稱,調試和優先級,調度程序)。 –
爲什麼要爲執行的「主要路徑」制定很多特殊情況和代碼,並且已經有了所有機制來執行此操作,並且您可以將該執行路徑視爲另一個線程。當然,主線程必須遵守大部分與其他線程相同的規則,例如被暫停以便另一個線程可以運行,等待互斥體,等等。 – nos