首页 >> 大全

Arachne【源码分析】及AESA、PortSmashA

2024-01-05 大全 25 作者:考证青年

相关内容可以参考论文《-SMT: Core- SMT -based 》

模块划分

:处理句柄、建立断开连接、核请求和释放、阻塞线程、核调度(核心函数,功能是先给被抢占的线程分配核再给被阻塞的分配核,)。

这些核调度的规则如何落实到线程?应该是通过的阻塞(sys->read)。如何具体将不同线程放到指定核心上?通过交换对应的上下文()。

:通过和共享内存与交互,发出请求,具体功能由完成

:向用户提供API,会调用等。

代码流程图

Init函数(主线程)

首先分析命令行参数来设置全局变量等()。配置好(其中位置:/tmp//)。根据命令行参数中的核数量分配做一个默认的。

发送核数量请求(::),具体会通过来向发送请求。

这需要先启动起来,并与之建立连接。告诉我的进程ID、线程ID。如果当前线程的对应进程刚创建,则之后会收到全局内存共享、进程内存共享的地址,然后地址对应的文件映射到内存(分别取名为、)。

通过建立好的连接,发出各个优先级的核数量请求()。

_源码分析jquery_源码分析工具

根据可供管理的核数量,建立若干内核线程(入口是)。

初始化主线程的核信息、栈信息及其他信息。

函数(主线程)

某些信息的维护,关键的是把目标Main作为一个task保存到数据结构中,用于之后调度。

函数(内核线程)

初始化核心信息。阻塞自己直到获得核ID(::ble):发送到。等待核分配。

分配到核之后,信息维护,包括初始化栈,返回地址指向,之后会通过转换到。

信息维护,等待任务(目标Main)到来(不断的遍历,直到有一个包含任务,没有时间片的概念,任务执行完去执行下一个),然后运行它。

(需root权限)

配置的相关信息。包括受管理的核和不受管理的核。

【细节】

$=/sys/fs//

$=/sys/fs///

源码分析jquery__源码分析工具

$=$/

$=$/

默认将除核0外其他核都作为 Core,并创建目录($/|)。先设置 :将当前进程放到 下($/.procs的进程转移到$/.procs),创建管理 中核心数量、线程的文件($/.cpus|tasks)。然后设置 :创建$/tasks

【细节结束】

(将某个线程绑定到特定核,应该是通过来实现的)

配置全局共享内存(/tmp//,修改权限让端无需root权限),设置和epoll用于监听请求。

真正地启动,进入一个循环等待并处理请求的函数(,具体由不断等待请求)。

建立连接:当线程通过发出连接请求时,(只有本端的地址,没有对端的地址,只能通过epoll来触发)接收到,并建立一个线程专用的(有两端的地址信息),从收到线程的进程ID、线程ID。如果对方的所属进程第一次与我建立连接,那么我就配置进程共享内存(/tmp//$),将全局共享内存和进程共享内存通过发给线程。

收到各个优先级核数量的请求()。进行信息维护,如请求与上一次请求有变,则进行核调度()。

收到阻塞线程的请求()。根据情况阻塞线程(已运行在托管核上的内核线程如果被要求回收核,那就回收内核,不然让内核线程继续运行,即不阻塞)。之后进行核调度,(把),直到有可用的核给内核线程。

当托管核变为非托管核,会出现核上线程存在的情况。抢非托管核会出现抢占情况。

AesA性能分析

(AESA是使用线程库对AES进行多线程运算。AES代码取自。AESA跑的数据可以看仓库)

当线程执行时间

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了