
linux&unix
文章平均质量分 67
jinnlxl
nothing,nothing at all
展开
-
很好的setuid资料整理----转载
近期准备把我能找到的关于setuid的相关资料整理一下,包括书籍、论文以及FreeBSD的源代码等。 就从Bach的书开始吧。。。 Maurice J.Bach 的《The Design of The UNIX Operating System》一书中对这个问题的论述。。。 p227 7.6 THE USER ID OF A PROCESS转载 2014-07-22 13:58:00 · 637 阅读 · 0 评论 -
linux信号
信号是一种类似IRQ的机制,提供了一种处理异步事件的方式,所以又称软件中断。原创 2015-01-29 13:01:25 · 553 阅读 · 0 评论 -
linux文件系统之VFS
对于PC上装了linux/windows双系统的童鞋都知道,在linux下也可以正常访问windows分区,而我们都知道windows分区是NTFS,而linux常用的文件系统是ext系列,实际上除了这两种文件系统之外,linux还支持十几种其他fs。linux之所以能完美兼容多套文件系统,就在因为虚拟文件系统(VFS)的存在。那么VFS到底是什么呢?VFS所隐含的是一个通用的文件模型原创 2015-03-05 23:32:24 · 687 阅读 · 0 评论 -
进程间文件描述符传送
在进程间传送fd(文件描述符)能确保guest进程在不了解文件或者设备节点细节的情况下对于拿到的fd的I/O操作能力,这体现一种封装的思想,在实际使用中也非常有意义。原创 2015-01-29 20:10:48 · 2351 阅读 · 2 评论 -
linux内存管理---UTLK读书笔记
从80286开始,intel处理以两种不同的方式执行地址转换,即实模式(real mode)和保护模式(protected mode)。只所以从286开始有这两种方式,是因为286之前的cpu工作在实模式,这实际上一种不健壮的模式,不适用多进程,所以在80286开始启用保护模式,仍然存在实模式,一是因为向上兼容,二是在系统启动的时候(如在BIOS执行时)还是需要这种模式的,这个情况有点像动态链原创 2015-02-15 19:18:18 · 1315 阅读 · 0 评论 -
在代码中配置当前进程的coredump环境
/*debug嵌入式程序时,如在大规模版本合并,新项目开发或者硬件平台移植中,可能经常会出现程序启动中崩溃的问题,除了在启动脚本修改coredump相关配置外,也可以在应用程序启动的开始在代码中对当前进程的coredump进行设置具体流程如下*/struct rlimit limit_get, limit_set;int core_pid_fd, core_pattern_fd;/原创 2014-09-19 11:18:33 · 1072 阅读 · 0 评论 -
linux 进程调度
首先,从不同的角度,可以对运行中的进程分类。如,从资源耗损的角度,可以分为I/O受限(频繁使用I/O设备)和CPU受限(需要大量的CPU计算)。又如,从运行模式上,可以分为交互式进程(需要大量的时间等待用户的键盘和鼠标指令,同时进程需要在指令到达后被尽快唤醒),批处理进程(如编译程序,数据库等),实时进程(如软件codec,编码对实时性要求很高)。还如,从在内核中被调度的方式上,可以分原创 2015-01-29 22:54:46 · 602 阅读 · 0 评论 -
死锁及原因
死锁通常指两个task因为竞争资源而导致的彼此阻塞,无法继续运行的现象。一旦出现,就会严重影响程序运行,相关task(进程也好,线程也罢)全都相当于死掉了,比死掉了更恶心的在某些情况下还占用大量的资源无法释放。死锁出现的可能原因有如下几种:1,有多个资源共享,但是访问这个多个资源的task并未按一致的顺序获取,有可能导致A得到的mutex_a,然后想去获取mutex_b,而B占有mut原创 2015-01-28 21:09:57 · 625 阅读 · 0 评论 -
linux进程切换
为了控制task(进程)的执行,kernel必须有能力挂起正在cpu上运行的task,并恢复之前被挂起的某个进程,这种行为就是task切换(又称上下文(context)切换)。尽快在现代操作系统引入虚拟内存之后,每个进程都有自己的地址空间,但是硬件(CPU)只有一个(当然,可以由多核心),我们都知道cpu的计算单元直接使用的数据并不是内存,而是寄存器,每个核心都有一套匹配的寄存器,这个核心为所原创 2015-01-29 01:35:47 · 683 阅读 · 0 评论 -
linux进程控制原语
对于进程的控制,通常来说不过是创建,执行,终止。linux对于这三类控制都有一类函数,是为进程控制原语一,创建原语:fork函数族1,fork()2,vfork二,执行(加载)原语:exec函数族1,execl2,execv3,execle4,execve5,execlp6,execvp三,退出/等待退出原语:exit函数族,wait函数族原创 2015-01-29 11:49:43 · 2249 阅读 · 0 评论 -
*nix I/O model
一般来说,*nix支持四种I/O结构,分别是阻塞式I/O、非阻塞式I/O、I/O复用,信号驱动I/O。下面分别介绍一下这四种I/O结构:一,阻塞式I/O。这是*nix中使用最多的I/O模式,默认情况下对于设备节点的read,对于套接字的read/recvfrom都是阻塞的。进程(线程)进入这个系统调用,一般来说在申请的条件(如read到足够的数据)被满足之前task是阻塞的,直到条原创 2015-01-26 23:09:42 · 602 阅读 · 0 评论 -
比较准确的堆栈(heap/stack)区别描述
具体地说,现代计算机(串行执行机制),都直接在代 码底层支持栈的数据结构。这体现在,有专门的寄存器指向栈所在的地址,有专门的机器指令完成数据入栈出栈的操作。这种机制的特点是效率高,支持的数据有 限,一般是整数,指针,浮点数等系统直接支持的数据类型,并不直接支持其他的数据结构。因为栈的这种特点,对栈的使用在程序中是非常频繁的。对子程序的调 用就是直接利用栈完成的。机器的call指令里隐含了把返回转载 2014-07-28 23:56:25 · 1147 阅读 · 0 评论 -
linux内存管理函数mmap和brk
linux内核提供mmap和brk用于管理线性内存:一,brklinux man page描述如下:brk为系统调用,sbrk给glibc对于系统调用brk的封装:从man里面可以看到这brk的原理主要是通过修改program break(数据段的结尾,the first location after the end of the uninitialized data se原创 2015-03-10 15:42:10 · 3196 阅读 · 0 评论