嵌入式day31

mplayer项目问题分析:

知识短时间内可以获取到

能力的提升一定需要练习

IPC 进程间通信方式

共享内存 //最高效的进程间通信方式

共享内存:

1.是一块 内核预留的空间

2.最高效的通信方式

//避免了用户空间到内核空间的数据拷贝

操作:

system v:共享内存

IPC对象操作通用框架:

1.key值的产生:

ftok

将pathname和proj_id 转换为key值

参数:

pathname //给一个路径名

proj_id //工程id eg:'A'

返回值:

成功 返回key值

失败 返回-1

2.通过key获取ipc对象(共享)

shmget

使用唯一键值key向内核一处共享内存使用申请

参数:

key 唯一键值

size 要申请的共享内存大小

shmflg 申请的共享内存访问权限,八进制表示

返回值:

成功 返回共享内存id

失败 返回-1

3.绑定地址空间

shmat

将指定的shmid对应的共享内存映射到本地内存

参数:

shmid 要映射的本地内存1

shmaddr 本地可用的地址,如果不确定则用NULL,表示由系统自动分配

shmflg 0, 表示读写

SHM_RDONLY 只读

返回值:

成功 返回映射的地址,一般等于shmaddr

失败 返回(void *)-1

pause

等待一个信号

4.解除绑定

shmdt

将本地内存与共享内存断开映射关系

参数:

shmaddr 要断开的映射地址

返回值:

成功 返回0

失败 返回-1

5.销毁IPC对象

shmctl

修改共享内存属性,也可以删除指定的共享内存对象

参数:

shmid 要删除的共享内存对象

cmd IPC_RMID 删除对象的宏

buff NULL 表示只删除对象

返回值:

成功 返回0

失败 返回-1

总结:

1、共享内存数据的存储方式是拷贝还是剪切?

拷贝

2、共享内存的数据如果措辞不同进程读写会怎么样?

同一操作对象,数据没有偏移情况下会覆盖

IPC对象 --- 共享内存

消息队列 信号量集

网络通信

网络: 不同主机间的通信问题

实现网络通信:

1.物理层面 有一个信息通路

有线

无线 5G 4G 星链

2.软件层面(逻辑层面) 也需要一个通路

网络编程:

Open System Interconnect(OSI网络模型)

为了解决不同体系结构的网络的互联问题,忘记标准化组织ISO 于1981年制定了开放系统互联参考模型

Open System Interconnection Reference Model, OSI/RM

osi七层协议:
1、物理层

规定了物理层面的电气特征及相关的机械特性

物理层面数据的传输 --- 一位的二进制数据 //比特流

2、数据链路层

规定了传输数据的格式 //(一)帧数据

//控制传输过程可靠

3、网络层(网际层)

用于解决网络与网络之间数据传输 //数据包

4、传输层

传输控制层,控制传输过程,保证数据完整和可靠

5、会话层

处理一次会话过程

6、表示层

规定了 传输数据的格式和方式

7、应用层

就是直接获取要收发的数据

实际应用到的是 tcp/ip 模型:

应用层

传输层

网络层

数据链路层

4层模型:

应用层

传输层

网络层

网络接口层

每个层次中,都有自己的一套规范 --- 协议

操作系体角度:
IP

用来标识网络中的一台主机 --- 通过ip可以找到对应一台主机

本质:32位整型数值

表示方式 点分十进制 0 - 255

ip地址的组成:网络号 + 主机号

网络号 --- 表示所处的网络

主机号 --- 表示能容纳的主机

端口号

用来表示主机中某一个具体(进行网络通信)进程

ip + 端口号 //进程在网络的地址

网络编程:

tcp / udp

TCP:

TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)

适用情况:

1、适合于对传输质量要求较高,以及传输大量数据的通信。

2、在需要可靠数据传输的场合,通常使用TCP协议

3、MSN/QQ 等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

TCP协议特点:

1.面向链接 //类似打电话之前,必须先打通

2.可靠传输 //保证数据准确可靠(tcp协议机制里面的功能)

3.面向字节流

UDP:

用户数据报协议,是不可靠的无连接的协议。

在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

适用情况:

1、发送小尺寸数据(如对DNS服务器进行ip地址查询时)

2、在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)

3、适合于广播 / 组播式通信中。

4、MSN/QQ/Skype 等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

5、流媒体、VOD、VOIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

UDP特点:

1.不可靠

2.无连接

3.数据报

编程

编程模型:

c/s client server 客户端,服务器模型 ---专用客户端

b/s browser server 浏览器,服务器模型 ---通用的客户端

p2p peer to peer 点对点传输

基于UDP c/s通信模型:

//client --- 客户端 --- 角色 --- 主动的角色

socket

1.一种特殊的文件 --- 专门用于网络通信(不同主机间的进程)

2.socket编程接口 --- socket函数 提供了一个可以访问 操作系统 网络功能的接口

sendto

发数据

...

//server --- 服务器端 --- 角色 --- 被动的角色

socket
recvfrom

接收数据

...

socket

程序向内核提出创建一个基于内存的套接字描述符

sendto

man 7 ip

man inet_addr

端口号:

htons

转换大小端(网络传输统一用大端)


嵌入式学习第三十一天,前两天结束了mplayer项目,今天讲了进程剩下的东西,IPC进程间的通信,再学习了网络通信的相关知识,了解了OSI七层协议,进行了c/s编程。后面继续加油了。

相关推荐
用户9718356334666 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪7 小时前
linux 拷贝文件或目录到指定的位置
linux
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
小宇宙Zz1 天前
Maven依赖冲突
java·服务器·maven
不会C语言的男孩1 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟1 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome