日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对《程序员的自我修养》(龙书)读后思考

發布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对《程序员的自我修养》(龙书)读后思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、第一章 溫故知新


第一章首先簡單說了計算機架構,北橋芯片的來源,南橋芯片的來源,以及系統對內存的基本管理(內存的分段管理,分頁)等。然后后面講到系統中的進程和線程,由于是多進程、多線程,以及安全問題。(線程安全問題其實就是同步問題)

多線程是為了cpu計算資源的更好利用,和資源的并行執行!

對于目前實現線程安全問題有一些概念:

原子操作,因為一些重要的同步計算過程不是原子的,那么在調度器,就有可能中斷,讓線程執行其他任務,然后回來再計算。那么這就造成這個時間段,有其他線程已經改變了你之前獲取的數據。原子問題是同步問題的本質。

多說點:目前有部分同步操作,是基于硬件的,比如CAS操作;其實上層觸發一個指令(機器指令),cpu 要處理很多計算,就是在硬件上執行這條指令對應所有步驟,硬件上設計上對應自己支持的所有機器指令。每一條指令就像自己已經記憶的眾多指令的一個命令。(所有記憶的指令就是自己支持的指令)

二元信號量

互斥量:是不是正在有執行線程的標志

臨界區:自己線程的概念,和正在執行標志位

讀寫鎖

同步過度優化

多線程模式:

即用戶態線程(對于開發者的執行引擎或者虛擬機,或者操作系統本身)和內核態的對應關系:一對一,多對一,多對多。


二、第二章 編譯和鏈接


編譯主要根據代碼文件編譯對應的.o或者.obj文件,一個代碼文件對應編譯一個.obj文件。編譯過程首先的就是代碼的字符靜態檢查,或者詞法分析,然后就是語法分析。語法分析之后將你的代碼建立一個代碼書(根據你的代碼邏輯),然后就是中間文件的生成。

中間文件是由中間指令和數據字符組成,中間文件中包含定位符,引用符號等。

鏈接就是將中間文件生成可執行文件,將定位符號,跳轉符號,轉換成具體的目標地址。鏈接過程雖是發生在編譯器中,但是這個過程卻是和操作系統的加載過程息息相關。

對于c/c++編譯器 GCC 我們可以操作命令對其進行編譯和連接,對于工具類,如svn、編譯器、git;或者打包工具,如gradle, ant,msbuild,xcode,或者maven 都是有命令行指令的。在遠程調用的時候,我們只能通過網絡發出指令,實現自動化。

對于跑在操作系統上的應用,很多都是支持命令行的,因為對于我們的操作不僅僅是圖形頁面、人為UI操作。更在于我們通過指令,或者遠程發送指令操作。


三、第三章 目標文件是什么


目標文件的生成不僅僅和編譯器有關系,還和具體生成的目標文件在什么系統上執行有關。(如Windows,Linux,Solaris等)。目標文件中有代碼,數據,符號,字符串等,它是以section為單位對代碼,數據,符號和字符進行劃段管理,.data是放置全局變量和靜態變量,.code或者.text ?section是放置代碼。.bass是存放為初始化的變量(全局變量和靜態變量)。對于中間目標文件還存在文件頭,是用來存儲文件屬性,靜態鏈接的信息,如靜態鏈接的入口,鏈接位置等。如果是可執行文件,那么文件頭是文件屬性和操作系統的信息。

其實目標中間文件就是兩大片段,一個是代碼區,一個是數據區,數據和代碼分開主要是代碼在加載中,是只讀的。數據區是可讀寫的。還有就是代碼指令一般是一份,不用創建副本,但是數據可能要創建副本,因為涉及數據的備份等。

對于Linux系統目標文件一般是ELF,Windows系統目標文件一般是.o或者.obj文件。

對于目標中間文件,其中除了.data,.code,.bss,還有rodatal 存儲常量數據。

.commemt存儲編譯器版本信息

.debug 存儲調試信息,因為我們可能需要代碼在調試下做debug信息處理,斷點等等。

.dynamic 動態鏈接信息

.init/.final 初始化信息

.shstrtab 存儲 section表信息 ?對于一個目標文件可能有很多的section,section 信息我們需要存儲的。

.plt/.got 動態鏈接 入口,全局入口等信息。


四、第四章 靜態鏈接


靜態鏈接做的工作就是:將中間目標文件中的數據section,code section,進行整合,相同類似的section進行合并。代碼段中的數據符號,換成引用地址,相同的代碼片段進行合并整合。靜態鏈接是以目標文件為單位的,最后生成各個可執行文件。對于編譯器,點擊run,將會將可執行文件打包成EXE文件(Windows,Linux可執行文件COFF)。

對于我們編譯器工具,當然也可以將可執行文件打包成靜態庫文件(.lib),以供其他可執行文件調用。靜態鏈接給各個段分配相對的目標地址,同時將引用換成目標地址,靜態鏈接過程的耗時很長的,要比編譯階段的耗時要長。

可執行文件也是有和目標文件相同的section,可執行文件中的代碼或者數據、字符;都是二進制代碼(二進制文件),對于代碼的二進制1與0的機器碼就是對應每一條匯編指令,換句話說就是機器指令。在字符面上就是對應匯編的每一條用字符標記的人可讀的指令,在數字層面就是機器指令。


五、第五章 Windows PE/COFF二進制文件


六、第六章 可執行文件的裝載與進程


























類似的書,比如《Compilers: Principles, Techniques, and Tools》這本也是傳說中的龍書,還有非常著名的《SICP》和《PLAI》。




總結

以上是生活随笔為你收集整理的对《程序员的自我修养》(龙书)读后思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 福利电影一区二区 | 欧美性日韩 | 亚洲欧美综合另类 | 99视频 | 久久精品高清 | 天堂8在线视频 | 蜜桃av噜噜一区二区三区麻豆 | 雪白的扔子视频大全在线观看 | 爱上av| 亚洲熟区| 91av在 | 天天色影综合网 | 男人的天堂在线 | 亚洲人成777| 一本色道久久综合亚洲二区三区 | 久操香蕉| 午夜爽爽爽 | 久艹在线观看 | 生活片毛片 | 日韩毛片免费看 | 日本黄色电影网址 | 草草国产 | 日日爱99 | 69色综合| 亚洲免费精品 | 欧美亚洲第一页 | 伊人网久久久 | 日本黄页网站免费大全 | 扒开美女内裤狂揉下部 | 四虎一区二区三区 | 视频一区二区国产 | 国产精品黄视频 | 日韩精品无码一本二本三本色 | 日韩中文字幕在线播放 | 国产精品日本一区二区在线播放 | 岛国av动作片 | 亚洲精品国产成人久久av盗摄 | 国产精品麻豆果冻传媒在线播放 | 免费在线一区二区 | 女子spa高潮呻吟抽搐 | 91精品国产电影 | 精品在线视频免费 | 豆花视频成人 | 爱爱视频网址 | 国产激情视频一区二区三区 | 你懂的国产视频 | 一级啪啪片 | 久久久久9| 成人午夜视频网站 | av专区在线 | 善良的女朋友在线观看 | 青娱乐毛片 | 日韩av免费在线观看 | 精品无码久久久久久久久果冻 | 亚洲国产美女视频 | 97视频总站 | 欧美黄频| 国产第一页在线 | 中文字幕一区二区三区乱码在线 | 亚洲午夜18毛片在线看 | 精品区在线观看 | 好看的av在线 | 制服丝袜国产在线 | 午夜电影一区二区三区 | 五月天激情视频在线观看 | 涩涩视频在线免费看 | 成人录像| 久久国产精品首页 | 黑人巨大精品欧美黑白配亚洲 | 午夜一区在线观看 | 亚洲第一偷拍 | 黄色网址在线视频 | 99成人国产精品视频 | 久久婷婷热| 久久91亚洲精品中文字幕奶水 | 老鸭窝视频在线观看 | 亚洲精品中文字幕在线观看 | 久久久一级 | 国产天堂av在线 | 国产,日韩,欧美 | 西西4444www大胆无码 | 可以看黄色的网站 | 久艹av| 欧美精品第1页 | 99re免费视频精品全部 | 自拍偷拍亚洲图片 | 99视频国产精品免费观看a | 欧美精品乱码视频一二专区 | 瑟瑟在线观看 | 日韩精品视频一区二区三区 | 看av在线 | 91插插插插插插插 | 国产精品区在线 | 97色网 | 天天视频黄色 | 91福利一区 | 九九九在线视频 | 欧美成人视 | 天天精品 |