LINUX
国境之南Fantasy
Coder
展开
-
Linux启动过程详解
启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Mast转载 2011-10-28 13:54:10 · 710 阅读 · 0 评论 -
Linux中EXPORT_SYMBOL的用法
Linux中EXPORT_SYMBOL的用法EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。Linux symbol export method:[1] If we want export the symbol in a mod转载 2012-03-01 16:14:39 · 797 阅读 · 0 评论 -
[Linux笔记]Linux内核的Makefile和kconfig解读
一、概述 在内核编译中如何将各个目录树中的文件组织起来编译是一个很重要的问题,并且要根据用户配置来编译特有的内核。为了解决这个问题,内核使用两种文件,Makefie和Kconfig。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单,就是我们使用命令 make menuconfig(或者xcon转载 2012-03-01 17:23:08 · 1043 阅读 · 0 评论 -
UNIX环境高级编程之学习笔记(四)-文件和目录(1)
1. stat、fstat和lstat函数: 头文件 #include 函数功能 获取与文件有关的信息结构函数原型 int stat( const char* restrict pathname, struct stat*restrict buf); in转载 2012-03-05 16:00:44 · 591 阅读 · 0 评论 -
UNIX环境高级编程之学习笔记(四)-文件和目录(2)
1. 由于符号链接的存在,当使用以名字引用文件的函数时,就应当要了解函数是否处理符号链接了,也即该函数是否跟随符号链接到达它所链接的文件。相关函数总结如下:1,当路径名是符号连接时,出错返回的函数有:mkdir、mkinfo、mknod和rmdir;2,chown是否跟随符号链接取决于实现;3,跟随符号链接的函数:access、chdir、chmod转载 2012-03-05 16:19:05 · 706 阅读 · 0 评论 -
getopt()与getopt_long()
Linux下很多程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与其他程序或用户进行交互的主要手段。具有可靠的复杂命令行参数处理 机制,会使得您的应用程序更好、更有用。不过很多开发人员都将其宝贵的时间花在了编写自己的命令行解析器,却不使用 getopt(),而后者是一个专门设计来减轻命令行处理负担的库函数。转载 2012-03-05 16:34:17 · 551 阅读 · 0 评论 -
ssh-agent
介绍ssh-agentssh-agent是专为既令人愉快又安全的处理RSA和DSA密钥而设计的特殊程序,它包括在OpenSSH分发内(请参阅本系列文章的第1部分以得到关于RSA和DSA认证的介绍)。不同于ssh,ssh-agent是个长时间持续运行的守护进程(daemon),设计它的唯一目的就是对解密的专用密钥进行高速缓存。ssh包含的内建支持允许它同ssh-agent通信,允许ssh转载 2012-04-26 18:30:08 · 10559 阅读 · 0 评论 -
Unix/Linux中rc代表什么意思
Linux/Unix"rc" 是取自 "runcom", 来自麻省理工学院在 1965 年发展的 CTSS系统。相关文献曾记载这一段话: '具有从档案中取出一系列命令来执 行的功能;这称为 "run commands" 又称为 "runcom",而这种档案又称为一个 runcom (a runcom)。转载 2012-04-29 01:29:15 · 2645 阅读 · 0 评论 -
ethtool 在 Linux 中的实现框架和应用
Linux 的一个显著特点就是其强大的网络功能,Linux 几乎支持所有的网络协议,并在这些协议基础上提供了丰富的应用。对 Linux 网络管理的重要性不言而喻,这些管理依赖于网络工具,比如最常用的 ifconfig,route,ip,ethtool 等,其中 ethtool 提供了强大的网卡及网卡驱动管理能力,其具体的实现框架和网络驱动程序及网络硬件关系紧密,容易修改和扩展,能够为 Linux转载 2015-12-02 10:21:01 · 1117 阅读 · 0 评论 -
释伴:Linux 上的 Shebang 符号(#!)
使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗?本文将给你简单介绍一下Shebang(”#!”)这个符号。这个符号(#!)的名称,叫做”Shebang”或者”Sha-bang”。长期以来,shebang都没有正式的中文名称。Linux中国翻译组的 GOLinux 将其翻译为:释伴,即解释伴随行的简称,同时又是shebang的音译。转载 2016-03-31 21:25:35 · 2301 阅读 · 0 评论 -
详解神秘Linux内核
本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点。2.1 启动过程图2-1显示了基于x86计算机Linux系统的启动顺序。第一步是BIOS从启动设备中导入主引导记录(MBR),接下来MBR中的代码查看分区表并从活动分区读取GRUB、LILO或SYSLINUX等引导装入程序,之后引导装入程序会加载压缩后的内核映像并将控制权传递给它。内核取得控制权后,会将自身解压缩并投转载 2012-04-28 20:12:42 · 99296 阅读 · 9 评论 -
浅析遍历子进程方法(利用list_for_each)
Linux系统中的每个进程都有一个父进程(init进程除外);每个进程还有0个或多个子进程。在进程描述符中parent指针指向其父进程,还有一个名为children的子进程链表(父进程task_struct中的children相当于链表的表头)。而我们可以使用list_for_each(/include/linux/list.h)来依次遍历访问子进程:struct task_struct转载 2012-02-28 11:17:25 · 1026 阅读 · 0 评论 -
list_entry 解析
list_entry的宏定义:#define list_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个结构的成员指针找到其容器的指针。但是正因为如此,我的第一感觉是,这个宏的名字应该更加抽象,名字似乎应该改称叫“寻找转载 2012-02-28 11:16:01 · 644 阅读 · 0 评论 -
嵌入式Linux启动过程
1.引 言 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展。虽然 Linux 在桌面 PC 机上的普及程度远不及微软的 Windows 操作系统,但它的发展速度之快、用户数量的日益增多,也是微软所不能轻视的。而近些年来 Linux 在嵌入式领域的迅猛发展,更是给 Linux 注入了新的活力。转载 2011-10-28 16:12:47 · 904 阅读 · 0 评论 -
uboot分析一
6.1 Bootloader对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux系统同样离不开引导程序,这个引导程序就叫作Bootloader。6.1.1 Bootloader介绍Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系转载 2011-11-05 15:23:55 · 1215 阅读 · 0 评论 -
uboot分析二
6.3 U-Boot的调试新移植的U-Boot不能正常工作,这时就需要调试了。调试U-Boot离不开工具,只有理解U-Boot启动过程,才能正确地调试U-Boot源码。6.3.1 硬件调试器硬件电路板制作完成以后,这时上面还没有任何程序,就叫作裸板。首要的工作是把程序或者固件加载到裸板上,这就要通过硬件工具来完成。习惯上,这种硬件工具叫作仿真器。仿真器可以转载 2011-11-05 15:30:44 · 903 阅读 · 0 评论 -
最简单的内核模块
2.1. Hello, World(part 1):最简单的内核模块当第一个洞穴程序员在第一台洞穴计算机的墙上上凿写第一个程序时, 这是一个在羚羊皮上输出`Hello,world'的字符串。罗马的编程书籍上是以 `Salut, Mundi'这样的程序开始的。我不明白人们为什么要破坏这个传统,但我认为还是不明白为好。我们将从编写一系列的`Hello, world'模块开始,一步步展示编写内核转载 2011-12-01 14:40:18 · 1648 阅读 · 0 评论 -
Linux网络设备分析
Linux网络设备分析潘纲 9811536浙江大学计算机系 pg@ccnt.zju.edu.cn[摘要] 在本文中,首先概括了网络设备总体特征和工作原理,接着在分析了一个重要的数据结构device后,重点剖析了网络设备的整个初始化工作过程;简单地分析了设备的打开和关闭的操作后,是有关数据包的传输和接收的分析;在最后,本文对写网络设备驱动程序做了一个总结。以上转载 2011-12-02 16:31:40 · 9962 阅读 · 0 评论 -
linux文件读写浅析
在《linux内核虚拟文件系统浅析》这篇文章中,我们看到文件是如何被打开、文件的读写是如何被触发的。对一个已打开的文件fd进行read/write系统调用时,内核中该文件所对应的file结构的f_op->read/f_op->write被调用。本文将顺着这条路走下去,大致看看普通磁盘文件的读写是怎样实现的。linux内核响应一个块设备文件读写的层次结构如图(摘自ULK3):转载 2011-12-01 18:31:13 · 1354 阅读 · 0 评论 -
request_irq
Kernel中断处理模型结构图如下:下面简单介绍一下:1.Linux定义了名字为irq_desc的中断例程描述符表:(include/linux/irq.h) struct irqdesc irq_desc[NR_IRQS];NR_IRQS表示中断源的数目。2.irq_desc[]是一个指向irq_desc_t结构的数组, irq_desc_t结构是各个设备中断服务例转载 2011-12-02 16:19:05 · 879 阅读 · 0 评论 -
Linux slab 分配器剖析
了解 Linux 内存管理的方式M. Tim Jones, 顾问工程师, EmulexM. Tim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application Programming、AI Application Programming 以及BSD Sockets Programming from a Multilanguage Persp转载 2011-12-02 14:39:10 · 1146 阅读 · 0 评论 -
Linux I/O 调度方法
操作系统的调度有CPU调度 CPU schedulerIO调度 IO scheduler IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯. (elevator)而相应的算法也就被叫做电梯算法. 而Linux中IO调度的电梯算法有好几种,as(Anticip转载 2011-12-06 17:24:32 · 712 阅读 · 0 评论 -
Barrier
Barrier是类似于信号量和条件变量的概念,用于控制并行程序的执行。一个Barrier通常用来确保某些并行算法中的所有合作线程可以继续运行之前到达算法中的一个特定点。Barrier可以借助条件变量实现。Barrier能够保证一组线程在全部到达这个barrier之前,组内任何一个线程都不能逾越barrier去继续执行下面的代码。在Barrier最简单语义实现中,通常调用函数barrier_转载 2011-12-19 15:29:02 · 1376 阅读 · 0 评论 -
Linux修改进程名称(setproctitle())
[cpp] view plain copy1.1 介绍 每一个c程序都有个main函数,作为程序启动入口函数。main函数的原型是int main(int argc , char *argv[]);其中argc表示命令行参数的个数;argv是一个指针数组,保存所有命令行字符串。Linux进程名称是通过命令行参数argv[0]来表示的。转载 2016-04-13 15:49:40 · 2376 阅读 · 0 评论