Android 操作系统基础

来源:互联网 发布:网络安全产品排名 编辑:程序博客网 时间:2024/05/18 01:05

Android操作系统

  • 什么是操作系统
  • 操作系统的作用
  • 操作系统的共性

面向下层:管理硬件包含CPU,内存,Flash各种I/O等等。
面向上层:为用户提供人机交互界面。还为第三方程序研发提供便捷可靠的高效的API。上层应用的设计实现不用直接面向硬。

总结:操作系统是负责管理硬件,并为上层提供稳定变成接口和人机交互界面的软件集合。

操作系统的难点包括了:进程和内存的管理,硬件驱动的支持等。Linux的强项是这方面


进程间通信的经典实现

  • 为什么进程之间需要通信
  • 操作系统中进程间通信的方式有哪些
  • 为什么进程之间相互独立

Android程序运行在不同的进程中,每个程序都处于自己的沙盒中。广义上讲进程间通信是指运行在不同的进程(不论是否是同一台机器)中的若干线程间的数据交换。

共享内存

是常用的进程间通信机制,由于两个进程可以直接共享访问同一块内存区域,减少了数据的复制操作,因而速度上回有优势。步骤如下

  • 创建内存共享区域,生成特定的key
  • 映射内存共享区域(映射到进程1的空间中)
  • 访问内存共享区域 进程2通过进程1提供的key 把这块内存映射到它的空间中
  • 进程间通信 共享内存的各个进程实现了内存映射之后,变可以利用这个区域进行信息交换。由于内存共享本身没有同步机制,所以参与通信的诸进程需要自己协商处理。
  • 撤销内存营社区 完成通信后,每个进程都需要撤销之前的映射操作。
  • 删除内存共享区域。 以便回收内存

管道

管道是单向的如果同时需要读写则需要两个管道。一个管道同时具有写入端和读取端。管道是由容量限制的。如果管道满时,写操作阻塞。反之,读操作会阻塞。
进程1想传递数据到进程2中,需要创建管道,然后关闭读取端,打开写入端,写入数据,然后关闭写入端。进程2在可以读的时候关闭关闭写入端,打开读取端,读取数据,然后关闭读取端。

UNIX Domain Socket

Socket不仅可以胜任网络领域,进程间通信业可以,但是效率比较低。
UNIX Domain Socket 是专门针对单机内的进程间通信剔除来的,也叫IPC socket 。
Network Socket里面以TCP/IP为基础而UDS是本机内的安全可靠操作,不依赖于这些协议
Android中使用最多的IPC机制是binder其次就是UDS
UDS的基本流程与传统的socket一直,只是参数上有区别

RPC

RPC涉及的通信双方通常运行在两台不同的机器中。开发人员不需要特别关心具体的中间传输过程是如何实现的,这种透明较大程度的降低研发难度。
步骤:
- 客户端进程调用stub接口
- stub根据操作系统的要求进行打包,并执行相应的系统调用
- 由内核来完成与服务器端的具体交互,它负责将客户端的数据包发给服务端内核
- 服务端stub解包并调用与数据包匹配的进程。
- 进程执行操作
- 服务器以上述步骤的逆向过程返给数据给客户端。


同步机制

原创粉丝点击