linux内核
文章平均质量分 83
marven
热爱ARM,热爱linux,热爱oracle 热爱嵌入式,热爱C/C ,热爱csdn。
展开
-
关于fork()返回值
fork简介: fork英文原意是“分岔,分支”的意思,而在操作系统中,乃是著名的Unix(或类Unix,如Linux,Minix)中用于创建子进程的系统调用。 【NOTE1】 fork () 的作用是什么?换句话说,你用 fork () 的目的是什么? ――是为了产生一个新的进程,地球人都知道 :)产生一个什么样的进程? ――和你本来调用 fork () 的那个进程基本一样的进程,其实就是你原来进程的副本; 真的完全一样吗? ――当然不能完全一样,你要两个除了 pid 之外其它一模一样的进原创 2010-08-20 15:19:00 · 549 阅读 · 0 评论 -
嵌入式linux启动信息完全注释
<br />我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。<br />嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解linux内核。<br />关键字:linux,嵌入式,启动,bootloader<br />正文<br />作为一名嵌入系统开发者,你一定遇到过下面的情景转载 2010-08-23 15:08:00 · 615 阅读 · 0 评论 -
vim取全的快捷键
<br />光标控制命令<br /> 命令 光标移动<br /> h或^h 向左移一个字符<br /> j或^j或^n 向下移一行<br /> k或^p 向上移一行<br /> l或空格 向右移一个字符<br /> G 移到文件的最后一行<br /> nG 移到文件的第n行<br /> w 移到下一个字的开头<br /> W 移到下一个字的开头,忽略标点符号<br /> b 移到前一个字的开头<br /> B 移到前一个字的开头,忽略标点符号<br /> L 移到屏幕的最后一行<br转载 2010-08-23 15:00:00 · 559 阅读 · 0 评论 -
Linux下GCC编程四个过程
在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。一、GCC快速入门Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件]其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out我们来看一下经典入门程序"Hello World!"# vi hello.c #include #include void main(void){printf("hello world!/r/n"转载 2010-08-23 15:09:00 · 434 阅读 · 0 评论 -
vim多文件编辑
总想写点东西,以证明自己的存在给将来。 1 screen<br />a 通过ports安装screen<br />b $screen<br />c $vi file1.c<br />d CTRL+a c (表示同时按住CTRL和a,松开后再单击c,以下同)新建一个窗口<br />e $vi file2.c<br />f 光标移动到起始点<br />g CTRL+a [进入copy模式<br />h 单击空格标志起始点<br />i 通过hjkl选择范围<br />j 单击空格标志结束点<br />k CTR转载 2010-08-23 15:11:00 · 1279 阅读 · 0 评论 -
与一线Linux嵌入式开发工程师的对话
陈工程师一直做Linux的嵌入式开发,作为在开发一线的工程师,他对很多问题的看法可能更切合实际需求,于是,通过邮件,就嵌入式开发方面的问题,请他谈了一下自己的看法: 问:关于嵌入式开发,我们准备给同学们讲解一些入门知识,从你一线开发经验来说,给我们一些建议: 陈工回答: 对于嵌入式Linux入门,如果有一定基础,可以从驱动开始;如果没有基础,我个人建议还是从应用程序开始。因为从应用程序开始是最容易的,也是最直观的。而驱动程序运行在内核态,驱转载 2010-08-24 16:05:00 · 648 阅读 · 0 评论 -
Linux中IS_ERR()函数的理解
<br />转自http://jimmy-lee.blog.hexun.com/6075934_d.html<br />和http://blog.chinaunix.net/u3/97568/showart_1978276.html两位的博客。谢两位分享。<br />在Linux源码中的fs部分,经常会碰到这样的函数(位于kernel/include/linux/fs.h):<br />/*<br /> * Kernel pointers have redundant information, so we转载 2010-12-06 20:24:00 · 12812 阅读 · 0 评论 -
[转]死锁产生的必要条件与解决死锁的几种办法
死锁产生的必要条件与解决死锁的几种办法<br /> 产生死锁的四个必要条件: <br />(1) 互斥条件:一个资源每次只能被一个进程使用。<br />(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。<br />(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。<br />(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。<br /> <br />这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会转载 2010-10-18 09:28:00 · 737 阅读 · 0 评论 -
linux内核学习笔记-struct vm_area_struct
<br />Linux内核中,关于虚存管理的最基本的管理单元应该是struct vm_area_struct了,它描述的是一段连续的、具有相同访问属性的虚存空间,该虚存空间的大小为物理内存页面的整数倍。 <br /> 下面是struct vm_area_struct结构体的定义:QUOTE:/*<br />* This struct defines a memory VMM memory area. There is color: black; background-color: #a0ffff;">vm转载 2011-01-04 09:43:00 · 10112 阅读 · 0 评论 -
linux内核进程切换代码分析
<br /><br />#define switch_to(prev,next,last) do{<br /> asm volatile {"pushl %%esi/n/t"<br /> "pushl %%edi/n/t"<br /> <br /> "movl %%esp,%0/n/t"<br /> "movl %3,%%esp/n/t"<br />原创 2011-01-05 09:43:00 · 2416 阅读 · 1 评论 -
vim 实用的东西
本文的目标不是一个VI编辑器的教材。它只是个人在使用VI编程的过程中,对自认为比较有用的一些编辑功能及其它功能的一些整理。<br /><br />一、基本编辑功能<br /> 1、复制、剪切和粘贴<br /> 复制特定的某一段:把光标移到要复制的文本的头部,按下“v”,往后移动光标,光标所过之处的字符>都会高亮,移到欲复制文本的尾部后,按下“y”,高亮文本全部被复制到剪粘板。<br /> 复制某一行:把光标移到要复制的那一行,按下“yy”,该行就被复制到剪粘板。<br /> 剪切特定转载 2010-08-23 15:00:00 · 570 阅读 · 0 评论 -
Linux启动过程详解
<br />启动第一步--加载BIOS<br />当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。<br />启动第二步--读取MBR<br />众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不转载 2010-08-23 14:33:00 · 396 阅读 · 0 评论 -
/etc/inittab文件详解
<br />/etc/inittab文件如图4-2所示。<br /> <br /> 图4-2 /etc/inittab文件<br /> /etc/inittab文件每一行包括四个字段:id、runlevel、action、process。详细解释如下。<br /> 1.id<br /> 登记项标志符,是一个任意指定的、4个字符以内的序列标号,在本文件内必须唯一。<br /> 2.runlevels<br /> 系统运行级,即执行登记项的init级别。用于指定相应的登记项适用于哪一个运行级,即在转载 2010-08-23 14:32:00 · 648 阅读 · 0 评论 -
Linux运行级
<br />1)什么是运行级<br /> 一个运行级仅仅是一个数字,Linux根据这个数字来区分不同类型的高层次配置,系统将按照不同的高层次配置来进行引导。绝大部分运行级数字都定义了明确的含义,Red Hat Linux系统的主要运行级如表4-1所示。<br />运 行 级<br />说 明<br />0<br />关闭<br />1<br />单用户模式(一般仅用于管理目的)<br />2<br />多用户模式,不允许使用网络<br />运 行 级<br />说 明<br />3<b转载 2010-08-23 14:31:00 · 722 阅读 · 0 评论 -
Bulk-Only传输协议 UFI命令块规范
USB设备分为5大类,即显示器、通信设备、音频设备、人机输入和海量存储。通常所用的U盘、移动硬盘均属于海量存储类。海量存储类的规范中包括4个独立的子规范,即CBI传输、Bulk-Only传输、ATA命令块、UFI命令规范。前两个协议定义了数据/命令/状态在USB总线上的传输方法,Bulk-Only传输协议仅仅使用Bulk端点传送数据/命令/状态,CBI传输协议则使用Control/bulk/interrupt三种类型的端点进行数据/命令/状态的传送。后两个协议定义了存储介质的操作命令,ATA协议用于硬盘,U转载 2010-08-23 14:37:00 · 1647 阅读 · 0 评论 -
vi编辑器
<br />vi 编辑器<br />一、Unix编辑器概述<br />编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix<br />操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括 ex, edit,ed 和<br />vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别<br />是某些终端用户的需要。<br />值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这转载 2010-08-23 15:06:00 · 410 阅读 · 0 评论 -
嵌入式系统学习步骤
1、Linux 基础<br />安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器<br />2、Shell 编程基础<br />Shell简介 认识后台程序Bash编程熟悉Linux系统转载 2010-08-23 15:07:00 · 401 阅读 · 0 评论 -
linux ip设置
<br />在网上查找了配置linux配置IP的方法,简单的有下面两种:<br />最常用的给网卡配置ip的命令为<br />#ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up<br />说明:<br />eth0是第一个网卡,其他依次为eth1,eth*<br />192.168.0.1是给网卡配置的第一个网卡配置的ip地址<br />netmask 255.255.255.0 配置的是子网掩码<br />up是表示立即激活<br /><br /> if转载 2010-08-23 15:12:00 · 484 阅读 · 0 评论 -
Linux的启动过程详解
<br /> Linux的启动流程(/etc/inittab)<br /> 1. 从BIOS到KERNEL<br /> BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动<br /> BIOS自检<br /> 当电脑开机的时候,电脑会进入BIOS,BIOS的工作主要是侦测电脑的周边配套设备是否工作正常,如CPU的类型、速度、缓存等<br /> 主板类型<br /> 内存的速度,容量<br /> 硬盘的大小,类型和工作模式<br /> 风扇速度等转载 2010-08-23 14:30:00 · 339 阅读 · 0 评论 -
Vim 命令
<br />Vim 中的内部命令与 vi 编辑器中的内部命令类似。表 1 提供了 Vim 中的光标移动命令。<br />表 1. 用于移动光标的 Vim 命令<br />命令动作h将光标向左移动j、加号 (+)、Enter 或 Return将光标向下移动k、减号 (-)将光标向上移动l将光标向右移动}将光标移动到当前段落的末尾{将光标移动到当前段落的开头)将光标移动到当前句子的末尾(将光标移动到当前句子的开头^移动到当前行的第一个非空字符$移动到当前行末尾0 (zero)移动到当前行开头w or W移动到下转载 2010-08-23 15:01:00 · 1176 阅读 · 0 评论 -
Red Hat Linux中自动运行程序
1.开机启动时自动运行程序 <br />Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。 <br /><br />2.登录时自动运行程序 <br /原创 2010-08-23 14:28:00 · 440 阅读 · 0 评论 -
init和/etc/inittab
<br />init的手册页指出"init是所有进程之父"。它的主要任务是根据存储于/etc/inittab中的脚本创建进程。当装入内核之后,许多Linux启动进程的方式来源于另一个UNIX系统的SystemV。事实上,Linux的init命令与SystemV的init命令是兼容的,并且启动脚本也模仿SystemV的init的方式,虽然init作为"引导内核的最后一步",但它却是进行初始化和配置的第一个命令,通过从控制台或X终端窗口的命令行使用pstree命令可以查看该进程。<br /> pstree命令转载 2010-08-23 14:31:00 · 851 阅读 · 0 评论 -
Linux 下 stdin stdout stderr 的由来
<br />现在就从linux kernel的源代码的角度来分析该。<br />二:fork()与execve()中stderr,stdio.stdout的继承关系 <br />其实用继承这个词好像不太准确,要准确一点,可能复制更适合. <br />首先有二点: <br />1:父进程fork出子进程后,是共享所有文件描述符的(实际上也包括socket) <br />2:进程在execve后,除了用O_CLOEXEC标志打开的文件外,其它的文件描述符都是会复制到下个执行序列(注意这里不会产生一个新进程,只是原创 2011-01-09 17:31:00 · 2483 阅读 · 0 评论