<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 9.3.2 進程與線程 操作系統控制處理器在多個程序之間切換執行的過程稱為調度。傳統的多任務操作系統是以進程為單位進行調度的。進程(process)是指程序的一次執行所形成的實體,每當程序 開始執行,就會創建一個進程。每個進程由程序代碼以及一些狀態信息(如進程數據的當前 值和當前執行點等)組成,狀態信息也稱為進程的上下文。 注意,程序與進程是不同的概念。首先,不同程序在計算機中執行,自然形成不同的進 程。其次,即使是同一個程序,當它在計算機中多次執行時,也會創建多個不同進程,這些 進程雖然具有相同的程序代碼,但各有自己的上下文。例如,在 Windows 中我們可以同時 運行多個記事本程序(notepad.exe),以便編輯多個文本文件。這時,在系統中就創建了多 個 notepad 進程①。 通常,操作系統通過劃分時間片來調度進程,各進程分時占有處理器來執行指令。從宏 觀上看,多個進程是在同時運行。這就是操作系統的多任務機制。如前所述,多進程并發執 行可以提高系統資源的利用率。 但是,多任務、多進程也有缺點。第一,實現多進程并發需要花費不少系統開銷。因為 每創建一個進程都要為它分配一些內存,以便存儲它的上下文;而操作系統在不同進程間進 行調度時需要保存和恢復進程上下文。第二,進程間通信比較困難。進程和進程是隔離的, 各進程擁有自己的地址空間,一個進程不能訪問另一個進程的地址空間,從而在進程之間很 難共享信息。因此,對于兩個需要傳遞信息的進程,相互通信很麻煩。 > ① Windows 用戶可以通過任務管理器來查看所有已創建的進程。 為了解決上述兩個問題,產生了線程的概念。傳統程序是從第一行指令一直執行到最后 一行指令,程序中只有一個控制流。這就像寫小說時,沿著唯一的故事線索推進。而所謂線程(thread),是指程序中的一段代碼,它構成程序中一個相對獨立的執行單位。線程概念 使我們可以從一個程序中分出多個控制流來執行多個任務,所以線程實際上是程序內部的多 任務機制。就好比一部小說在敘述過程中,同時存在著多個故事線索,多頭并進。圖 9.1 給 出了單線程與多線程的示意圖。 ![](https://box.kancloud.cn/2016-02-22_56cafce6bf160.png) ![](https://box.kancloud.cn/2016-02-22_56cafce6ce474.png) 圖 9.1 單線程程序與多線程程序 線程的字面意義就是程序(在執行時就是進程)的一個執行“線索”,一個程序中可以 有多個執行線索。《三國演義》里講到龐統處理公務的故事,他“手中批判,口中發落,耳 內聽詞”,不到半天就把積攢了一百多天的事情都處理掉了。用本節術語來說,龐統就是采 用了多線程并發執行技術,所以能夠高效率地解決問題。 線程與進程既相似,也有明顯的區別。系統中的多個進程一般是由執行不同程序而創建 的,而多個線程是同一程序(進程)的多個執行流;多個進程的狀態是各自獨立的,而多線 程可以共享地址空間(代碼和上下文);調度進程時上下文切換比多線程的上下文切換開銷 大;進程間通信比較麻煩,而線程之間通過共享內存很容易通信。 在單個處理器上,可通過分時搶占或者線程自身執行情況來實現多線程的并發執行。前 者由操作系統進行調度,后者由線程自己放棄控制(比如執行到一個休眠指令時)。不同線 程之間切換得非常快,因此在用戶看來各線程是在同時執行的。可見多線程與多任務、多進 程機制的實現技術是類似的。 在多處理器或多核處理器系統中,各處理器或內核都可以執行線程,從而多線程可以真 正地并行執行。由于多核處理器現已成為主流,因此了解并利用多線程技術對程序設計來說 變得越來越重要。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看