原创 vim配置(~/.vimrc)

  """""""""""""""""""""""""""""""""""""""""""""""""""""""""" " script local variable """"""""""""""""""""""""""""""""""

原创 linux 系統調用fork vfork clone

fork:通過fork創建新進程 vfork:主要用於馬上執行exec的情況,因爲馬上就exec裝入新的程序,所以可以去掉fork中分配新的地址空間等操作,進而加速進程創建 clone:功能更強,參數更多;主要用於創建線程/父子進程資源共

原创 linux SysV IPC msg消息隊列實現

消息隊列是由存放在內核中的消息組成的鏈表,由IPC id標識。 由msgget創建新隊列或打開已經存在的隊列 由msgsnd將消息添加到消息隊列尾,每個消息包括正整數標識的類型,非負的長度,及數據。 由msgrcv從消息隊列中取消息,不必

原创 linux SysV IPC shm共享內存實現

共享內存可以使多個進程共享某段內存,由於不需要進程間數據複製,所以是速度最快的IPC。 多個進程訪問共享內存時需要同步機制,如進程A往共享內存中寫數據時,進程B不能使用共享內存;通常採用信號量同步多進程訪問共享內存。 共享內存實現主要有以

原创 linux SysV IPC sem信號量實現

信號量值是一個計數器,用於控制多進程對共享資源的訪問;進程獲取共享資源需要以下步驟: 1.檢查資源的信號量值 2.如果信號量值是正,進程可以訪問資源;進程將信號量值減1,表示進程已經使用了一個資源 3.如果信號量值是0,進程被阻塞直到信號

原创 linux SysV IPC實現

IPC(Interprocess Communication)表示進程間通信機制;System V IPC機制主要有消息隊列、共享內存、信號量,linux中實現了SysV IPC。   I.SysV IPC創建/獲取 消息隊列、共享內存、

原创 linux idr機制

I.idr機制 i.idr介紹 系統許多資源都用整數ID來標識,如進程ID、文件描述符ID、IPC ID等;資源信息通常存放在對應的數據結構中(如進程信息存放在task_struct中、ipc信息存放在ipc_perm中),id與數據結構

原创 linux signal產生(發送)

不論是內核發送信號(硬件異常-SIGSEGV等、軟件通知-SIGPIPE等、終端鍵-SIGINT等),還是用戶進程發送信號(kill系統調用),都要由內核將信號記錄到相應(輕量級)進程描述符中的信號相關結構中、喚醒被阻塞的目標進程等。 在

原创 linux TCP超時重傳

TCP超時重傳是保證TCP可靠性傳輸的機制之一,當超時後仍沒有收到應答報文,就重傳數據包並設置超時時鐘(超時時間一般增大到原超時時間2倍);直到收到應答報文或超過最大重試次數。 linux TCP超時重傳是通過設置重傳超時時鐘icsk_

原创 linux signal傳遞(處理)

內核版本:2.6.32.60 linux信號傳遞階段發生在異常/中斷返回到用戶態時;當內核由內核態返回到用戶態時,如果有信號pending到當前進程,內核就將信號傳遞給進程並做信號處理   I.異常/中斷返回 i.信號傳遞 由以下注釋可以

原创 linux 虛擬文件系統VFS

與其它系統完美共存是linux的成功之處之一,linux可以透明掛載其它系統文件格式的磁盤或分區,如Windows的FAT32、NTFS等; linux使用虛擬文件系統VFS(Virtual Filesystem Switch)來支持

原创 linux 信號signal實現

信號是發送給進程或進程組的非常小的消息,通常只包含信號編號;現在的系統可以附帶siginfo信息,見sigaction的SA_SIGINFO標識。 信號主要有以下兩個目的: 1.讓進程知道出現某異步事件 2.出現異步事件,讓進程能做出相應

原创 emacs配置(.emacs.d/init.el)

;;-*- mode: lisp; coding: utf-8 -*- ;; Tested Emacs version: 23.1.1, 23.2, 24.3 ;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

原创 linux pipe文件系統(pipefs)

linux的pipe,FIFO(named pipe)都是基於pipe文件系統(pipefs)的。 linux的pipe和FIFO都是半雙工的,即數據流向只能是一個方向; pipe只能在pipe的創建進程及其後代進程(後代進程fork/e

原创 linux cred管理

I.credential管理 linux系統中,一個對象操作另一個對象時通常要做安全性檢查。如一個進程操作一個文件,要檢查進程是否有權限操作該文件。 linux內核中,credential機制的引入,正是對象間訪問所需權限的抽象;主體提供