原创 UNP(卷2:進程間通信)—— 第14章:System V共享內存區

先調用shmget,再調用shmat。 對於每個共享內存區,內核維護如下信息結構 shmid_ds,<sys/shm.h> /* Permission flag for shmget. */ #define SHM_R 0

原创 UNP(卷2:進程間通信)—— 第12章:共享內存區介紹

共享內存區是可用IPC形式中最快的。一旦這樣的內存區映射到共享它的進程的地址空間,這些進程間數據的傳遞就不再涉及內核。然而往共享內存區存放信息或從中取走信息的進程間通常需要某種形式的同步。 “不再涉及內核”:指 進程不再通過執行任何進入內

原创 面試題

內核 Linux中主要有哪幾種內核同步方法?(原子操作,自旋鎖(讀寫自旋鎖),信號量(讀寫信號量),互斥體,完成變量,大內核鎖,順序鎖,RCU,禁止搶佔,順序和屏障) vmalloc和kmalloc的區別? ( vmalloc分

原创 UNP(卷2:進程間通信)—— 第5章:Posix消息隊列

Posix消息隊列 和 System V 消息隊列的主要差別: 對POSIX消息隊列的讀總是返回最高優先級的最早消息,對System V消息隊列的讀則可以返回任意指定優先級的消息。當往一個空隊列放置一個消息時,Posix消息隊列允許產生

原创 TLS重新協商顯示擴展,RFC5746

1、介紹 TLS [RFC5246]允許客戶端或服務器啓動重新協商 - 建立新的加密參數的新握手。 不幸的是,雖然使用由原始握手建立的加密參數來執行新的握手,但是兩者之間沒有加密綁定。 這將爲攻擊者創造機會,攻擊者可以攔截客戶端的傳輸層連

原创 UNP(卷2:進程間通信)—— 第10章:Posix信號量

sem_open、sem_close、sem_unlink #include <fcntl.h> /* For O_* constants */ #include <sys/stat.h> /* Fo

原创 UNP(卷2:進程間通信)—— 第11章:System V 信號量

先前介紹的POSIX信號量概念: 二值信號量:0,1計數信號量:0和某個限制值之間的信號量。 System V 中信號量: 計數信號量集:一個或多個信號量,其中每個都是計數信號量。 對於系統的每個信號量集,內核維護一個信息結構:<sys

原创 Linux設備驅動:一,簡介

內核 角色劃分: 進程管理:內核創建和銷燬進程;調度器控制進程如何共享CPU。內存管理:內核爲每一個進程都在有限的可用資源上建立一個虛擬地址空間。文件系統:結構化的文件系統。設備控制:設備驅動。網絡:所有的路由和地址解析問題都在內核中實

原创 UNP(卷2:進程間通信)—— 第7、8、9章:互斥鎖、條件變量、讀寫鎖、記錄上鎖

互斥鎖: 相互排斥(mutual exclusion),用於保護臨界區。 Posix互斥鎖被聲明爲具有pthread_mutex_t數據類型的變量。 如果互斥鎖的變量是靜態分配的,那麼我們可以把它初始化成常值PTHREAD_MUTEX_I

原创 LNK2005 __CRT_RTC_INIT already defined in LIBCMTD.lib(_init_.obj)

忽略重複定義:到 Project –> Linker –> Command Line 下輸入: /FORCE:MULTIPLE 點贊 收藏 分享 文章舉報 The_Hun

原创 UNP(卷2:進程間通信)—— 第4章:管道和FIFO

管道 由pipe創建,提供一個單向的數據流。 #include <unistd.h> int pipe(int fd[2]); // 返回:成功則爲0,出錯則爲

原创 UNP(卷2:進程間通信)—— 第6章:System V消息隊列

System V 消息隊列使用消息隊列標識符(Message Queue Identifier)。具有足夠特權的任何進程都可以往一個給定進程放置一個消息。也可以讀出一個消息。跟Posix消息隊列一樣,在寫消息之前,不求另外某個進程正在等待

原创 用於防止協議降級攻擊的TLS備用信號加密套件值(SCSV),RFC7507

爲了解決傳統服務器的互操作性問題,許多TLS客戶端實現不依賴於TLS協議版本協商機制,而是在初始握手嘗試失敗時有意使用降級協議重新連接。這樣的客戶端可能會退回到它們宣佈版本低至TLS 1.0(或甚至其前身的安全套接層(SSL)3.0))的

原创 UNP(卷2:進程間通信)—— 第13章:Posix共享內存區

mmap提供父子進程間的共享內存區的列子: (1)使用內存映射文件; (2)使用4.4BSD 匿名內存映射; (3)使用 /dev/zero 匿名內存映射。 POSIX 提供了兩種在無親緣關係進程間共享內存區的方法: (1)內存映射文件

原创 glibc源碼解讀——malloc

通過宏定義的展開,找到malloc的函數地址: # define C_SYMBOL_NAME(name) name # define ASM_LINE_SEP ; void *__libc_malloc (size_t bytes);