讀《碼農翻身》(一)

讀《碼農翻身》(一)

什麼是線程?

線程屬於進程,與該進程中的其它線程共享該進程的資源(變量、指令等)。
線程能夠理解爲計算機中處理任務的最小單位。程序員

線程有三個狀態: 就緒運行等待。理論上,線程在被建立並執行完分配給它的任務後就會被銷燬。因此線程只有這三個狀態。
因此,線程池中的線程不算在內。由於處於線程池中的線程其實是自由狀態,處於等待分配任務狀態。而前面講到的三個狀態是針對帶有任務的線程而言。緩存

  • 就緒:拿到任務後準備去執行;
  • 運行:獲取CPU使用權後,CPU執行線程中的指令;
  • 等待:碰到耗時的I/O任務時,線程會先讓出CPU,處於等待I/O結果返回的狀態;

TCP/IP

三次握手:線程

  1. 客戶端向服務端發送創建鏈接的請求;
  2. 服務端收到客戶端請求創建鏈接的請求後,向客戶端發送贊成創建鏈接的請求;
  3. 客戶端收到服務端發送的贊成鏈接請求後,向服務端發送收到信息的確認;

通過三次握手後,客戶端就會開始向服務端傳送數據。這三次握手的目的是爲了在客戶端和服務端之間創建一個信息傳送通道,確認雙方的收發信息能力是OK的。實際上,通過第二次握手後,已經能夠判定雙發的收發信息能力OK,第三次握手只是爲了消除服務端對本身的發信能力和客戶端的收信能力的擔心而已。設計

在TCP/IP鏈接中,較大的數據會拆分紅較小的數據塊分開傳送。每一個數據塊都有相應的序號,若是某個數據快傳輸失敗,則會再從新傳送一次。在接收端,只有在成功接收到前一個序號的數據塊,纔會對客戶端發送收到當前數據的確認信息。不然,即便收到了也不會發送確認信息,而是等待接收前面的數據塊。進程

CPU

CPU是一個思考速度飛快可是記憶能力很是脆落的大腦。它的時間單位是納秒,一個時間單位內就能執行一個指令。內存

CPU能夠看做一個工人,一個個的進程能夠看做不一樣的工做臺,工做臺上存儲着進程被分配的資源。 不一樣的工做臺處理不一樣的任務,CPU在不一樣的進程間切換,就比如這個工人在不一樣的工做臺之間來回變更。資源

CPU在工做臺處理任務的時候, 實際上就是在執行程序員編寫的程序。這裏的程序實際上就是由:順序分支循環組成的任務流程。效率

咱們都知道,CPU執行的程序,都來自內存。可是內存的讀取速度遠遠落後於CPU,爲此對於那些在近期內常常用到的數據會存在CPU的緩存中。CPU中的寄存器即是用來作這個的。進一步提升效率,CPU實際結構體系遠比這個複雜。CPU還存在L1,L2和L3三級緩存。計算機科學

多任務系統

實際生活中,咱們都知道CPU能夠同時處理大多個任務。這其實是內存中被裝入多個程序,CPU在這些程序之間來回切換執行。由於程序在內存中存儲的位置不一樣,因此CPU執行每一個程序中指令時,都須要獲取指令在內存中的實際地址。獲取實際地址的方法分爲兩種:變量

  • 靜態地址定位:在指令進入CPU前,將地址提早計算好一併交給CPU;CPU拿到後直接執行便可;
  • 動態地址定位: 在CPU運行指令以前,經過基址+指令地址來獲取指令在內存中的實際位置;

以上三點僅僅書中不多的一部份內容啦,實際上在我看過這段內容中,還有更多的計算機科學相關的設計思想,等待有合適 的時機在補回來。

相關文章
相關標籤/搜索