嵌入式
Jeff_
面向Google和StackOverflow编程的小学生。
展开
-
锁(Lock)、内存屏障(Memory barrier)与 缓存一致性( Cache coherence)
在应用层,关于锁的使用大家应该都很熟悉了,作用就是为了保护共享变量不被同时操作而导致无法预测的情况。然而深入到具体实现,锁仅仅只是锁定临界区吗?锁的实现其实还必须实现一个语义,也就是内存屏障。内存屏障主要用于防止指令重排而导致的无法预测的情况。代码经过编译器生成的指令并不一定都是按着我们原先的想法来生成的,可能经过优化等情况进行了指令的重排,然而这些重排在执行后的结果应当是一致的。其实及时编译器...原创 2020-02-07 21:27:04 · 8131 阅读 · 0 评论 -
零拷贝( Zero-copy )
一、背景“零拷贝” 描述了计算机操作,其中CPU 不执行将数据从 一个存储区 复制到 另一个存储区 的任务。通过网络传输文件时,通常用于节省CPU周期和内存带宽。在传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果...原创 2020-01-11 19:07:44 · 955 阅读 · 0 评论 -
Linux Test Project(LTP项目)
LTP测试写作指导/准则本文档描述了LTP准则和LTP测试接口,并且适用于想要编写或修改LTP测试用例的任何人。这不是权威性指南,也不是常识的替代品。1. 一般规则1.1 简单性对于所有值得保留的测试用例,都应使其尽可能简单或更好。内核和libc是棘手的野兽,它们的接口所带来的复杂性很高。如果您专注于要测试的界面并遵循UNIX哲学,最好使测试尽可能独立,这是一个好主意(不应依...翻译 2020-01-05 00:52:22 · 1948 阅读 · 0 评论 -
关于#define、typedef、using(C++11)
一、#define在题主的例子的这种用法里, 它就是个文本替换工具, 预处理器完成的, 无脑替换, 跟word里的replace一模一样, 不关编译器的事. 只需要注意下面几点:1.宏定义#是宏,处理的时候位于编译前阶段,宏处理器基本上对你的C/C++程序不会有任何的感知。它只处理宏的语法。而编译阶段的“程序”得到的是宏处理完的结果。#define 没有参加编译,在预处理的时候就被替换...原创 2019-03-10 13:53:46 · 1196 阅读 · 0 评论 -
鸟哥的私房菜 笔记备份
《鸟哥的linux私房菜》http://linux.vbird.org/linux_basic/centos5.php***********************************第1章 linux是什么***********************************************************************硬件->内核->系统调用-&g...原创 2019-03-07 19:44:58 · 713 阅读 · 0 评论 -
Redhat 安装centos的yum包
1.清除原有的YUM及相关软件包。rpm -qa | grep yum | xargs rpm -e --nodepsrpm -qa | grep python-urlgrabber|xargs rpm -e --nodeps2.查询并清除原有的urlgrabber。rpm -qa | grep python-urlgrabber //查询P...原创 2019-03-07 19:56:21 · 1257 阅读 · 0 评论