宣告:本文內容純屬博主自己查詢和歸納的個人所需的知識點,僅作參考,如有錯誤,博主強烈希望您指出。如果您是某個知識點的原創博主,如有需要,可聯絡本人加上鏈結。本文內容會根據博主所需進行更新,希望大家多多關照。pcb:程序控制塊,存放檔案描述符表,本質是乙個結構體
乙個程序有乙個檔案描述符表,大小為1024位元組,前三個被占用,分別是stdin_fileno、stdout_fileno和stderr_fileno
檔案描述符作用:尋找磁碟檔案
檢視磁碟命令:df -h
在多執行緒程式設計實踐中,執行緒的個數往往多於cpu的個數,所以一般都稱多執行緒併發程式設計而不是多執行緒並行程式設計。
在父程序中執行fork並exit退出;
在子程序中呼叫setsid函式建立新的會話;
在子程序中呼叫chdir函式,讓根目錄 「/」 成為子程序的工作目錄;
在子程序中呼叫umask函式,設定程序的umask為0;
在子程序中關閉任何不需要的檔案描述符(close(fd))或者重定向"/dev/null"
建立乙個互斥量,用lock_guard或者unique_lock封裝互斥量
建立條件變數,用wait成員函式等待條件滿足
另一線程使用notify_one或notify_all後啟用wait
wait拿鎖後判斷第二個引數是否為true,如果true則執行下面的**,如果false則表示條件不滿足,繼續等待下次的啟用
程序是分配資源的基本單位;執行緒是系統排程和分派的基本單位。
乙個程序可以擁有多個執行緒,屬於同一程序的執行緒,具有相同的位址空間,堆是共享的,棧是私有的。
程序開銷大,執行緒開銷小
執行緒間通訊相對方便,程序間通訊相對複雜
多程序更健壯,多執行緒容易出錯
程序是乙個資源的容器,為程序裡的所有執行緒提供共享資源,是對程式的一種靜態描述,執行緒是計算機最小的排程和執行單位,是對程式的一種動態描述
避免阻塞
單個執行緒中的程式,是順序執行的。如果前面的操作發生了阻塞,那麼就會影響到後面的操作。這時候可以採用多執行緒
避免cpu空轉
有時候處理一條請求,會涉及到資料庫訪問、磁碟io等操作,這些操作的速度比cpu慢很多,而在等待這些響應的時候,cpu卻不能去處理新的請求,沒有充分利用資源,這時多執行緒就發揮作用了
提公升效能
在滿足條件的前提下,多執行緒確實能提公升效能:
第1,任務具有併發性,子任務之間不能有先後順序的依賴,必須是允許並行的,另外,還不能有資源競爭
第2,只有在cpu是效能瓶頸的情況下,多執行緒才能實現提公升效能的目的。
第3,就是需要有多核cpu才行,如果上述條件都滿足,有乙個經驗公式可以計算效能提公升的比例,叫阿姆達爾定律:
速度提公升比例 = 1/[(1-p)+(p/n)]
其中p是可並行任務的比例,n是cpu核心數量
編譯:gcc加要加-g,-g保留函式名和變數名
啟動:gdb 可執行檔案
傳參:set args 引數1 引數2 …
操作命令
檢視第n行的上下程式
l n設定檢視n行上下程式
set listsize n
檢視其他檔案程式
l 檔名 : n 或 函式名
在n行打斷點
b n檢視斷點
i b刪除斷點
d n,n為斷點編號
設定無效或有效斷點
dis / enb n,n為斷點編號
條件斷點
b n if 變數==值
執行r 或 start,r直接到斷點,start進入程式第一行
單步執行
n執行到下乙個斷點
c檢視變數資訊
p 變數名
檢視變數型別
ptype 變數名
一直顯示變數資訊
display 變數名
取消顯示變數
先i display 檢視變數編號n,然後undisplay n
進入函式
s離開函式
finish
跳出迴圈
until,需要刪除斷點
離開gdb
qgdb也可以直接除錯core檔案檢視錯誤:
core 指該程式執行時,程序空間的記憶體分布
dumped 表示核心已經把core丟擲
通常,出現段錯誤提示時程式執行目錄下應該自動生成乙個core檔案用來儲存核心丟擲的core,但是,由於linux環境一般預設設定core檔案限制為0,所以一般情況下無法生成core檔案。
2.檢視core檔案大小限制:ulimit -c
3.將其修改為無限制:ulimit -c unlimited
4.執行命令:gdb 執行檔名 core
5.gdb輸入where
命令列檢視執行緒資訊:
執行緒棧結構的檢視:
利用gdb檢視執行緒資訊:
進入gdb除錯:
相容性:windows向後相容,linux核心公升級可能就不相容,軟體方面windows佔優
程序:單個程序windows不能執行,linux可以
效能:windows圖形介面,很多渲染,效能降低,linux少,用命令列工作,效能好
檔案系統:linux有多種檔案系統,對檔案和裝置的管理佔優,windows較差
中斷優先順序:windows有32級,linux似乎只有5級,異常分為故障(fault)、陷阱(trap)和中止(abort)
軟體啟動:windows用登錄檔,linux用配置檔案,靈活性高
c 服務端面試個人小結
首先思科是由於大批招實習生,當天安排了有20個學生來面試。各個部門聯合交叉招聘,基本面試官都是各個團隊的技術總監或者team leader,你碰到的面試官不一定是你報的崗位方向,我碰到了有移動端,前端,後端和乙個全棧大牛,基本上我問了下都是工作有十幾年的,經驗很豐富。大概是6 7個面試室同事進行,每...
前端面試準備
1.簡單介紹下ajax ajax是web2.0技術的核心由多種技術集合而成,使用ajax技術不必重新整理整個頁面,只需對頁面的區域性進行更新,可以節省網路頻寬,提高頁面的載入速度,從而縮短使用者等待時間,改善使用者體驗。2.tcp與udp的區別 1 tcp面向連線 如打 要先撥號建立連線 udp是無...
前端面試準備 2
1.一次完整的http事務是怎麼樣的過程?1 通過網域名稱尋找ip位址 瀏覽器會首先搜尋自己的瀏覽器快取裡面有沒有dns快取,如果找到則結束,裡面有網域名稱對應的ip位址。如果瀏覽器快取沒有找到,則會繼續往作業系統中查詢是否有dns快取,如果找到則結束,否則進行下一步。瀏覽器會向本地的dns服務提供...