1. 程式人生 > >【整理】SIMD、MMX、SSE、AVX、3D Now!、neon——指令集大全

【整理】SIMD、MMX、SSE、AVX、3D Now!、neon——指令集大全

http://blog.csdn.net/conowen/article/details/7255920

SIMD

SIMD單指令流多資料流(SingleInstruction Multiple Data,SIMD)是一種採用一個控制器來控制多個處理器,同時對一組資料(又稱“資料向量”)中的每一個分別執行相同的操作從而實現空間上的並行性的技術。在微處理器中,單指令流多資料流技術則是一個控制器控制多個平行的處理微元,例如Intel的MMX或SSE以及AMD的3D Now!技術。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

MMX是由英特爾開發的一種SIMD多媒體指令集,共有57條指令。它於1996年整合在英特爾奔騰 (Pentium) MMX處理器上,以提高其多媒體資料的處理能力。

其優點是增加了處理器關於多媒體方面的處理能力,缺點是佔用浮點數暫存器進行運算(64位MMX暫存器實際上就是浮點數暫存器的別名)以至於MMX指令和浮點數操作不能同時工作。為了減少在MMX和浮點數模式切換之間所消耗的時間,程式設計師們儘可能減少模式切換的次數,也就是說,這兩種操作在應用上是互斥的。後來英特爾在此基礎上發展出SSE指令集;AMD在此基礎上發展出3DNow!指令集。現在新開發的程式不再僅使用MMX來優化軟體執行效能,而是改使用如SSE、3DNOW!等更容易優化效能的新一代多媒體指令集,不過目前的處理器仍可以執行鍼對MMX優化的較早期軟體。

技術細節

MMX 暫存器,稱作MM0到MM7,實際上就是處理器內部80位元字長的浮點暫存器棧st(0)到st(7)的尾數部分(64位元長)的複用。由於 浮點棧暫存器的高16位未被MMX技術使用,因此這16位都置為1,因此從棧暫存器的角度看,其浮點值為NaN或Infinities,這可用於區分寄存 器是處於浮點棧狀態還是MMX狀態. 作為MMX暫存器都是直接訪問。利用了裝配資料型別(packed data type)的概念,每個MMX暫存器的64位元字長可以看作是2個32位整數、或者4個16位整數、或者8個8位整數,從而可以執行整數SIMD運算。這 對於1990年代中期的2D、3D計算的加速還是很有意義的,因為當時的計算機的圖形處理器(GPU)還很不發達。但現在MMX整數SIMD運算對於圖形運算來說是多餘的技術了。不過MMX的飽和算術運算

(saturationarithmeticoperations)對於一些數字訊號處理應用還是有用的。

SIMD技術的發展

繼 MMX技術之後,Intel又於1999年在Pentium-III處理器上推出SSE技術,引入了新的128位元寬的暫存器集 (register file),稱作XMM0到XMM7。這些XMM暫存器用於4個單精度浮點數運算的SIMD執行,並可以與MMX整數運算或x87浮點運算混合執行。 2001年在Pentium 4上引入了SSE2技術,進一步擴充套件了指令集,使得XMM暫存器上可以執行8/16/32位寬的整數SIMD運算或雙精度浮點數的SIMD運算。這使得 SIMD技術基本完善。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

SSE

SSE(Streaming SIMD Extensions)是英特爾在AMD的3DNow!釋出一年之後,在其計算機晶片Pentium III中引入的指令集,是繼MMX的擴充指令集。SSE 指令集提供了 70 條新指令。AMD後來在Athlon XP中加入了對這個新指令集的支援。

目錄

 [隱藏] 

  • 1 SSE 的快取器
  • 2 SSE 指令表
    • 2.1 浮點指令
    • 2.2 整數指令
    • 2.3 其他指令
  • 3 後續版本
    • 3.1 SSE2
    • 3.2 SSE3
    • 3.3 SSSE3
    • 3.4 SSE4
    • 3.5 SSE5
    • 3.6 AVX
    • 3.7 FMA
  • 4 參見

SSE的快取器

SSE 加入新的 8 個 128 位快取器(XMM0~XMM7)。而 AMD 發表的x86-64延伸架構《又稱 AMD64》再加入額外 8 個快取器。除此之外還有一個新的 32 位的控制/狀態快取器(MXCSR)。不過只能在 64 位的模式下才能使用額外 8 個快取器。

每 個快取器可以容納 4 個 32 位單精度浮點數,或是2 個 64 位雙精度浮點數,或是 4 個 32 位整數,或是 8 個 16 位短整數,或是 16 個字元。整數運算能夠使用正負號運算。而整數 SIMD 運算可能仍然要與 8 個 64 位 MMX 快取器一起執行。

因為作業系統必須要在程序切換的時候保護這些 128 位的快取器狀態,除非作業系統去啟動這些快取器,否則預設值是不會去啟用的。這表示作業系統必須要知道如何使用 FXSAVE 與 FXRSTOR 指令才能儲存 x87 與 SSE 快取器的狀態。而在當時 IA-32 的主流作業系統很快的都加入了此功能。

由於 SSE 加入了浮點支援,SSE 就比MMX 更加常用。而 SSE2 加入了整數運算支援之後讓SSE 更加的有彈性,當 MMX 變成是多餘的指令集,SSE 指令集甚至可以與 MMX 並行運作,在某些時候可以提供額外的效能增進。

第一個支援 SSE 的 CPU 是 Pentium III,在FPU 與SSE 之間共享執行支援。當編譯出來的軟體能夠交叉的同時以 FPU 與 SSE 運作,Pentium III 並無法在同一個週期中同時執行 FPU 與 SSE。這個限制降低了指令管線的有效性,不過 XMM 快取器能夠讓 SIMD 與純量浮點運算混合執行,而不會因為切換 MMX/浮點模式而產生效能的折損。

SSE指令表

SSE 提供純量與包裹式(packed)浮點指令。

浮點指令

  • 記憶體到快取器/快取器到記憶體/快取器之間的資料搬移
    • 純量 – MOVSS
    • 包裹式 – MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS
  • 數學運算
    • 純量 – ADDSS, SUBSS, MULSS, DIVSS, RCPSS, SQRTSS, MAXSS, MINSS, RSQRTSS
    • 包裹式 – ADDPS, SUBPS, MULPS, DIVPS, RCPPS, SQRTPS, MAXPS, MINPS, RSQRTPS
  • 比較
    • 純量 – CMPSS, COMISS, UCOMISS
    • 包裹式 – CMPPS
  • 資料拆包(unpack)與隨機搬移(shuffle)
    • 包裹式 – SHUFPS, UNPCKHPS, UNPCKLPS
  • 資料型態轉換
    • 純量 – CVTSI2SS, CVTSS2SI, CVTTSS2SI
    • 包裹式 – CVTPI2PS, CVTPS2PI, CVTTPS2PI
  • 逐位邏輯運算
    • 包裹式 – ANDPS, ORPS, XORPS, ANDNPS

整數指令

  • 數學運算
    • PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
  • 資料搬移
    • PEXTRW, PINSRW
  • 其他
    • PMOVMSKB, PSHUFW

其他指令

  • MXCSR 管理
    • LDMXCSR, STMXCSR
  • 快取與記憶體管理
    • MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE

後續版本

SSE2

SSE2是 Intel在Pentium 4處理器的最初版本中引入的,但是AMD後來在Opteron 和Athlon64處理器中也加入了SSE2的支援。SSE2指令集添加了對64位雙精度浮點數的支援,以及對整型資料的支援,也就是說這個指令集中所有的MMX指令都是多餘的了,同時也避免了佔用浮點數暫存器。這個指令集還增加了對CPU快取的控制指令。AMD對它的擴充套件增加了8個XMM暫存器,但是需要切換到64位 模式(x86-64/AMD64)才可以使用這些暫存器。Intel後來在其Intel 64架構中也增加了對x86-64的支援。

SSE3

SSE3是 Intel在Pentium 4處理器的 Prescott 核心中引入的第三代SIMD指令集,AMD在Athlon64的第五個版本,Venice核心中也加入了SSE3的支援。這個指令集擴充套件的指令包含暫存器的區域性位之間的運算,例如高位和低位之間的加減運算;浮點數到整數的轉換,以及對超執行緒技術的支援。

SSSE3

SSSE3是Intel針對SSE3指令集的一次額外擴充,最早內建於Core2 Duo處理器中。

SSE4

SSE4是Intel在Penryn核心的Core 2 Duo與Core2 Solo處理器時,新增的47條新多媒體指令集,並且現在更新至SSE4.2。AMD也開發了屬於自己的SSE4a多媒體指令集,並內建在Phenom與Opteron等K10架構處理器中,不過無法與Intel的SSE4系列指令集相容。

SSE5

SSE5是AMD為了打破Intel壟斷在處理器指令集的獨霸地位所提出的,SSE5初期規劃將加入超過100條新指令,其中最引人注目的就是三運算元指令(3-OperandInstructions)及熔合乘法累積(Fused Multiply Accumulate)。其中,三運算元指令讓處理器可將一個數學或邏輯函式庫,套用到運算元或輸入資料。藉由增加運算元的數量,一個 x86 指令能處理二至三筆資料, SSE5 允許將多個簡單指令彙整成一個指令,達到更有效率的指令處理模式。提升為三運算指令的運算能力,是少數RISC架構 的水平。熔合乘法累積讓允許建立新的指令,有效率地執行各種複雜的運算。熔合乘法累積可結合乘法與加法運算,透過單一指令執行多筆重複計算。透過簡化程式碼,讓系統能迅速執行繪圖著色、快速相片著色、音場音效,以及複雜向量演算等效能密集的應用作業。目前AMD已放棄下一代Bulldozer核心內建SSE5指令集,改內建Intel授權SSE4系列指令集。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

AVX

  是Sandy Bridge和Larrabee架構新指令集  Intel的微架構也進入了全速發展的時期,在2010年4月結束的IDF峰會上Intel公司就釋出了2010年的RoadMap。2011年1月Intel釋出全新的處理器微架構Sandy Bridge,其中全新增加的指令集也將帶來CPU效能的提升。

        AVX(Advanced Vector Extensions) 是Intel的SSE延伸架構,如IA16至IA32般的把快取器XMM 128bit提升至YMM 256bit,以增加一倍的運算效率。此架構支援了三運算指令(3-Operand Instructions),減少在編碼上需要先複製才能運算的動作。在微碼部分使用了LES LDS這兩少用的指令作為延伸指令Prefix。

FMA

  • FMA是Intel的AVX擴充指令集,如名稱上熔合乘法累積(Fused Multiply Accumulate)的意思一樣。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

3DNow!

3DNow!(據稱是“3D No Waiting!”的縮寫)是由AMD開發的一套SIMD多媒體指令集,支援單精度浮點數的向量運算,用於增強x86架構的計算機在三維影象處理上的效能。

目錄

 [隱藏] 

  • 1 歷史
  • 2 支援檢測
  • 3 執行環境
  • 4 3DNow!指令集
    • 4.1 單精度浮點運算指令
    • 4.2 增強的MMX指令
    • 4.3 資料型別轉換指令
    • 4.4 資料預取指令
    • 4.5 快速退出MMX狀態指令
  • 5 外部連結

歷史

1996年Intel首先推出了支援MMX的Pentium處理器,極大地提高了CPU處理多媒體資料的能力,被廣泛地應用於語音合成、語音識別、音訊視訊編解碼、影象處理和串流媒體等領域。但是MMX只支援整數運算,浮點數運算仍然要使用傳統的x87協處理器指令。由於MMX與x87的暫存器相互重疊,在MMX程式碼中插入x87指令時必須先執行EMMS指令清除MMX狀態,頻繁地切換狀態將嚴重影響效能。這限制了MMX指令在需要大量浮點運算的程式,如三維幾何變換、裁剪和投影中的應用。

另一方面,由於x87古怪的堆疊式快取器結構,使得硬體上將其流水線化和軟體上合理排程指令都很困難,這成為提高x86架構浮點效能的一個瓶頸。

為了解決以上這兩個問題,AMD公司於1998年推出了包含21條指令的3DNow!指令集,並在其K6-2處理器中實現。K6-2是 第一個能執行浮點SIMD指令的x86處理器,也是第一個支援水平浮點暫存器模型的x86處理器。藉助3DNow!,K6-2實現了x86處理器上最快的浮點單元,在每個時鐘週期內最多可得到4個單精度浮點數結果,是傳統x87協處理器的4倍。許多遊戲廠商為3DNow!優化了程式,微軟的DirectX 7也為3DNow!做了優化,AMD處理器的遊戲效能第一次超過Intel,這大大提升了AMD在消費者心目中的地位。K6-2和隨後的K6-III成為市場上的熱門貨。

1999年,隨著Athlon處理器的推出,AMD為3DNow!增加了5條新的指令,用於增強其在DSP方面的效能,它們被稱為“擴充套件3DNow!”(Extended 3DNow!)。

為了對抗3DNow!,Intel公司於1999年推出了SSE指令集。SSE幾乎能提供3DNow!的所有功能,而且能在一條指令中處理兩倍多的單精度浮點數;同時,SSE完全支援IEEE 754,在處理單精度浮點數時可以完全代替x87。這迅速瓦解了3DNow!的優勢。

1999年後,隨著主流作業系統和軟體都開始支援SSE併為SSE優化,AMD在其2000年釋出的代號為“Thunderbird”的Athlon處理器中添加了對SSE的完全支援(“經典”的Athlon或K7只支援SSE中與MMX有關的部分,AMD稱之為“擴充套件MMX”即Extended MMX)。隨後,AMD致力於AMD64架構的開發;在SIMD指令集方面,AMD跟隨Intel,為自己的處理器新增SSE2和SSE3支援,而不再改進3DNow!。

2010年八月,AMD宣佈將在新一代處理器中取消除了兩條資料預取指令之外3DNow!指令的支援,並鼓勵開發者將3DNow!程式碼重新用SSE實現。

支援檢測

支援3DNow!的CPU的CPUID擴充套件功能字(EAX=80000001h時執行CPUID指令得到的EDX的內容)的(從低位到高位)第31位為1。支援擴充套件3DNow!的CPU的CPUID擴充套件功能字的(從低位到高位)第30位為1。

K6-2以後AMD所有的x86處理器都支援3DNow!,包括最新的Athlon 64、Opteron和Sempron處理器;Cyrix等一些其他廠家生產的某些處理器也支援3DNow!;但Intel生產的所有處理器都不支援3DNow!。

執行環境

3DNow!指令的執行環境與MMX一樣,都是將8個x87暫存器ST0~ST7的低64位重新命名為MMX暫存器MM0~MM7,並依平坦模式進行操作(即指令可以任意訪問這8個暫存器中的任何一個而不必使用堆疊)。

由於3DNow!使用的暫存器與x87暫存器重疊,任務切換時,儲存x87暫存器狀態的同時也儲存了3DNow!的狀態,所以3DNow!不需要作業系統的額外支援。只要CPU支援3DNow!,含有3DNow!程式碼的程式可以在只考慮到x87狀態的原有的作業系統上不加修改地執行。

由於3DNow!依平坦模式訪問暫存器,對3DNow!浮點單元的管線化變得容易,這也利於編譯器生成高效的浮點程式碼。

3DNow!指令集

3DNow!和擴充套件3DNow!的26條指令從功能上可以分為以下五類。

單精度浮點運算指令

此類指令的運算元均為64位,其高32位和低32位分別是IEEE754格式的單精度浮點數。大部分指令一次可接受兩個這樣的運算元,並得到兩個單精度浮點數的結果。它們的組合語言助記符都以PF開頭。

3DNow!還包含有計算單精度倒數和開方倒數的指令,並可以依程式需要,得到12位精度和24位精度的結果。這些指令一次只能處理一個單精度浮點數。

3DNow!的一個特色是可以將同一暫存器內的64位運算元中的兩個單精度浮點數相加或相乘,這在複數運算和內積運算中非常有用。Intel直到最近才在SSE3指令集中增加了這項功能,稱之為“水平操作”。

為了保證與舊有作業系統的相容性,與MMX指令一樣,3DNow!指令不引發任何算術異常。3DNow!指令不會生成也不能正確處理NaN和非規格化數,也不支援指定舍入模式。因此3DNow!並不是IEEE 754的一個完整實現,即使是隻涉及單精度浮點數時也不能完全代替x87。

增強的MMX指令

PAVGUSB用於求64位緊縮位元組(8×8位位元組)的平均值,可用於視訊編碼中的畫素平均和影象縮放等。可能是意識到這個功能的重要性,Intel在SSE中添加了功能完全相同的PAVGB指令。

PMULHRW則用來補充MMX指令PMULHW的不足,在緊縮字(4×16位字)相乘時可以得到比後者更準確的結果。Intel直到最近才在SSSE3中增加了功能相似的指令PMULHRSW

PSWAPD指令用於交換緊縮雙字(2×32位字)中兩個雙字資料的位置。

資料型別轉換指令

PF2IDPI2FD等4條指令用於完成整數和單精度浮點數之間的相互轉換。

資料預取指令

PREFETCH/PREFETCHW指令用於把將要使用到的資料從主儲存器提前載入快取中,以減少訪問主儲存器的指令執行時的延遲。Intel在SSE中添加了類似的PREFETCHTx指令

快速退出MMX狀態指令

FEMMS指令與MMX中的EMMS功能相同,用於退出MMX狀態。在K6-2和K6-III處理器中,FEMMSEMMS更快;在Athlon及更新的處理器中,FEMMS等同於EMMS

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------

Neon



ARM® NEON™ 通用 SIMD 引擎可有效處理當前和將來的多媒體格式,從而改善使用者體驗。

NEON 技術可加速多媒體和訊號處理演算法(如視訊編碼/解碼、2D/3D 圖形、遊戲、音訊和語音處理、影象處理技術、電話和聲音合成),其效能至少為 ARMv5 效能的 3 倍,為 ARMv6 SIMD 效能的 2 倍。

NEON 技術是通過乾淨方式構建的,並可無縫用於其本身的獨立管道和暫存器檔案。

NEON 技術是 ARM Cortex™-A 系列處理器的 128 位 SIMD(單指令多資料)體系結構擴充套件,旨在為消費性多媒體應用提供靈活強大的加速功能,從而明顯改善使用者體驗。 它具有 32 個暫存器,64 位寬(是 16 個暫存器,128 位寬的雙倍檢視。)

NEON 指令可執行“打包的 SIMD”處理:

  • 暫存器被視為同一資料型別元素向量
  • 資料型別可為:簽名/未簽名的 8 位、16 位、32 位、64 位單精度浮點
  • 指令在所有通道中執行同一操作

用於演示 NEON 打包的 SIMD 處理的圖表

使用 NEON 技術的 ARM Cortex™-A 系列處理器,以及 ARM 的 Mali 多媒體硬體解決方案可用於多媒體應用,範圍從智慧手機移動計算裝置到HDTV

注:Nvidia Tegra2處理器閹割了Neon協處理器,視訊能力很雞肋


相關推薦

整理SIMDMMXSSEAVX3D Nowneon——指令大全

http://blog.csdn.net/conowen/article/details/7255920 SIMD SIMD單指令流多資料流(SingleInstruction Multiple Data,SIMD)是一種採用一個控制器來控制多個處理器,同時對一組資料(

Oracle表空間區和塊簡述整理

塊是資料儲存的物理單位,也是資料檔案中最基礎的單位,資料直接儲存在塊上。 是oracle空間分配的最小單位。oracle中的塊大小常見的有三種,2KB、4KB、8KB。 塊的大小在資料庫建立時就已經固定下來,資料庫中每個塊的大小都是相同的, 而且所有的塊都有相同的格式,由“塊頭+表目錄+行目錄+空閒空間+資料

整理1C網和G網雙模手機是否可同時支援C網和G網上網?2上網的同時是否可以打電話?3呼叫等待和呼叫保持的概念與“雙通”手機

【問題一】C網和G網雙模手機是否可同時支援C網和G網上網? 這個以華為的兩款手機為例,華為出了兩款雙模手機:S8600和G330C(C8825D),這兩款手機均是C網和G網雙模,支援電信的3G網,只支援移動(聯通)的2G網,且手機預設是隻支援C網上網的。 那麼S8600和G

整理LibavFFmpegmplayerVLC開源專案FFDshow

ffmpeg FFmpeg(現改名為Libav) FFmpeg是一個開源免費跨平臺的視訊和音訊流方案,屬於自由軟體,採用LGPL或GPL許可證(依據你選擇的元件)。它提供了錄製、轉換以及流化音視 頻的完整解決方案。它包含了非常先進的音訊/視訊編解碼庫libavcodec,

淺談一個網頁打開的全過程(涉及DNSCDNNginx負載均衡等)

位置 filters 產生 多種方法 tps windows cnblogs 這就是 廣東 1、概要   從用戶在瀏覽器輸入域名開始,到web頁面加載完畢,這是一個說復雜不復雜,說簡單不簡單的過程,下文暫且把這個過程稱作網頁加載過程。下面我將依靠自己的經驗,總結一下整個過程

easyui關於tabs的選項卡的href 引入頁面後 jscss失效

bsp window tab esp servle edi href eas let 示例: $("tabs").tabs("add",{   href:”test.html“ }) test.html 只有body裏的內容會被執行 如果js或css在body外則會失

移動端二三事:陀螺儀(重力感應器)實現手機位置加速度感應以及常見應用。

效果 防止 size tro 通過 select 代碼 陀螺儀 prime 首先說明一下:陀螺儀感應需在真機環境下進行調試,PC端無效果。 1.獲取感應器 需在window上監聽devicemotion事件,再通過事件對象獲取accelerationIncludingG

20171116BugFree使用手冊(四)Bugfree的使用:BugTest Case和Test Result管理

設定 如圖所示 關閉 nbsp 管理 全部 很快 自己的 解決 五、Bug的狀態 在BugFree中,一個Bug只有3種狀態:Active、Resolved、Closed。實踐中經常有不熟悉的用戶通過“編輯 (Edit)”來改變所有的狀態,那是不合適的。正確的狀態轉換方法應

移動端二三事:陀螺儀(重力感應器)實現手機位置加速度感應以及常見應用。

首先說明一下:陀螺儀感應需在真機環境下進行除錯,PC端無效果。 1.獲取感應器 需在window上監聽devicemotion事件,再通過事件物件獲取accelerationIncludingGravity(內建重力加速度感應器)物件。程式碼如下:

Java設計模式GOF23之介面卡模式(類方式實現物件方式實現)

目錄 Target.java package com.bjsxt.adapter; /** * @author liyijie * @date 2016年8月12日下午4:13:21 *

HTML表單form中一單回車就提交的text一點選就提交的button

先上一段看似很簡單HTML程式碼: <!doctype html> <html> <body> <form action="2.html" method="post"> <input type=

演算法位元位計算(A+B Problem)-位運算子介紹位運算實現加減乘除

問題描述 問題:計算A+B,不適用“+”運算子(LintCode 1.A + B Problem) 注意:A B均為32位整數,可使用位元位計算 解決思路 演算法示例 程式碼如下:(通過LintCode測試) class Solution

three.js : 3DloaderTHREE.js中載入不同格式的模型及動畫(fbxjson和obj)

  轉載:THREE.js中載入不同格式的模型及動畫(fbx、json和obj) 注:本文章內容基於 Three.js 88dev 實現 作為剛接觸three.js的小萌新,勵志將自己開荒歷程記錄下來,希望對後來人有所幫助。 網上有很多demo,文件卻不多。每次都是,照搬別人的

網頁禁止後退鍵BackSpace的JavaScript實現(相容IEChromeFirefoxOpera)

1 var forbidBackSpace = function (e) { 2 // 獲取event物件 3 var ev = e || window.event; 4 // 獲取事件源 5 var obj = ev.target || ev.srcEl

vs*pdb時出錯;請檢查是否是磁碟空間不足路徑無效或許可權不夠

     VS感覺是感覺最好用的除錯工具,但是也有些蛋疼的問題,比如上面的提示,每次都提示同樣的錯誤:*pdb時出錯;請檢查是否是磁碟空間不足、路徑無效或許可權不夠。 在pdb的生成目錄下,去嘗試刪除

轉載win10上VMare安裝Centos7並使用Xshell連線Centos 一CentOS 使用VMware虛擬機器如何上網

感謝源創作者的原文連結:https://www.cnblogs.com/yufeng218/p/8099918.html感謝原作者,靠此篇文章完成的XShell訪問。設定成功後,可以ssh登入,但是宿主機可以ping虛擬機器,但是反之不行,而且虛擬機器的ping host依舊

AndroidAndroid與伺服器互動 POST上傳多個圖片檔案文字內容 GET下載圖片

這裡伺服器端採用的是php解析內容 HTTP請求   HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。用於資料互動的最基本方法一般為GET、POST、PUT、DELETE。對

APUE第3章 文件I/O (3) 文件共享原子操作函數dup/dum2函數sync/fsync/fdatasync函數fcntl函數ioct1目錄/dev/fd 使用說明

src 技術分享 fsync 表之間 eight 進程 所有 修改 數據塊 1、文件共享 UNIX系統支持在不同的進程間共享打開文件。為了說明這種共享,以下介紹內核用於所有I/O的數據結構。 內核使用3種數據結構表示打開文件,它們之間的關系決定了在文件共享方面一個進程對

Jpom一款簡而輕的低侵入式線上構建自動部署日常運維專案監控軟體

一款簡而輕的低侵入式線上構建、自動部署、日常運維、專案監控軟體 https://jpom.io/ | http

整理軟件工程復習提綱(維護)

評價 描述 nbsp 參考 操作 text 吸引 復習 組織 章魚小年糕整理,如果有錯誤歡迎提出,若要二次修改發布,請留言,謝謝^_^! 概念 軟件維護:軟件在已經交付使用之後,為了改正錯誤或滿足新的需求修改軟件的過程。 文檔:有關計算機程序功能、設計、編制、使用的文字或圖