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



















你可能感兴趣的:(操作系统原理)