原创 操作系統——信號(2)

操作系統中,信號的產生可以告訴系統要去執行某個操作。操作系統中有默認的信號處理函數。我們也可以更改默認的信號處理函數,由我們自己寫。——信號捕捉 我們先來看看信號在內核中是怎樣的: 信號對於操作系統來說,分爲3類: 1.阻塞

原创 Linux——線程 三 (互斥量)

我們都知道每個線程都有自己獨立的棧空間,自己使用的變量地址也在棧空間內。但是有時候,線程訪問的變量都需要線程共享,這些變量稱爲共享變量,通過數據共享完成線程之間的交互。 我們在進程中瞭解到,多個進程同時訪問一個共享變量的時候,會

原创 Linux——進程間通信——信號量

信號量是進程間通信方式的其中一種,那麼爲什麼存在信號量這種機制呢? 信號量主要應用於同步互斥操作,先來了解一下,同步和互斥是什麼? 同步:多個進程需要相互配合才能完成一項任務 互斥:1.由於各個進程都要訪問共享資源,而且這些資

原创 Linux——線程 五 (條件變量)

條件變量: 當一個線程互斥的訪問某個變量時,它可能會發現自己要完成某個操作需要某個共享變量達到條件。否則會進入阻塞。(就比如說,當前有個判斷 : a = 0 ,線程1要執行1/a,需要的條件是a不等於0,現在線程1只能阻塞等待着

原创 OSI七層模型

OSI(Open System interconnection,開放式系統互連),七層網絡模型稱爲開放式系統互聯參考模型,是一個邏輯上的定義,一個規範,它把網絡從邏輯上分成了7層。 OSI七層模型的最大優點是將服務,接口和協議這

原创 Linux——線程 二 (等待與分離)

線程等待: 爲什麼需要線程等待? 1.已經退出的線程,其空間沒有被釋放,仍然在進程的地址空間內 2.創建新的線程不會複用剛纔退出的線程地址空間 我們知道進程內至少有一個線程作爲執行單位,當我們進程退出了,意味着我們的線程也退

原创 雜談網絡相關操作系統指令(netstat,ping等)

netstat ping ttl netstat(選項) 該指令用來打印Linux中網絡系統的狀態信息: -a或–all:顯示所有連線中的Socket; -A<網絡類型>或–<網絡類型>:列出該網絡類型連線中的相關地址

原创 Linux——線程 四 (信號量)

線程中的信號量和進程中的信號量的作用相同,都是用於同步操作,達到無衝突的訪問共享資源的目的。但是它們也是有一定的區別的。 線程中的信號量通過參數的不同,也可以在進程間使用。 和semget() 函數創建的信號量不同,線程中的信

原创 Linux內核中,進程的七種狀態

Linux內核中,運行一個進程,會因爲各種因素,進程會處於何種狀態。 有如下幾種狀態: 1.用戶運行態:用戶層面,由用戶執行程序,執行與等待結果過程。 2.運行態:CPU處理進程任務並返回運行結果 3.殭屍態:進程運行完,但是沒

原创 Socket——API

socket常見API: // 創建 socket ⽂文件描述符 (TCP/UDP, 客戶端 + 服務器) int socket(int domain, int type, int protocol); // 綁定端⼝口號 (T

原创 TCP/IP五層模型

TCP/IP是一組協議的代名詞,它包括許多協議,組成了TCP/IP協議簇。它是把OSI七層模型簡化成了五層模型。每一層都呼叫它的下一層所提供的網絡來完成自己的需求。 應用層:負責應用程序間的溝通。如:簡單電子郵件傳輸(SMTP),

原创 Linux——讀寫鎖

Linux下,爲了線程安全,爲我們提供了很多種鎖。 讀寫鎖: 我們在編寫多線程的時候,我們可能需要經常去讀取某個共享數據變量,但是相對要改寫這個變量的機會相對較少。在讀的過程中,往往伴隨着查找的操作,中間耗時很長,給這種代碼加鎖,

原创 操作系統——生產者消費者模型

生產者消費者模型在操作系統中,是很常見的模型之一。它們之間的關係,生產者負責生產產品,消費者負責消費產品。 “產品”是它們的關聯屬性。 依照我們的操作系統理念。這個產品就是共享區。 我們把這塊共享區設置成隊列,內存塊,都是可以

原创 網絡編程簡單基礎知識

一,IP協議:它在源地址和目的地址之間,傳送一種稱爲數據包的東西,它還提供對數據大小的重新組裝功能,以適應不同的網絡對包大小的要求。(源地址IP:發送方IP 目的地址IP :對方,接受方地址) 現在有兩種版本:IPv4,IPv

原创 double free or corruption (fasttop)

*** Error in `./server’: double free or corruption (fasttop): 0x00000000013a5c20 *** ======= Backtrace: ========= /