08 2013 档案
摘要:初识linux输入子系统 linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler)、输入子系统核心层(InputCore)和输入子系统设备驱动层。设备驱动层:主要实现对硬件设备的读写访问,中断设置,并把硬件产生的事件转换为核心层定义的规范提交给事件处理层。核心层:为设备驱动层提供了规范和接口。设备驱动层只要关心如何驱动硬件并获得硬件数据(例如按下的按键数据),然后调用核心层提供的接口,核心层会自动把数据提交给事件处理层。事件处理层:则是用户编程的接口(设备节点),并处理驱动层提交的数据处理。input输入子.
阅读全文
摘要:系统说明 前段时间做的一个智能点餐系统,从0开始,用时3天,其中调bug(内存拷贝)调了一天,囧,现记一些架构文档 这个系统涉及到的知识点还是挺多的典型的c/s模式,socket通信多线程操作数据库操作临界资源的互斥操作 其它的就是功能架构上的一些细节问题,具体问题具体分析,分析过程已经全部留...
阅读全文
摘要:协议 在计算机网络中通信各方面所达成的、共同遵守和执行的一系列约定计算机网络的体系结构 计算机网络的层次结构和各层协议的集合。 OSI分层原则 根据不同层次的抽象分层 每层应该实现一个定义明确的功能 每层的选择应当有助于制定网络协议的国际标准 每层的边界的选择因该尽量减少...
阅读全文
摘要:条件变量 条件变量用来阻塞线程等待某个事件的发生,并且当等待的事件发生时,阻塞线程会被通知。 互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。 而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。 使用时,条件变量被用来阻塞一个线程,当条件不...
阅读全文
摘要:互斥锁 互斥锁用来保证同一时间内只有一个线程在执行某段代码(临界区)。多线程编程最容易出问题的地方,就是临界区的界定和访问控制。 下面是一个生产者,消费者的简单例子。生产者、消费者公用一个缓冲区,这里假定缓冲区只能存放一条消息。生产者,消费者互斥 1 //生产者,消费者问题 2 //生产者、消费...
阅读全文
摘要:多线程优点 使用线程的理由之一: 和进程相比,它是一种“节俭”的多任务操作方式。在linux系统下,启动一个新的进程必须分配给他独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种“昂贵的”多任务工作方式。运行于一个进程中的多个线程,他们之间使用相同的地址空间,而且线程间彼...
阅读全文
摘要:共享内存 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一 个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。应用 共享内存的使用,主要...
阅读全文
摘要:信号量 信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源。 进程可以根据它判断是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。 当进程A要获取临界资源S时,首先要获取临界资源的信号量M,M的初始值为1,当获取到M并发现M的值大于1时,可以反问临界资源M...
阅读全文
摘要:发展 unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(报文队列)则克服了这些缺点。定义 消息队列就是一个消息的链表。可以把消息看做一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列...
阅读全文
摘要:什么是管道 管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。管道的分类 管道包括无名管道和命名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。无...
阅读全文
摘要:信号方式(中断)信号的基本概念 每个信号都对应一个正整数常量(称为signal number,即信号编号。定义在系统头文件中),代表同一用户的诸进程之间传送事先约定的信息的类型,用于通知某进程发生了某异常事件。每个进程在运行时,都要通过信号机制来检查是否有信号到达。若有,便中断正在执行的程序,转向...
阅读全文
摘要:进程创建-->进程表 系统用一个叫做“进程表”的东西来维护系统中的进程,进程表中的一个条目维护着存储着一个进程的相关信息,比如进程号,进程状态,寄存器值等等... 当分配给进程A的“时间片”使用完时,CPU会进行上下文切换以便运行其他进程,比如进程B,这里所谓的“上下文切换”,主要就是在操作那个...
阅读全文
摘要:项目要求 1.已经给出链表定义(本系统用双链表实现更为方便,但是由于要求用单链表,所以按照规定做事) 2.信息录入(当然是添加航班与取消航班了) 3.按照起飞时间先后顺序排列(可以在插入时即顺序插入,但为了体现排序过程,封装成了排序函数) 4.可根据不同关键字进行查询(实现了三种具有代表性的...
阅读全文
摘要:fwrite实现文件复制 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 #include 7 #include 8 #include 9 10 #define BUFSIZE 10011 12 int main(int argc, char * argv[])13 {14 FILE *read_fp,*write_fp;15 char buf[BUFSIZE];16 17 if(3 != argc)18 ...
阅读全文
摘要:头文件 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 #ifndef _MYINCLUDE_H 7 #define _MYINCLUDE_H ...
阅读全文
摘要:顺序哈希表头文件 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 #ifndef __HASHSQ_H 7 #define __HASHSQ_H...
阅读全文
摘要:二叉树头文件 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 #ifndef __BINTREE_H 7 #define __BINTREE_H...
阅读全文
摘要:单向链表头文件 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 #ifndef _LINKLIST_H 7 #define _LINKLIST_...
阅读全文
摘要:顺序队列头文件 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 #ifndef __SQUEUE_H 7 #define __SQUEUE_H ...
阅读全文
摘要:顺序栈头文件 1 //@ author 成鹏致远 2 //@ net http://infodown.tap.cn 3 //@ qq 552158509 4 //@ blog lcw.cnblogs.com 5 6 //顺序栈 7 8 #ifndef __SQSTACK_H 9 #define ...
阅读全文