前端校招準備系列--進程和線程

前言

  在學習js其餘知識時,有時候會涉及到進程的問題,可是操做系統知識薄弱的我,沒有辦法跳過關於進程的知識,因此卡在了這裏,那就順便介紹一下我所理解的進程和線程吧!前端


CPU,進程以及線程之間的關係

圖解三者之間的關係

圖片描述

  由上圖能夠看出,他們是相互包含關係,即一個CPU中含有多個進程,一個進程又含有多塊內存空間,一個內存空間中有多個線程。
  ps:每一個進程中的內存空間都是共享的,也就是該進程中的線程能夠出如今它的任何內存空間中。併發

實例理解:學校分級結構

  咱們能夠把某個學校當成是一個CPU,學校裏的學院就是進程,一個學院中確定有教室,辦公室,會議室以及廁所等,這些就能夠看作是內存空間,那麼這個學院的學生就是線程(假設學院的學生是在學院內活動)。異步

圖片描述

  在同一個學院中的學生能夠在學院的任何公共區域活動,對應的是一個進程中的每一個線程都共享內存空間,不是說每一個內存空間固定的就是那些線程。
  ps:從某些角度講,這個例子並非很合適,可是能夠用來理解他們三個之間的關係。學習


同步和異步的區別

  注意:同步和異步是針對進程而言spa

  • 同步:進程在執行某個請求時,若是該請求須要一段時間後才返回信息時,進程會一直等待該信息返回後才進行下一步操做。生活中的例子就是,和別人打電話的過程。
  • 異步:針對上面的說法,就是不等請求返回信息,直接執行後面的操做,信息返回後再接着處理。例子就是發短信。

串行,並行和併發的區別

  注意:串行,並行和併發是針對線程而言操作系統

  • 串行:和進程中的同步相似,都是隻有一個操做執行完成後,纔會進行下一個操做,不然一直處於等待狀態
  • 並行處理:指的是同一時間段能夠同時處理多個線程,重點是要同時,即須要多個CPU處理器
  • 併發處理:指在同一個時間段多個程序均可以處於開始運行和運行完畢之間的狀態,不必定要同時

總結

  這裏面的知識若是深究的話有不少,這篇文章旨在幫助理解前端會涉及的一些關於進程的概念,幾乎全部的概念我都經過圖示表示了,若是有錯誤歡迎指正!線程

相關文章
相關標籤/搜索