Office 2007功能区的设置方法详解
1085
2022-05-29
IPC 代表进程间通信,这种技术允许进程相互通信。
既然每个进程都有自己的地址空间和唯一的用户空间,那么进程之间如何通信呢?
答案是内核,它是 Linux 操作系统的核心,可以访问整个内存。因此我们可以请求内核分配可用于进程间通信的空间。
该进程还可以通过让两个进程都可以访问的文件来进行通信。进程可以打开和读取/写入文件,这需要大量的 I/O 操作,耗费时间。
不同类型的 IPCS
有各种 IPC 允许一个进程与另一个进程进行通信,无论是在同一台计算机中还是在同一网络中的不同计算机中。
管道——为进程提供一种通过交换消息相互通信的方式。命名管道为运行在不同计算机系统上的进程提供了一种通过网络进行通信的方式。
共享内存——进程可以在共享内存中交换值。一个进程将创建其他进程可以访问的一部分内存。
消息队列——它是一个结构化和有序的内存段列表,进程在其中存储或检索数据。
信号量——为访问相同资源的进程提供同步机制。没有数据通过信号量传递;它只是协调对共享资源的访问。
10 IPCS 命令示例
ipcs 是一个 UNIX/Linux 命令,用于列出有关进程间通信的信息 ipcs 命令提供关于 System V IPCS(消息队列、信号量和共享内存)的报告。
IPCS 示例 1:列出所有 IPC 设施
带有 -a 选项的 ipcs 命令列出了对当前进程具有读取访问权限的所有 IPC 设施。它提供了有关消息队列、信号量和共享内存的详细信息。
# ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2 ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204 ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
所有 IPC 设施都有唯一的密钥和标识符,用于标识 IPC 设施。
IPCS 示例 2:列出所有消息队列
带有选项 -q 的 ipcs 仅列出当前进程具有读取权限的消息队列。
$ ipcs -q ------ Message Queues -------- key msqid owner perms used-bytes messages 0x000005a4 32768 root 644 0 0
IPCS 示例 3. 列出所有信号量
ipcs -s 选项用于列出可访问的信号量。
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x0103eefd 0 root 664 1 0x0103eefe 32769 root 664 1 0x4b0d4514 1094844418 oracle 660 204
IPCS 示例 4. 列出所有共享内存
ipcs -m 选项与 ipcs 命令列出共享内存。
# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0xc616cc44 1056800768 oracle 660 4096 0 0x0103f577 323158020 root 664 966 1 0x0000270f 325713925 root 666 1 2
IPCS 示例 5. IPC 设施的详细信息
ipcs -i 选项提供有关 ipc 设施的详细信息。
# ipcs -q -i 32768 Message Queue msqid=32768 uid=0 gid=0 cuid=0 cgid=0 mode=0644 cbytes=0 qbytes=65536 qnum=0 lspid=0 lrpid=0 send_time=Not set rcv_time=Not set change_time=Thu Aug 5 13:30:22 2010
选项 -i 和 -q 提供有关特定消息队列的信息。选项 -i 和 -s 提供信号量详细信息。选项 -i 和 -m 提供有关共享内存的详细信息。
IPCS 示例 6. 列出 IPC 设施的限制
ipcs -l 选项给出每个 ipc 设施的系统限制。
# ipcs -m -l ------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 67108864 max total shared memory (kbytes) = 17179869184 min seg size (bytes) = 1
上面的命令给出了共享内存的限制。-l 可以与 -q 和 -s 组合以分别查看消息队列和信号量的限制。
单个选项 -l 给出了所有三个 IPC 设施的限制。
# ipcs -l
IPCS 示例 7. 列出 IPC 设施的创建者和所有者详细信息
ipcs -c 选项列出创建者用户标识和组标识以及所有者用户标识和组标识。此选项可以与 -m、-s 和 -q 结合使用,以查看特定 IPC 设施的创建者详细信息。
# ipcs -m -c ------ Shared Memory Segment Creators/Owners -------- shmid perms cuid cgid uid gid 1056800768 660 oracle oinstall oracle oinstall 323158020 664 root root root root 325713925 666 root root root root
IPCS 示例 8. 最近访问 IPC 设施的进程 ID
ipcs -p 选项显示创建者 ID,以及最近访问相应 ipc 设施的进程 ID。
# ipcs -m -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 1056800768 oracle 16764 5389 323158020 root 2354 2354 325713925 root 20666 20668
-p 也可以与 -m、-s 或 -q 组合使用。
IPCS 示例 9. 上次访问时间
ipcs -t 选项显示每个 ipc 设施的最后操作时间。此选项也可以与 -m、-s 或 -q 结合使用以打印特定类型的 ipc 设施。对于消息队列,-t 选项显示上次发送和接收时间,对于共享内存,它显示上次附加(内存部分)和分离时间戳,对于信号量,它显示上次操作和更改时间详细信息。
# ipcs -s -t ------ Semaphore Operation/Change Times -------- semid owner last-op last-changed 0 root Thu Aug 5 12:46:52 2010 Tue Jul 13 10:39:41 2010 32769 root Thu Aug 5 11:59:10 2010 Tue Jul 13 10:39:41 2010 1094844418 oracle Thu Aug 5 13:52:59 2010 Thu Aug 5 13:52:59 2010
IPCS 示例 10. 当前使用状态
带有 -u 命令的 ipcs 显示所有 IPC 设施的当前使用情况。此选项可以与特定选项结合使用,以显示特定 IPC 设施的状态。
# ipcs -u ------ Shared Memory Status -------- segments allocated 30 pages allocated 102 pages resident 77 pages swapped 0 Swap performance: 0 attempts 0 successes ------ Semaphore Status -------- used arrays = 49 allocated semaphores = 252 ------ Messages: Status -------- allocated queues = 1 used headers = 0 used space = 0 bytes
任务调度
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。