android通过c调用shmat函数,android os 基础

冯诺依曼结构

1> 采用二进制,抛弃十进制

2> 程序存储|================================

| 内存储器 |

| 运算器 控制器 |

| |

| 输入设备 输出设备 |

|=================================|

简化为: CPU(中央处理器) + 内存储器 + I/O 设备

1、操作系统必须针对 "硬件" 来开发, 即 某些架构, arm/x86 等等

2、操作系统提供可用的 人机交互 界面

3、操作系统 支持用户 编写和安装程序

一般 操作系统两大主要内容:

1> 面向下层: 管理硬件

2> 面向上层: 提供人机交互、为第三方程序研发提供 API

定义:计算机操作系统是 负责管理系统硬件,并为上层应用提供稳定编程接口 和 人机交互界面的 软件集合

其中 要研究的 Andoird os 是基于 Linux kernel

进程间通信 IPC指 运行在 不同进程( 无论是否在 1 台机器上 )中的若干线程的 数据交互

实现方式: 消息传递、管道、socket、、、、 共享内存 、文件共享

[1]共享内存 shared memery

由于两个进程可以直接共享访问 同一块 内存区域, 减少了数据的复制操作, 因而速度较快

实现共享内存:

1> 创建共享内存区

// linux 中用 shmget 函数实现,生成的 共享内存快将 与特定的某个 key (shmget 的第1个参数) 绑定

2> 映射共享内存区

// 把申请的共享内存映射到进程的空间才能进一步操作,  linux 下用  shmat 实现

3> 访问共享内存区

// 进程 1 创建了内存共享区, 进程 2 访问: 利用进程 1 创建时 的 key,  进程 2 shmget 传入同 1 个 key 值

// 然后 进程 2 执行 shmat 将内存映射到它的空间

but  共享内存没有 同步的机制

4> 利用该区域 进行信息交换

5> 撤销内存映射区

// linux 中 用 shmdt 实现

6> 删除共享内存区

// linux 下用  shctl  实现

[2] 管道 pipe

g

[3] Socket

IPC  针对单机内的进程间通信,

Android 中的 IPC 机制 是 binder  , 其次是  UDS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值