冯诺依曼结构
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