精华内容
下载资源
问答
  • 主要总结了本人Linux内核原理学习的系列笔记 Linux内核原理总结 Linux内核原理之进程管理 Linux内核原理之进程调度 Linux内核原理之系统调用 Linux内核原理之网络 Linux内核原理之内存管理 Linux内核原理之虚拟...
    展开全文
  • Contiki内核原理

    千次阅读 2015-03-27 22:54:47
    Contiki内核原理 一.数据结构 Contiki既利用了事件驱动系统节省内存和高效使用CPU的优势,又实现了多进程系统的阻塞机制从而带来开发便利性。自然,Contiki内核最重要的2个数据结构是:进程链表和事件循环数组,...

    Contiki内核原理

    一.数据结构

    Contiki既利用了事件驱动系统节省内存和高效使用CPU的优势,又实现了多进程系统的阻塞机制从而带来开发便利性。自然,Contiki内核最重要的2个数据结构是:进程链表和事件循环数组,分别如图1和图2所示。

    1  Contiki系统进程链表

    2  Contiki系统事件循环数组

    二.主循环

    从图3可以看出,Contiki系统运行在一个无限循环之中,通过查询POLLEVENT标识调用对应进程的主体函数,充分体现了它建立在事件驱动的基础上。

    3  Contiki系统主循环流程

    三.内核调度

    1.      定时器事件的实现

    如图4所示,当定时器中断发生时,ISR程序向etimer_process设置needspoll标识,主循环调用do_poll()时会进入etimer_process的主体函数,该主体函数给process_i发送异步事件后退出,主循环调用do_event()时进入process_i的主体函数并传递TIMER事件,这里process_i可以处理定时器到期的事件了。

    4定时器中断,etimer进程和应用进程调度时序图

    2.      中断服务程序通知进程

    Contiki系统中,ISR通知进程的方式是设置needspoll标识,不能够发送异步或者同步事件,它的解释如图5所示。

    5中断服务程序利用poll通知进程

    3.      进程响应不同事件

    一个进程经典的逻辑是:响应外部传入的不同事件而执行对应的动作,Contiki系统的进程也不例外,它的时序图如图6所示,经典的编程模式如图7所示的代码清单。

    6进程响应不同消息的时序图

    7进程通过判断事件类型来执行不同的逻辑流程

    4.      数据共享

    基于OS的系统最需要慎重考虑的是数据共享(竞态)问题,它很容易产生(一个全局变量或者一个共享硬件),但隐蔽性很强(一般无法通过源码测试发现,同时难以复现),解决竞态的问题最好是从设计层面避免。

    如图8所示,Contiki系统的进程是基于事件驱动顺序执行,仅可能被ISR中断,因此竞态错误只可能发生在ISR与进程的共享数据之上。

    8  Contiki系统顺序执行流


    展开全文
  • Dubbo 是阿里巴巴开发的一个开源的高性能的远程服务调用框架,致力于提供高...本 Chat 我们来探讨支撑 Dubbo 框架的内核原理,包含: Dubbo 框架整体架构分析; Dubbo 的适配器原理; Dubbo 的动态编译原理; Dubbo...

    Dubbo 是阿里巴巴开发的一个开源的高性能的远程服务调用框架,致力于提供高性能和透明化的 RPC 远程调用服务解决方案。作为阿里巴巴 SOA 服务化治理方案的核心框架,目前它已进入 Apache 卵化器项目,其前景可谓无限光明。

    本 Chat 我们来探讨支撑 Dubbo 框架的内核原理,包含:

    • Dubbo 框架整体架构分析;
    • Dubbo 的适配器原理;
    • Dubbo 的动态编译原理;
    • Dubbo 增强 SPI 原理;
    • Dubbo 增强 SPI 原理:扩展点的自动包装原理;
    • Dubbo 如何使用 JavaAssist 减少反射调用开销。

    阅读全文: http://gitbook.cn/gitchat/activity/5c6214f00637e737e99ea17a

    一场场看太麻烦?成为 GitChat 会员,畅享 1000+ 场 Chat !点击查看

    展开全文
  • 《Flink内核原理与实现》既讲解了Flink的入门、安装、流计算开发入门、类型和序列化系统、监控运维、安全管理配置等基础知识,又讲解了Flink的时间概念、Window的实现原理及其代码解析,Flink的容错机制原理,Flink...

    《Flink内核原理与实现》从系统整体视角出发,既讲解了Flink的入门、安装、流计算开发入门、监控运维等基础知识,又讲解了Flink的时间概念、Window原理及其代码解析,Flink容错机制原理、关键设计及其代码实现分析,作业从源码到执行整个过程的解析, 作业的调度策略、资源管理、类型和序列化系统、内存管理、类数据交换的关键设计和代码实现分析,RPC通信框架等深度内容。

    适合对实时计算感兴趣的大数据开发、运维领域的从业人员阅读,此外对机器学习工程技术人员也有所帮助。

     

    目录

    前言

    第1章 Flink入门

    1.1 核心特点

    1.1.1 批流一体

    1.1.2 可靠的容错能力

    1.1.3 高吞吐、低延迟

    1.1.4 大规模复杂计算

    1.1.5 多平台部署

    1.2 架构

    1.2.1 技术架构

    1.2.2 运行架构

    1.3 Flink的未来

    1.4 准备工作

    1.5 总结

    第2章 Flink应用

    2.1 Flink应用开发

    2.2 API层次

    2.3 数据流

    2.4 数据流API

    2.4.1 数据读取

    2.4.2 处理数据

    2.4.3 数据写出

    2.4.4 旁路输出

    2.5 总结

    第3章 核心抽象

    3.1 环境对象

    3.1.1 执行环境

    3.1.2 运行时环境

    3.1.3 运行时上下文

    3.2 数据流元素

    3.3 数据转换

    3.4 算子

    3.4.1 算子行为

    3.4.2 Flink算子

    3.4.3 Blink算子

    3.4.4 异步算子

    3.5 函数体系

    3.5.1 函数层次

    3.5.2 处理函数

    3.5.3 广播函数

    3.5.4 异步函数

    3.5.5 数据源函数

    3.5.6 输出函数

    3.5.7 检查点函数

    3.6 数据分区

    3.7 连接器

    3.8 分布式ID

    3.9 总结

    第4章 时间与窗口

    4.1 时间类型

    4.2 窗口类型

    4.3 窗口原理与机制

    4.3.1 WindowAssigner

    4.3.2 WindowTrigger

    4.3.3 WindowEvictor

    4.3.4 Window函数

    4.4 水印

    4.4.1 DataStream Watermark生成

    4.4.2 Flink SQL Watermark生成

    4.4.3 多流的Watermark

    4.5 时间服务

    4.5.1 定时器服务

    4.5.2 定时器

    4.5.3 优先级队列

    4.6 窗口实现

    4.6.1 时间窗口

    4.6.2 会话窗口

    4.6.3 计数窗口

    4.7 总结

    第5章 类型与序列化

    5.1 DataStream类型系统

    5.1.1 物理类型

    5.1.2 逻辑类型

    5.1.3 类型推断

    5.1.4 显式类型

    5.1.5 类型系统存在的问题

    5.2 SQL类型系统

    5.2.1 Flink Row

    5.2.2 Blink Row

    5.2.3 ColumnarRow

    5.3 数据序列化

    5.3.1 数据序列化/反序列化

    5.3.2 String序列化过程示例

    5.3.3 作业序列化

    5.3.4 Kryo序列化

    5.4 总结

    第6章 内存管理

    6.1 自主内存管理

    6.2 内存模型

    6.2.1 内存布局

    6.2.2 内存计算

    6.3 内存数据结构

    6.3.1 内存段

    6.3.2 内存页

    6.3.3 Buffer

    6.3.4 Buffer资源池

    6.4 内存管理器

    6.4.1 内存申请

    6.4.2 内存释放

    6.5 网络缓冲器

    6.5.1 内存申请

    6.5.2 内存回收

    6.6 总结

    第7章 状态原理

    7.1 状态类型

    7.1.1 KeyedState与OperatorState

    7.1.2 原始和托管状态

    7.2 状态描述

    7.3 广播状态

    7.4 状态接口

    7.4.1 状态操作接口

    7.4.2 状态访问接口

    7.5 状态存储

    7.5.1 内存型和文件型状态存储

    7.5.2 基于RocksDB的StateBackend

    7.6 状态持久化

    7.7 状态重分布

    7.7.1 OperatorState重分布

    7.7.2 KeyedState重分布

    7.8 状态过期

    7.8.1 DataStream中状态过期

    7.8.2 Flink SQL中状态过期

    7.8.3 状态过期清理

    7.9 总结

    第8章 作业提交

    8.1 提交流程

    8.1.1 流水线执行器PipelineExecutor

    8.1.2 Yarn Session提交流程

    8.1.3 Yarn Per-Job提交流程

    8.1.4 K8s Session提交流程

    8.2 Graph总览

    8.3 流图

    8.3.1 StreamGraph核心对象

    8.3.2 StreamGraph生成过程

    8.3.3 单输入物理Transformation的转换示例

    8.3.4 虚拟Transformation的转换示例

    8.4 作业图

    8.4.1 JobGraph核心对象

    8.4.2 JobGraph生成过程

    8.4.3 算子融合

    8.5 执行图

    8.5.1 ExecutionGraph核心对象

    8.5.2 ExecutionGraph生成过程

    8.6 总结

    第9章 资源管理

    9.1 资源抽象

    9.2 资源管理器

    9.3 Slot管理器

    9.4 SlotProvider

    9.5 Slot选择策略

    9.6 Slot资源池

    9.7 Slot共享

    9.8 总结

    第10章 作业调度

    10.1 调度

    10.2 执行模式

    10.3 数据交换模式

    10.4 作业生命周期

    10.4.1 作业生命周期状态

    10.4.2 Task的生命周期

    10.5 关键组件

    10.5.1 JobMaster

    10.5.2 TaskManager

    10.5.3 Task

    10.5.4 StreamTask

    10.6 作业启动

    10.6.1 JobMaster启动作业

    10.6.2 流作业启动调度

    10.6.3 批作业调度

    10.6.4 TaskManger启动Task

    10.7 作业停止

    10.8 作业失败调度

    10.8.1 默认作业失败调度

    10.8.2 遗留的作业失败调度

    10.9 组件容错

    10.9.1 容错设计

    10.9.2 HA服务

    10.9.3 JobMaster的容错

    10.9.4 ResourceManager容错

    10.9.5 TaskManager 的容错

    10.10 总结

    第11章 作业执行

    11.1 作业执行图

    11.2 核心对象

    11.2.1 输入处理器

    11.2.2 Task输入

    11.2.3 Task输出

    11.2.4 结果分区

    11.2.5 结果子分区

    11.2.6 有限数据集

    11.2.7 输入网关

    11.2.8 输入通道

    11.3 Task执行

    11.3.1 Task处理数据

    11.3.2 Task处理Watermark

    11.3.3 Task处理StreamStatus

    11.3.4 Task处理LatencyMarker

    11.4 总结

    第12章 数据交换

    12.1 数据传递模式

    12.2 关键组件

    12.2.1 RecordWriter

    12.2.2 数据记录序列化器

    12.2.3 数据记录反序列化器

    12.2.4 结果子分区视图

    12.2.5 数据输出

    12.3 数据传递

    12.3.1 本地线程内的数据传递

    12.3.2 本地线程间的数据传递

    12.3.3 跨网络的数据传递

    12.4 数据传递过程

    12.4.1 数据读取

    12.4.2 数据写出

    12.4.3 数据清理

    12.5 网络通信

    12.5.1 网络连接

    12.5.2 无流控

    12.5.3 基于信用的流控

    12.6 总结

    第13章 应用容错

    13.1 容错保证语义

    13.2 检查点与保存点

    13.3 作业恢复

    13.3.1 检查点恢复

    13.3.2 保存点恢复

    13.3.3 恢复时的时间问题

    13.4 关键组件

    13.4.1 检查点协调器

    13.4.2 检查点消息

    13.5 轻量级异步分布式快照

    13.5.1 基本概念

    13.5.2 Barrier对齐

    13.6 检查点执行过程

    13.6.1 JobMaster触发检查点

    13.6.2 TaskExecutor执行检查点

    13.6.3 JobMaster确认检查点

    13.7 检查点恢复过程

    13.8 端到端严格一次

    13.8.1 两阶段提交协议

    13.8.2 两阶段提交实现

    13.9 总结

    第14章 Flink SQL

    14.1 Apache Calcite

    14.1.1 Calcite是什么

    14.1.2 Calcite的技术特点

    14.1.3 Calcite的主要功能

    14.1.4 Calcite的核心原理

    14.2 动态表

    14.2.1 流映射为表

    14.2.2 连续查询

    14.2.3 流上SQL查询限制

    14.2.4 表到流的转换

    14.3 TableEnvironment

    14.3.1 TableEnvironment体系

    14.3.2 TableEnvironment使用示例

    14.4 Table API

    14.5 SQL API

    14.6 元数据

    14.6.1 元数据管理

    14.6.2 元数据分类

    14.7数据访问

    14.7.1Table Source

    14.7.2Table Slink

    14.8 SQL函数

    14.9 Planner关键抽象

    14.9.1 Expression

    14.9.2 ExpressionResolver

    14.9.3 Operation

    14.9.4 QueryOperation

    14.9.5 物理计划节点

    14.10 Blink Planner和Flink Planner对比

    14.11 Blink与Calcite关系

    14.12 Blink SQL执行过程

    14.12.1 从SQL到Operation

    14.12.2 Operation到Transformation

    14.13 Blink Table API执行过程

    14.13.1 Table API到Operation

    14.13.2 Operation到Transformation

    14.14 Flink与Calcite的关系

    14.15 Flink SQL执行过程

    14.15.1 SQL 到Operation

    14.15.2 Operation到DataStream/DataSet

    14.16 Flink Table API执行过程

    14.17 SQL优化

    14.18 Blink优化

    14.18.1 优化器

    14.18.2 代价计算

    14.18.3 优化过程

    14.18.4 优化规则

    14.18.5 公共子图

    14.19 Flink优化

    14.19.1 优化器

    14.19.2 优化过程

    14.19.3 优化规则

    14.20 代码生成

    14.20.1 为什么进行代码生成

    14.20.2 代码生成范围

    14.20.3 代码生成示例

    14.21 总结

    第15章 运维监控

    15.1 监控指标

    15.2 指标组

    15.3 监控集成

    15.4 指标注册中心

    15.5 指标查询服务

    15.6 延迟跟踪实现原理

    15.7 总结

    第16章 RPC框架

    16.1 Akka简介

    16.1.1 Akka是什么

    16.1.2 使用Akka

    16.1.3 Akka的通信

    16.2 RPC消息的类型

    16.3 RPC通信组件

    16.3.1 RpcGateway

    16.3.2 RpcEndpoint

    16.3.3 RpcService

    16.3.4 RpcServer

    16.3.5 AkkaRpcActor

    16.4 RPC交互过程

    16.4.1 RPC请求发送

    16.4.2 RPC请求响应

    16.5总结

    专家寄语

    参考文献

    展开全文
  • Linux内核原理-pid namespace

    千次阅读 2015-11-19 13:31:30
    前言这几晚在看进程相关的内核原理,正好看到了pid这块,看起来不是很复杂,但是引入了pid namespace后增加了一些数据结构,看起来不是那么清晰了,参考了Linux内核架构这本书,看完后感觉还没有理解。所以就在网上...
  • 文章摘录自《Windows内核原理与实现》一书。 设备驱动程序是操纵设备的内核模块,I/O 管理器、即插即用管理器和电源管理器都需要与设备的驱动程序打交道。 在Windows I/O 系统中,设备驱动程序不仅为操作系统提供...
  • EPOLL内核原理极简图文解读

    千次阅读 多人点赞 2017-06-16 16:57:16
    预备知识:内核poll钩子原理 内核函数poll_wait 把当前进程加入到驱动里自定义的等待队列上  当驱动事件就绪后,就可以在驱动里自定义的等待队列上唤醒调用poll的进程 故poll_wait作用:可以让驱动知道 事件...
  • U-boot启动内核原理

    千次阅读 2010-08-06 09:46:00
    U-boot启动内核原理   <br />     ARM平台U-boot启动内核命令如: bootcmd=bootm 0xc4040014    在./common/cmd_bootm.c文件中,bootm命令对应的do_bootm函数,当分析...
  • Windows内核原理与实现

    千次阅读 2009-01-12 17:55:00
    Windows内核原理与实现自开博以来,一直没有检查blog空间中的信息。前几天登录进去,发现有一些留言和私信。其中有一个网友留言,大意是希望我能够写一点操作系统实践方面的书,非常有见地的一番话。大约是半年前的...
  • 一个学习Linux内核原理的好方法

    千次阅读 2012-09-27 10:46:55
    想学习的同学,搜索这篇文章《通过ucore学习Linux操作系统内核原理与设计实现》,看到中国人的进步,欣慰! 也可以看如下的资源: 1. 《操作系统实验课》 ...
  • windows内核原理与实现

    千次阅读 2018-02-03 17:16:57
    本文章是作者本人在学习《windows原理与实现》一书时的一些总结和笔记 第二篇:windows系统总述 2.windows内核的基本概念  2.1处理器模式 intelx86处理器:0-最高级特权,cpu处在内核模式,可以访问当前...
  • 嵌入式操作系统内核原理和开发

    千次阅读 2012-10-22 15:47:39
    嵌入式操作系统内核原理和开发(改进的链表内存分配算法) 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 之前我自己也写过基于链表的内存分配算法,但是看了rawos的内存...
  • 《Windows内核原理与实现》的进度

    万次阅读 热门讨论 2010-02-02 22:51:00
    《Windows内核原理与实现》的进度去年1月份,我曾经写到了,我正在写一本讲Windows内核技术的书,一年过去了,书还没有出来。期间常有读者问起这本书的情况,现在我介绍一下这本书的进展情况。这本书的全部初稿09年...
  • 《Windows内核原理与实现》终于完成了

    万次阅读 热门讨论 2010-04-19 23:55:00
    《Windows内核原理与实现》终于完成了 经过将近两年的努力,终于完成了《Windows内核原理与实现》一书。2008年春天,我有了写一本关于Windows内核的书的想法,然后联系出版社并付诸实施。这就把两年的业余时间搭了...
  • windows内核原理分析之DPC函数的执行(1)当发生中断时,有些操作本来应该在中断服务程序中完成,但是实际上却是在退出中断服务程序之后在一个DPC函数中完成的。DPC是”Deferred Procedure Call”的缩写,意为推迟了...
  • Linux内核原理-进程入门

    千次阅读 2015-11-07 22:14:01
    进程进程是处于执行期的程序,进程不仅仅是一段可执行程序的代码,通常进程还包括其他资源,比如打开的文件,挂起的信号,内核内部的数据结构,处理器状态,内存地址空间,或多个执行线程,存放全局变量的数据段等。...
  • 编译器编译内核原理以及其应用 上篇文档简要介绍了一下编译器的编译内核,当然介绍的很简单,没有深入进去,俗话说不深入怎么High,所以这里我们深入进去搞一下,看看里面都有些什么有用的东东。 这里以市面上用的...
  • union算子原理 新的rdd,会将旧的两个rdd的partition,原封不动地给挪过来 新的rdd的partition的数量,就是旧的两个rdd的partition的数量的综合 看图   Union算子.png ...
  • distinct.png   distinct算子的原理 首先,自己先给每个值打上一个v2,变成一个tuple reduceByKey(...仅仅返回一个value) 将去重后的数据,从tuple还原为单值
  • join.png   join算子的原理 cogroup,聚合两个rdd的key flatMap,聚合后的每条数据,都可能返回多条数据 将每个key对应的两个集合的所有元素,做了一个笛卡尔积 ...
  • 看到《Windows内核原理与实现》样书了

    万次阅读 热门讨论 2010-04-27 01:50:00
    今天下午拿到《Windows内核原理与实现》的样书,感觉很好,毕竟期待了这么久,终于看到实物了。过两天要去互动网签名,据说要签200本,赶在五一前发货。我写作这本书的目的是进入课堂,让学生们在学习操作系统时能...
  • 看图   repartition.png repartition算子,repartition算子=coalesce(true) map,附加了前缀,根据要重分区成几个分区,计算出前缀 shuffle-&gt;colesceRDD 去掉前缀,得到最终重分区好的RDD ...
  • sortByKey.png   sortByKey ShuffledRDD,做shuffle read,将相同的key拉到一个partition中来 mapPartitions,对每个partitions内的key进行全局的排序
  • 看图   coalesce.png
  • 一般来说,在执行shuffle类的算子的时候,比如groupByKey、reduceByKey、join等。 其实算子内部都会隐式地创建几个RDD出来。那些隐式创建的RDD,主要是作为这个操作的一些中间数据的表达,以及作为stage划分的边界。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 235,874
精华内容 94,349
关键字:

内核原理