
linux
文章平均质量分 86
Hui_NJ
11年多的C/C++研发经验
展开
-
Linux 动态链接库与静态链接库---隐式链接
动态链接库也被称为共享对象shared object,默认扩展名为so,动态链接库的优点如下:(1) 动态的加载,就是当这个运行的模块在需要的时候才被映射入运行模块的虚拟内存空间中,如一个模块在运行中要用到mylib.so中的myget函数,而在 没有调用mylib.so这个模块中的其它函数之前,是不会把这个模块加载到你的程序中(也就是内存映射),这些内容在内核中实现,用的是页面异常机原创 2013-04-09 18:13:40 · 813 阅读 · 0 评论 -
mmap(内存映射)和shm(共享存储)
mmap(内存影射)和shm(共享存储):原创 2017-12-13 15:34:04 · 3887 阅读 · 0 评论 -
fork详解
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 pid_t fpid = 0; 8 printf("son/pa ppid pid fpid\n"); 9 10 fpid = fork(); 11 if (0 =原创 2017-11-14 14:36:16 · 291 阅读 · 0 评论 -
Linux IO Scheduler -- Deadline
Linux IO Scheduler -- Deadline原理: Deadline调度器对一个请求的多方面特性进行权衡来进行调度,以期即能满足块设备扇区的顺寻访问又兼顾到一个请求不会在队列中等待太久导致饿死。 Deadline调度器为了兼顾这两个方面,通过红黑树来对请求按起始扇区序号进行排序,称为sort_list;通过fifo对请求按它们的生成时间进行排序,称为原创 2017-06-05 15:18:10 · 2181 阅读 · 0 评论 -
Linux IO Scheduler -- NOOP(no operation)
每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个IO调度器来协调所递交的request。IO调度器的基本目的是将请求按照它们对应在块设备上的扇区号进行排列,以减少磁头的移动,提高效率。每个request_queue都有一个request的队列,队列里的请求将按顺序被响应。实际上,除了这个队列,每个调度器自身都维护有不原创 2017-05-05 09:29:17 · 2883 阅读 · 0 评论 -
守护进程(daemon)
守护进程常常在系统引导装入时启动,在系统关闭时终止。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemon程序称作守护进程。一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程原创 2015-04-09 13:41:36 · 851 阅读 · 0 评论 -
僵尸进程以及如何避免
在类UNIX系统中,僵尸进程是指完成执行(通过exit系统调用,或运行时发生致命错误或收到终止信号所致),但并没有释放它的进程控制块PCB(其中存放进程ID、该进程的exit status、以及进程使用的CPU时间总量),这些资源仍然保存在操作系统的进程表中。ps aux命令将僵死进程的状态显示为Z当一个子进程退出时,并不是立即释放其占用的资源(PC原创 2015-02-11 09:42:46 · 525 阅读 · 0 评论 -
linux硬链接与软链接
文件在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一原创 2015-11-16 21:46:39 · 389 阅读 · 0 评论 -
PIPE&FIFO
Linux管道的实现机制在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:(1) 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在原创 2015-03-23 14:37:52 · 409 阅读 · 0 评论 -
linux多线程编程---条件变量
pthread_cond_wait(&cond, &mutex) 线程解开mutex指向的锁并被条件变量cond阻塞pthread_cond_signal(&cond) 释放阻塞在条件变量(cond)上的线程#include #include #include #include using std::cout;using std::endl;pthre原创 2013-08-14 15:30:00 · 832 阅读 · 0 评论 -
boost thread-study
ActionMgr.h#ifndef ACTIONMGR_H_#define ACTIONMGR_H_#include #include class ActionMgr{public: ActionMgr(); virtual ~ActionMgr(); bool startThread();原创 2013-05-09 17:47:49 · 509 阅读 · 0 评论 -
dm9000 网卡驱动
(1)1582 module_init(dm9000_init);(2)1568 static int __init1569 dm9000_init(void)1570 {1571 printk(KERN_INFO "%s Ethernet Driver, V%s\n", CARDNAME, DRV_VERSION);15721573 return p...原创 2018-07-26 15:20:48 · 371 阅读 · 0 评论