linux基础
深度思索
走在路上思考着前进
展开
-
linux之shell
一、shell环境 首先应该清楚,shell是用户与操作系统交互的一个程序界面。交互的方式可以是用户直接通过键盘等等键入命令,也可以是从某个文件中读入命令,然后它将读入的命令经过解析为系统可识别的指令送入系统中执行。简单的说shell就是一个命令解析器。shell脚本是各种命令的组合。1》bash的主要功能命令行编辑功能命令和文件名补全功能(Tab键) 命令原创 2013-10-06 22:37:01 · 774 阅读 · 0 评论 -
Linux内核学习笔记(一)CFS完全公平调度类
Linux内核学习笔记(一)CFS完全公平调度类 我的邮箱:[email protected] 总结可能存在很多错误,欢迎交流 前导: 最近在学习Linux内核的相关知识,参考的资料是《Professional Linux Kernel Architecture》和linux2.6.24的内核源码。对Linux2.6.24中的核心转载 2014-05-21 18:00:08 · 1392 阅读 · 0 评论 -
向linux内核添加系统调用新老内核比较
2.6内核1>修改linux-source-2.6.31/kernel/sys.c文件,在文件末尾添加系统响应函数。函数实现如下:asmlinkage int sys_mycall(int number) { printk("这是我添加的第一个系统调用"); return number; }2>在linux-source-2.6.31原创 2014-05-14 17:29:09 · 1161 阅读 · 0 评论 -
linux中的likely与unlikely
likely() 与 unlikely()是内核(2.6的版本应该都有)中定义的两个宏。位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)__builtin_expect是gcc原创 2014-05-20 17:21:53 · 846 阅读 · 0 评论 -
linux下进程与线程的区别
进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。转载 2014-05-12 22:11:50 · 668 阅读 · 0 评论 -
list_for_each与list_for_each_entry详解
一、list_for_each1.list_for_each原型#define list_for_each(pos, head) \ for (pos = (head)->next, prefetch(pos->next); pos != (head); \ pos = pos->next, prefetch(pos->next))它实际上是一个 for 循环,利用原创 2014-05-12 11:22:03 · 5281 阅读 · 1 评论 -
list_entry()详解
Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) / ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个结构的成员指转载 2014-05-11 21:21:48 · 917 阅读 · 0 评论 -
linux中断嵌套以及中断丢失
在linux内核里,如果驱动在申请注册中断的时候没有特别的指定,do_irq在做中断响应的时候,是开启中断的,如果在驱动的中断处理函数正在执行的过程中,出现同一设备的中断或者不同设备的中断,这时候新的中断会被立即处理,还是被pending,等当前中断处理完成后,再做处理。在2.4和2.6内核里,关于这一块是否有什么不同。一般申请中断的时候都允许开中断,即不使用SA_INTERRUPT标志。转载 2014-05-07 23:01:20 · 1438 阅读 · 0 评论 -
size_t 与 ssize_t 类型
ssize_t是什么类型的?解释一:为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样。 在32位系统上 定义为 unsigned int 也就是说在32位系统上是32位无符号整形。在64位系统上定义为 unsigned long 也就是说在64位系统上是64位无符号整形。size_t一般用来表示一种计数转载 2014-03-23 22:42:51 · 881 阅读 · 0 评论 -
linux的宏__user
首先来看看__user的宏定义:#ifdef __CHECKER__# define __user __attribute__((noderef, address_space(1)))从宏定义可以看出,在配置__CHECKER__宏的条件下,__user宏定义有效,而显然可以看原创 2014-03-07 17:39:42 · 2602 阅读 · 0 评论 -
论makefile
一、makefile 从概念上来讲,makefile是一种为更好的编译工程文件而编写的脚本文件,它由make执行。1》格式为:目标文件:关联文件 (tab键)命令[clean: ][ 文件] 中括号里为可选如:hello:hello.c gcc hello.o -o hello -ghello.原创 2013-10-08 18:26:27 · 858 阅读 · 0 评论 -
linux之gcc与gdb
GCC 从概念上来讲,GCC并不同于gcc。GCC是一个编译器组合,包括gcc、g++、as等等。一、gcc1》gcc识别的文件类型 见图。2》gcc编译过程。*方法一:gcc -E file.c -o file.i 预编译,即导入头文件。gcc -S file.i -o file.S 编译,生成汇编文件。gcc -c原创 2013-10-07 17:24:01 · 980 阅读 · 0 评论 -
linux之makefile伪(虚)目标
本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标。 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签。使用伪目标有两点原因:1. 避免在我们的Makefile中定义的只执行命令的的目标(此目标的目的为了执行执行一系列命令,而不需要创建这个目标)和工作目录下的实际文件出现名字冲突。2. 提原创 2013-10-08 13:47:40 · 2458 阅读 · 0 评论 -
linux之服务器构建
一、nfs服务器 在使用nfs服务器的时候,首先需要检查是否已安装nfs服务器的启动脚本及管理维护程序nfs-utils1》service指令 1)service nfs status 查看nfs服务器是否启动 2)service nfs start 启动nfs服务器,注意此处权限是超级用户 3)service nfs stop原创 2013-10-05 23:24:25 · 782 阅读 · 0 评论 -
linux设置程序开机启动
网上看到共有三个方法,这里仅介绍最简单一种--修改 /etc/rc.local 文件:1)在命令行下切到该etc目录下,然后输入命令: sudo gedit rc.local2)在rc.local 文件最后一行的 exit 0 前面加上运行程序的绝对路径即可,如图蓝色部分,HelloWorld为程序:3)保存,退出。重启计算机程序即已经执行原创 2015-07-26 11:55:55 · 1016 阅读 · 0 评论