共享内存linux(共享内存 linux)
linux實現(xiàn)共享內(nèi)存同步有哪些方法?
共享內(nèi)存可以說是最有用的進程間通信方式,也是最快的IPC形式。兩個不同進程A、B共享內(nèi)存的意思是,同一塊物理內(nèi)存被映射到進程A、B各自的進程地址空間。
進程A可以即時看到進程B對共享內(nèi)存中數(shù)據(jù)的更新,反之亦然。由于多個進程共享同一塊內(nèi)存區(qū)域,必然需要某種同步機制,互斥鎖和信號量都可以。
采用共享內(nèi)存通信的一個顯而易見的好處是效率高,因為進程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝。
對于像管道和消息隊列等通信方式,則需要在內(nèi)核和用戶空間進行四次的數(shù)據(jù)拷貝,
linux下什么是共享內(nèi)存,怎么查看?
可以使用samba協(xié)議。Samba是在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議的一個免費軟件,由服務器及客戶端程序構(gòu)成。SMB是一種在局域網(wǎng)上共享文件和打印機的一種通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機之間提供文件及打印機等資源的共享服務。具體配置步驟如下:
步驟1:安裝samba
sudo apt-get install samba samba-common-bin
步驟2:新建共享目錄并設置權(quán)限
sudo mkdir /home/share
sudo chmod 777 /home/share
步驟3:修改配置文件
sudo nano /etc/samba/smb.conf
在smb.conf最后添加:
path = /home/share
browseable = yes
writable = yes
comment = smb share test
public = no#yes無需密碼 no需要密碼
步驟4:添加遠程訪問用戶
sudo useradd smbuser
sudo smbpasswd -a smbuser
步驟5:重新啟動服務
sudo service samba restart
對于windows操作系統(tǒng),在資源管理器里輸入Linux的IP地址,會提示輸入上述步驟設置的用戶名和密碼,輸入正確后即可訪問分享內(nèi)容。
linux命名空間是如何對資源隔離的?
它通過將命名空間劃分為下面的幾種類型,并且每項namespace都具有一個唯一標識來對資源實現(xiàn)隔離。
如果兩個進程指向的同一個namespace,則表示它們同在該 namespace下。
linux命名空間類型劃分:
1. UTS namespace: 提供了 hostname 和 domain 的隔離。這樣每個容器就擁有獨立的主機名和域名了,在網(wǎng)絡上就可以被視為一個獨立的節(jié)點,在容器中對 hostname 的命名不會對宿主機造成任何影響。
2. PID namespace :完成的是進程號的隔離,保證了容器的 init 進程是以 1 號進程來啟動的。
3. IPC namespace: 實現(xiàn)了進程間通信的隔離,包括常見的幾種進程間通信機制,例如:信號量,消息隊列和共享內(nèi)存。我們知道,要完成 IPC,需要申請一個全局唯一的標識符,即 IPC 標識符,所以 IPC 資源隔離主要完成的就是隔離 IPC 標識符。
4. Mount namespace: 通過隔離文件系統(tǒng)的掛載點來達到對文件系統(tǒng)的隔離。保證了容器看到的文件系統(tǒng)的視圖,是容器鏡像提供的一個文件系統(tǒng),也就是說它看不見宿主機上的其它文件,除了通過 -v 參數(shù) bound 的那種模式,是可以把宿主機上面的一些目錄和文件,讓它在容器里面可見的;
5. Network namespace :實現(xiàn)了操作系統(tǒng)層面的網(wǎng)絡資源隔離,包括網(wǎng)絡設備接口、IPv4 和 IPv6 協(xié)議棧,IP 路由表,防火墻,/proc/net 目錄,/sys/class/net 目錄,Sockets 套接字等資源。同一個網(wǎng)絡設備只能位于一個 Network namespace 中,不同 namespace 中的網(wǎng)絡設備可以利用 veth pair 進行橋接。
6. User namespace :主要隔離了安全相關(guān)的標識符和屬性,包括 User ID、User Group ID、root 目錄、key 以及特殊權(quán)限。
實際上,還有第 7 個是 cgroup namespace。Docker 中用到了前六種,第 7 種 cgroup namespace 在 Docker 本身并沒有用到,但是在 runC 實現(xiàn)中實現(xiàn)了cgroup namespace。用 cgroup namespace 帶來的一個好處是容器中看到的 cgroup 視圖是以根的形式來呈現(xiàn)的,這樣的話就和宿主機上面進程看到的 cgroup namespace 的一個視圖方式是相同的,另外一個好處是讓容器內(nèi)部使用cgroup。
總結(jié)
以上是生活随笔為你收集整理的共享内存linux(共享内存 linux)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Apollo REST A
- 下一篇: 自动化的OSGi测试运行器