進程與線程

進程:是操作系統資源分配的最小單位 例:IO資源,內存資源
線程:是進行資源調度的單位,是實在的一條執行指令

Java內存模型
線程共享區:方法區 堆區
線程私有區: 虛擬機棧 本地方法棧 程序計數器

進程與線程的關係:
對應關係:一個進程可以對應多個線程
健壯性:進程與進程相互隔離,一個進程崩潰不會影響其他進程
一個線程崩潰導致整個進程崩潰
進程的健壯性要比線程強
資源:創建意味着開闢內存空間,在同一個進程下的線程共享部分空間
開闢一個進程相比線程資源佔用要多

Java進程,線程和操作系統的關係

	|  進程  | 線程

java | runtime.exe | Thread |
---------------------------------------**
Linux | fork,vfork |pthread_create

所有語言編譯 -> 1.指令 2.數據
總線 -> 1.控制總線 2.地址總線 3.數據總線

0X23452 -> 虛擬地址

虛擬地址和物理地址的映射問題
以x86體系的32位系統爲例 一個虛擬地址空間大小: 2^32 = 內存4G

    ------------------------ 0x00000000
    預留空間  
    ------------------------ 0x08048000
    .txt(指令) .rodata(常量區)
    ------------------------
    .data .bss(數據段)
    ------------------------ 
    .heap(堆)
    ------------------------
    .stack(棧)
    ------------------------ 0xc0000000
    kernel space(內核空間)
    ------------------------ 0xffffffff

用戶空間 3G 內核空間 1G

內核空間進程共享,用戶空間是隔離的 -> 進程之間是隔離的

進程通信 -通信方式
信號量,管道,消息隊列
在內核空間開闢空間進行數據傳遞,一個進程寫數據,其他進程也就可以看

內存共享(進程間)
a進程-》a虛擬內存空間 -》 物理內存空間
b進程-》b虛擬內存空間 -》 物理內存空間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章