Перевод схемы архитектуры chromium
Chromium - , Blink Google The Chromium Authors . Chromium Google Chrome, 60%. , , Firefox, Edge, Safari , . , Chromium Google Chrome, . Google Chrome = Chromium + Google Update + + .
Chromium / Chrome , --single-process. , , :
, ;
. IPC Mojo.
2 5 ( ). Browser process ( ) . . , , Renderer process ( ). Utility process ( ), , . Linux Zygote process (). , : , , GPU process ( ).
Browser process
, Browser process . , , , (, ).
Browser process , . -, Renderer thread. , . DB, File Cache , , . Process Launcher thread, , , Zygote GPU. , Browser process Worker thread ( ). ( DNS) WorkerPool. , Browser process . . . . Browser process , IPC. , . Browser process URL.
, Linux, , Zygote process. , , Renderer process. , Chromium. TaskAnnotator TaskRunner. Zygote process , , , , , . , Zygote process , , Renderer process.
, . , . Chrome . Chrome . , - . , . exec , , , . , Chrome (), (fork) , . , , . - , , .
Renderer process
Linux Renderer process Zygote process, , . Renderer process , ( Chrome/Chromium, Renderer process). , , - . Renderer process . : I/O thread ( -), Compositor thread ( ) Raster thread ( ). , (IPC , , ), ScriptController V8.
Utility process
Linux Utility process Browser process. Utility process . . ResourceBundle, icu V8 Engine. . Utility process . , Utility process, .
GPU process
, GPU. , . , GL/GLES . : , , .
Startup
(Main)
Threads
POSIX -POSIX-
Loop
IPC
IPC / Mojo
TaskAnnotator
TaskAnnotator,
. , ,
(Renderer, Worker ..)
URLRequests
URL
URL-
URL-
SQL
net
URLRequest
cookie URL-
Compositor (cc)
(, )
Aura
Swap
:
2D-
Skia, (drawColor, drawPicture, drawRect, fillRect, ..)
X11/Windows/Mac
UIEvent
ui ( )
, , mousemove, mouseclick, keypress . .
Chrome OS / Chrome / Chromium
Startup
"Browser process"
Zygote
Zygote-
Fork
Loop
IPC
IPC / Mojo
TaskAnnotator
TaskAnnotator,
. , ,
callback
,
Scheduler
N . :
blink::HTMLDocumentParser
autofill
, , , .
icu
unicode ,
blink::FrameLoader
()
blink::EventHandler
blink::EventDispatcher
blink::Document
media::DecoderStream
blink::ScriptRunner
content::RenderThread
blink::V8Initializer
V8
extensions
Chrome content-
blink::WorkerThread
WorkerThread
Skia
Skia, (drawColor, drawPicture, drawRect, fillRect ..)
blink::ImageDecoder
content::WebGraphicsContext3DCommandBuffer
, -
:
gpu::gles2
, , QueryManager
Startup
"Browser process" ( Zygote-)
Renderer
Loop
IPC / Mojo
TaskAnnotator
TaskAnnotator,
. , ,
Scheduler
N . :
content::MessageRouter
, MessageRouter ,
content::RenderWidget
OnMessageReceived
blink::handleInputEvent
content::InputHandler
Compositor (cc)
blink::ScriptController
V8
DOM-
Loop
IPC
IPC / Mojo
Extensions
IPC, ,
ResourceBundle
icu
V8Initializer
Startup
GPU
Loop
IPC
IPC / Mojo
TaskAnnotator
TaskAnnotator,
. , ,
GPU Command Buffer
gfx::GLSurface
gfx::GLContext
GLES2 Decoder
Shader, Texture, , Draw elements
GLContext
Swap buffers