乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      進(jìn)程和線程

       印度阿三17 2021-02-03

      CPU并不知道線程和進(jìn)程之類的概念

      CPU只知道兩件事:

      1、  從內(nèi)存中取出指令;

      2、  執(zhí)行指令,然后再從內(nèi)存中取出下一條指令

      寄存器

      CPU從哪里取出指令呢?答案是寄存器,可以把寄存器簡單地理解為內(nèi)存,不過存取速度比內(nèi)存更快。寄存器中存放的是CPU將要執(zhí)行的下一條指令的地址。寄存器中的地址默認(rèn)是自動加1,遇到if和else時,這種順序執(zhí)行就被打破了。CPU在執(zhí)行這類指令時會根據(jù)計算結(jié)果來動態(tài)改變PC寄存器中的值,這樣CPU就可以正確地跳轉(zhuǎn)到需要執(zhí)行的指令了。

      函數(shù)

      指令形成的過程:程序代碼源文件à編譯器編譯à可執(zhí)行文件à磁盤à內(nèi)存àCPU指令。函數(shù)被編譯成功之后才會形成CPU執(zhí)行指令,只需要找到函數(shù)被編譯后形成的第一條指令,指令就可以按順序執(zhí)行下去。第一條指令就是函數(shù)的入口,也就是我們程序源代碼中常用的main()函數(shù)

      進(jìn)程

      如果想讓CPU執(zhí)行某個函數(shù),那么只需要把函數(shù)對應(yīng)的第一條機(jī)器執(zhí)行裝入PC寄存器就可以了,這樣即使沒有操作系統(tǒng)也可以讓CPU執(zhí)行程序。但是過程非常復(fù)雜:

      1、  需要在內(nèi)存中找到一塊大小合適的區(qū)域裝入程序

      2、  需要找到函數(shù)入口,設(shè)置好寄存器讓CPU開始執(zhí)行程序

      機(jī)器指令需要加載到內(nèi)存中執(zhí)行,因此需要記錄下內(nèi)存的起始地址和長度;同時要找到函數(shù)的入口地址并寫道PC寄存器中。需要一個結(jié)構(gòu)體類型的數(shù)據(jù)結(jié)構(gòu)來記錄這些信息。該結(jié)構(gòu)體記錄的是程序在被加載到內(nèi)存中的運行狀態(tài),叫做進(jìn)程

       

      線程

      所謂進(jìn)程,無非就是內(nèi)存中的一段區(qū)域,這段區(qū)域中保存了CPU執(zhí)行機(jī)器指令以及函數(shù)運行時的堆棧信息,要想讓進(jìn)程運行,就把main函數(shù)的第一條機(jī)器指令地址寫入PC寄存器,這樣進(jìn)程就運行起來了。進(jìn)程的缺點在于只有一個入口函數(shù),也就是main函數(shù),因此進(jìn)程中的機(jī)器指令只能被一個CPU執(zhí)行。但是既然我們可以把main函數(shù)的第一條指令吸入PC寄存器,那么其他函數(shù)和main函數(shù)本質(zhì)上來說也沒有什么區(qū)別。可以把PC寄存器執(zhí)行main函數(shù),也可以把PC寄存器指向任何一個函數(shù)。當(dāng)把PC寄存器指向非main函數(shù)時,線程就誕生了。這樣一個進(jìn)程內(nèi)可以有多個入口函數(shù),也就是說屬于同一個進(jìn)程中的機(jī)器指令可以被多個CPU同時執(zhí)行。

       

      來源:https://www./content-3-844251.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多