Kernel

A collection of 5 posts
Chrome

Blink内核相关术语、映射关系

在读Adblock Plus for Chrome插件的源代码时,拦截入口处有几个判断非常重要,这涉及到当前打开Tab的URL、来源、打开方式等概念,对应到Blink中术语有page、main frame、iframe、document等,翻阅一下Blink的README文档,找到官方的介绍在此做一下记录。 Page 一个Page对应于一个Tab,当然前提时OOPIF(Out-of-Process iframes)没有开启。每一个渲染进程可能包含多个Tab。 Frame Frame对应于HTML中的frame,可能是主frame或者iframe,每个Page在树形结构中可能包含一个或者多个frame。 DOMWindow 一个DOMWindow对应Javascript中的一个window对象,每个Frame有一个DOMWindow。 Document 一个Document对应Javascript中的一个window.document,每个Frame有一个Document。 ExecutionContext 一个ExecutionContext是一个抽象概念,在渲染进程的主线程
1 min read
Kernel

Zircon进程对象

概要 一个Zircon进程就是一个程序的实例:一个或者多个线程的指令执行以及一系列的资源。 描述 进程对象是以下资源的一个集合: * 句柄 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/handles.md] * 虚拟内存地址区 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/objects/vm_address_region.md] * 线程 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/objects/thread.md] 一般来说,进程是一系列关联代码的执行直到进程被强制终止或者进程主动退出。 进程属于作业,它可以在资源、权限和生命周期控制的角度将多个进程组合为一个应用程序。 生命周期 一个进程通过 sys_process_create() 系统调用来创建,
1 min read
Kernel

Zircon内核对象

Zircon是基于对象的内核。用户模式下的代码基本上都是通过对象句柄与OS资源交互。句柄可以被认为是某个OS子系统与某个资源之间的活动会话。 Zircon动态地管理着如下资源: * 处理器时间 * 内存和地址空间 * 设备IO内存 * 中断 * 信号和等待 应用层内核对象 IPC * 通道 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/objects/channel.md] * 套接字 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/objects/socket.md] * 先进先出队列 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/objects/fifo.md] 任务 * 进程 [https://fuchsia.googlesource.com/
2 min read
Kernel

Zircon内核概念

前言 Zircon内核管理着大量不同类型的Objects。这些Objects可以通过系统调用(用C++实现了Dispatcher接口的类)来直接访问。这些Objects定义在 kernel/object下面,它们有些是自包含的高级Objects,有些是对LK低级别原语的封装。 系统调用 [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/syscalls.md] 用户态代码与内核对象通过系统调用来交互,而且基本上都是通过句柄这个概念来实现。在用户态句柄用一个32位整型数来表示(zx_handle_t类型)。执行系统调用时,内核会检查句柄参数对应的操作是否在当前调用者进程的操作表中,同时在后面也会检查句柄类型是否正确、请求的操作是否有权限执行。 从访问角度看,系统调用主要分为三大类: 1、调用没有限制。这类调用只占很少一部分,比如 zx_time_get() [https://fuchsia.googlesource.com/zircon/+/HEAD/docs/syscalls/time_get.
7 min read
Kernel

Zircon内核与LK内核的关系

LK(Little Kernel)是一个为嵌入式应用设计的微系统内核,它为FreeRTOS、ThreadX这样的商业项目提供了一个不错的选择。这些系统仅提供有限的内存、有限的外设和任务集;Zircon运行在那些拥有快速处理器、不定大小内存、能够挂载任意外设的现代手机、PC等末端计算设备上。 Zircon内部构建在LK层之上;Zircon有进程的概念,LK则没有;Zircon的进程构建在LK的线程、内存结构之上。 更多的不同点: * Zircon有一类用户模式的支持,LK没有; * Zircon是一个对象句柄系统,LK没有这个概念; * Zircon有能力安全模型,在LK里所有代码都是被信任的。 随着时间的推移,为了满足新的需求、更好的适应上层系统,低层次的结构也可能会改变。 原文链接: https://fuchsia.googlesource.com/zircon/+/HEAD/docs/zx_and_lk.md 延伸: LK: https://github.com/littlekernel/lk/wiki/Introduction LK内核正在被使用的场景:
1 min read