
Linux学习
文章平均质量分 77
nellson
这个作者很懒,什么都没留下…
展开
-
UNIX环境高级编程学习笔记(写在前面)
首先感谢Richard Stevens为我们写了这么经典的一本书,也要感谢 Stephen 再版能使经典流传至今,我和所有的开源的爱好者与支好者才可以看到这么经典的一本书,后面我会不断地把我的学习心得与体会记录下来,方便自己的查阅也同时和众多网友有一个交流、讨论的平台。 我安装过几个版本的操作系统 Red Hat, FC, Ubuntu, Solairs,带给我最在体验感受的是F原创 2007-07-02 15:37:00 · 1153 阅读 · 0 评论 -
Ubuntu系统,搭建mysql+sphinx环建
本文介绍下如何在ubuntu系统中,利用apt工具,搭建mysql+sphinx的全文检索环境。一 安装mysql切换到root帐户,或者执行sudo apt-get install mysql-server mysql-client,安装mysql。启动mysql service,执行sudo service mysql restart安装支持apache的m原创 2016-07-23 14:45:54 · 1274 阅读 · 0 评论 -
信号基本原理
Linux是一种多用户多任务的操作系统,系统内会有多个进程存在。无论是操作系统与用户进程之间,还是用户进程之间,经常需要共享数据和交换信息。进程间相互通信的方法有多种,信号便是其中最为简单的一种,它用以指出某事件的发生。在Linux系统中,根据具体的的软硬件情况,内核程序会发出不同的信号来通知进程某个事件的发生。对于信号的发送,尽管可以由某些用户进程发出,但是大多数情况下,都是由内核程序在遇到以下几种特定情况的时候向进程发送的,例如: 1. 系统测出一个可能出现的硬件故障,如电源故障。 2. 程序出现异常行转载 2011-01-11 10:56:00 · 1176 阅读 · 0 评论 -
发一个多CPU中进程与CPU绑定的例子
<br />现在多CPU的趋势越来越大了. 有时候为了更好地操作机器, 需要将某个进程绑定到具体的CPU上去. 下面给出了一个进程绑定到具体的CPU上去的一个例子. <br /> <br />#include<stdlib.h>#include<stdio.h>#include<sys/types.h>#include<sys/sysinfo.h>#include<unistd.h>#define __USE_GNU#include<sched.h>#include<ctyp转载 2011-01-09 15:40:00 · 3330 阅读 · 0 评论 -
Epoll的实现
原文地址: http://github.com/lijie/kernel-doc/raw/master/comment/eventpoll.c/* * fs/eventpoll.c (Efficient event retrieval implementation) * Copyright (C) 2001,...,2009 Davide Libenzi * * This program is free software; you can redistribute it an转载 2010-08-10 09:16:00 · 2968 阅读 · 1 评论 -
UNIX编程艺术之“多道程序设计”
<br /> 多道程序设计的主旨是“只做一件事并且做好”,这个主旨自始至终贯穿本章,文中举了管道、more命令,来说明,unix命令功能的单一性以及进程间如何进行通信。<br /> 其中关于线程的讨论,很具有指导意义。工作中也常碰到进程与线程之争,线程的支持者主要是站在性能的角度进行考虑,认为线程创建与销毁成本较进程要小,同时线程间通信只操作共享的数据,开销也更低。但本章也明确指出,与性能的提升相比,清晰的结构、分离的运行空间以及系统的复杂度更为重要。并且得出结论,“尽量避免使用线程”。<br原创 2010-08-01 23:30:00 · 810 阅读 · 0 评论 -
UNIX编程艺术之“模块性”
本章主要讨论模块划分、接口设计,提出了几个很重要的概念,包括紧凑性、正交性、自顶向下和自底向上的封装、SPOT原则、分层、插件化。下面就这几个概念,谈下我的理解的思考,并在最后给出项目中模块设计的基本原则。 1. 紧凑性 紧凑性最优化的体现是,使用者无需手册和文档,即可放心的使用,而不用担心额外的影响,这便要求接口简洁、清晰,模块功能集中无冗余,体现了接口设计中“高内聚”的思想。 2.正交性 正交性关注的主要是功能单一,不做“顺带”的事情,对调用者而言接口统一,这样,即使代原创 2010-07-25 17:05:00 · 924 阅读 · 0 评论 -
UNIX编程艺术之“文本化”
本章的标题表达了作者的主旨:Good Protocols Make Good Practice。的确,好的协议或文件格式,会大大提升使用者的效率。这里的文本化,包括两类,一是通信协议,二是数据文件,包括配置文件,日志文件等。下面分别讨论这两种数据的格式。 1.数据文件 UNIX对于文件处理通常基于流和行处理,因此,文本化方便阅读与编辑,以及扩展 2. 通信协议 下面,我总结下我在项目中常用的协议和文本格式。 1. 协议 现在的项目分为三层,前台-WEBServer原创 2010-07-27 07:56:00 · 1120 阅读 · 0 评论 -
服务器模型小结(未完成)
1. 单进程同步IO(迭代服务器) server每次accept一个请求,收包,完成业务处理逻辑后回包,完成整个请求的处理后,才能继续接入下一个请求。这种server模式仅适用于业务处理 2. 父进程+动态创建子进程 父进程accpet连接,有新连接到来时fork一个进程,然后继续accept,等待新的连接。业务逻辑由子进程处理,处理完后子进程exit,每个子进程只处理原创 2010-05-25 00:16:00 · 1257 阅读 · 0 评论 -
无锁(lock-free)数据结构
<br />提到并行计算通常都会想到加锁,事实却并非如此,大多数并发是不需要加锁的。比如在不同电脑上运行的代码编辑器,两者并发运行不需要加锁。在一台电脑上同时运行的媒体播放放器和代码编辑器,两者并发运行不需要加锁(当然系统调用和进程调度是要加锁的)。在同一个进程中运行多个线程,如果各自处理独立的事情也不需要加锁(当然系统调用、进程调度和内存分配是要加锁的)。在以上这些情况里,各个并发实体之间没有共享数据,所以虽然并发运行但不需要加锁。<br />多线程并发运行时,虽然有共享数据,如果所有线程只是读取共享数据转载 2010-07-01 20:43:00 · 1353 阅读 · 0 评论 -
Linux多线程编程
线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个线程。它线程在进程内部共享地址空间、打开的文件描述符等资源。同时线程也有其私有的数据信息,包括:线程号、寄存器(程序计数器和堆栈指针)、堆栈、信号掩码、优先级、线程私有存储空间。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的转载 2010-05-01 08:36:00 · 967 阅读 · 1 评论 -
UNIX共享内存总结
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。因此,采用共原创 2010-03-20 08:53:00 · 13092 阅读 · 2 评论 -
Linux内核中的双循环链表
Linux内核中的双循环链表2006-11-27 19:14双循环链表传统实现在传统的双循环链表实现中,如果创建某种数据结构的双循环链表,通常采用的办法是在这个数据结构的类型定义中加入两个(指向该类型对象的)指针next和prev。例如:typedef struct foo { … struct foo *prev; struct foo *next;转载 2010-03-13 21:31:00 · 1347 阅读 · 0 评论 -
【C协程】ucontext入解
In a System V-like environment, one has the type ucontext_t defined in and the four functions get-context(2), setcontext(2), makecontext() and swapcontext() that allow user-level context switching原创 2016-11-24 15:32:29 · 1960 阅读 · 0 评论