1./proc 文件系统概述 /proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统./proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生文件的内容.我们已经见到了很多这样的文件,例如,/proc/modules 总是返回当前内核中加载的模块. /proc 广泛的应用在 linux 文件系统中,现代 linux 发行版上的许多应用程序,例如 ps ,top 和 uptime 都从 /proc 获取他们所需要的信息.一些驱动程序也通过…
Linux内核设计与实现之虚拟文件系统的读书笔记 虚拟文件系统(VFS) 为用户空间提供了文件和文件系统相关的接口. 文件系统抽象层 内核在底层文件系统上建立了一个抽象层, 该抽象层使Linux能够支持各种文件系统; VFS提供了一个通用的文件模型; 解析用户空间执行一个write函数的过程: ret = write(fd, buf, len); 该系统调用将buf指针指向的长度为len字节的数据写入文件描述符fd对应的文件的当前位置; 首先被通用系统调用sys_write函数处理, 找到fd所…
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整理出来一篇blog,详见<Linux Shell文本处理工具集锦>下面是文本处理之外的简单介绍,如果你觉得自己的shell需要充充电,强烈建议读读这本<linux Shell脚本攻略>. 嗨,Echo一下 从 echo开始:带引号的 echo和不带引号的 echo区别:使用带引号时,b…
Linux内核设计与实现  读书笔记: http://www.cnblogs.com/wang_yb/tag/linux-kernel/ <深入理解LINUX内存管理> http://blog.csdn.net/yrj/article/category/718110 Linux内存管理和性能学习笔记(一) :内存测量与堆内存  第一篇 内存的测量 2.1. 系统当前可用内存 # cat /proc/meminfoMemTotal:        8063544 kBMemFree:      …
proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统.最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告的内核使用,例如/proc/modules 有模块的列表/proc/meminfo 有内存使用的统计表.  使用proc 文件系统的方法和使用设备驱动程序非常相似--创建一个/proc 文件需要的所有信息的结构,包括任何处理函数的指针(在我们的例子中只有一个,当某人试图从/proc 文件读时调用的那…
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令procinfo能够显示基于其中某些文件的多种系统信息.以下详细描述/proc下的文件. /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内…
  转载:http://www.sudu.cn/info/index.php?op=article&id=302529   Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora core3下得到. ------------------------------------------------------------------------------…
全面了解Linux下Proc文件系统   Proc是一个虚拟文件系统,在Linux系统中它被挂载于/proc目录之上.Proc有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是Linux变得更加特别的功能就是以文本流的形式来访问进程信息.很Linux命令(比如 ps.toPpstree等)都需要使用这个文件系统的信息. 本文就是向用户介绍一些访问这些信息的方法 .需要说明的是,本文所述的内容并不 一定适用所有内核版本,有部分操作只适用于2.6内核. 一…
项目中可能会用到用户态和内核模块之间进行通信的功能.想到linux系统本身很多通信都是通过/proc文件系统来的,比如修改网络中连接跟踪表连接数限制/proc/sys/net/netfilter/nf_conntrack_max,这种通信方式比较简单,所以想研究下,下面是我自己写的测试代码: myproc.c #include <linux/module.h> #include <linux/kernel.h> #include <linux/proc_fs.h> #i…
第三章 进程管理 1. fork系统调用从内核返回两次: 一次返回到子进程,一次返回到父进程 2. task_struct结构是用slab分配器分配的,2.6以前的是放在内核栈的栈底的:所有进程的task_struct连在一起组成了一个双向链表 3. 2.6内核的内核栈底放的是thread_info结构,其中有指向task_struct的指针: 4. current宏可以找到当前进程的task_struct:X86是通过先找到thread_info结构,而PPC是有专门的寄存器存当前task_s…
操作系统的核心--内核 内核的职责 进程调度:Linux属于抢占式多任务操作系统,多个进程可同时驻留于内存,且每个进程都能获得对CPU的使用权.哪些进程获得对CPU的使用,以及每个进程能使用多长时间 ,都由内核进程调度程序决定. 内存管理:Linux采用了虚拟内在管理机制. 提供了文件系统 创建和终止进程:内核可将新程序载入内存,为其提供运行所需的资源.一旦程序执行完毕,内核还要确保释放其占用资源,以供后续程度重新使用. 对设备的访问:内核既为程序访问设备提供了简化版的标准接口,同时还要仲裁多个…
linux中管道符"|"的作用 命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象(下图应用别人的图片) 1. 例如: ps aux | grep "test"  在 ps aux中的結果中查找test. 2. 例如:   find . -name "*.txt" | xargs grep "good" -n --color=auto   把find的结果当成参数传入到grep中,即在那些文件内部查找good关键…
Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口. 用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的. 下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,…
/proc 文件系统是一个特殊的软件创建的文件系统, 内核用来输出消息到外界. /proc 下 的每个文件都绑到一个内核函数上, 当文件被读的时候即时产生文件内容. 我们已经见到 一些这样的文件起作用; 例如, /proc/modules, 常常返回当前已加载的模块列表. /proc 在 Linux 系统中非常多地应用. 很多现代 Linux 发布中的工具, 例如 ps, top, 以及 uptime, 从 /proc 中获取它们的信息. 一些设备驱动也通过 /proc 输出信息, 你 的也可以…
proc文件系统的作用是访问系统内核信息 proc不是一个真实的文件系统,它不占系统的外存空间,只是以文件的形式为用户访问linux内核数据提供接口,因为系统内核总是动态的变化,所以我们所捕捉到的也只是系统内核变化的瞬间. [root@apache ~]# cd /proc/[root@apache proc]# ls1     1428  1645  28   867          ioports       partitions10    1448  1648  29   9      …
proc,用户空间和内核空间能够通过该接口通信, 与普通文件不同的是.这些虚拟文件的内容都是动态创建的. proc文件系统是一个伪文件系统,它仅仅存在内存其中,而不占用外存空间. 它以文件系统的方式为訪问系统内核数据的操作提供接口.用户和应用程序 能够通过 proc得到系统的信息.并能够改变内核的某些參数. proc 文件系统能够被用于收集实用的关于系统和执行中的内核的信息. 对此文件系统的訪问同一般文件同样. 例: 1.统计cpu个数: cat /proc/cpuinfo | grep'phy…
2017-03-08 10:37:55 一.虚拟文件系统VFS 文件系统用于将位于磁盘上的文件按照某种方式组织进内存,并给上层应用程序提供统一的访问接口.Linux支持多种文件系统EXT2/3,NTFS,XFS等,而LInux下支持这些文件系统的方式就是VFS,即虚拟文件系统.虚拟文件系统向上层提供统一的调用接口,向下层请求具体的文件系统.整理架构如图所示. 如上图所描述的,应用程序通过C语言库函数,请求对文件的访问.库函数会调用系统提供的系统调用进入内核,而这里的系统调用不过是一般函数的封装,…
proc为一个内核数据结构接口,用户空间和内核空间可以通过该接口通信, 与普通文件不同的是,这些虚拟文件的内容都是动态创建的. proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. 它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序 可以通过 proc得到系统的信息,并可以改变内核的某些参数. proc 文件系统可以被用于收集有用的关于系统和运行中的内核的信息. 对此文件系统的访问同一般文件相同. 例: 1.统计cpu个数: cat /proc/cpuinfo…
转自:http://blog.chinaunix.net/uid-10469829-id-2953001.html 1.原子操作可以保证指令以原子的方式执行——执行过程不被打断.内核提供了两组原子操作接口,一组针对整数进行操作,一组针对单独的位进行操作.       2.针对整数的原子操作只能对atomic_t类型的数据进行处理.引入这个特殊数据类型主要是出于三个原因:首先,让原子函数只接受atomic_t类型的操作数可以确保原子操作只与这种特殊类型的数据一起使用.同时这也保证了该类型的数据不会…
1.进程: (1)处于执行期的程序,但不止是代码,还包括各种程序运行时所需的资源,实际上进程是正在执行的 程序的实时结果. (2)程序的本身并不是进程,进程是处于执行期的程序及其相关资源的总称. (3)两个或两个以上并存的进程可以共享诸如打开的文件,地址空间等共享资源. (4)在Linux中通常是调用fork()系统函数的结果,通过复制一个现有的进程来创建一个新的子进程. fork()系统函数 (5)fork在这个系统调用结束时,在同一位置上返回两次(从内核返回两次),父进程恢复运行,子进程开始…
做嵌入式开发对内存泄露很敏感,而对泄露的位置更加关注.本文记录一下从网上搜集的/proc/meminfo各参数的含义.还不完整,待补完. 本文地址:https://segmentfault.com/a/1190000007114036 Reference 关于/proc/meminfo的理解linux/Documentation/filesystems/proc.txt 说明 以下项目并不是每一个 Linux 系统上都有的,根据你的 Linux 设计和版本,可能多出或者少了某些项.参考资料中的第…
第一章 Linux内核简介 1.Unix (1)Unix系统很简洁 (2)在Unix中,所以东西都被当作文件对待,通过一套相同的系统调用接口来进行:open(),read(),write(),lseek(),close() (3)用C语言编写而成,移植能力强 (4)进程创建迅速,有fork()系统调用 (5)提供了一套非常简单但很稳定的系统元语 目标:一次执行保质保量完成一个任务 2.Linux 没有抛弃Unix的设计目标并且保证了应用程序编程接口的一致 Linux是一个非商业化产品 Linux…
1.ext2产生的历史 最早的Linux内核是从MINIX系统过渡发展而来的.Linux最早的文件系统就是MINIX文件系统.MINIX文件系统几乎到处都是bug,采用的是16bit偏移量,最大容量为64M,文件名最长为14字符. Linux内核0.96版本,包含了虚拟文件系统(vitual file system, VFS),VFS中提供了基础的API用于简化扩展新的文件系统——扩展的文件系统(extended file system, ext)基于VFS API. 1992年Linux发布的…
文件/文件系统的压缩.打包 Linux有哪些压缩工具可供选择 按压缩比:xz>bzip2>gzip,按压缩时长:gzip>bzip2>xz,另外还有zip可以选择. gzip只负责压缩没有打包功能,所以常常和打包工具tar联用,如果单独用gzip要注意两点:①只能对单个文件进行压缩:②默认用压缩后的文件替换原来的文件 我该如何选择这些压缩工具? 这确实是个问题,最优解的压缩工具需要不断的尝试,而且每个人使用压缩工具的目的不甚相同. 比如,经常不读的服务器日志文件,我们就希望尽可能地…
[root@localhost ~]# cat /proc/self/status Name: cat State: R (running) SleepAVG: 88% Tgid: 5783 Pid: 5783 PPid: 5742 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 1 2 3 4 6 10 VmSize: 6588 kB VmLck: 0 kB VmRSS: 400 kB VmData: 144 kB Vm…
<Linux多线程服务器端编程>第3章主要讲的是多线程服务器的适用场合与常用的编程模型. 1.进程和线程 一个进程是"内存中正在运行的程序“.每个进程都有自己独立的地址空间(address space).将"进程"比喻为"人",每个人都有自己的记忆(memory),人与人通过谈话(消息传递)来交流,谈话既可以是面谈(同一台服务器),也可以在电话里谈(不同的服务器,有网络通信).面谈和电话谈的区别在于,面谈可以立即知道对方是否死了(crash,S…
用户态与内核态交互的接口之一,管理方式与普通文件相同每个节点的文件权限(读/写)决定其查看和配置权限大量LINUX系统参数和状态信息可通过proc节点查看或配置/proc/<pid>/:查看进程信息cmdline:进程名(前15字节)fd:文件描述符信息environ:环境变量信息exe:指向进程对应程序绝对路径的软链接(不可cat)limits:进程的各种限制(通过ulimit查看和设置)maps:进程的虚拟地址空间映射情况smaps:内存使用情况status:进程基本状态信息/proc/c…
(英文部分为转的.代码是个人代码) 1 What's inotify  The inotify API provides a mechanism for monitoring file system events. Inotify can be used to monitor individual files, or to monitor directories. When a directory is monitored, inotify will return events for the…
What Is /proc/kcore?None of the files in /proc are really there--they're all, "pretend," files made up by the kernel, to give you information about the system and don't take up any hard disk space. /proc/kcore is like an "alias" for th…
继承是 OO 语言中的一个最为人津津乐道的概念.许多 OO 语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.由于函数没有签名,在 ECMAScript 中无法实现接口继承. ECMAScript 只支持实现继承,而且其实现继承主要是依靠原型链来实现的. 组合继承时 JavaScript 中常用的继承模式,而寄生组合式继承克服了组合继承的缺点,被认为是引用类型最理想的继承范式. 以下是<JavaScript高级程序设计>中介绍的继承方式:…