GNU前端
發起時間 1983年9月27日shell
GNU是一個自由操做系統,其內容軟件徹底以GPL協定發佈。編程
1989年,發表GNU通用公共許可協議。GNU項目中的其餘部分,如編輯器、編譯器、shell等都已經完成,獨缺操做系統核心。1990年,自由軟件基金會開始正式發展Hurd,做爲GNU項目中的操做系統。後端
GCC——GNU Compiler Collection服務器
初版:1987.05.23 發行多線程
最新版本:2016.04.27 6.1.0編輯器
類型:多語言編譯器ide
開發語言:C++工具
許可協議:CPL&&LGPL性能
Centos6.8gcc version 4.4.7 20120313
Centos7.2gcc version 4.8.5 20150623
GNU編譯器套裝
以GPL及LGPL許可證所發行的自由軟件,也是GNU項目的關鍵部分,也是GNU工具鏈的主要組成部分之一。GCC(特別是其中的C語言編譯器)也常被認爲是跨平臺編譯器的事實標準。1985年由理查德·馬修·斯托曼開始發展,如今由自由軟件基金FSF會負責維護工做。
原名爲GNU C語言編譯器(GNU C Compiler),由於它本來只能處理C語言。GCC很快地擴展,變得可處理C++。以後也變得可處理Fortran、Pascal、Objective-C、Java、Ada,以及Go與其餘語言。
許多操做系統,包括許多類Unix系統,如Linux及BSD家族都採用GCC做爲標準編譯器。蘋果電腦Mac OS X操做系統也採用這個編譯器。
GCC本來用C開發,後來由於LLVM(C++編寫)、Clang(是LLVM編譯器工具集的前端front-end,做者是克里斯·拉特納)的崛起,它更快地將開發語言轉換爲C++。許多C的愛好者在對C++只知其一;不知其二的狀況下主觀認定C++的性能必定會輸給C,可是Taylor給出了不一樣的意見,並代表C++不但性能不輸給C,並且能設計出更好,更容易維護的程序.
內嵌OpenMP支持:OpenMP是一種跨語言的對稱多處理機多線程並行程序的編程工具,從gcc4.2開始,OpenMP成爲其內嵌支持的並行編程規範
Clang
初版:2007 July 11
最新版本:2016年7月11日 V3.8.1
類型:編譯器——GCC前段
開發語言:C++
許可協議:源代碼受權是使用類BSD的伊利諾伊大學厄巴納-香檳分校開放源碼許可
Clang項目包括Clang前端和Clang靜態分析器等
項目在2005年由蘋果電腦發起,是LLVM編譯器工具集的前端(front-end),目的是輸出代碼對應的抽象語法樹(Abstract Syntax Tree, AST),並將代碼編譯成LLVM Bitcode。接着在後端(back-end)使用LLVM編譯成平臺相關的機器語言
測試證實Clang編譯Objective-C代碼時速度爲GCC的3倍,還能針對用戶發生的編譯錯誤準確地給出建議
LLVM——Low Level Virtual Machine
最新版3.8.12016年7月11日
類型:編譯器——GCC中段
開發語言:C++
許可協議:伊利諾伊大學厄巴納-香檳分校開放源碼許可
項目起源於2000年伊利諾伊大學厄巴納-香檳分校維克拉姆·艾夫(Vikram Adve)與克里斯·拉特納(Chris Lattner)的研究發展而成,計算機協會於2012年授與Adve、Lattner及Evan ChengACM軟件系統獎
GPL&&LGPL
理查德·馬修·斯托曼起草
GPL——General Public License
類型:開放源碼協議
V1 1989.01
V2 1991.06
V3 2007.06.29
權力和義務
權力
以任何目的運行此程序的自由;
再發行復製件的自由;
改進此程序,並公開發布改進的自由(前提是能獲得源代碼)
義務
GPL不會授予許可證接受人無限的權利。再發行權的授予須要許可證接受人開放軟件的源代碼,及全部修改。且複製件、修改版本,都必須以GPL爲許可證。
LGPL——Lesser General Public License
類型:開放源碼協議
V2 1991
V2.1 1999
V3 2007
GC——garbage collector
libgc.so contains a C interface to the conservative garbage collector, primarily designed to replace the C malloc function.
libgccpp.so contains a C++ interface to the conservative garbage collector.
Introduction to GC
The GC package contains the Boehm-Demers-Weiser conservative garbage collector, which can be used as a garbage collecting replacement for the C malloc function or C++ new operator. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. The collector is also used by a number of programming language implementations that either use C as intermediate code, want to facilitate easier interoperation with C libraries, or just prefer the simple collector interface. Alternatively, the garbage collector may be used as a leak detector for C or C++ programs, though that is not its primary goal.
This package is known to build and work properly using an LFS-7.9 platform.
This package is known to build properly using the gcc-6 compiler.
TCP狀態標誌位
FLAG
SYN——0x02
ACK——0x10
PSH——0x08
RST——0x04
FIN——0x01
URG——
TCP狀態機
STAT
1 C SYN-SENT:在發送鏈接請求後等待匹配的鏈接請求
2 S SYN-RECEIVED:在收到和發送一個鏈接請求後等待對鏈接請求的確認
3 CS ESTABLISHED:表明一個打開的鏈接,數據能夠傳送給用戶
4 SC FIN-WAIT-1:等待遠程TCP的鏈接中斷請求,或先前的鏈接中斷請求的確認
5 SC FIN-WAIT-2:從遠程TCP等待鏈接中斷請求
6 C TIME-WAIT:等待足夠的時間以確保遠程TCP接收到鏈接中斷請求的確認
7 SC LOSE-WAIT:等待從本地用戶發來的鏈接中斷請求
8 C CLOSING:等待s遠程TCP對鏈接中斷的確認
9 C CLOSED:沒有任何鏈接狀態
10 S LAST-ACK:等待原來的發向遠程TCP的鏈接中斷請求的確認
11 S LISTEN:偵聽來自遠方的TCP端口的鏈接請求
TCP狀態轉換
階段一:創建TCP鏈接
client主動打開SYN-SENT:flag=SYN0
SERVER-LISTEN————>SYN-RECEIVED:flag=SYN1,ACK0
client ESTABLISHED
client ESTABLISHED:flag=ACK1
SERVER ESTABLISHED
階段二:傳輸TCP數據
階段三:關閉TCP鏈接
客戶端應用程序的狀態遷移
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
服務器的狀態遷移
CLOSED->LISTEN->SYN-REC->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED