併發程式與並行程式

2022-04-11 09:01:51 字數 1261 閱讀 3384

併發程式是指可以被同時發起執行的程式

並行程式被設計成可以在並行的硬體上執行的併發程式。

併發程式代表了所有可以實現並發行為的程式,它是乙個寬泛的概念,其中包含了並行程式。

inter-process communication(程序間通訊)

go支援的ipc方法有管道、訊號和socket.

程序:我們把乙個程式的執行稱為乙個程序。(程序用於描述程式的執行過程)

程序是作業系統進行資源分配的乙個基本單位。

程序使用fork(乙個系統呼叫函式)可以建立若干個新的程序,前者稱為後者的父程序,後者稱為前者的子程序。每個子程序都是源自它的父程序的乙個副本,它會獲得父程序的資料段、堆和棧的副本,並與父程序共享**段。

每乙個副本都是獨立的,子程序對屬於它的副本的修改對其父程序和兄弟程序(同父程序)都是不可見的,反之亦然。全盤複製父程序的資料是一種相當低效的做法。linux系統核心使用寫時複製(copy on write 簡稱cow)等技術來提高程序建立的效率。

通過go 標準庫os可以檢視當前程序的pid和ppid

pid := os.getpid()

ppid := os.getppid()

注:pid並不傳達與程序有關的任何資訊。它只是乙個用了唯一標識程序的數字而已。

程序的屬性資訊只包含在核心中與pid對應的程序描述符裡。

ppid體現了兩個程序之間的親緣關係。

程序的狀態:

記憶體區域:作業系統在記憶體上劃分乙個範圍,如下

32位計算機中可有效標識2^32個記憶體單元

64位計算機中可有效標識2^64個記憶體單元

task_size是兩個空間的分界線,其值由所在計算機的體系結構決定,虛擬記憶體的最大容量與實際的物理記憶體大小無關,核心和cpu會負責維護虛擬記憶體與物理記憶體之間的對映關係。

核心會為每個使用者程序分配的是虛擬記憶體而不是物理記憶體。每個使用者程序的虛擬記憶體互不可見。

核心把程序的虛擬記憶體劃分為若干頁page, 而物理記憶體單元的劃分由cpu負責,乙個物理記憶體單元稱為乙個頁框 page frame.

Java並行程式基礎

程序是計算機中的程式關於某資料集合上的一次運動活動,是系統進行資源分配的基礎單位。程序是執行緒的容器。程式是指令 資料及其組織形式的描述,程序是程式的實體。執行緒的所有狀態都在thread的state列舉中 public enum state t1.start 也可以使用runnable介面來實現相...

Java 並行程式基礎

1.執行緒中斷 主要有三個方法 public void thread.interrupt 中斷執行緒 public boolean thread.isinterrupted 判斷是否非中斷 public static boolean thread.interrupted 判斷是否被中斷,並清除當前中...

並行程式 執行緒 二

和程序不同的是,程序中使用佇列用於程序間通訊 from multiprocessing import queue 執行緒中使用佇列 from queue import queue python3中 from queue import queue python2中 不過,程序和執行緒中關於queue的...