linux内存剩余的和可用区别?
top命令能显示系统内存。
目前常用的Linux下查看内容的专用工具是free命令。
下面是对内存查看free命令输出内容的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
oppo什么系统有内存共享?
opporeno5pro双系统手机终端是共用内存。
linux实现共享内存同步有哪些方法?
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。
进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。
对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,
如何使用Linux命令行查看Linux服务器内存使用情况?
查看Linux服务器内存查看Linux服务器下的内存使用情况,可以使用命令free -m。注意此命令只在Linux下有效,在FreeBSD中没有此命令。命令如下所示:
查看Linux服务器内存used:已经使用的内存数free:空闲的内存数shared:多个进程共享的内存总额-buffers/cache:(已用)的内存数,即used-buffers-cached+buffers/cache:(可用)的内存数,即free+buffers+cached得出结论:可用内存的计算公式为:可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB
linux命名空间是如何对资源隔离的?
它通过将命名空间划分为下面的几种类型,并且每项namespace都具有一个唯一标识来对资源实现隔离。
如果两个进程指向的同一个namespace,则表示它们同在该 namespace下。
linux命名空间类型划分:
1. UTS namespace: 提供了 hostname 和 domain 的隔离。这样每个容器就拥有独立的主机名和域名了,在网络上就可以被视为一个独立的节点,在容器中对 hostname 的命名不会对宿主机造成任何影响。
2. PID namespace :完成的是进程号的隔离,保证了容器的 init 进程是以 1 号进程来启动的。
3. IPC namespace: 实现了进程间通信的隔离,包括常见的几种进程间通信机制,例如:信号量,消息队列和共享内存。我们知道,要完成 IPC,需要申请一个全局唯一的标识符,即 IPC 标识符,所以 IPC 资源隔离主要完成的就是隔离 IPC 标识符。
4. Mount namespace: 通过隔离文件系统的挂载点来达到对文件系统的隔离。保证了容器看到的文件系统的视图,是容器镜像提供的一个文件系统,也就是说它看不见宿主机上的其它文件,除了通过 -v 参数 bound 的那种模式,是可以把宿主机上面的一些目录和文件,让它在容器里面可见的;
5. Network namespace :实现了操作系统层面的网络资源隔离,包括网络设备接口、IPv4 和 IPv6 协议栈,IP 路由表,防火墙,/proc/net 目录,/sys/class/net 目录,Sockets 套接字等资源。同一个网络设备只能位于一个 Network namespace 中,不同 namespace 中的网络设备可以利用 veth pair 进行桥接。
6. User namespace :主要隔离了安全相关的标识符和属性,包括 User ID、User Group ID、root 目录、key 以及特殊权限。
实际上,还有第 7 个是 cgroup namespace。Docker 中用到了前六种,第 7 种 cgroup namespace 在 Docker 本身并没有用到,但是在 runC 实现中实现了cgroup namespace。用 cgroup namespace 带来的一个好处是容器中看到的 cgroup 视图是以根的形式来呈现的,这样的话就和宿主机上面进程看到的 cgroup namespace 的一个视图方式是相同的,另外一个好处是让容器内部使用cgroup。