02 2025 档案
摘要:调度器章节 Linux进程调度器概述--Linux进程的管理与调度(十五) Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六) Linux进程调度器的设计--Linux进程的管理与调度(十七) Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管
阅读全文
摘要:1 前景回顾 1.1 进程调度 内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来. 调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 1.2 进程的分类 linux把
阅读全文
摘要:前言 为什么需要内核栈 进程在内核态运行时需要自己的堆栈信息, 因此linux内核为每个进程都提供了一个内核栈kernel stack struct task_struct { // ... void *stack; // 指向内核栈的指针 // ... }; 内核态的进程访问处于内核数据段的栈,这
阅读全文
摘要:写Device USB驱动的时候,当Bulk送信发送的数据长度恰好是wMaxPacketSize的整数倍时,是否应该发送0包的问题搞得我焦头烂额。查找了好多资料,有的说要加,这是USB协议的一部分;有的说要加,这是微软的霸王条款;也有的说不要加,因为协议里没写这一条,送信成功之后USB传输的任务就完
阅读全文
摘要:当Message Header中的Number of Data Objects字段设置为0,控制消息仅由一个Message Header和一个CRC组成。协议层发起控制消息(如,Accept Message, Reject Message 等)。 控制消息类型在消息头的Message Type字段(
阅读全文
摘要:✨ 1. 为何要用ACS ? 🌟1.1 P2P传输风险 ATS(Address Translation Services)是一种基于信任的服务协议。如果EP端ATC(Address Translation Cache)声称其发出的访问请求是经过转换后的地址,且该地址刚好落在PCIe交换开关的BAR
阅读全文
摘要:PCIe中的Message主要是为了替代PCI中采用边带信号,这些边带信号的主要功能是中断,错误报告和电源管理等。所有的Message请求采用的都是4DW的TLP Header,但是并不是所有的空间都被利用上了,例如有的Message就没有使用Byte8到Byte15的空间。 Message请求的T
阅读全文
摘要:1.协议层 1.1.超高速传输事务 超高速事务(SuperSpeed transactions)由主机对设备端点请求或发送数据开始,并在端点发送数据或确认收到数据时完成。 超高速总线上的数据传输(transfer)是主机请求设备应用程序生成的数据,然后该请求被分解成一个或多个突发事务(burst t
阅读全文
摘要:Completions Completions的TLP Header的格式如下图所示: 这里来解释一下Completion Status Codes 000b (SC) Successful Completion:表示请求(Request)被正确的处理; 001b (UR) Unsupported
阅读全文
摘要:下面用几个具体的例子来讲解TLP Header的格式与作用。因为内容较多,所以分为多篇文章分别进行介绍。第一篇(即本文)介绍IO Request、Memory Request和Configuration Request。第二篇文章(即TLP Header详解三)介绍Completion ,第三篇文章
阅读全文
摘要:事务层包(TLP)的一般格式如下图所示: 前面的文章介绍过,TLP Header为3DW或者4DW,Data Payload为1-1024DW,最后的TLP Digest(ECRC)是可选的,为1DW。 TLP Header在整个TLP的位置如下图所示,需要注意的是,TLP Header的格式和内容
阅读全文
摘要:PCIe(Peripheral Component Interconnect Express)信号完整性测试是确保高速串行链路可靠性的关键环节,主要涵盖以下测试内容: 1. 物理层测试 发送端(Tx)测试: 眼图测试:通过示波器观察信号的眼高(Eye Height)和眼宽(Eye Width),验证
阅读全文