随笔分类 - Linux环境编程
摘要:Swap基本原理 众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。 Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些...
阅读全文
摘要:munmap munmap(解除内存映射) 相关函数 mmap 表头文件 #include<unistd.h> #include<sys/mman.h> 定义函数 int munmap(void *start,size_t length); 函数说明 munmap()用来取消参数start所指的映射内存起始地址,参数length则是欲取消的内存大小。当进程...
阅读全文
摘要:Linux通过一个叫做 task_statm 的函数来返回进程的内存使用状况 int task_statm(struct mm_struct *mm, int *shared, int *text, int *data, int *resident) { *shared = get_mm_counter(mm, file_rss); *text = (PAGE_...
阅读全文
摘要:进程四要素 1. 有一段程序供其执行,这段程序不一定是某个进程所专有,可以与其他进程共用。 2. 有进程专用的内核空间堆栈 3. 在内核中有个一task_struct数据结构,即通常说的“进程控制块”。有了这个数据结构,进程才可以接受内核的调度。 4. 有独立的用户空间 注意:有独立的用户空间的是进程,没有独立用户空间的但有共享用户空间的是用户线程,既没有独...
阅读全文
摘要:makefile时常遇到这样的问题,汇总网上的原因如下: 1. 上一行换行符号 \ 后面有空格 2. 本行前面的空白有非法字符 1)Makefile可能是以命令行开始:以[Tab]字符开始,但不是一个合法的命令行(例如,一个变量的赋值)。命令行必须和规则一一对应。 2)第二种原因可能是一行的第一个非空字符为分号,make会认为此处遗漏了规则的“target: prer...
阅读全文
摘要:下面这个名单会因为 不同Unix的实现而发生变化,所以或许准确性有了水份。请注意子进程得到的是 这些东西的 拷贝,不是它们本身。 由子进程自父进程继承到: ① 进程的资格(真实(real)/有效(effective)/已保存(saved) 用户号(UIDs)和组号(GIDs)) ② 环境(environment) ③ 堆栈 ④ 内存 ⑤ 打开文件的描述符(...
阅读全文
摘要:dlfcn.h : Linux动态库的显式调用[1] 学习Linux,你可能会遇到动态库的显式调用,这里介绍动态库的显式调用的解决方法。显式调用的含义是代码出现库文件名,用户需要自己去打开和管理库文件。其要点为: ⑴把dlfcn.h系统头文件包含进来 ⑵用dlopen函数打开库文件,并指定打开方式 dllope的的第一个参数为共享库的名称,将会在下面位置查找指定的共享...
阅读全文
摘要:1、内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。即所谓内存泄漏。 2、简单的说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。 3、一般我们常说的内存泄...
阅读全文
摘要:1、守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。2、创建守护进程步骤1)创建子进程,父进程退出 之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行其他命令,从而在形式上做到了与控制终端的脱离。 在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程
阅读全文