Linux源码阅读笔记13-进程通信组件上

Linux进程通信方式

  • 管道:创建的时候分配一个页大小内存,空间有限,不适合大量数据传输。
  • 消息队列:有两次copy造成额外的CPU消耗,不适合大量信息传输,效率比较低。
  • 共享内存:多个进程共享一块内存,没有同步机制,需要自己实现同步机制。
  • 套接字:在单机的情况下面走网络传输效率低。
  • 信号量:是一种锁机制,方式多个进程访问同一个资源,是一种同步手段。
  • 信号:不适合数据传输。

Android会什么会实现IPC Binder机制

  • 耦合性:C/S架构,不是网络通信,而是Binder机制。C和S是独立的。
  • 安全角度:Android是开放操作系统,保护每一个进程之间信息的安全。
  • 开发角度:在IPC中是C和C++,安卓使用Java,对组件进行Java的封装。

如何自己开发一个内核模块

make # 编译出模块
insmod xxx.ko # 将模块插入内核
lsmod # 查看模块
mknod /dev/mychannel c 96 0 # 创建设备文件 字符模块 主设备号 次设备号
# 启动进程

模块开发

什么是主次设备号

每一个设备都有一个设备号,字符模块有一个字符模块的ID就是设备号;一个主设备号可以有多多个次设备号

private_data

设备文件的私有空间,可以被poll感知到。

insmod时候调用Init

  1. 注册设备
  2. 初始化设备
  3. 添加到内核
  4. 初始化private_data

channel_open

  1. 检查设备是否对应
  2. 将分配好的空间指向private_data

channel_read

  1. 有数据时读取对应长度的数据
  2. 没有数据等待数据写入唤醒

channel_write

  1. 通过最大长度判断数据是否可以写入private_data
  2. 写入数据唤醒io多路复用的read(channel_read)

channel_poll

  1. 初始化
  2. 控制标志位

下一节具体实现这个通信组件。

相关推荐

  1. Linux阅读笔记13-进程通信组件

    2024-07-19 05:14:01       19 阅读
  2. muduo阅读笔记11、TcpClient)

    2024-07-19 05:14:01       46 阅读
  3. linux内核网络通知事件

    2024-07-19 05:14:01       25 阅读
  4. 阅读llama笔记_1

    2024-07-19 05:14:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 05:14:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 05:14:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 05:14:01       45 阅读
  4. Python语言-面向对象

    2024-07-19 05:14:01       55 阅读

热门阅读

  1. 分布式唯一id的7种方案

    2024-07-19 05:14:01       19 阅读
  2. 编程中的智慧之设计模式三

    2024-07-19 05:14:01       18 阅读
  3. 解决用PicGo为typora配置github图床失败的问题

    2024-07-19 05:14:01       16 阅读
  4. shape_trans 变换区域的形状

    2024-07-19 05:14:01       17 阅读
  5. 【21】读感 - 架构整洁之道(三)

    2024-07-19 05:14:01       13 阅读
  6. Bootstrap 5:现代前端开发的新篇章

    2024-07-19 05:14:01       14 阅读
  7. python 乌龟绘图

    2024-07-19 05:14:01       15 阅读
  8. qt 国际化语言,英文和中文切换

    2024-07-19 05:14:01       15 阅读
  9. 翁恺-C语言程序设计-10-4. 字符串循环左移

    2024-07-19 05:14:01       15 阅读
  10. 智能灯光控制系统可以控制哪些场景

    2024-07-19 05:14:01       16 阅读
  11. 20240718训练题目

    2024-07-19 05:14:01       12 阅读