【正文】
堆棧 用戶 堆棧 線程 N 基于線程的操作系統(tǒng)分類 ? 單進(jìn)程和單線程系統(tǒng) ? 單進(jìn)程和多線程系統(tǒng) ? 多進(jìn)程和單線程系統(tǒng) ? 多進(jìn)程和多線程系統(tǒng) on e p roces son e t hreadmul ti ple proce ssesone thread per processon e p roces sm ul t ip le t hread smul ti ple proce ssesmul ti ple t hreads per process線程的實(shí)現(xiàn) ? 用戶級(jí)線程 ? 內(nèi)核級(jí)線程 ? 混合式線程 用戶級(jí)線程( ULT) UserLevel Thread) ? 由用戶應(yīng)用程序建立、調(diào)度和管理的線程。 以上兩個(gè)屬性構(gòu)成進(jìn)程并發(fā)執(zhí)行的基礎(chǔ)。 對(duì)進(jìn)程系統(tǒng)必須完成的操作: ? 創(chuàng)建進(jìn)程 ? 撤消進(jìn)程 ? 進(jìn)程切換 缺點(diǎn): 時(shí)間空間開(kāi)銷大,限制并發(fā)度的提高 引入線程的目的 ? 進(jìn)程的局限性 ? 在操作系統(tǒng)中,進(jìn)程的引入提高了計(jì)算機(jī)資源的利用效率。 不依賴于 OS內(nèi)核,應(yīng)用進(jìn)程利用線程庫(kù)提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來(lái)控制用戶線程。 ULT通常發(fā)生在一個(gè)應(yīng)用進(jìn)程的諸線程中,無(wú)需通過(guò)中斷進(jìn)入內(nèi)核。 ? SuspendThread()函數(shù)用于掛起指定的線程。 NT線程的有關(guān) API ? CreateThread()函數(shù)在調(diào)用進(jìn)程的地址空間上創(chuàng)建一個(gè)線程,以執(zhí)行指定的函數(shù);返回值為所創(chuàng)建線程的句柄。 ? 創(chuàng)建、撤消線程 ? 在線程之間傳遞消息和數(shù)據(jù) ? 調(diào)度線程執(zhí)行 ? 保護(hù)和恢復(fù)線程上下文 用戶級(jí)線程的活動(dòng) ? 內(nèi)核不知道線程的活動(dòng),但仍然管理線程所屬進(jìn)程的活動(dòng) ? 當(dāng)線程調(diào)用系統(tǒng)調(diào)用時(shí),整個(gè)進(jìn)程阻塞 ? 但對(duì)線程庫(kù)來(lái)說(shuō),線程仍然是運(yùn)行狀態(tài) 即線程狀態(tài)是與進(jìn)程狀態(tài)獨(dú)立的 用戶級(jí)線程的優(yōu)點(diǎn) ? 線程切換不調(diào)用內(nèi)核 ? 調(diào)度是應(yīng)用程序特定的:可以選擇最好的算法