原创 阻塞信號及信號屏蔽pending

1.信號在內核中的三種表示 (1)信號遞達:實際執行信號的處理動作; (2)信號未決(pending):信號從產生到遞達的狀態,是一種記錄狀態; (3)阻塞信號(block):被阻塞的信號不會遞達,它在產生時處於未決狀態,直到進

原创 進程組-作業-會話

一、進程組(PGID) 1.進程組是一個或多個進程的集合,它們與同一作業相關聯,可以接收來自同一中端的各種信號; 2.每個進程都屬於一個進程組; 3.多個毫不相關的進程可能共同協作完成同一個作業; 4

原创 信號Signal

1.信號的定義 操作系統向目標進程發送通知的過程。 2.信號的相關概念 ①操作系統是進程的管理者,它會向進程發送信號; ②發送信號即修改目標進程PCB中的信號字段; ③進程的PCB中會有信號的信息,當進程看到這些信息時,

原创 AVL樹的進一步實現

代碼: #pragma once #include<iostream> using namespace std; template<class K, class V> struct AVLTreeNode { AVLTr

原创 優先級隊列---使用堆

優先級隊列(priority queue) 是0個或多個元素的集合,每個元素都有一個優先權。 一般情況下,查找操作用來搜索優先權最大的元素,刪除操作用來刪除該元素 ,對於優先權相同的元素,可按先進先出次序處理或按任意優

原创 模擬實現堆

堆分爲最小堆和最大堆。 最小堆:堆頂的關鍵碼最小,每個節點的關鍵碼小於該節點的左右孩子結點,並且從根節點到每個節點的路徑上,關鍵碼依次遞增。 最大堆:堆頂的關鍵碼最大,每個節點的關鍵碼大於該節點的左右孩子結點,並

原创 Linux--守護進程(精靈進程)

守護進程(daemon) 瞭解守護進程必須要先了解進程組、作業、會話,這三個概念已經在上一篇blog中介紹過了。 1.定義 守護進程獨立於控制端並週期性地執行某種任務或等待處理髮生的某些事件 ; 2.特點: ①守護進

原创 使用棧存儲後綴表達式

12*(3+4)-6+8/2的後綴表達式爲:12 3 4 + * 6 - 8 2 / + 使用棧模擬存儲後綴表達式: #include<iostream> #include<stack> using namespace std;

原创 哈夫曼樹Huffmantree

實現哈夫曼樹,首先要了解這些知識: 路徑長度:一個節點到另一個節點的邊數; 二叉樹的路徑長度(PL):每個葉子節點到根節點的路徑長度相加; 帶權路徑長度(WPL):每個葉子結點到根節點的路徑乘權值相加之和; 哈

原创 子進程的異步等待方式

一.SIGCHLD SIGCHLD信號:當子進程退出時,它會向父進程發送SIGCHLD信號,該信號的默認處理方式爲忽略,當父進程以阻塞方式等待時,它不能處理自己的工作。 我們自定義一個捕捉信號的函數catchsig。

原创 文件指針FILE*及文件描述符fd

文件指針 在C語言中,通過文件指針可以對文件進行相應的操作,定義說明文件指針的一般形式爲:FILE *指針變量標識符。 FILE實際是由系統定義的一個結構體,它包含的字段有文件描述符和緩衝區等。 通常程序運行

原创 NAT技術調研

本博客中5.NAT原理中所有內容引用自: http://www.cnblogs.com/derrick/p/4052401.html?utm_source=tuicool&utm_medium=referral#undefine

原创 AVL樹的四種旋轉--初步解析

> AVL樹也叫作平衡樹,它的每個節點 都有平衡因子: 平衡因子=右子樹的高度-左子樹的高度 AVL樹的性質: 平衡因子大小爲(-2,2),即-1,0,1 當一個節點插入後可能導致AVL樹的不平衡,因此需要經過旋轉,讓這棵樹滿

原创 進程間通信---管道

1.進程間通信(IPC): 把數據從用戶空間拷到內核緩衝區,另一個進程再從內核緩衝區將數據讀走,這種由內核提供的機制叫做進程間通信。 2.管道 管道是一種最基本IPC機制,由pipe函數創建 3.創建管道的函數pipe(

原创 二叉搜索樹---遞歸及非遞歸

二叉搜索樹又稱爲二叉排序樹,它爲一棵空樹,或者是一棵左子樹所有節點的值比根節點小,右子樹所有節點的值比根節點大的一棵樹。 性質: ①.二叉搜索樹中,最左邊的結點值最小,最右邊的結點值最大 ②中序遍歷一棵二叉搜索樹,所