![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unix/Linux
文章平均质量分 74
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
linux下使用sed 命令来删除指定行
“p” command prints the buffer (remember to use -n option with “p”)“d” command is just opposite, its for deletion. ‘d’ will delete the pattern space buffer and immediately starts the next cycle.S原创 2013-05-17 17:45:42 · 41268 阅读 · 1 评论 -
Linux下autoconf和automake使用
转自:http://hi.baidu.com/liuyanqiong/blog/item/0a6f0ad9d28e1d3d32fa1c7b.html 作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将转载 2014-06-06 19:50:23 · 423 阅读 · 0 评论 -
Linux启动内存分配器
Linux启动内存分配器是在伙伴系统、slab机制实现之前,为满足内核中内存的分配而建立的。本身的机制比较简单,使用位图来进行标志分配和释放。一、数据结构介绍1,保留区间因为在建立启动内存分配器的时候,会涉及保留内存。也就是说,之前保留给页表、分配器本身(用于映射的位图)、io等得内存在分配器建立后,当用它来分配内存空间时,保留出来的那些部分就不能再分配了。linux中对保转载 2014-07-20 17:24:53 · 559 阅读 · 0 评论 -
Linux 2.6 内核阅读笔记 进程
2014年7月22日 进程管理每个进程原创 2014-07-22 17:30:36 · 593 阅读 · 0 评论 -
Linux 2.6 内核阅读笔记 中断和异常
2014年7月24日 中断门、陷阱门及中断门中断是可以禁止的,可以通过告诉PIC停止对某个中断的发布。被禁止的中断是不会丢失的,在解除禁止后又会发送到CPU上。禁止中断和屏蔽(mask)中断的不同之处是屏蔽是忽略掉某个中断,而禁止相当于延迟发送。Intel提供了三种类型的中断描述符:任务门、中断门及陷阱门描述。linux使用与inten稍有不同的细分分类和术语,把他们进行如下分类:原创 2014-07-24 22:52:47 · 749 阅读 · 0 评论 -
例解 autoconf 和 automake 生成 Makefile 文件
引子无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。但是如果通过转载 2014-06-17 20:32:21 · 521 阅读 · 0 评论 -
Linux 2.6 内核阅读笔记 内核同步
2014年7月26日 内核抢占和内核控制路径的设计内核抢占的一种定义:如果进程正在内核态执行内核函数时,允许发生内核切换(就是被替换的进程是内核函数所在进程),这个内核就是抢占的。linux内核提供了内核抢占的开启和关闭功能,在current_thread_info的preempt_count字段大于0时,内核就是不能抢占的。可以通过preempt_disable和preempt_原创 2014-07-26 22:49:12 · 710 阅读 · 0 评论 -
Linux 2.6 内核阅读笔记 信号
2014年8月3日 信号处理程序调用过程当一个进程接收到一个信号时,需要暂停进程执行转去执行专门的信号处理函数(如果定义了这个信号的专门处理函数的话),然后再继续执行进程代码。所有的信号处理都是通过内核函数do_signal进行的,do_signal如果发现需要处理的信号,并且这个信号有专门的处理函数,就需要调用这个用户态的函数,这是通过handle_signal来处理的。执行信号处理函数原创 2014-08-03 18:33:37 · 983 阅读 · 0 评论 -
epoll不能用于monitor regular file
昨天看到TLPI书上的这个结论时,有些奇怪,为啥epoll不能作用于regular file呢?之前用select和poll的时候也没有这条限制啊。今天来了经过google学习,终于大概搞懂了。其实select和poll也是“不支持”对regular file进行监控的,只不过它们被设计为可以接受regular file的fd,只是默认对任何event都全部返回True。epoll在设计的时候,考转载 2014-06-21 15:37:25 · 1718 阅读 · 0 评论 -
设计实现OJ平台的遇到的一些问题和解决方法
需求毕业设计,实现一个能够自动编译、运行、监测程序运行使用资源、恶意系统调用的监控的一个OJ平台。 在设计实现的过程中的想法、碰到的问题、求解的过程以及解放方法,在这里记录下来。基础结构OJ主要由前端系统(WEB)和后端的判题程序构成,想法是后端的裁判程序做通用点,减少和前端系统的耦合,所以把后端给分离出来成一个独立的程序,大概的结构图是这样的。 解释下: 1. 前端其实可以由任何流行的原创 2015-05-04 20:40:51 · 5430 阅读 · 1 评论 -
各个编译器预定义的表示编译器类型和版本号的宏
Most compilers defines macros to indicate the compiler and its version. These are useful to avoid bugs in certain compiler versions, or to check for the existance of certain features.Table of Cont转载 2014-06-06 17:30:15 · 2609 阅读 · 0 评论 -
深入理解Linux内存映射机制
一. 绪 论 二. X86的硬件寻址方法 三. 内核对页表的设置 四. 实例分析映射机制 一. 绪 论 我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。虚拟地址有什么用?虚拟地址又是如何转换为物理内存地址的呢?本章将对此作一个简要阐述。1.1 Linux内存寻址概述 现代意义上的操作系统都处于32位保护模式转载 2013-11-16 17:04:47 · 630 阅读 · 0 评论 -
关于volatile和(*(unsigned long *)&jiffies)++
volatile中文的意思是易于挥发的。在C语言中,如果一个变量被声明为volatile,则说明这个变量每回都要从内存读到寄存器中,操作完以后, 再将值写回到内存中,编译器(例如gcc)并不将值cache在寄存器中。对于多线程或SMP系统,要注意使用volatile。 int wait = TRUE; thread1() thread2() { { while (w转载 2013-10-22 12:49:40 · 716 阅读 · 0 评论 -
Linux 终端驱动器与通用终端接口
有时程序需要更好的控制终端而不是使用简单的文件操作来达到。Linux提供了一个可以允许我们控制终端驱动器的接口集合,从而可以使得我们更好的控制终端的输入与输出处理过程。概览正如下图所示,我们可以通过一个与用来进行读写操作相分离的函数调用集合来控制终端。这使得数据接口更为清晰,同时又能更好的控制终端的行为。这并不说是说终端I/O接口是清晰的,而是可以处理各种不同的硬件。在Li原创 2013-05-19 13:01:59 · 640 阅读 · 0 评论 -
Linux 管道
1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux 支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立转载 2013-07-24 09:48:54 · 533 阅读 · 0 评论 -
sleep/usleep和多线程锁的注意事项
最近在写一个OJ后台程序,一个主线程隔500毫秒读取一次数据库把任务放入队列中,起了4个线程用于处理任务(主要是得到任务,然后去数据库里读提交上来的代码).主线程while(true){pthrea_lock_mutex(&conn_mutex);//数据库连接的mutex//..读数据库..把任务放入队列中..usleep(500000);pthread_unlock_mutex原创 2013-08-10 15:01:17 · 4487 阅读 · 1 评论 -
Linux下进程信息的深入分析
这里我们主要介绍进程的状态,进程的状态可以通过/proc/PID/status来查看,也可以通过/proc/PID/stat来查看。如果说到工具大家用的最多的ps也可以看到进程的信息。这里我们通过/proc/PID/status来分析进程的信息。在2.6.18之后的内核,多了capibilty/cpusets等信息. 查看进程状态信息如下:more statusName:转载 2013-08-10 21:26:40 · 554 阅读 · 0 评论 -
locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别
[oracle@game ~]$ localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_P转载 2013-08-24 12:50:49 · 528 阅读 · 0 评论 -
键盘驱动之--- 硬件i8042控制器
【PC端】 :从我前面转载的一篇文章可以知道:pc机上对键盘进行读写与控制的io端口是60H和64H.60H作为数据端口,由改端口可以给键盘写数据或读取键盘数据64H作为命令端口,可以读取键盘的状态或写入命令数据【键盘控制器端】 :在linux下我们可以用下面的命令来查看我们pc机当前使用的是什么键盘控制器:helight@helight-desktop:~$ ca转载 2013-10-02 15:53:05 · 2375 阅读 · 0 评论 -
linux kernel 2.4.16 __alloc_bootmem_core函数的理解
/* * We 'merge' subsequent allocations to save space. We might 'lose' * some fraction of a page if allocations cannot be satisfied due to * size constraints on boxes where there is physical RAM spa原创 2013-10-25 14:52:52 · 690 阅读 · 0 评论 -
GCC 内联汇编语法
在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly。本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^)。注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此转载 2013-10-20 17:12:21 · 737 阅读 · 0 评论 -
linux中断处理浅析
最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下~第一阶段--获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核提供的中断服务程序.在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应, 因为CPU不能假定中断服务程序是转载 2013-10-19 17:41:14 · 473 阅读 · 0 评论 -
Linux 2.6 内核阅读笔记 时间度量
2014年7月27日原创 2014-07-27 17:14:18 · 585 阅读 · 0 评论