2014年10月26日
摘要: [cpp]view plaincopystructtask_struct{volatilelongstate;/*-1不可运行,0可运行,>0表示停止*/void*stack;atomic_tusage;unsignedlongflags;/*每进程标志*/unsignedlongptrace;in... 阅读全文
posted @ 2014-10-26 08:41 知了112 阅读(978) 评论(0) 推荐(0) 编辑
摘要: 1,设定进程的最大资源[cpp]view plaincopystructrlimitrlim;rlim.rlim_cur=8192;rlim.rlim_max=8192;if(setrlimit(RLIMIT_NOFILE,&rlim)){ERROR("ErrorsettingRLIMIT_NOFI... 阅读全文
posted @ 2014-10-26 08:40 知了112 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 进程权能介绍进程权能举例分析用户层对应的系统调用是prctl()函数,点击打开链接1,基本概念传统UNIX的访问控制模型非常简单,就是“超级用户对普通用户”模型。在这种模型中,一个进程或帐户要么什么都能做即具有全部的系统权限,要么几乎什么也不能做即只有很小的权限,这取决于进程的UID。例如,如果一个... 阅读全文
posted @ 2014-10-26 08:39 知了112 阅读(3533) 评论(0) 推荐(1) 编辑
摘要: 1,SIGPIPE信号:在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SI... 阅读全文
posted @ 2014-10-26 08:37 知了112 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 1,进程的虚拟内存:背景知识a.out分段以及运行时候内存的结构点击打开链接linux进程地址空间linux进程地址空间\[cpp]view plaincopystructmm_struct{structvm_area_struct*mmap;/*listofmemoryareas*/structr... 阅读全文
posted @ 2014-10-26 08:36 知了112 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1,线程的私有数据:点击打开链接线程要有私有数据的原因:1,有时候需要维护基于每个线程的数据,2,让基于进程的接口适应多线程环境,线程私有数据的实现方式:线程私有数据采用了一种一键多值的技术,即一个键对应多个数值。键可以被进程内的所有线程访问,但是每个线程把这个键与不同的线程私有数据的地址关联。 i... 阅读全文
posted @ 2014-10-26 08:35 知了112 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 线程概念:线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),进程的所有信息对该进程的所有线程是共享的,包括程序文本,程序的全部内存,堆,栈和文件描述符。线程标识:进程ID在整个系统中是唯一的,用pid_t数据类型表示,线程ID只在它所属的进程环境中有效,... 阅读全文
posted @ 2014-10-26 08:34 知了112 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 进程间通信一,管道,管道的限制:(1)半双工,数据只能在一个方向上流动(2)管道一般只在具有公共祖先的进程之间使用,通常一个管道由一个进程创建,然后该进程调用fork()函数,此后父子进程可以使用该管道管道的创建:[cpp]view plaincopy#includeintpipe(intfiled... 阅读全文
posted @ 2014-10-26 08:33 知了112 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 15,守护进程概念:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程的特点:守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从... 阅读全文
posted @ 2014-10-26 08:32 知了112 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 14,进程调度:进程调度概念:进程调度程序决定哪个进程投入运行,何时运行以及运行多长时间。linux是抢占式多任务操作系统,linux在2.6.23内核中采用的是“完全公平调度算法”简称CFS进程调度前提:cpu一个处理器在同一时刻只能运行一个进程进程响应快,后台吞吐量大,避免进程饥饿等linux进... 阅读全文
posted @ 2014-10-26 08:31 知了112 阅读(2894) 评论(0) 推荐(0) 编辑
摘要: 11,进程的创建linux的进程创建可以分为两个步骤,分别为fork()和exec()函数,fork()负责创建一个子进程,和父进程的差别仅仅是PID PPID以及一些统计量,exec()函数负责读取可执行文件载入地址空间运行。fork()函数原型pid_t fork(void); 子进程返回0,父... 阅读全文
posted @ 2014-10-26 08:30 知了112 阅读(1022) 评论(0) 推荐(0) 编辑
摘要: 9,linux进程切换进程切换:基本概念:进程上下文:当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的上下文,运行于进程上下文的进程是可以被抢占的。硬件上下文:进程恢复执行前必须... 阅读全文
posted @ 2014-10-26 08:29 知了112 阅读(6752) 评论(0) 推荐(0) 编辑
摘要: 7,linux进程命名空间的概念关于命名空间具体可以参考深入linux内核架构2.3.2章节linux的命名空间属于操作系统级虚拟化,各个命名空间互相隔离,互相不可见,不同命名空间的进程PID可以相同,因此从操作系统层面看可能有相同的uid和pid,父命名空间同时还可以包含子命名空间,子命名空间不知... 阅读全文
posted @ 2014-10-26 08:27 知了112 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 1,进程的基本概念简单来说进程就是执行期的程序,但是同时进程也不至于此,它还包括了其它资源(如打开的文件,挂起的信号等等)Linux是一个多任务多用户操作系统,一个任务(task)就是一个进程(process),即进程=任务,在linux系统中,进程和线程共享一系列的资源(地址空间,文件,信号,名字... 阅读全文
posted @ 2014-10-26 08:26 知了112 阅读(524) 评论(0) 推荐(0) 编辑