新聞中心
linux進(jìn)程中,線程是一種核心概念,它極大增強(qiáng)了程序的執(zhí)行效率,使一個(gè)程序可以同時(shí)處理多個(gè)任務(wù)。在Linux進(jìn)程中,線程可以分為用戶態(tài)線程和內(nèi)核態(tài)線程。用戶態(tài)線程由用戶級(jí)的線程庫(kù),如pthread庫(kù)或kthread庫(kù),產(chǎn)生,運(yùn)行在用戶態(tài),它由包含寄存器、PC、SP等寄存器的寄存器集組成,可以理解為程序的一條隱形流水線,減少中斷的發(fā)生,提高效率;而內(nèi)核態(tài)線程是內(nèi)核態(tài)既定的,當(dāng)調(diào)度cpu時(shí),內(nèi)核會(huì)使用內(nèi)核態(tài)線程來處理任務(wù),所以一個(gè)內(nèi)核態(tài)線程會(huì)集成了運(yùn)行環(huán)境、文件描述符等項(xiàng),也就是說,一個(gè)內(nèi)核態(tài)線程就是一個(gè)輕量級(jí)進(jìn)程。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)漣源免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
對(duì)于Linux進(jìn)程中的線程,其構(gòu)建其實(shí)是由內(nèi)核所支持,應(yīng)用程序只需要通過調(diào)用內(nèi)核提供的函數(shù)接口,就可以創(chuàng)建線程,比如Linux下的pthread_create,它的基礎(chǔ)實(shí)現(xiàn)是通過arch/x86/kernel/process.c中的clone系統(tǒng)調(diào)用,其主要構(gòu)建如下:
1.分配棧內(nèi)存,使用MM_alloc函數(shù)來獲取一個(gè)空閑指針:
struct mm_struct *mm_alloc(){/* Get a free_link from the dynamic memory allocator. */}
2.開始構(gòu)建新線程,使用do_clone函數(shù)來u聲明復(fù)制函數(shù):
int do_clone(int(*fn)(void* arg),void* arg,unsigned long flags){/* Declare do_exit() the thread-exit mechanism. */}
3.將新線程添加到調(diào)度器的就緒隊(duì)列:
int schedule_add_thread(struct thread_struct *thread){/* Add the thread to the scheduler’s ready-queue. */}
4.創(chuàng)建新的地址空間,使用mm_alloc函數(shù)來創(chuàng)建:
struct mm_struct *mm_alloc_area(struct mm_struct *mm,unsigned long start,unsigned long size){/* Allocate new address spaces for the process. */}
以上幾步就是Linux進(jìn)程中的線程構(gòu)建的基本流程,當(dāng)然,同時(shí)還有其它的操作,如文件描述符的管理、中斷處理、調(diào)度等,為了使程序更充分利用多核特性,來提高運(yùn)行效率,我們只要在應(yīng)用層調(diào)用上述API,就可以構(gòu)建出一個(gè)完整的多線程應(yīng)用程序。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
文章標(biāo)題:的構(gòu)成Linux進(jìn)程中:線程的組成與構(gòu)建(linux進(jìn)程中線程)
鏈接地址:http://www.5511xx.com/article/dhdcopj.html


咨詢
建站咨詢
