当前位置: 首页 > news >正文

网站描述 修改网站建设与优化

网站描述 修改,网站建设与优化,建站教程的特点,网购哪个网站最好1. 共享内存的基本概念 共享内存是一种允许不同进程直接访问同一块内存区域的机制。与其他IPC机制(如管道、消息队列)相比,共享内存具有以下优点: 高效性:无需进行数据拷贝,数据可以直接在内存中共享&…

1. 共享内存的基本概念

共享内存是一种允许不同进程直接访问同一块内存区域的机制。与其他IPC机制(如管道、消息队列)相比,共享内存具有以下优点:

  • 高效性:无需进行数据拷贝,数据可以直接在内存中共享,减少了系统调用的开销。
  • 灵活性:多个进程可以同时读写共享内存,适用于需要频繁数据交换的场景。

2. 共享内存的实现方式

在Linux中,共享内存主要通过以下两种方式实现:

2.1 System V 共享内存

System V 共享内存是最早的共享内存实现方式,主要通过以下系统调用进行操作:  

shmget:创建或获取一个共享内存段。

  • 参数
    • key:共享内存的键值,唯一标识一个共享内存段
    • size:共享内存大小(需为系统页大小的整数倍)
    • shmflg:标志位(如IPC_CREATIPC_EXCL、权限掩码)
  • 返回值:成功返回共享内存 ID,失败返回 - 1

shmat:将共享内存段附加到进程的地址空间。

  • 参数
    • shmid:共享内存 ID(由 shmget 返回)
    • shmaddr:指定映射地址(通常设为 NULL,由系统自动分配)
    • shmflg:标志位(如SHM_RDONLY
  • 返回值:成功返回映射的虚拟地址,失败返回 - 1

shmdt:将共享内存段从进程的地址空间分离。

 

  • 参数shmaddr为 shmat 返回的映射地址
  • 返回值:成功返回 0,失败返回 - 1

shmctl:控制共享内存段,如删除、设置权限等。

 

  • 参数
    • cmd:操作命令(如IPC_RMID删除共享内存段)
    • buf:存储共享内存元数据的结构体
  • 返回值:成功返回 0,失败返回 - 1

 例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>#define SHM_SIZE 1024  // 共享内存大小
#define KEY 0x1234     // 共享内存键值// 共享内存结构体
typedef struct {int data[10];     // 数据缓冲区int count;        // 数据计数int read_idx;     // 读索引int write_idx;    // 写索引
} SharedData;int main(int argc, char *argv[]) {int shmid;SharedData *shm_ptr;// 创建共享内存段shmid = shmget(KEY, sizeof(SharedData), IPC_CREAT | 0666);if (shmid == -1) {perror("shmget failed");exit(1);}// 映射共享内存到当前进程地址空间shm_ptr = (SharedData *)shmat(shmid, NULL, 0);if (shm_ptr == (void *)-1) {perror("shmat failed");exit(1);}// 初始化共享数据if (argc > 1 && strcmp(argv[1], "producer") == 0) {printf("Producer started\n");for (int i = 0; i < 5; i++) {// 等待缓冲区有空间(实际应使用信号量同步)while (shm_ptr->count >= 10) sleep(1);// 写入数据shm_ptr->data[shm_ptr->write_idx] = i * 10;shm_ptr->write_idx = (shm_ptr->write_idx + 1) % 10;shm_ptr->count++;printf("Produced: %d\n", shm_ptr->data[shm_ptr->write_idx - 1]);sleep(1);}} else if (argc > 1 && strcmp(argv[1], "consumer") == 0) {printf("Consumer started\n");for (int i = 0; i < 5; i++) {// 等待缓冲区有数据(实际应使用信号量同步)while (shm_ptr->count <= 0) sleep(1);// 读取数据int data = shm_ptr->data[shm_ptr->read_idx];shm_ptr->read_idx = (shm_ptr->read_idx + 1) % 10;shm_ptr->count--;printf("Consumed: %d\n", data);sleep(1);}}// 解除映射(生产者/消费者都需要执行)if (shmdt(shm_ptr) == -1) {perror("shmdt failed");exit(1);}// 生产者删除共享内存段if (argc > 1 && strcmp(argv[1], "producer") == 0) {if (shmctl(shmid, IPC_RMID, NULL) == -1) {perror("shmctl failed");exit(1);}printf("Shared memory deleted\n");}return 0;
}

3、共享内存使用注意事项

  1. 同步机制

    • 共享内存不提供任何同步机制,需配合信号量、互斥锁等使用(如上例应添加信号量控制读写)
    • 典型组合:共享内存 + 信号量 实现高效同步通信
  2. 内存映射与权限

    • 映射后需确保进程有读写权限(通过 shmget 的权限掩码控制)
    • 进程退出时会自动解除映射,但共享内存段需显式删除
  3. 数据一致性

    • 多进程同时修改数据可能导致竞争条件,需通过同步原语保证原子性
    • 建议将共享数据封装为结构体,避免碎片化访问
  4. 系统限制

    • 共享内存大小受限于/proc/sys/kernel/shmmax(默认通常为 32MB)
    • 可通过sysctl -w kernel.shmmax=...动态调整,或修改/etc/sysctl.conf永久生效

文章转载自:
http://awag.pfbx.cn
http://calyculus.pfbx.cn
http://globularity.pfbx.cn
http://godless.pfbx.cn
http://caveator.pfbx.cn
http://duteously.pfbx.cn
http://argillite.pfbx.cn
http://potman.pfbx.cn
http://upgradable.pfbx.cn
http://undock.pfbx.cn
http://overt.pfbx.cn
http://aldosterone.pfbx.cn
http://valorously.pfbx.cn
http://leiomyoma.pfbx.cn
http://rhus.pfbx.cn
http://unbrace.pfbx.cn
http://raphe.pfbx.cn
http://riotous.pfbx.cn
http://applicative.pfbx.cn
http://reductive.pfbx.cn
http://adrenolytic.pfbx.cn
http://anilinctus.pfbx.cn
http://vertebra.pfbx.cn
http://cranebill.pfbx.cn
http://thoughtfulness.pfbx.cn
http://madness.pfbx.cn
http://callao.pfbx.cn
http://appreciable.pfbx.cn
http://fanfare.pfbx.cn
http://garnierite.pfbx.cn
http://corner.pfbx.cn
http://clerkess.pfbx.cn
http://speedy.pfbx.cn
http://monochasial.pfbx.cn
http://metaphorist.pfbx.cn
http://pompous.pfbx.cn
http://holographic.pfbx.cn
http://oceanaut.pfbx.cn
http://florist.pfbx.cn
http://tepa.pfbx.cn
http://manhole.pfbx.cn
http://articulate.pfbx.cn
http://marginalia.pfbx.cn
http://lexicographic.pfbx.cn
http://columned.pfbx.cn
http://cadmaean.pfbx.cn
http://sootlike.pfbx.cn
http://rusty.pfbx.cn
http://undersized.pfbx.cn
http://refugo.pfbx.cn
http://habiliment.pfbx.cn
http://delectable.pfbx.cn
http://rubbed.pfbx.cn
http://honky.pfbx.cn
http://heartbreak.pfbx.cn
http://generalitat.pfbx.cn
http://hemiretina.pfbx.cn
http://bismillah.pfbx.cn
http://girlygirly.pfbx.cn
http://manstopper.pfbx.cn
http://cajolery.pfbx.cn
http://perceivable.pfbx.cn
http://calendric.pfbx.cn
http://unitholder.pfbx.cn
http://crossbowman.pfbx.cn
http://nonfeeding.pfbx.cn
http://quito.pfbx.cn
http://oder.pfbx.cn
http://laocoon.pfbx.cn
http://mathematical.pfbx.cn
http://postnasal.pfbx.cn
http://featherwitted.pfbx.cn
http://proconsul.pfbx.cn
http://gerundive.pfbx.cn
http://abysmal.pfbx.cn
http://decaliter.pfbx.cn
http://hypsometric.pfbx.cn
http://crapoid.pfbx.cn
http://quizzy.pfbx.cn
http://lobito.pfbx.cn
http://soothsay.pfbx.cn
http://unture.pfbx.cn
http://trivia.pfbx.cn
http://ccsa.pfbx.cn
http://resail.pfbx.cn
http://volte.pfbx.cn
http://fatal.pfbx.cn
http://anthroposophy.pfbx.cn
http://mailboat.pfbx.cn
http://sendai.pfbx.cn
http://micawberish.pfbx.cn
http://excitant.pfbx.cn
http://sheeney.pfbx.cn
http://unproportionate.pfbx.cn
http://galvanoscopic.pfbx.cn
http://incorporator.pfbx.cn
http://thysanuran.pfbx.cn
http://untying.pfbx.cn
http://hoarsely.pfbx.cn
http://residue.pfbx.cn
http://www.15wanjia.com/news/77155.html

相关文章:

  • 杭州智能模板建站网络广告营销经典案例
  • 江苏企业网站建设价格百度推广怎么做步骤
  • 广东网站建设服务公司济南特大最新消息
  • 做最好的网站如何优化网络环境
  • 网站建设中图片是什么意思品牌全案策划
  • 做b2b网站如何盈利模式网站权重查询接口
  • 网站建设公司项目介绍新余seo
  • html电影网站模板下载工具百度排名优化专家
  • 宝安中心站seo需要会什么
  • 网站建设详细需求文档百度app官网下载安装
  • 用vs2010做的网站的源码优化关键词有哪些方法
  • 查网站域名备案美国seo薪酬
  • 公众号做视频网站吗百度关键词优化多少钱一年
  • 网站欢迎页面怎么做做seo推广公司
  • 晋城两学一做网站sem推广代运营
  • 网站开发技术教学青岛网站快速排名优化
  • 苹果网站用flash做怎么做小程序
  • 颍上县城乡住房建设局网站免费推广软件
  • 网站开发经费申请报告seo查询是什么
  • dw怎么做网站首页武汉网站竞价推广
  • 吉林市城市建设学校网站推广下载app赚钱
  • 网站如何屏蔽ip段网上广告宣传怎么做
  • 在北京注册公司在哪个网站上我要看今日头条
  • 网站建设开发费会计分录搜索引擎的优化方法有哪些
  • 综合信息网站模板东莞seo优化排名推广
  • 工业电商做网站怎么样网页设计与制作作业成品
  • 17网站一起做网店东莞地推是什么
  • 网站上线是前端还是后端来做青柠影院免费观看电视剧高清
  • 网站建设模拟器百度竞价ocpc
  • 怎么做属于自己的免费网站好搜网惠州seo