![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux应用编程
文章平均质量分 94
本专栏主要介绍linux应用层方面的知识如线程编程、工具的使用、shell脚本等方面。
楓潇潇
这个作者很懒,什么都没留下…
展开
-
Linux ARM系统调用过程分析(三)——Linux中open系统调用实现原理
Linux ARM系统调用过程分析(三)——Linux中open系统调用实现原理备注: 1. Kernel版本:5.4 2. 使用工具:Source Insight 4.0 3. 参考博客: (1)arm-linux 系统调用流程 (2)ARM Linux上的系统调用代码分析文章目录Linux ARM系统调用过程分析(三)——Linux中open系统调用实现原理sys_open的定义SYSCALL_DEFINEx宏定义SYSCALL_METADATA宏定义__SYSCALL_DEFI原创 2021-10-25 22:59:40 · 860 阅读 · 0 评论 -
Linux ARM系统调用过程分析(二)——Linux系统调用流程分析
Linux ARM系统调用过程分析(二)——Linux系统调用流程分析备注: 1. Kernel版本:5.4 2. 使用工具:Source Insight 4.0 3. 参考博客: (1)arm-linux 系统调用流程 (2)ARM Linux上的系统调用代码分析文章目录Linux ARM系统调用过程分析(二)——Linux系统调用流程分析前言EABI和OABI系统调用的初始化syscall_table_startNATIVEsyscall_table_end系统调用的产生glib原创 2021-10-25 22:58:47 · 1172 阅读 · 0 评论 -
Linux ARM系统调用过程分析(一)——Linux编程中的API函数和系统调用的关系
Linux ARM系统调用过程分析(一)——Linux编程中的API函数和系统调用的关系备注: 1. Kernel版本:5.4 2. 使用工具:Source Insight 4.0文章目录Linux ARM系统调用过程分析(一)——Linux编程中的API函数和系统调用的关系前言系统API系统调用两者关系系统调用号参数传递前言系统API API:(Application Programming Interface,应用程序编程接口) 指的是我们用户程序编程调用的如:open(), r原创 2021-10-25 22:49:04 · 628 阅读 · 0 评论 -
CPU乱序执行
CPU乱序执行文章目录CPU乱序执行前言CPU乱序执行编译器乱序优化GCC编译器优化屏障和内存屏障C语言中的内存屏障CPU存储模型实际遇到的问题前言乱序优化包括:CPU乱序执行优化编译器乱序优化对应的限制乱序优化的方式:内存屏障优化屏障CPU乱序执行CPU在保证结果一致的情况下,把原来有序的指令列表,按照指令依赖关系和指令执行周期,重 新安排执行顺序。// 原代码 int a = 10; int b = a; int c = 20; int d = c; // 实际原创 2021-10-23 10:56:26 · 3086 阅读 · 0 评论 -
链表(一)
前言 数据链表无所不在,尤其是在大型项目中。对于C语言,链表有Linux内核链表及用户自建链表。在处理数据量较大,程序较复杂时,使用链表可使我们的程序更加高效,各节点之间互不影响。 链表种类可分为以下几种: 而对链表的操作,主要有以下几种: (1)建立链表结构体; (2)创建头结点(初始化链表); (3)创建新节点;原创 2017-07-12 21:59:40 · 291 阅读 · 0 评论 -
C语言——数组与指针进阶(二)
C语言中能否灵活应用指针就能看出你的C语言功底如何,接下来是我对在学习指针过程中,对一下较为苦涩概念的理解及总结。一、指针的运算 指针的运算可归纳为以下三部分: 1、指针 +/- 整数 一般来说,此类运算只是左右移动指针所指向数组元素的位置而已;若指针指向的是&数组名,此时其加1,则移动的是一个数组了,不是一个元素;2、指针 - 指针 此类是用与求两指针间数组元素的长度(两指原创 2017-06-23 21:46:48 · 306 阅读 · 0 评论 -
C语言——数组与指针进阶(一)
对于刚接触C语言数组的人来说,很容易混淆数组和指针间的关系。本文根据自身在学习数组和指针的相关总结一、数组名的含义 数组名总的来说其有两层含义:一是数组名代表整个数组;二是当其作为指针时数组名又将代表数组首元素的地址。二、arr_name 与 &arr_name的区别 具体代码如下所示:int main(void){ int arr[5]; int *p1 = arr;原创 2017-06-23 20:39:12 · 473 阅读 · 0 评论 -
CPU存储器层次结构
3 存储器层次结构 3.1 内容概要 简单的计算机系统模型为CPU执行指令,存储器系统为CPU存放指令和数据。在该简单的计算机系统模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置。 存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU小的、快速的高速缓存存储器作为一部...原创 2018-07-18 22:26:32 · 4861 阅读 · 1 评论 -
C程序性能优化方法(四)
2.11一些限制因素 2.11.1寄存器溢出 循环并行的好处受汇编代码描述计算的能力限制,如果我们的并行度p超过了可用寄存器数量,那么编译器会诉诸溢出,将某些临时值存放到内存中,通常是在运行时堆栈上分配空间。例如:将combine6的多累积变量模式扩展到k=10和k=20,其结果的比较如下: 现代x86-64处理器有16个寄存器,并可以使用16个YMM寄存器保存浮点数。一旦循环变量的数...原创 2018-06-26 19:27:00 · 445 阅读 · 0 评论 -
C程序性能优化方法(三)
2.8 循环展开 循环展开是一种程序变换,通过增加每次迭代计算的元素数量,减少循环迭代次数。循环展开将从两个方面改进程序的性能。首先,他减少了不直接有助于程序结构的操作数量,例如循环索引计算和条件分支。第二,他提供了一些方法,可以进一步变化代码,减少整个计算中关键路径上的操作数量。 一般来说,向量的长度不一定是2的倍数。想要使我们的代码对任意向量长度都能正确的工作,可以从两个方面解释这个需求。...原创 2018-06-26 19:23:12 · 737 阅读 · 0 评论 -
C程序性能优化方法(二)
2.3 程序示例1 /* Creat abstract data type for vector */2 typedef struct3 {4 long len;5 data_t *data;6 }vec_rec, *vec_ptr;7 /* Creat vector of specified length */8 vec_p...原创 2018-06-26 19:15:27 · 1344 阅读 · 0 评论 -
C程序性能优化方法(一)
2.1 内容概要 写程序的主要目标是使它能在所有可能的情况下都正确工作。程序员必须写出清晰简洁的代码,便于自己看懂及维护代码,也是为了他人能够快速检查代码和维护代码。 程序运行得快是一个很重要的考虑因素,编写高效程序需要做到以下几点: 1)我们必须选择一组适当的算法和数据结构; 2)我们必须编写出编译器能够有效优化以转换成高效执行代码的源代码;该部分需要对优化编译器的能力和局限性的理解很重...原创 2018-06-26 19:04:24 · 3237 阅读 · 1 评论