这个系列的文章大多源于网络和自己的总结。关于Knot分析的文章网络不是很多,由于我的水平有限,错误在所难免。欢迎大家批评指正
概述
本篇主要分析Knot架构不涉及具体细节分析。后续会不断完善
- Knot中的socket采用的是poll模型
- Knot的主要业务线程有以下几种
- tcp_work线程 处理tcp请求
- udp_work线程 处理udp请求
- background线程 处理例如zone-update等的zone事件
- evsched线程 分发event事件
除此之外,还有usernamespace-rcu产生的后台线程,fstrim产生的后台线程。
- Knot业务处理主要关注process_query_layer()这个接口里面注册的回掉
Knot 初始化
Knot 的main函数在src/utils/knotd/main.c中
int main(int argc, char **argv)
{
......
/* Initialize server. */
server_t server;
ret = server_init(&server, conf_bg_threads(conf()));
if (ret != KNOT_EOK) {
log_fatal(&#