学习笔记
文章平均质量分 63
muyangzhe123
这个作者很懒,什么都没留下…
展开
-
单内核与微内核
单内核是个很大的进程。它的内部又能够被分为若干模块(或是层次或其他)。但是在运行的时候,他是个单独的二进制大映象。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。在运行效率上,单内核会具有一定的好处.单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有低级操作的系统控制代码的复杂性的效率会比在不同地址空间上实现更高些。单核结构正趋向于容易被正确设计,所转载 2016-11-29 16:42:24 · 2434 阅读 · 0 评论 -
用户态与内核态
究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子C代码1. void testfork(){ 2. if(0 = = fork()){ 3. printf(“create new process转载 2016-11-29 16:43:34 · 364 阅读 · 0 评论 -
虚拟地址、线性地址和物理地址的转换
虚拟地址、线性地址和物理地址的转换一、 虚拟地址即逻辑地址,是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是转载 2016-11-29 16:44:24 · 710 阅读 · 0 评论 -
性能分析工具--- gprof
性能分析工具gprof介绍Ver:1.0目录1. GPROF介绍 42. 使用步骤 43. 使用举例 43.1 测试环境 43.2 测试代码 43.3 数据分析 53.3.1 flat profile模式 63.3.2 call graph模式 74.转载 2016-11-30 15:30:03 · 602 阅读 · 0 评论 -
valgrind
http://blog.csdn.net/yanghao23/article/details/7514587valgrind通常用来成分析程序性能及程序中的内存泄露错误一 Valgrind工具集简绍Valgrind包含下列工具: 1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 2、callgrind:检测程转载 2016-11-30 15:32:23 · 482 阅读 · 2 评论 -
callgrind查看程序流程
如果想了解某块源码的流程,做法是:先使用-g选项把代码编译成可执行文件,然后使用以下命令运行:valgrind --tool=callgrind myprogram args接着进行各种测试,最后把程序停掉。此时,当前目录产生一个文件如:callgrind.out.9074,使用KCachegrind将它打开查看就行。原创 2016-11-30 15:34:00 · 612 阅读 · 0 评论 -
关于加密和解密 -- 1
在对文件进行加密处理中,主要分为两种加密方式,对称加密和公钥加密,常用的对称加密:DES, 3DES, AES128,AES256,公钥加密:RSA。使用公钥加密能够进行身份验证以及具有不可否认性,但该加密过程相比对称加密要慢很多,而对称加密速度较快,但存在密钥分配问题,所以在通常的加密处理过程中采用的方式为: 使用对称加密对文件进行加密,使用公钥加密对对称密钥进行加密,以保证密钥安全分配。原创 2016-12-17 18:27:57 · 1039 阅读 · 0 评论 -
左值引用与右值引用
在C语言中,我们常常会提起左值(lvalue)、右值(rvalue)这样的称呼。而在编译程序时,编译器有时也会在报出的错误信息中会包含左值、右值的说法。不过左值、右值通常不是通过一个严谨的定义而为人所知的,大多数时候左右值的定义与其判别方法是一体的。一个最为典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则称为“右值”。比如:a = b + c;在转载 2016-12-29 10:16:47 · 371 阅读 · 0 评论 -
浅析C语言的非局部跳转:setjmp和longjmp
浅析C语言的非局部跳转:setjmp和longjmp作者:李恩华 写于2012.4.22日凌晨西甲国家德比之前C语言中有一个goto语句,其可以结合标号实现函数内部的任意跳转(通常情况下,很多人都建议不要使用goto语句,因为采用goto语句后,代码维护工作量加大)。另外,C语言标准中还提供一种非局部跳转“no-local goto",其通过标准库中的两个标准函数setjmp和l转载 2017-04-07 16:10:33 · 306 阅读 · 0 评论 -
C++代码优化总结-1
最近负责代码的优化工作,在优化工作过程中发现,优化工作需要学习了解的东西还是比较多的,在此慢慢累积。1 选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。原创 2017-09-22 23:24:26 · 336 阅读 · 0 评论 -
ARP数据包格式、ARP欺骗编程实现
注意:并不是在有ARP请求时,才会有APR响应数据包。首先介绍ARP协议的报文格式。结构ether_header定义了以太网帧首部;结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答;ether_arp结构除了包含arphdr结构外,还包含源主机和目的主机的地址。定义常量#define EPT_IP 0x0800 /*原创 2015-04-18 21:43:49 · 4609 阅读 · 0 评论 -
内存池的小结
在编程中使用到了内存池,为此先学习一下内存池的相关知识吧!1. 什么是内存池?所谓内存池就是预先分配好的一定数量的大小相等的内存块,当需要使用的时候可以直接从中使用,而不必再申请。2. 为什么要使用内存池?有什么优点?使用new 或 malloc进行内存分配会使用很多时间,特别是高频率的小内存申请释放。优点: 极少的堆碎片整理; 更快的分配速度;原创 2015-01-20 09:14:56 · 367 阅读 · 0 评论 -
gcc详解
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。Gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译转载 2015-01-10 12:00:03 · 415 阅读 · 0 评论 -
gdb调试
GdbGdb使用流程首先,笔者给出了一个短小的程序,由此带领读者熟悉一下Gdb的使用流程。强烈建议读者能够实际动手操作。首先,打开Linux下的编辑器Vi或者Emacs,编辑如下代码。(由于为了更好地熟悉Gdb的操作,笔者在此使用Vi编辑,希望读者能够参见3.3节中对Vi的介绍,并熟练使用Vi)。 #include int sum(int m);int main(转载 2015-01-10 12:26:21 · 559 阅读 · 0 评论 -
内存池介绍
看到一篇关于内存池技术的介绍文章,受益匪浅,转贴至此。 原贴地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链转载 2015-01-10 12:46:10 · 335 阅读 · 0 评论 -
pkg-config的学习笔记
之前听说过pkg-config,但是一直没怎么使用到,最近老是听身边的人提起pkg-config,看来我也需要好好补习一下相关知识了,就今天吧!pkg-config干什么用的?pkg-config 是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Sola转载 2014-11-30 11:36:24 · 522 阅读 · 0 评论 -
守护进程学习
概念:守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并 且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。守护进程创建的理论过程: 1、创建子进程,父原创 2014-12-08 10:37:15 · 413 阅读 · 0 评论 -
linux下挂载img方法
目的:在linux下挂载img文件,以实现对img文件的修改# fdisk -lu arch-live-usb.imgYou must set cylinders.You can do this from the extra functions menu.Disk arch-live-usb.img: 0 MB, 0 bytes248 heads, 19 sectors/t转载 2014-12-09 13:35:49 · 3497 阅读 · 0 评论 -
/etc/fstab文件小解
在《关于磁盘分区的小脚本 》中提到了fstab文件,当时,仅仅分析了添加的内容(如下),今天需要进行仔细的分析一下该文件内容。/dev/sda2 swap swap defaults 0 0 /dev/sda3 /data ext4 defaults 0 0第一列: 为需要挂载的文件系统或存储设备第二列: 挂载点第三列:文件系统 或分区类型原创 2014-12-29 10:18:02 · 484 阅读 · 0 评论 -
关于磁盘分区的小脚本-----parted命令
脚本内容如下: 1 #!/bin/sh 2 val1=$(fdisk -l | grep "Disk /dev/sda" | awk '{print $5}') 3 val2=$[1024 * 1024] 4 disksize=$[val1 / val2] 5 parted /dev/sda mkpart primary linux-swap 8002MB 161原创 2014-12-29 09:01:41 · 1314 阅读 · 0 评论 -
fsck命令——小记
有时候维护Linux服务器时会面临这样一种错误,即显示文件系统变成(Read Only System),即文件系统变成只读的方式,产生这一问题的原因可能有两种: (1)多机写入时同步机制出现问题 (2)单机写入时原创 2014-12-29 17:40:55 · 533 阅读 · 0 评论 -
什么是MIPI接口
什么是MIPI接口 摘要: 随着客户要求手机摄像头像素越来越高同时要求高的传输速度传统的并口传输越来越受到挑战。提高并口传输的输出时钟是一个办法但会导致系统的EMC设计变得越来困难增加传输。 手机摄像头MIPI技术介绍 随着客户要求手机摄像头像素越来越高同时要求高的传输速度传统的并口传输越来越受到挑战。提高并口传输的输出时钟是一个办法但会导致系统的EMC设计变得越来困难,增加传输转载 2017-09-30 10:55:22 · 19552 阅读 · 0 评论