自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 数据库SQLite的笔记(一)

创建数据库:sqlite3 test.db         (数据库文件格式:test.db)create table test(id integer primary key,value text)id:主键值,,该列默认具有自动增长的属性;value:简单文本示意:插入操作:insert into test(id,value) values(1,'Echo')

2016-10-31 17:49:02 358

原创 线程的笔记

线程是进程的一个实体,是CPU调度和分派的基本单位是比进程更小的能独立运行的基本单位。它是程序执行的最小单位,是进程里的一个执行路径,多个线程共同拥有系统资源,但是一个线程基本不拥有系统资源,只有运行中必不可少的资源。线程包含:一个指向当前被执行指令的指令指针、一个栈、一个寄存器的集合、一个私有的数据区。线程的优点:1、开销少,进程一般是线程的30倍的开销,     2、线程通信简

2016-10-30 12:04:04 309

转载 生产者与消费者问题

出处:http://blog.csdn.net/benny_cen/article/details/3995329前面一系列练习已经把进程控制、线程、进程间通信的大概知识过了一遍,现在进入综合练习,首先练习经典问题:生产者和消费者问题1.问题概述多个生产/消费者在有界缓冲上操作。它利用N个字节的共享内存作为有界循环缓冲区,利用写一字符模拟放一个产品,利用读一字符模拟消费一个产品

2016-10-29 21:37:15 1513

原创 进程间通信方式之信号量

信号量,又称信号灯,主要用于进程间以及同一进程不同线程间的同步手段,用来解决进程间的同步与互斥问题的一种进程之间通信机制,包括一个称为信号量的变量和在该变信号量下等待资源的进程等待队列,以及对信号量进行的两个原子操作(PV操作)。其中信号量对应于某一种资源,取一个非负的整型值。信号量的值是指当前可用的资源数量,若它等于0则意味着目前没有可用的资源。信号灯与其他的进程间通信方式不太相同,因为它主

2016-10-28 16:02:31 1646

原创 进程间通信方式之信号

信号是进程间通信机制中唯一的异步通信机制,可以视为异步通知,通知接收信号的进程有哪些事件发生看,还可以传递附加信息。从软件层次上说,信号是对中断机制的一种模拟,当一个进程收到一个信号与处理器收到一个中断请求是一样的。因为信号是异步的,所以一个进程不必通过任何操作来等待信号的到来,同时进程也不知道信号什么时候到来。信号的来源分为两种:1、硬件来源:比如按下了键盘或其他硬件故障;2、软件来源:

2016-10-27 12:36:46 919

原创 进程间通信之系统V共享内存

今天讲一讲进程间通信的另一种方式:系统V共享内存。系统V共享内存是指:把所有共享数据放在共享内存区域,任何想访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面,系统V通过映射特殊文件系统shm中的文件实现进程间共享内存通信的,即每个共享内存区域对应特殊文件系统shm中的一个文件。系统V共享内存原理:进程间需要共享的数据被放在一个叫作IPC共享内

2016-10-26 22:53:23 855

原创 进程间通信方式之管道--有名管道

接上一篇的无名管道,今天总结一下进程间通信的有名管道。有名管道可以克服无名管道的一个限制,即因为没有具体的名字,它只能用于具有亲缘关系的进程间的通信。原因是有名管道提供了一个路径名与之关联,并以FIFO的文件形式存在于文件系统中。于是,即使与FIFO的创建进程不存在亲缘关系的进程,只要有可以访问该路径,FIFO就可以为它们提供通信,所以有名管道不仅可以用于有亲缘关系间的通信,也可以用于无亲缘进

2016-10-25 22:51:03 498

原创 进程间通信方式之管道--无名管道

紧接昨晚的利用消息队列进行进程间通信,今天讲讲利用管道进行进程间通信。在Linux中,管道通信是一种使用非常频繁的通信机制。管道在本质上也是一种文件,但是又有区别于一般的文件,因为管道可以克服使用文件会出现的问题。管道实际上是一个固定大小的缓冲区,该缓冲区的大小为1页,即4K字节,使得它的大小不像文件那样不加检验地增长。同时使用单个固定缓冲区会带来问题,比如在写管道时可能变满,当这种情况发

2016-10-24 22:50:49 577

原创 进程间通信方式之消息队列

消息队列进行通信的一些操作:1、使用msgget()函数创建打开队列;2、使用msgrcv()函数从队列中读数据;3、使用msgsnd()函数写数据到队列中;4、使用msgctl()函数控制消息队列。以下是消息队列中使用到的一些函数:1、msgget   功能:创建消息队列   头文件:#include    #include    #include  

2016-10-23 21:56:37 3934 1

原创 多路复用之poll函数

多路复用不关有select函数,还有poll函数poll()函数头文件:#include       #include 功能:把当前的文件指针挂到等待队列原型:intpoll(struct pollfd *fd,int numfds,int timeout)说明:fds:用于描述需要对哪些文件的哪种类型的操作进行监控,numfds:需要监听的文件个数,即第一个参数所指向

2016-10-22 07:26:01 458

原创 Linux的多路复用

多路复用,是一种机制,通过该机制可以监视多个描述符,内核一旦发现进程指定的一个或多个IO条件准备读取,就会通知该进程,就会准备好相应的I/O操作。相比较于多进程和多线程,多路复用的优势在于系统开销小,因为系统不必创建进程或线程,因而也不必维护这些进程或线程,从而大大减少了系统的开销。它适用的场合有:(1)当用户处理多个描述字时,必须使用I/O复用;(2)当一个客户同时处理多个套接口

2016-10-21 20:14:15 475

原创 Linux下的文件锁

文件锁是计算机文件程序机制,强制访问计算机文件只能由一个用户或在任何特定时间的过程。目的是:防止恶意的更新场景利用这种机制能够使读写单个文件的过程变得更安全。Linux下的两种常见的文件锁:1、协同锁:   协同锁要求参与操作的进程之间协同合作。例如进程A获得一个WRITE锁,并开始向文件中写入内容;但如果没有试图获取锁的进程B,也可以打开文件并向文件中写入内容。进程B就是一个

2016-10-20 20:52:10 600

原创 exec函数族

exec并不是一个函数,它是一个函数族,指的是一组函数,包括了六个函数,下面就来说说家族里的兄弟姐妹:1、execl()   既然是一个家族里的一员,名字的称呼有着相同性的同时,也有着区别,execl后缀的"l"就代表着"list"的含义,即参数列表。   头文件:#include    原型:int execl(const *path,const char *arg,...)

2016-10-19 14:49:26 433

原创 堆与栈的比较分析

平时都堆栈,堆栈地称呼“堆”和“栈”两个概念,还以为它们是同一个概念的,实际上是两个概念,之前我有对数据存放空间进行过基本了解,现在是针对堆和栈,进行比较分析。堆和栈都是一种数据结构,都可以数据项按序排序,都只能在一端对数据项进行插入与删除。堆:   1、堆是先进先出;   2、堆一般是由程序员分配的,生命周期也完全由使用者控制,如果程序员不释放,程序结束时可能由OS回收;   3

2016-10-18 22:03:38 359

原创 Linux里守护进程的三言两语

守护进程:在Linux操作系统中,是一种运行在后台的特殊进程,独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。因为由于在Linux中,每个系统与用户进行交流的界面称为终端,每个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离终端的目的是为了避免进程在运行的过程中的信息

2016-10-17 15:11:11 466 1

原创 fork()与vfork()的区别

fork和vfork都是用来创建进程的API函数,下面就进行比较分析:

2016-10-16 22:19:50 457

原创 内存管理的划分及内存分配方式

内存可以划分为六个部分:1)未初始化的全局变量(.bss段)   用来存放那些没有初始化和初始化为0的全局变量,bss类型的全局变量只占用运行时的内存空间,而不占用文件空间。在整个程序的运行周期内,bss数据是一直是存在的。大多数操作系统在加载程序时,会把所有的bss全局变量请0.为了保证程序的可移植性,手动把这些变量初始化为0,使其有一个确定的初始值。2)初始化的全局变量(.data

2016-10-15 20:56:35 635

原创 shell变量之环境变量

shell程序中采用变量存放字符串,但shell的变量比C语言的变量简单,没有众多存储类及类型的限制,也不需要预先定义,然后才能赋值,可以在使用时“边定义,边赋值”。shell有两种变量:环境变量和临时变量。环境变量是永久变量,其值不会随着shell脚本执行结束而消失,而临时变量是在shell程序内部定义的,其使用范围仅限于定义它的程序,出了笨程序就无法再用,因此当程序完毕后,它的值也就没有了

2016-10-14 10:46:10 3730

原创 多线程的优点及其应用

线程是系统调度和分配的单位,是轻量级进程,它共享所属进程的内存空间和资源,但不拥有资源,线程具有以下优点:    1)节省内存空间。这是因为多个线程共享进程的地址空间。    2)并发粒度小,并发程度高。线程不拥有资源,只是进程中的一个执行序列,因此一个系统中可以存在好多线程,甚至线程的数目没有限制。    3)线程之间通信方便。同一个进程的各个线程之间关系很密切,它们自动共享所属进程

2016-10-13 09:58:13 1232

原创 死锁

定义:死锁是由于系统中的进程不断推进,而形成的一种互相等待、停滞不前的状态。是两个或两个以上的进程中的每一个进程都在等待其中的另一个进程释放其资源而被阻塞,导致这些进程都无法推进,这种状态就称为死锁状态。处于死锁状态的进程就是死锁进程。原因:产生死锁的最根本的原因就是资源匮乏,不够使用。            1)同类资源分配不当可能产生死锁    2)进程推进顺序不当死锁的防

2016-10-12 10:41:30 420

原创 文件的结构及存取方法

文件的组织形式是文件的结构,从不同的角度分析文件有不同的结构形式:逻辑结构和物理结构。从用户角度出发,研究文件的抽象组织方式而定义的文件组织形式为文件的逻辑结构;从系统的角度出发,研究文件的物理组织方式而定义的文件组织形式为文件的物理结构。文件的逻辑结构独立于辅存,帮助用户分析信息之间的关系及含义;而物理结构主要关注文件信息的存储形式,帮助用户了解与存储设备相关知识。1、文件的逻辑结构

2016-10-11 12:42:22 6472 2

原创 A-D转换器以及S5PV210的相关编程

1、A-D转换的过程A-D转换包括采样、保持量化和编码4个过程。在某些特定的时刻对这种模拟信号进行测量叫做采样。由于量化噪声及接收机噪声等因素的影响,采样速率一般取fs>=2.5fmax.通常采样脉冲的宽度是很短的,故采样输出是断续的窄脉冲。要把一个采样输出信号数字化,需要将采样输出所得的瞬间模拟信号保持一段时间,这就是保持过程。量化是将连续幅度的抽样信号转换成离散时间、离散幅度的数字信号,量

2016-10-10 16:30:59 1129

原创 LCD12864串行与并行的比较分析

LCD12864的通讯方式是串行、并口可选的,那么这两种有什么区别呢?1)串行有查忙,需要加延时,否则会出现乱码;并行没有查忙,可以不用延时,但是反应慢。2)串行速度相对较慢,但是占用的I/O口少;并行相对速度快,但是占用的I/O口多,需要8+3条I/O口。3)串行CS要特殊处理一下.控制起来比较耗时占用单片机资源多,当然也有些小技巧解决,如在CS拉低以后要重新工作必须执行0x30指令

2016-10-09 09:36:52 18496 2

原创 单片机如何获得5V电源

在单片机实际设计中,有时会需要在电路中用到5V电压源,那么这个常见的实验需求有哪些办法解决呢,我综合网上的资料,概括一下:1)USB   这种方法在我们直接将单片机板与电脑连接调试的时候,算是简单又方便的办法了,但如果我所要得到的成品不直接连接外部的器件,这就得舍弃。    常用的,USB/5V插头线,这是一种专门的电源线,一端是USB通用接口,可以直插USB端口,另一端是内正外负电压

2016-10-08 12:47:23 33549

原创 Linux进程的三态及其之间的相互转换

Linux进程在运行中不断改变其运行状态,而运行的进程有三个基本状态。1、就绪状态:当进程已分配到除CPU以外所有必要的资源,只要获得处理器便可立即执行。2、执行状态:当进程已获得处理器,其程序正在处理器上执行。3、阻塞状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态,而引起进程阻塞的事件可能有很多种,如等待I/O完成,申请缓冲区不能满足、等待信号等。

2016-10-07 21:13:26 2599

原创 Linux进程间通信方式

Linux下进程间通信有以下几种方式:1)管道(Pipe)和有名管道(FIFO)    管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,除了具有管道所具有的功能外,还允许无亲缘关系进程间的通信。2)信号(signal)    用于通知接收进程有某种事件发生,除了用于进程间通信,还可以发送信号给进程本身。信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式

2016-10-06 12:52:10 472

原创 Linux的/usr目录结构和/var目录结构

紧接上一篇博客所讲述的Linux系统下的根文件系统,我们今天学习一下该根目录下/usr目录结构和/var目录结构。1、/usr目录系统:/usr/bin:多数日常应用程序存放在该目录中。如果/usr被放在单独的分区中,Linux的单用户模式不能访问/usr/bin,所以对系统至关重要的程序不应该放在此文件夹中。/usr/include:存放C/C++头文件的目录。/usr/lib:

2016-10-05 12:47:29 4617

原创 Linux的根文件系统

我们平时接触的Windows,将磁盘看作C盘、D盘几个独立的分区,但Linux则不一样,它将整个文件看作一个树形,该树的树根叫作根文件系统,用“/”表示,各个分区通过挂载以文件夹的形式访问。以下即为根文件系统:1)/bin:存放了供所有用户使用的完成基本维护任务的命令,bin表示二进制文件,通常为可执行文件。一些常用的系统命令,如cp、ls等都保存在该目录下。2)/boot:存放的是启

2016-10-04 00:31:13 425

原创 Linux下的僵尸进程及避免方法

僵尸进程就是已经结束了的却还没从进程表中删除的进程。毋庸置疑,僵尸进程过多会导致进程表里面条目满了,从而导致系统奔溃,并不占用系统资源。僵尸进程很特殊,因为在进程的状态中,它放弃了几乎所有内存空间,没有任何可执行代码,也不可以被调度,只在进程列表里中保留一个位置,记载该进程的退出状态等信息,以便其他进程收集。     产生的原因:每个Linux进程在进程表里都有一个进入点,核心程序执行该进

2016-10-03 11:03:44 526

原创 带缓冲的I/O操作

标准I/O库提供缓冲,从而尽可能地减少使用read和write调用的次数,对每一个I/O流自动地进行缓冲管理,避免应用程序需要考虑这一点所带来的麻烦。以下是标准I/O所提供的三种类型的缓冲:1)全缓冲只有在填满标准I/O缓冲区后才进行实际I/O操作。对于驻留在磁盘上的文件,通常是由标准I/O库实施全缓冲的。一个流上执行第一次I/O操作时,相关标准I/O函数通常调用malloc获得需要使

2016-10-02 23:42:31 512

原创 C语言参数传递

函数在调用时把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的是实际参数。在函数调用之前,实际参数的值将被复制到这些形参中。C语言在参数调用时,实参和形参之间的数据都是单向的“值传递”方式。C语言要求函数的实参有确定的值,在函数调用时给形参分配相应的内存单元,同时实参的“值”赋(复制)给形参,实现数据从实参到形参的传递。因为是复制,所以在操作形参过程中不会影响

2016-10-01 23:33:36 989

空空如也

空空如也

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

TA关注的人

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