
linux内核
文章平均质量分 62
正义飞
大数据专业分享技术公众号:bigdatatip
展开
-
对Linux内核进程上下文和中断上下文的理解
1、内核空间和用户空间是操作系统重要的理论知识,用户程序运行在用户空间,内核功能模块运行在内核空间,二者是空间是不能互相访问的。用户态的程序要想访问内核空间,须使用系统调用。当用户空间的应用程序通过系统调用进入内核空间时,就会涉及到上下文的切换。用户空间和内核空间具有不同的地址映射、通用寄存器和专用寄存器组,而且用户空间的进程要传递很多变量、参数给内核,内核也要保存用户进程的一些寄存器、变量等,以转载 2013-11-15 16:49:54 · 968 阅读 · 0 评论 -
linux进程创建:fork、vfork和clone联系与区别
fork,vfork,clone都是linux的系统调用,用来创建子进程的,但是大家在使用时经常混淆,这里给出具体例子讲解三者的联系与区别。 在此之前,推荐大家先看我的文章:linux进程创建过程与原理 我们知道,进程由4个要素组成: 1.进程控制块:进程标志 2.进程程序块:可与其他进程共享 3.进程数据块:进程专属空间,用于存放各种转载 2014-05-27 17:00:04 · 702 阅读 · 0 评论 -
linux进程创建过程与原理
linux创建新进程的过程。 系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个linux系统的所有进程也是一个树形结构。树根是系统自动构造的,即在内核态下执行的0号进程,它是所有进程的祖先。由0号进程创建1号进程(内核态),1号负责执行内核的部分初始化工作及进行系统配置,并创建若干个用于高速缓存和虚拟主存管理的内核线程。随后,1号进程调转载 2014-05-27 17:03:29 · 745 阅读 · 0 评论 -
有关Linux下线程的调度
由于Linux对线程实现的一些特殊性,所以会给我们理解线程及其相关的一些函数带来疑惑,这里做个解答: 1、关于sleep 很多书籍上都说sleep这个系统调用会使整个进程sleep,而不单是sleep一个线程。这样说没错,但我们要是在Linux下写一个多线程 的程序,在一个线程中调用sleep,你会发现其他线程照样运行,这是怎么回事呢?这就是由于Linux下的线程,其实线程的注册、转载 2014-05-27 17:04:56 · 833 阅读 · 0 评论 -
Linux进程间通信方式简介
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间转载 2014-05-27 17:21:11 · 800 阅读 · 0 评论 -
Bootm命令
一、在开始之前先说明一下bootm相关的东西。1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把flash中的内核镜像复制到转载 2015-06-06 23:15:12 · 1029 阅读 · 0 评论 -
U-Boot启动Linux过程
U-Boot启动Linux过程 U-Boot使用标记列表(tagged list)的方式向Linux传递参数。标记的数据结构式是tag,在U-Boot源代码目录include/asm-arm/setup.h中定义如下:struct tag_header { u32 size; /* 表示tag数据结构的联合u实质存放的数据的大小*/转载 2015-06-06 23:27:41 · 736 阅读 · 0 评论 -
FIQ和IRQ的区别及CPU实现
FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。如果该中断设置为了IRQ,那么当该中转载 2015-06-13 00:02:29 · 5538 阅读 · 0 评论 -
softirq/tasklet/workqueue的区别
softirq和tasklet都属于软中断,tasklet是softirq的特殊实现;workqueue是普通的工作队列。1、softirq软中断支持SMP,同一个softirq可以在不同的CPU上同时运行,softirq必须是可重入的。软中断是在编译期间静态分配的,它不像tasklet那样能被动态的注册或去除。kernel/softirq.c中定义了一个包含32个soft转载 2015-06-12 23:58:45 · 625 阅读 · 0 评论 -
linux内核的三种主要调度策略
linux内核的三种主要调度策略:1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务 3,SCHED_RR实时调度策略,时间片轮转 实时进程将得到优先调用,实时进程根据实时优先级决定调度权值。分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu转载 2015-06-14 11:08:02 · 4684 阅读 · 0 评论 -
linux进程调度
一,进程调度的作用:顾名思义,进程调度就是对进程进行调度,即负责选择下一个要运行的进程.通过合理的调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的效果.二,进度调度的目标和基本工作:进程调度最终要完成的目标就是为了最大限度的利用处理器时间.即,只要有可以执行的进程,那么就总会有进程正在执行.当进程数大于处理器个转载 2015-06-14 11:11:15 · 771 阅读 · 0 评论 -
uboot想Linux内核传递参数
U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式。另外一种就是现在的 2.6内核在用的参数链表 (tagged list) 方式。这些参数主要包括,系统的根设备标志,页面大小,内存的起始地址和大小,RAMDISK的起始地址和大小,压缩的RAMDI转载 2015-06-15 22:06:03 · 1131 阅读 · 0 评论 -
Linux多线程 基本概念
1、基本概念 线程是进程的一个执行流,是CPU调度的基本单位,是CPU中能独立运行的最小单位。也可以称为轻量级进程。 进程是分配资源的最小单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。2、选择多线程而不是多进程的理由?(1)线程启动时间远小转载 2014-05-27 16:58:19 · 715 阅读 · 0 评论 -
对Linux内核中进程上下文和中断上下文的理解
作者:杨老师,华清远见嵌入式学院讲师。转自:内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而原创 2014-05-26 16:03:06 · 772 阅读 · 0 评论 -
TX2440 ARM开发板Uboot移植(五、yaffs2文件系统的支持)
Yaffs/yaffs2文件系统的设计充分考虑到Nand Flash以页为存取单位等的特点,将文件组织成固定大小的段(Chunk)。以528B的页为例,Yaffs/yaffs2文件系统使用前512B存储数据和16B的额外空间存放数据的ECC和文件系统的组织信息等(称为OOB数据)。通过OOB数据,不但能实现错误检测和坏块处理,同时还可以避免加载时对整个存储介质的扫描,加快了文件系统的加载速度。转载 2014-04-09 10:07:54 · 853 阅读 · 0 评论 -
linux进程调度
linux进程调度浅析操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了实际环境,这些结论是比较片面的。 而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TASK_RUNNING状态的进程进行调度(转载 2013-11-16 01:59:02 · 923 阅读 · 0 评论 -
linux系统的基本目录
/bin:bin是binary(二进制)的缩写。这个目录是对UNIX系统习惯的沿袭,存放着使用者最经常使用的命令。例如:cp,ls,cat。 /boot:这里存放的是启动LINUX时使用的一些核心文件。 /dev:dev是device(设备)的缩写。这个目录下是所有LINUX的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在LINUX中设备和文件是用同种方法访问的。例如原创 2013-11-13 19:37:37 · 723 阅读 · 0 评论 -
linux守护进程
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程转载 2013-11-16 01:57:40 · 811 阅读 · 0 评论 -
linux进程之间通讯常用信号
1)SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控 制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端 不再关联. 2)SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出 3)SIGQUIT 和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到 SI原创 2013-11-23 01:36:59 · 1056 阅读 · 0 评论 -
linux中strace命令用法
linux的strace命令用法调用: strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ... [ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ]strace -c [ -eexpr ] ... [ -Ooverhead ]转载 2013-11-10 11:09:39 · 769 阅读 · 0 评论 -
linux下修改时间戳---touch
Linux系统下查看某文件修改的时间戳查看文件时间戳命令:stat awk.txtFile: `awk.txt' Size: 20 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 380730 Links: 1 Access: (0转载 2013-11-10 11:16:40 · 1364 阅读 · 0 评论 -
linux内核引导
1.“boot=” 此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区中读取引导扇区。2.“root=” 此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件系统的设备名,可用的设备名有: (1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区 (2)/dev/sdaN~/转载 2013-11-13 13:11:02 · 798 阅读 · 0 评论 -
linux内核信号的实现
信号的概念大家不陌生。经常使用的kill命令,可以先运行的进程发送信号,运行进程在收到信号后,做出相应的处理。在用户态程序中关于信号的编程,主要有如下的特点1、程序可以给不同的信号安装特定的handler程序,这个handler有一定的格式,由用户程序提供2、应用程序可以配置,阻塞一些信号,使得程序可以不响应这些信号3、信号一般有默认的handler处理流程,应用程序如果不转载 2013-11-14 16:35:49 · 1424 阅读 · 0 评论 -
linux进程优先级的实现
首先linux进程优先级的范围是-20到19将当前目录下的documents目录打包,但不希望tar占用太多CPU:nice -19 tar zcf pack.tar.gz documents这个“-19”中的“-”仅表示参数前缀;所以,如果希望赋予tar进程最高的优先级,则执行:nice --19 tar zcf pack.tar.gz documents转载 2013-11-14 16:38:32 · 872 阅读 · 0 评论 -
uImage、zImage、bzImage、vlinzx
在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根 据特定的硬件及需求重新编译Linux内核。编译Linux 内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件 . 编译过RedHat Linux内核的人对其中的System.map、vmlinuz、initrd原创 2014-03-27 10:59:09 · 1093 阅读 · 0 评论 -
汇编语言和C语言的混合使用
汇编语言和C语言的混合使用 在C语言中怎样使用汇编语言呢?这个问题在不同的编译器中,具体实现方法是不同的。但是在实现大方上也但是就是有两种,而且各种编译器的实现方法也是大同小异。一种是在C语言中嵌入汇编语言代码,另一种是让C语言从外部调用汇编。下面我们就以Borland格式为例来说一说具体用法。但是,GCC和Microsoft的实现方法的和Borland只在格式上有点区分。当然,GCC的嵌入汇原创 2014-04-08 22:18:45 · 4459 阅读 · 0 评论 -
bootm命令中的地址参数,内核加载地址以及入口地址
bootm命令只能用来引导经过mkimage构建了镜像头的内核镜像文件以及根文件镜像,对于没有用mkimage对内核进行处理的话,那直接把内核下载到连接脚本中指定的加载地址0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 通过mkimage可以给内核镜转载 2015-06-15 22:09:54 · 1009 阅读 · 0 评论