linux内核数据结构之链表
摘要:linux内核数据结构之链表1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h下。这个链表具备通用性,使用非常方便。只需要在结构定义一个链表结构就可以使用。2、链表介绍 链表是非常基本的数据结构,根据链个数分为单链表、双链表,根据是否循环分为单向链表和循环链表。通常定义定义链表结构如下:typedef struct node{ ElemType data; //数据域 st...
阅读全文
Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥)
摘要:Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥)介绍:什么是线程,线程的优点是什么线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。 一个进程可以有很多线程,每条线程并行执行不同的任务。线程可以提高应用程序在多核环境下处理诸如文件I/O或者
阅读全文
linux 编程技术
摘要:linux 编程技术No.1前期准备工作GCC的编译过程分为预处理、生成汇编代码、生成目标代码和链接成可执行文件等4个步骤。使用vim编写C 文件 : [lining@localhost program]$ vim hello.c 这样就会在program文件夹生成hello.c文件编译C代码:使用如下命令“gcc 代码文件名” 如: [lining@localhost program]$ gcc hello.c 这样就会生成二进制可执行文件名称位a.out。 如果需要指定输出的文件名称,使用 “gcc -o 代码文件名” 如:[lining@localhost program]$ gcc -
阅读全文
Linux 磁盘与文件系统管理
摘要:Linux 磁盘与文件系统管理介绍一本书叫《Linux 鸟哥私房菜》, 一本教人用linux很经典的一本书,这两天又看了里面的一章节,做一点笔记。有一些很细节的东西的, 在平时运用过很容易被忽略。1)U盘使用的文件格式一般是FAT格式,这种格式的读写的方式,是读定完一个black后才知道下一个black的位置。所以当各个black很分散,要做磁盘碎片整理。2)Ext2是索引式文件系统,基本不太需要进行碎片整理。3)Ext2一个block的大小是一般4K4)block的大小与数量在格式化完就不能够再改变了,除了重新格式化。5)每个black内最多只能够旋转一个文件的数据。6)如果文件大于blac
阅读全文
Linux内核模块简介
摘要:Linux内核模块简介1. 目录2. 概述3. 模块开发常用的指令4. 内核模块程序结构5. 模块使用计数6. 模块的编译7. 使用模块绕开GPL8. 总结二.概述 Linux内核整体结构已经很庞大,包含了很多的组件,而对于我们工程师而言,有两种方法将需要的功能包含进内核当中。 一:将所有的功能都编译进Linux内核。 二:将需要的功能编译成模块,在需要的时候动态地添加。上述两种方式优缺点分析: 第一种: 优点:不会有版本不兼容的问题,不需要进行严格的版本检查 缺点:生成的内核会很大;要在现有的内核中添加新的功...
阅读全文
Linux Shell脚本攻略
摘要:-Linux Shell脚本攻略总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程ssh等等,都给出来作者挑选的一些比较经验实用的shell命令和shell脚本,不过也可以看出来,这本书是作者从自身实用的角度来挑选shell命令和脚本,所以覆盖面比较全,但是会感觉有点零碎,比如对于shell的基本语法就不会展开讲,只是会提到,需要有基本的shell底子,另外就是像sed、awk这种大神级别的shell命令,讲解的相对不是很完整,略零碎,特别是awk,可能需要另外找资料看。总
阅读全文
管道
摘要:管道Linux 进程间通信-管道 进程是一个独立的资源分配单位,不同进程之间的资源是相互独立的,没有关联,不能在一个进程中直接访问另一个进程中的资源。但是,进程不是孤立的,不同的进程之间需要信息的交换以及状态的传递,因此需要进程间数据传递、同步与异步的机制。 此篇博文记录管道。管道pipe 管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有其自己的数据结构。根据管道的适用范围将其分为:无名管道和命名管道。管道分类●无名管道 ...
阅读全文
vim简单的实用总结
摘要:vim简单的实用总结介绍vim常用的四种模式:一般模式,编辑模式,指令列命令模式与可视模式。一,一般模式 用vim filename打开文件后直接进入的就是一般模式,在这个模式下可以用hjkl移动光标,这四个字母都是右手控制的,h往左,j往下(食指), k往上(中指),l往右,助记中指高食指低所以按k光标是往高处走,按j光标往下面走。 在一般模式下最常用的是光标定位,比如光标移动到第n行,则按nG,光标移动到最后一行直接按G就行。光标定位到该行末尾按$,光标移动到该行最前面按数字0,如果按数字n再按空格则光标向后移动n个字符的距离,如果数字n再按回车则光标相下移动n行.H将光标移动到该屏幕最上
阅读全文
Linux模块
摘要:Linux模块一、为什么要使用模块 由于linux使用的是整体结构,不是模块化的结构,整体结构实现的操作系统可扩展性差。linux为了扩展系统,使用了模块的技术,模块能够从系统中动态装入和卸载,这样使得linux也具有很好的可扩展性。二、linux中哪些代码作为模块实现,哪些直接编译进内核? 当然我们是尽量把代码编译成模块,这样就可以根据需要进行链接,内核的代码量也会少很多。几乎所有的高层组件—文件系统、设备驱动程序、可执行格式、网络层等等—都可以作为模块进行编译。 然而有些代码确必须直接编译进内核。这些代码通常是对数据结构或者函数进行修改。如内核中已经定义好了的数据结构,如果要改...
阅读全文
Linux Shell脚本攻略 读书笔记
摘要:Linux Shell脚本攻略 读书笔记内容目录:嗨,Echo一下给终端来点颜色shell的控制结构算术比较目录操作网站下载tar 归档工具rsync 备份系统快照ftp自动传输磁盘管理故障排查使用syslog记录日志杀死进程用/proc收集信息Linux Shell脚本攻略 读书笔记这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝;最有价值的当属文本处理,对这块我单独整理出来一篇blog,详见《Linux Shell文本处理工具集锦》下面是文本处理之外的简单介绍,如果你觉得自己的shell需要充充电,强烈建议读读这本《li
阅读全文
MAKE gnu
摘要:GNU Make 学习系列一:怎样写一个简单的Makefile 编程通常遵循一个相当简单的程序:编辑源文件,编译源代码成可执行的格式,调试结果。尽管将源代码翻译成可执行程序是常规的过程,如果做的不正确,程序员可能会浪费大量的时间去追踪问题。大多数的开发者都经历过这样的挫折:修改一个函数并运行新代码却发现他们的修改并没有修正bug。后来他们发现他们再也不能执行这个修改过的函数,由于一些程序的错误,如未能重新编译源代码、未能重新链接成可执行文件、未能重建成一个jar包。由于不同版本程序的开发,或由于其他平台和支撑库的其他版本,随着程序复杂性的增加,这些寻常的工作越来越容易出错。 Make的目的..
阅读全文
Shell—学习之心得
摘要:Shell—学习之心得 由于项目要招聘需要有经验shell开发人员(awk编程),而作为技术面试官(暂时)的我对shell编程不太熟;当然以前也写过一些shell脚本来满足项目的需求—备份环境,数据库(逻辑)。假如只是针对awk编程的,那我绝对可以问倒他,呵呵…。所以我最近学习了shell编程。入门还不是很深,但是还是有点心得的。以下是本人的一些心得;大伙们觉得好,就拍个砖,不好也拿起你们的手鼓个掌…当然文中有什么错误,遗漏的也请指正我,大伙们对shell的总结也可以在下面回复。 1.shell之read命令1.1对read的参数p,t,s,n。在此我就不作什么描述了。但对参数a还是做下。Re
阅读全文
基本功能的shell
摘要:手把手教你编写一个具有基本功能的shell(已开源) 刚接触Linux时,对shell总有种神秘感;在对shell的工作原理有所了解之后,便尝试着动手写一个shell。下面是一个从最简单的情况开始,一步步完成一个模拟的shell(我命名之为wshell)的过程。这个所谓的shell和主流的shell还是有不少区别的,最大的区别是它本身不能执行shell脚本、也不能对一些复杂的命令行进行分析——原因很简单,我没有写相应的解释器。如果想自己实现一个简化的shell脚本解释器,如果有编译原理的知识准备,本身不是难事,但是工作量比较大,这里就不完成了,有兴趣的读者可以进行尝试。 本文是边写代码边记..
阅读全文
安装mono和jexus,运行asp.net程序
摘要:随笔- 62 文章- 1 评论- 7raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序参考网址:http://www.linuxdot.net/http://www.cnblogs.com/mayswind/p/3279380.htmlhttp://www.raspberrypi.org/phpBB3/viewtopic.php?t=371741、树莓派上安装mono环境,使其支持asp.net本人使用9-25的系统,据说稳定建议更新:sudo apt-get updatesudo apt-get upgrade安装mono时注意:pi上直接源码编译时通不过的,
阅读全文
《现代操作系统》引论
摘要:《现代操作系统》精读与思考笔记 第一章 引论本系列博文是《现代操作系统(英文第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正文精要部分的摘录和课后习题精解,因此不会事无巨细的全面摘抄,仅仅根据个人情况进行记录和推荐。由于是英文版,部分内容会使用英文原文。 课后习题的选择标准:尽量避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,而是能够引起思考加深理解的题目。为了保证解答的正确性,每道题都会附上作者的原文解答,而中文部分会适当加入自己的见解。原书答案下载地址:http://www.hzbook.com/Books/4.
阅读全文
Linux Core Dump
摘要:Linux Core Dump当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。core dump 对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而 core dump 文件可以再现程序出错时的情景。Core Dump 名词解释在半导
阅读全文
Linux下获取硬盘使用情况
摘要:Linux下获取硬盘使用情况[总结]1、前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃。为了捕获硬盘写满的异常场景,我们需要在写日志过程中判断硬盘空间的使用情况,根据硬盘的使用情况,就可以判断是否写满了。如果将要写满了,就给出警告。这样就可以避免程序崩溃。首先看一下linux获取硬盘和目录大小的命令,最后总结一下statfs结构和函数。2、df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况。df命令经常用的参数为: a:显示全部的档案系统和各分割区的磁盘使用情形...
阅读全文
Linux 系统中僵尸进程
摘要:书单碰上国庆,加上这周,消化掉几本书:《软件随想录》:Joel的随想录,也就是他Blog上的文章的摘选;整本书看下来轻松;写了篇读书笔记[传送门];《中国在梁庄》:这本书描述了作者对其家乡的调研结果,中国农村,生活比以前要富足,但也比以前更让人绝望。其影响可能还要一二十年才会爆发,主要集中在两点:1、身体健康和精神状态,2、家庭问题。对中国农村现状剖析的很透彻;《C++设计与演化》:未全读完,捡感兴趣的看看;本周见闻1) 户籍制度怎么改?http://blog.sina.com.cn/s/blog_49818dcb0102fj0p.html叶檀:发达的城市群之间各城市户籍可以互通。发达地区城乡
阅读全文
在archlinux上搭建twitter storm cluster
摘要:在archlinux上搭建twitter storm cluster本文详细描述如何在archlinux上搭建twitter storm cluster,转载请注明出处,谢谢。有关archlinux基本系统安装,请参照archlinux简明安装指南一文,下面以上述为基础讲解如何一步步安装twitter storm cluster.先列出安装主要步骤安装oracle jdk安装必须的编译工具gcc, g++, make安装python2.7, unzip编译安装zeromq编译安装jzmq下载lein下载storm-starter下载storm release版本安装zookeeper为了自动运
阅读全文
搭建Linux+Jexus+MariaDB+ASP.NET[LJMA]环境
摘要:搭建Linux+Jexus+MariaDB+ASP.NET[LJMA]环境备注:,将我的博客内容整理成册,首先会在博客里优先发布,后续可能的话整理成电子书,主要从linux的最基础内容开始进入Linux的Mono开发方面的话题。本文是我整理博客内容的一篇文章。LJMA 是Linux+Jexus+MariaDB+ASP.NET的简写,其实就是把Jexus, MariaDB以及ASP.NET安装在Linux系统上,组成一个环境来运行ASP.NET的应用。Jexus是Linux下的基于Mono编写的WEB服务软件,而MariaDB是比较小型的数据库软件,ASP.NET是由微软在.NET Framew
阅读全文