
Linux
Byte1990
这个作者很懒,什么都没留下…
展开
-
Linux内核中的红黑树
红黑树是一种在插入或删除结点时都需要维持平衡的二叉查找树,并且每个结点都具有颜色属性: (1)、一个结点要么是红色的,要么是黑色的。 (2)、根结点是黑色的。 (3)、如果一个结点是红色的,那么它的子结点必须是黑色的,也就是说在沿着从根结点出发的任何路径上都不会出现两个连续的红色结点。 (4)、从一个结点到一个NULL指针的每条路径上必须包含相同数目的黑色结原创 2014-07-12 12:44:12 · 1211 阅读 · 0 评论 -
线程池学习
线程池的基本原理:在传统服务器中,常有一个总监听进程监听有无新的用户连接服务器,每当有一个新的用户接入,服务器就开启一个新的线程用户处理这个用户的数据包,这个线程只服务于这个用户,当用户与服务器端关闭连接以后,服务器端销毁这个线程。然而,频繁的开启与关闭服务进程极大的占用系统资源,而且在大量用户情况下,系统为了开辟和销毁线程浪费大量时间和资源,线程池提供一个解决外部大量用户与服务器有限资源矛盾原创 2014-06-19 22:22:50 · 709 阅读 · 0 评论 -
线程学习2
条件变量:前面讲述了如何使用互斥锁实现线程间数据的共享和通信,互斥锁有个明显的缺点就是只有非锁定和锁定两种状态。而条件变量通过允许线程阻塞和另一线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开互斥锁并等待条件的变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程,这些线程将重原创 2014-06-17 21:45:53 · 685 阅读 · 0 评论 -
Ubuntu boa环境搭建
Ubuntu boa环境搭建1:到http://www.boa.org/下载源码,boa的版本是0.94.133: tar –jxvf boa-0.94.13.tar.gz cdbia-0.94.13/src 把compat.h 120行和126行的foo##->tm_gmto改为foo->tm_gmtoff./configureMakecp boa /bin/原创 2014-05-21 21:40:35 · 850 阅读 · 0 评论 -
线程学习1
一:进程是系统资源分配的基本单位,线程是程序独立运行的基本单位,多线程之间可以共享资源,多线程之间线程的切换花费的代价较低。在Linux系统下启动一个新的进程必须分配给他独立的地址空间,建立众多的数据表维护它的代码段、堆栈段和数据段,这是一个“昂贵”的多任务工作方式。而运行于一个进程中的多线程,它们彼此之间使用相同的地址空间,共享大部分数据段,启动一个进程花费的空间远远大于一个线程,据统计,总原创 2014-06-17 21:44:09 · 705 阅读 · 0 评论 -
嵌入式CGI开发
CGI开发:CGI处理步骤1、通过Internet把用户的请求送往服务器;2、服务器接受请求并交由CGI处理;3、CGI把处理结果送回服务器;4、服务器将结构传回给用户。从浏览器发给服务器有两种方法(Method属性):get和post。get方法是把数据打包放在环境变量QUERY_STRING中作为url整体的一部分传递给服务器。post做很多类型get的事情,但它分离传递数据给脚本,程序通原创 2014-05-21 21:57:06 · 1207 阅读 · 0 评论 -
epoll学习(二)
当一个进程调用epoll_create时,内核会创建一个struct eventpoll。这个结构体有两个成员与epoll的使用方式密切相关。 struct eventpoll { ........ /* List of ready file descriptors */ //双向链表rdllist保存着通过epoll_wait返回给用户的、满足条件的事件 struct原创 2014-06-13 22:08:34 · 790 阅读 · 0 评论 -
epoll学习(一)
Epoll是当前Linux下开发大规模并发程序设计的热门选择,Epoll在Linux2.6内核引入,和select相似,其实都是I/O多路复用技术。select , poll 模型:1:最大并发数限制,因为一个进程打开文件描述符是有限制的,由FD_SETSIZE限制。2:效率问题,select每次调用都会线性扫描全部的文件描述符集合,这样效率就会线性下降。3:内核/用户空间内存拷贝原创 2014-06-13 22:02:36 · 1027 阅读 · 0 评论 -
进程间通信----共享内存
共享内存允许两个或更多进程共享一块给定的存储区,因为数据不需要在不同进程之间访问,这是最快的一种IPC,传输信息量很大,通过内存空间映射进程空间实现,若服务器进程正在将数据放入共享存储区,则在它做完这一操作之前,客户进程不应取这些数据,通常信号量用来实现对共享存储访问的同步。内核为每个共享存储段设置了一个shmid_ds结构。struct shmid_ds {struct ipc_pe原创 2014-06-11 21:47:39 · 954 阅读 · 0 评论 -
进程间通信--信号量
消息队列就是一个消息链表。每个消息队列头用struct mag_queue描述,包含消息队列key,用户ID,组ID,消息队列中的消息数目等等。struct msqid_ds { //消息队列描述符struct ipc_perm msg_perm;。。。。。。unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */原创 2014-06-11 21:44:24 · 807 阅读 · 0 评论 -
进程间通信-消息队列
消息队列就是一个消息链表。每个消息队列头用struct mag_queue描述,包含消息队列key,用户ID,组ID,消息队列中的消息数目等等。struct msqid_ds { //消息队列描述符struct ipc_perm msg_perm;。。。。。。unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */原创 2014-06-10 21:41:46 · 909 阅读 · 0 评论 -
守护进程
守护进程(daemon)是生存期较长的一种进程,在系统开启时启动,关闭时才终止,没有控制终端在后台运行。守护进程结构:依赖操作系统实现,以超级用户特权运行,无控制终端,无命令行,大多数守护进程的父进程是init进程。常见的守护进程:init:负责启动各运行层次特定的系统任务。kswapd:页面调出守护进程,通过脏页面以低速写到磁盘上从而使这些页面在需要时可回收使用。bdfl原创 2014-06-21 21:30:20 · 1105 阅读 · 0 评论