自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq2007xia的专栏

不断学习,不断积累,不断进步。

  • 博客(36)
  • 收藏
  • 关注

转载 Linux内核空间保护和空间数据传递分析

一定要注意的是不能直接访问用户空间数据,内核代码可以通过特殊的函数来访问用户空间数据,copy_to_user copy_from_user这两个函数就是内核代码访问用户空间数据的函数,但是内核不能直接通过像是memcpy函数来直接操作用户空间数据。按照linux设备驱动书本上的说法,我的理解,三个原因描述如下。其一,驱动程序架构不同或者内核的配置不同,用户空间数据指针可能运行在内

2014-07-31 14:29:39 799

转载 UNIX环境高级编程——IPC总结

IPC主要包括:管道,消息队列,信号量,共享内存, 套接字(SOCKET)。一、IPC对象的持久性    每种IPC机制都会借助一种数据结构,这种数据结构的实例称为该IPC机制的对象(相应的,用于同步互斥的数据结构的实体也可以称为该机制的对象)。理清IPC对象的持久性,有助于理解相应的IPC的工作机制。1.对象持久性    大致上IPC对象的持久性可以分为三种:

2014-07-31 09:30:24 667

转载 从 Linux 内核访问用户空间内存

原文:http://www.ibm.com/developerworks/cn/linux/l-kernel-memory-access/   从 Linux 内核访问用户空间内存Linux 内存和用户空间 API 简介因为内核和用户空间存在于不同的虚拟地址空间中,在它们之间移动数据需要特别注意。研究虚拟地址空间和内核 API 理念,用于

2014-07-31 09:22:41 842

转载 Linux下性能分析工具汇总

Linux下性能分析工具汇总2011-04-02 10:29 佚名 CSDN 字号:T | T本文讲述的是:CPU性能分析工具、Memory性能分析工具、I/O性能分析工具、Network性能分析工具、  Linux 性能调优工具、Linux下性能分析工具汇AD:性能分析工具汇总CPU性能分析工具:vmstat

2014-07-31 08:50:58 883

原创 Linux线程ID和进程ID

1. Linux线程的线程ID和进程IDLinux内核并不支持真正意义上的线程,Linux线程库是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程id,在进程调度、信号处理、IO等方面享有与普通进程一样的能力。每个Linux线程都同时具有线程id和进程id,其中进程id就是内核所维护的进程号,而线程id则由线程库分配和维护。1)

2014-07-30 15:54:16 4019

转载 Linux 线程实现机制分析

一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果

2014-07-29 15:45:53 574

转载 Linux内核态抢占机制分析

【摘要】本文首先介绍非抢占式内核(Non-Preemptive Kernel)和可抢占式内核(Preemptive Kernel)的区别。接着分析Linux下有两种抢占:用户态抢占(User Preemption)、内核态抢占(Kernel Preemption)。然后分析了在内核态下:如何判断能否抢占内核(什么是可抢占的条件);何时触发重新调度(何时设置可抢占条件);抢占发生的时机(何时检查可抢

2014-07-29 15:12:15 631

转载 80X86寄存器介绍

32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储

2014-07-29 13:52:02 622

转载 时间复杂度为O(n)的排序算法,你会吗?——其实很简单的

看上去似乎任何已知的算法都无法做到,如果谁做到了,那么所有的排序方法:QuickSort,ShellSort,HeapSort,BubbleSort等等等等,都可以扔掉了,还要这些算法干吗阿,呵呵。我们平常知道是排序算法都是O(n),最好的情况也就是O(nlogn),怎么会有O(n)的呢。不过实际上,在数字范围有限制的情况下,(必须是数字才行的吧)是有一个这样的算法的,只需要用一个数组

2014-07-27 22:00:16 830

转载 Linux内核地址空间与进程地址空间

内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。永久内存映射区:该区域可访

2014-07-17 20:04:22 763

转载 Linux进程地址空间详解

之前写的一篇文章《a.out分段及运行时内存结构》简要介绍了Linux下的可执行文件格式和运行时的内存布局,这篇文章将更为详细得讨论Linux下进程的虚拟地址空间的布局。如下所述的内容都是基于32位系统的。Linux传统内存布局进程的线性地址空间分为两部分:1、从0×00000000到0xbfffffff的线性地址,无论进程运行在用户态还是内核态都可以寻址。

2014-07-17 19:50:38 881

转载 linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间

linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。  Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较

2014-07-16 17:12:45 865

转载 linux 用户空间与内核空间——高端内存详解

原文:http://blog.csdn.net/tommy_wxie/article/details/17122923  摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规

2014-07-16 17:06:04 608

转载 用户空间栈 & 内核空间栈

以下简称用户栈、内核栈1、用户栈和内核栈的区别       内核在创建进程的时候,在创建task_struct的同时,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。记住,进程对应的用户栈和内核栈都是进程私有的。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,c

2014-07-16 16:35:23 1489

原创 Linux中断过程概述

2014-07-16 16:17:48 675

转载 Linux中断机制(二)

Linux中断解析摘要:本章将向读者依次解释中断概念,解析Linux中的中断实现机理以及Linux下中断如何被使用。作为实例我们第一将向《i386体系结构》一章中打造的系统加入一个时钟中断;第二将为大家注解RTC中断,希望通过这两个实例可以帮助读者掌握中断相关的概念、实现和编程方法。中断是什么中断的汉语解释是半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为什么需要“阻隔、

2014-07-16 11:47:26 1702

转载 linux 中断机制(一)

linux0.11下的中断机制分析 异常就是控制流中的突变,用来响应处理器状态中的某些变化。当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表,进行一个间接过程调用,到一个专门设计用来处理这类事件的操作系统子程序,这张表即中断描述符表IDT。本文将针对Linux0.11代码进行分析和调试,来了解中断机制,主要分析以下三个问题:1.  中断描述符表的建立。2.  一般中

2014-07-16 11:19:19 855

转载 Linux进程控制

Linux进程控制  程序是一组可执行的静态指令集,而进程(process)是一个执行中的程序实例。利用分时技术,在Linux操作系统上同时可以运行多个进程。分时技术的基本原理是把CPU的运行时间划分成一个个规定长度的时间片,让每个进程在一个时间片内运行。当进程的时间片用完时系统就利用调度程序切换到另一个进程去运行。因此实际上对于具体单个CPU的机器来说某一个时刻只能运行一个进

2014-07-16 10:43:17 706

转载 对Linux内核中进程上下文和中断上下文的理解

对Linux内核中进程上下文和中断上下文的理解作者:杨老师,华清远见嵌入式学院讲师。内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态

2014-07-15 23:07:35 552

转载 Linux文件共享(六)——描述符传递

原文:http://blog.chinaunix.net/uid-28541347-id-4198437.html  作者:lvyilong316  点击打开链接5.1 进程间描述符传递首先,我们先来讨论一个问题——进程间传递文件描述符究竟传递的是什么?我们从传递描述符函数的参数来看是个fd,我们知道fd是打开文件指针的在数组中的下标,是一个整数,那么我们仅仅是把一个整数传

2014-07-11 16:12:16 539

转载 Linux文件共享(五)——线程共享文件

原文:http://blog.chinaunix.net/uid-28541347-id-4198426.html   作者:lvyilong316  4.1 Linux线程实现注:转载请注明出处   作者:lvyilong316在谈论线程之间共享文件之前,我想首先简单的介绍下linux线程的实现。最初的进程定义都包含程序、资源及其执行三部分,其中程序通常指代码,资源在操作系统

2014-07-11 16:10:41 572

转载 Linux文件共享(四)——父进程与子进程之间的文件共享

注:转载请注明出处    作者:lvyilong316由fork产生的进程为子进程。fork的一个特性是父进程所有的打开文件描述符(file_struct)都被复制到子进程中,父子进程的每个相同的打开描述符共享一个文件表项如图。在linux系统中的具体实现可用下图表示(说明:进程的fs_struct也会被复制,图中没有画出)。这种共享的方式使父、子进程对同一个文件使

2014-07-11 16:08:39 754

转载 Linux文件共享(三)——dup

原文:http://blog.chinaunix.net/uid-28541347-id-4198394.html  作者: dup返回的新文件描述符是当前可用文件描述符中的最小值。它返回的新描述符与参数fd共享一个文件表项(file对象)。调用dup会使file的引用计数增1,即增加“打开文件”引用计数。图3-3是apue中的原图。我们用以下程序测试并说明:

2014-07-11 16:06:46 618

转载 Linux文件共享(二)——两个独立进程打开同一个文件

如果两个独立进程各自打开了同一文件,则有图3-2中所示的安排。我们假定第一个进程使该文件在文件描述符3上打开,而另一个进程则使此文件在文件描述符4上打开。打开此文件的每一个进程都得到一个文件对象,但对一个给定的文件只有一个v节点表项。每个进程都有自己的文件对象的一个理由:这种安排使每个进程都有它自己对该文件的当前位移量。这种情况不会增加对应的打开文件引用计数,而会增加dentry的引用。

2014-07-11 16:02:10 1743

转载 Linux文件共享(一)——进程与打开文件

注:转载请注明出处,作者:lvyilong316Linux支持在不同进程间共享打开文件。为了说明文件共享,先来说明内核用于所有I/O的数据结构。 他们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。0.1和文件有关的对象(1) inode(i节点): 保存一个文件的通用信息,每个inode有一个inode number,在文件系统中,一个inode num

2014-07-11 15:58:40 676

转载 Linux编程之【内存管理】mmap(三)

Linux内存管理之mmap详解一. mmap系统调用1. mmap系统调用        mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作

2014-07-11 15:04:08 659

转载 Linux编程之【内存管理】mmap(二)

共享内存映射之mmap()函数详解   共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信

2014-07-11 14:33:19 524

转载 Linux编程之【内存管理】mmap(一)

1、特点:① 进程相关的② 与XSI共享内存一样,需要与同步原语一起使用③ 只能是有共同祖先的进程才能使用2、使用系统调用mmap()用于共享内存的两种方式:(1)使用普通文件提供的内存映射:    适用于任何进程之间。此时,需要打开或创建一个文件,然后再调用mmap()典型调用代码如下:fd=open(name, flag,

2014-07-11 11:33:20 638

原创 Linux进程调度学习笔记

1. Linux进程调度的时机   Linux进程的调度时机大致分为两种情况:一种是进程自愿调度;另一种是发生强制性调度。   首先,自愿的调度随时都可以进行。在内核空间中,进程可以通过schedule()启动一次调度;在用户空间中,可以通过系统调用pause()达到同样的目的。如果要为自愿的暂停行为加上时间限制,在内核中使用schedule_timeout(),而在用户空间则使用nano

2014-07-10 10:58:40 1282

原创 VxWorks任务调度与中断

最近在看有关任务调度和中断的文章,主要的话题或者讨论点可以归为如下几个递进的问题:(1)引发任务调度的情况、原因(2)何为抢占调度?抢占调度是否就指中断引发的调度?(3)关中断是否禁止任务调度?针对上述问题,本文简单说一下个人的理解,有不妥之处还请大家多指点。下面就以VxWorks操作系统为例,讨论任务调度和中断的关系。问题(1)引发任务调度的情况、原因首先,看

2014-07-09 15:10:33 2776

转载 Linux与VxWorks任务调度机制分析

AbStract In this paper.diferences in task scheduling mechanism between the two multi-tasks operating systems Linux and Vx。 Works are analyzed.The two are compared with aspects of task control bloc

2014-07-08 23:40:13 1052

转载 VxWorks 任务锁与中断锁

中断处理是整个运行系统中优先级最高的代码,可以抢占任何任务级代码运行。中断机制是多任务环境运行的基础,是系统实时性的保证。几乎所有的实时多任务操作系统都需要一个周期性系统时钟中断的支持,用以完成时间片调度和延时处理。VxWorks 提供tickAnnounce(),由系统时钟中断调用,周期性地触发内核。  为了快速响应中断,VxWorks的中断服务程序(ISR)运行在特定的空间。不同于一般

2014-07-08 11:52:40 4253

转载 Broadcom全系列Wi-Fi芯片概述

无线时代推出的Wi-Fi行业半导体器件简介系列文章受到了很多读者的喜爱,无线时代的管理团队特此整理各厂商的全部芯片及简介,并在后续的文章中不断完善。本文将采用高度概括的方式介绍Broadcom的全系列802.11 Wi-Fi芯片,供读者参考。Broadcom的Wi-Fi芯片成是802.11 LAN 设备供应商和笔记本电脑供应商的首选Wi-Fi 解决方案之一。Broadcom 的

2014-07-07 11:02:11 4997

原创 802.11n 技术简结

1. 浅析802.11n技术规格   802.11n当中吓人的专有名词包括像多进多出(MIMO)、空间流和空间复用这些会迅速让网络经理大脑麻木的神秘术语。在真实的802.11n无线网络环境的语境中,这些规范的真正含义是什么呢?  MIMO和空间流  一般而言(并且从过于简化的意义讲),MIMO和空间流的数字共同用来表示给定距离上的吞吐量潜力。总的来说,接收天线的数量

2014-07-04 14:34:55 2439

转载 Linux shell脚本调试技术

一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应

2014-07-03 15:51:20 782

转载 无线发射功率与增益

1.无线发射功率与增益  无线电发射机输出的射频信号,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去。电磁波到达接收地点后,由天线接收下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机。因此在无线网络的工程中,计算发射装置的发射功率与天线的辐射能力非常重要。  Tx 是发射(Transmits)的简称。无线电波的发射功率是指在给定频段范围内的能量,通常有两种衡量

2014-07-02 11:17:50 12776

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除