- 博客(30)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
转载 linux线程实现机制(上)
学习了linux线程编程,有必要深入学习线程的内部机制与实现。在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. 为了让进程完成一定的工作, 进程必须至少包含一个线程. 如图1.进程所维护的是程序所包含的资源(静态资源), 如: 地址空间, 打开的文件句柄集, 文件系统状态
2017-06-30 11:18:46
4174
1
转载 linux线程实现机制(下)
按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果进程运行在SMP机器上,它就可以
2017-06-30 11:18:27
1082
转载 Linux编程之自定义消息队列
我这里要讲的并不是IPC中的消息队列,我要讲的是在进程内部实现自定义的消息队列,让各个线程的消息来推动整个进程的运动。进程间的消息队列用于进程与进程之间的通信,而我将要实现的进程内的消息队列是用于有序妥当处理来自于各个线程请求,避免一窝蜂的请求而导致消息的异常丢失。想想socket编程里的listen函数吧,里面要设置一个队列长度的参数,其实来自网络的请求已经排成一个请求队列了,只是这个队列是系统
2017-06-30 11:18:17
860
转载 wireless tools工具的移植和使用
前言:本文主要讲解了wirless tools的概念和如何移植wireless tools,以及如何使用wireless tools中的工具设置无线网络。一.wireless tools概念 Wireles stools用来设置支持LinuxWireless Extension的无线设备。Wireles stools for Linux 和Linux Wireless Ext
2017-06-30 02:34:57
3846
转载 linux中的热插拔和mdev机制
mdev是busybox自带的一个简化版的udev, 作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的。 mdev扫描/sys/class和/sys/block中所有的类设备目录,如果在目录中含有名为"dev"的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创
2017-06-30 02:13:21
869
转载 Linux字符设备驱动程序编写基本流程
驱动程序编写基本流程: 1.首先是一些版本信息,没什么用,但是不能少 #define __NO_VERSION__ #include #include char kernel_version[] = UTS_RELEASE; 2.为了把系统调用和驱动程序关联起来,需要一个非常关键的数据结构:struct file_opera
2017-06-30 01:57:27
1850
转载 进程同步无竞争状态读写
摘要: Linux作为一个开源、稳健的操作系统,支持多种平台,拥有丰富的开发工具和应用软件,尤其其内核可裁减的特性,非常适合嵌入式系统。在数据实时性、准确度要求很高的情况下,系统在对数据的采集和处理过程中,由于其进程协调性问题,往往会造成数据的丢失。利用经典进程同步模型,可解决嵌入式Linux系统中数据同步读写冲突的问题。 引 言 在对实时采集更新的数据进行处理时,
2017-06-30 01:47:26
1222
转载 linux进程调度分析(下)
1 前言 处理机(CPU)是整个计算机系统的核心资源,在多进程的操作系统中,进程数往往多于处理机数,这将导致各进程互相争夺处理机。进程调度对系统功能的实现 及各方面的性能都有着决定性的影响,其实质就是把处理机公平、合理、高效地分配给各个进程。调度是实现多任务并发执行的必要手段,不同的操作系统有着不同 的调度目标。在传统的Unix类分时系统中,保证多个进程公平地使用系统资源,提供较好的响应
2017-06-30 01:46:08
1177
转载 内核线程和进程的区别
从内核的角度来说,它并没有线程这个概念。Linux把所有线程都当做进程来实现。内核并没有准备特别的调度算法或者定义特别的数据结构来表示线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一属于自己的task_struct,所以在内核中,它看起来就像是一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间)一.内核线程1.内核经常需要在后台执行一些操作。
2017-06-30 01:42:23
1831
转载 Linux USB鼠标驱动程序详解
USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。USB 设备驱动程序(usb device driver)和 USB 驱动程序(u
2017-06-29 00:21:32
1351
转载 基于V4L2的视频驱动开发
前面写过两篇介绍v4l2的文章,并写了一个通过v4l2打开usb摄像头拍摄照片的例子。接下来介绍如何利用v4l2进行视频录制,并且操作的ov9655摄像头(SPI接口)编写基于V4L2视频驱动主要涉及到以下几个知识点:1> 摄像头方面的知识 要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。2> Camera解码器、控制器 如果摄像头是
2017-06-29 00:21:23
1446
转载 5.2输入/输出控制方式
设备管理的主要任务之一是控制设备和内存或处理机之间的数据传送,外围设备和内存之间的输入/输出控制方式有四种,下面分别介绍。程序直接控制方式如图5-1(a)所示,计算机从外部设备读取数据到存储器,每次读一个字的数据。对读入的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。在程序直接控制方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大
2017-06-28 19:08:19
2103
转载 5.1.I/O设备及其分类
I/O设备管理是操作系统设计中最凌乱也最具挑战性的部分。由于它包含了很多领域的不同设备以及与设备相关的应用程序,因此很难有一个通用且一致的设计方案。所以在理解设备管理之前,应该先了解具体的I/O设备类型。计算机系统中的I/O设备按使用特性可分为以下类型:1) 人机交互类外部设备:用于同计算机用户之间交互的设备,如打印机、显示器、鼠标、键盘等。这类设备数据交换速度相对较慢,通常是以字
2017-06-28 18:43:08
3838
转载 什么是系统调用
所谓系统调用就是用户在程序中调用操作系统所提供的一些子功能,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/0传输以及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。通常,一个操作系统提供的系统调用命令有几十乃至上百条之多。这些系统调用按功能大致可分为如下几类:......
2017-06-28 18:37:51
9501
转载 linux的多任务编程-线程池
简介在嵌入式系统环境下,由于系统资源和任务的特点,多线程成了实现多任务处理的重要方式.在一些常见的应用环境中,如Web服务器,Email服务器以及数据库服务器等都具有一个共同点:单位时间内必须处理很多并发的连接请求,但处理时间却相对较短.传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务.任务执行完毕后,线程退出,这就是是"即时创建,即时销毁"
2017-06-27 00:55:39
1231
转载 Linux send与recv函数详解
Linux send与recv函数详解1.简介[plain] view plain copy print?#include ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags); ssize_t send(int sockfd, const void
2017-06-27 00:19:51
1172
转载 面向报文(UDP)和面向字节流(TCP)的区别
面向报文(UDP)和面向字节流(TCP)的区别面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。面
2017-06-27 00:17:14
1410
转载 rtmp协议数据包分析(2)
此前已经分析过报头,接下类分析数据部分。Rtmp包默认的最大长度为128字节,(或通过chunksize改变rtmp包最大长度), 当AMF数据超过128Byte的时候就可能有多个rtmp包组成,如果需要解码的rtmp包太长则被TCP协议分割成多个TCP包.那么解码的时候需要先将包含rtmp包的tcp封包合并, 再把合并的数据解码,解码后可得到amf格式的数据,将这些AMF数据取出来就可以对A
2017-06-27 00:13:01
1354
转载 RTMP流媒体技术零基础学习方法
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。一、背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了
2017-06-26 19:46:21
1111
原创 ffmpeg命令行工具的使用
执行ffmpeg会先显示它的版本,编译时间和编译器,以及配置情况-h显示帮助-format显示可用的格式-devices显示可用的设备-codecs显示可用的编码-decoders显示可用的解码器-encoders显示可用的编码器-bsfs显示可用的位流处理器-protocol显示可用的协议-filter显示可用的过滤器-pix_format显示可用
2017-06-26 19:27:49
3464
转载 RTMP协议
RTMP协议 RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时间戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录了时间戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推 。包体最大长度默认为128字节,通过chunkSiz
2017-06-26 17:59:10
777
转载 RTMP详解
=====================================================RTMPdump(libRTMP) 源代码分析系列文章:RTMPdump 源代码分析 1: main()函数RTMPDump (libRTMP) 源代码分析2:解析RTMP地址——RTMP_ParseURL()RTMPdump (libRTMP) 源代码分析3:
2017-06-26 16:23:13
762
转载 Win7下,nginx默认80端口被system占用,造成nginx启动报错
在win7 32位旗舰版下,启动1.0.8版本nginx,显示如下错误:[plain] view plain copy2012/04/02 13:55:59 [emerg] 7864#2376: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in
2017-06-26 12:48:24
1043
转载 windows下搭建基于nginx的rtmp服务器
Windows机器配置:Windows7旗舰版 64位Intel(R) Core(TM)i5-2520 CPU @2.50GHz 2.50 GHz内存: 4GB1. 下载 nginx 1.7.11.3 Gryphon下载链接: http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip下载完成后解压;将
2017-06-26 12:40:25
1820
1
原创 PID算法详解(2)---PID参数整定
简易工程法整定PID参数——归一参数整定法 除了上面讲的一般的扩充临界比例度法而外,Roberts P.D在1974年提出一种简化扩充临界比例度整定法。由于该方法只需整定一个参数即可,故称其归一参数整定法。 已知增量型PID控制的公式为: 如令T=0.1Tk; TI=0.5Tk; TD=0.125Tk。式中Tk...
2017-06-15 23:56:38
13861
1
转载 can总线延时理论分析
根据CAN控制网络数据流的方向可以看出,CAN网络的报文信息延时由以下三部份组成。 1、帧延时Tdf : 由信息串行化导致的延时;帧延时即报文信息的传输延时,由帧长度和总线的传输速率决定。 帧长度:由数据场、识别符、填充位的个数共同决定。传输速率:传输速率由波特率度量,CAN通讯时:一般传输距离为40~10000M,速率5~1Mbit/...
2017-06-11 01:50:05
13855
转载 can总线实时通信调度技术
下面的讨论主要针对主从式。原始的办法是采用轮询方式,无法保证系统的确定的时态特性,对通信的滞后无法预测和控制。因此要采取恰当的调度策略。1。通信数据的实时性 通信是用来节点之间交换数据,这些数据(1)实时数据:包括周期实时数据和非周期性实时数据 (2)非实时数据数据的实时性是以数据的截止期来表示的,所谓实时通信既是满足任务截止期的通信,工业控制系统的数据截止期满足采样周...
2017-06-11 01:08:44
4861
3
转载 循环冗余校验(CRC)算法
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导前言CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式。其实,在网上有一篇介绍C
2017-06-08 21:17:30
4922
原创 数字滤波的定义和常用方法
通过一定的计算或者判断程序对采样信号进行平滑加工,减少干扰在有用信号中的比例,通常称之为数字滤波 2.2常用的滤波方法1.算数平均值滤波 对某一被测参数在第 k个采样时刻连续采样 n次得到 n个采样数据xki ( i=1,2,…,n ),计算这n个数据的算数平均值作为本次滤波器的输出yk。 式中 yk 是第 k 次滤波器的输出;xki
2017-06-05 15:39:21
14622
转载 模糊控制的应用实例
首先来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。按照日常操作经验,有以下规则:1、 若当前水位高于目标水位,则向外排水,差值越大,排水越快;2、 若当前水位低于目标水位,则向内注水,差值越大,注水越快;3、 若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。 下面来设计一个模糊控制器
2017-06-04 16:19:17
36211
2
有初学C++ C linux 嵌入式的吗,这里集合,有大量系统学习的博客教程
2021-04-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅