如何做论坛网站 知乎/提高搜索引擎排名

如何做论坛网站 知乎,提高搜索引擎排名,千库网素材免费下载,河南做网站哪个公司好共享内存区是最快的IPC(进程内通信)形式,不再通过执行进入内核的系统调用来传递彼此的数据 1.共享内存的原理 IPC通信的本质是让不同的进程先看到同一份资源,然后再进行通信,所以想要通过共享内存进行通信,那么第一步一定是让两个…

共享内存区是最快的IPC(进程内通信)形式,不再通过执行进入内核的系统调用来传递彼此的数据

1.共享内存的原理

IPC通信的本质是让不同的进程先看到同一份资源,然后再进行通信,所以想要通过共享内存进行通信,那么第一步一定是让两个进程能够看到看到物理内存中的同一份资源。

2.共享内存函数

通过共享内存函数来创建共享内存

shmget

功能
        创建共享内存

原型

        int shmget(key_t key, size_t size, int shmflg);

参数

        key:该共享内存段名字

        size:共享内存的大小

        shmflg:由九个权限标志位构成

                      若取值为IPC_CREAT:共享内存不存在,创建并返回;

                                                            共享内存存在,获取并返回;

                      若取值为IPC_CREAT | IPC_EXCL:共享内存不存在,创建并返回

                                                                                共享内存已存在,出错返回

返回值

        成功返回一个非负整数,即该共享内存的标识码(shmid)

        失败返回-1       

:所以当想要创建一个新的共享内存时,shmflg的取值应为:IPC_CREAT | IPC_EXCL

问:这个key值从何而来?以及这个key值有和作用?

答1:key值是通过ftok函数得来的,ftok会根据文件名/路径相应的inode以及proj_id生成一个唯一的key值,且该key值和路径(pathname)是一一对应的关系

ftok:

功能        

        用来生成一个唯一的key值,该key值用于IPC 通信,共享内存的位置由系统决定

原型

        key_t ftok(const char *pathname, int proj_id);

参数

        pathname:文件路径,必须存在

        proj_id:项目标识符,通常是一个字符(0~255之间的整数)

:为什么是路径?除了历史原因之外,路径具有唯一性。

答2:显然这个key值是用来创建共享内存的。具体怎么实现的呢?比如当前进程需要创建一个新的共享内存,那么在shmget中,只要key值相同,他们就能够打开同一个共享内存,此时就满足了不同进程看到同一份资源的要求。

进程A和进程B的虚拟地址不同,但是它们指向了同一块物理内存

除了让不同进程能够看到同一份资源外,我们还需要将物理内存中的共享内存和进程的虚拟地址建立映射关系

shmat

功能

        将共享内存段连接到进程地址空间(建立物理内存和虚拟内存间的映射关系)

原型

        void *shmat(int shmid, const void *shmaddr, int shmflg);

参数

        shmid:创建/打开共享内存成功时返回给当前进程的共享内存标识码

        shmaddr:指定连接的地址

        shmflg:一般为nulltpr

返回值

        成功返回一个指针,指向共享内存的第一个节

        失败返回-1

当前进程不在使用共享内存时,需要与共享内存脱离

shmdt

功能

        将共享内存段与当前进程脱离

原型

        int shmdt(const void *shmaddr);

参数

        shmaddr: shmat所返回的指针  

返回值

        成功返回0

        失败返回-1

:脱离不等于删除当前内存段

shmctl

功能

        用于控制共享内存

原型

        int shmctl(int shmid, int cmd, struct shmid_ds *buf);

参数

        shmid:shmget返回的共享内存标识码

        cmd:将要采取的动作(有三个可取值)

        buf:指向⼀个保存着共享内存的模式状态和访问权限的数据结构

返回值

        成功返回0

        失败返回-1

:三个可取值

IPC_STAT:把shmid_ds结构中的数据设置为共享内存的当前关联值

IPC_SET:在进程有足够权限的前提下,把共享内存的当前关联值设置为shmid_ds数据结构中给出的值

IPC_RMID:删除共享内存段

3.初步认识信号量

对于共享内存而言,它没有保护机制(当一个用户的信息还没有写完时,可能就被另一个用户读走了),没有保护机制就会造成读取数据的不一致。因此我们需要引入信号量来解决这个问题

3.1概念补充

在初步认识信号量前,需要对某些概念进行补充。

①:代码分为临界区和非临界区

对于非临界区而言,即每个程序自己的代码,他们之间不会相互影响

对于临界区而言,涉及资源互斥的部分,也就上面提到的共享资源访问时出现问题的部分

②:互斥

只允许一个程序访问进程

③:临界资源

被保护起来的资源

④:同步

多个进程访问临界资源时,具有一定的顺序性

⑤:原子性

简单说就是做和不做的区别

:对共享资源的保护,总之就是对访问共享资源的代码进行保护

3.2信号量

举一个电影院的例子:
一个影厅只有100个位置,如果票重复和提供的座位不足以发售的票都会出现问题。那么解决问题的措施就是 1.避免出现座位重复的票 2.避免发售的票太多。因此进入影院前,需要订票来确定自己座位

对于共享内存而言,将共享内存分块访问,那么所做的就是 1.避免多个进程访问共享内存中的同一块资源  2.避免过多进程对该共享内存进行访问

因此信号量的本质是一个计数器,用于描述临界资源中,资源数量的多少,如果进程申请资源成功就做减减操作,直至为零。

:任何进程想要访问临界资源,必须先申请信号量,本质是对资源(座位)的预订机制

当进程申请信号量时,就做减减操作,保证该操作具有原子性,该操作称为p操作

当进程不用时,就做加加操作,同时保证该操作具有原子性,该操作称为v操作

3.3不同信号量

二元信号量:信号量只有0或者1

多元信号量:1以上就是多元信号量,内部资源可以供多个进程使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01 SQl注入基础步骤(数字、字符、布尔盲注、报错)

目录 1、SQL注入漏洞的概要 2、SQL注入的常规思路 3、数字型注入 4、字符型注入 5、布尔盲注 6、报错注入 1、SQL注入漏洞的概要 原理:通过用户输入的数据未严格过滤,将恶意SQL语句拼接到原始查询中,从而操控数据库执行非预期操作。 …

在本地部署DeepSeek等大模型时,需警惕的潜在安全风险

在本地部署DeepSeek等大模型时,尽管数据存储在本地环境(而非云端),但仍需警惕以下潜在安全风险: 1. 模型与数据存储风险 未加密的存储介质:若训练数据、模型权重或日志以明文形式存储,可能被物…

【javaEE】多线程(进阶)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

Java在小米SU7 Ultra汽车中的技术赋能

目录 一、智能驾驶“大脑”与实时数据 场景一:海量数据的分布式计算 场景二:实时决策的毫秒级响应 场景三:弹性扩展与容错机制 技术隐喻: 二、车载信息系统(IVI)的交互 场景一:Android Automo…

Vue开发中计算属性与方法调用之间的区别与联系

文章目录 一 概述二 核心区别三 联系四 使用原则 一 概述 在 Vue 中,计算属性(computed) 和 方法(methods) 都可以用于处理数据逻辑,但它们的核心区别在于 缓存机制 和 触发方式 。 计算属性示例&#xf…

【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器

更新日期:2025年3月7日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 Project窗口文件夹锁定器框架文件夹锁定自定义文件夹锁定限制条件 Project窗口文件夹锁定器 在Project窗口中,文件夹锁定器能够为任何文件夹加…

【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

基于编译器特性浅析C++程序性能优化

最近在恶补计算机基础知识,学到CSAPP第五章的内容,在这里总结并且展开一下C程序性能优化相关的内容。 衡量程序性能的方式 一般而言,程序的性能可以用CPE(Cycles Per Element)来衡量,其指的是处理每个元素…

transformer模型介绍——大语言模型 LLMBook 学习(二)

1. transformer模型 1.1 注意力机制 **注意力机制(Attention Mechanism)**在人工智能中的应用,实际上是对人类认知系统中的注意力机制的一种模拟。它主要模仿了人类在处理信息时的选择性注意(Selective Attention)&a…

Dify 本地部署教程

目录 一、下载安装包 二、修改配置 三、启动容器 四、访问 Dify 五、总结 本篇文章主要记录 Dify 本地部署过程,有问题欢迎交流~ 一、下载安装包 从 Github 仓库下载最新稳定版软件包,点击下载~,当然也可以克隆仓库或者从仓库里直接下载zip源码包。 目前最新版本是V…

2.1 掌握XML基础知识

本文介绍了结构化、半结构化和非结构化数据的概念与特点。结构化数据以固定格式存储于数据库,便于查询与管理,常用于金融等领域。半结构化数据如XML、JSON,具有一定的组织形式但模式不固定,适用于Web内容和日志文件。非结构化数据…

Android Studio 配置国内镜像源

Android Studio版本号:2022.1.1 Patch 2 1、配置gradle国内镜像,用腾讯云 镜像源地址:https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址:Index of /AndroidSDK/

超过 37000 台 VMwareESXi 服务器可能受到持续攻击威胁

近日,威胁监测平台影子服务器基金会(The Shadowserver Foundation)发布报告,指出超 3.7 万个互联网暴露的威睿(VMware)ESXi 实例存在严重安全隐患,极易受到 CVE-2025-22224 漏洞的攻击。该漏洞属…

npm终端执行时报错

终端npm执行时报错下错误: 报错了,就来百度,报错的原因是 1、这个错误是因为 PowerShell 的执行策略(Execution Policy)限制了脚本的运行 2、默认情况下,Windows 系统可能会禁止运行未签名的脚本&#x…

JVM类加载器面试题及原理

JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而让Java程序能够启动起来。 1. 类加载器的种类 启动类加载器(BootStrap ClassLoader):加载JAVA_HOME/jre/lib目录下的库扩展类加载器&#xff…

C语言每日一练——day_3(快速上手C语言)

引言 针对初学者,每日练习几个题,快速上手C语言。第三天。(会连续更新) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…

用Qt手搓AI助手,挑战24小时开发DeepSeek Assistant!

一、项目需求分析与技术选型 DeepSeekAssistant是一款基于深度求索(DeepSeek)API的智能对话助手,核心需求包括: 用户界面友好:支持多轮对话展示数据持久化:历史记录存储与检索异步网络通信:AP…

Go本地缓存设计与实现

本地缓存是一个项目中很常见的组件。在很多人的眼中就是一个简单的key-value的map存储即可实现,但实际上,设计一个本地缓存需要考虑的问题远比你想象的多,比如说,本地缓存是将数据存储在内存,若数据量激增突破了内存限…

AWS云编排详解-Cloud Formation

作者:私语茶馆 1.关键概念 名词 说明 软件: CloudFormation 描述AWS 资源、配置值和互连关系。借助集成设施即代码加快云部署 CloudFormation Designer 拖拽式图形化模板编辑界面。 Amazon Simple Notification Service (SNS) SNS可通过电子邮件跟踪堆栈的创建和删除进度,…

《PyQt5》——设计Python GUI(图形用户界面)实例

PyQt5 PyQt5的配置和基础使用可以参考这篇文章:《 PyQt5》—— 创建 Python GUI(图形用户界面) Python GUI(图形用户界面)实例 本实例是设计一个通过玉米和豆粕的价格来预测生猪的价格,并显示预测价格与实…