歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux鎖相關

Linux鎖相關

日期:2017/3/1 15:28:23   编辑:關於Linux
Linux鎖相關 一、為什麼需要鎖 臨界區資源保護 二、Linux下鎖的類型: 1、 spin_lock(自旋鎖) 一般用在多核間 單核間使用可作為搶占式開關 內核隊列(kfifo)使用自旋鎖 2、 mutex(互斥鎖) 多用於線程安全的保護 也可用於進程間保護 pthread_mutex_t *p_map; int cpid; p_map=(pthread_mutex_t*)mmap(NULL,sizeof(pthread_mutex_t)*10,PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS,-1,0); sum_mutex = p_map; pthread_mutexattr_t mutex_shared_attr; /* Set pthread_mutex_attr to process shared */ pthread_mutexattr_init(&mutex_shared_attr); pthread_mutexattr_setpshared(&mutex_shared_attr, PTHREAD_PROCESS_SHARED); pthread_mutex_init(sum_mutex, &mutex_shared_attr); 3、 write_lock 4、 read_lock 三、死鎖 原因:等待永遠不可能發生的條件 (1) 因為系統資源不足。 (2) 進程運行推進的順序不合適。 (3) 資源分配不當等。 條件: (1) 互斥條件:一個資源每次只能被一個進程使用。 (2) 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。 (3) 不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。 (4) 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。 死鎖的解除與預防: 理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和 解除死鎖。所以,在系統設計、進程調度等方面注意如何不讓這四個必要條件成立,如何確 定資源的合理分配算法,避免進程永久占據系統資源。此外,也要防止進程在處於等待狀態 的情況下占用資源。因此,對資源的分配要合理。
Copyright © Linux教程網 All Rights Reserved