
linux进程
知了112
记录自己成长每一步。加油!
展开
-
[linux]进程(八)---线程概念
线程概念:线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),进程的所有信息对该进程的所有线程是共享的,包括程序文本,程序的全部内存,堆,栈和文件描述符。线程标识:进程ID在整个系统中是唯一的,用pid_t数据类型表示,线程ID只在它所属的进程环境中有效,用pthread_t数据类型表示,用 pthread_t pthread原创 2014-03-21 13:39:22 · 486 阅读 · 0 评论 -
[linux]进程(一)--基本概念
1,进程的基本概念简单来说进程就是执行期的程序,但是同时进程也不至于此,它还包括了其它资源(如打开的文件,挂起的信号等等)Linux是一个多任务多用户操作系统,一个任务(task)就是一个进程(process),即进程=任务,在linux系统中,进程和线程共享一系列的资源(地址空间,文件,信号,名字空间等)原创 2014-02-21 19:52:10 · 957 阅读 · 0 评论 -
[Linux]进程(十二)--task_struct结构体
struct task_struct { volatile long state; /* -1 不可运行, 0 可运行, >0 表示停止 */ void *stack; atomic_t usage; unsigned long flags; /* 每进程标志 */ unsigned long ptrace; int lock_depth; /* 大内核锁深度 */ int prio原创 2014-09-17 09:56:38 · 2280 阅读 · 1 评论 -
[linux]进程(五)——进程调度
14,进程调度:进程调度概念:进程调度程序决定哪个进程投入运行,何时运行以及运行多长时间。linux是抢占式多任务操作系统,linux在2.6.23内核中采用的是“完全公平调度算法”简称CFS进程调度前提:cpu一个处理器在同一时刻只能运行一个进程进程响应快,后台吞吐量大,避免进程饥饿等linux进程调度的一些策略:决定什么时候以什么样的方式选择一个新进原创 2014-03-03 13:30:56 · 2198 阅读 · 0 评论 -
[Linux]进程——备忘
1,SIGPIPE信号:若某一端关闭连接,而另一端仍然向它写数据,第一次写数据后会收到RST响应,此后再写数据,内核将向进程发出SIGPIPE信号,通知进程此连接已经断开。而SIGPIPE信号的默认处理是终止程序,导致上述问题的发生。原创 2014-04-11 14:36:08 · 565 阅读 · 0 评论 -
[linux]进程(七)——进程通信
进程间通信一,管道,管道的限制:(1)半双工,数据只能在一个方向上流动(2)管道一般只在具有公共祖先的进程之间使用,通常一个管道由一个进程创建,然后该进程调用fork()函数,此后父子进程可以使用该管道管道的创建:#include int pipe(int fileds[2]); //filedes[0]为读而打开,filedes[1]为写而打开向一个没有读进程关联的管原创 2014-03-09 15:07:29 · 834 阅读 · 0 评论 -
linux相关问题
一,死锁产生死锁的四个条件(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。如何去检测多个进程间是否有死锁(1)利用pstack和gdb分析http://原创 2014-09-26 16:50:13 · 637 阅读 · 0 评论 -
[linux]进程(四)——进程的创建
11,进程的创建linux的进程创建可以分为两个步骤,分别为fork()和exec()函数,fork()负责创建一个子进程,和父进程的差别仅仅是PID PPID以及一些统计量,exec()函数负责读取可执行文件载入地址空间运行。fork()函数原型pid_t fork(void); 子进程返回0,父进程返回子进程的PID,fork()函数一次创建两次返回。fork()函数的实现原创 2014-02-26 20:01:13 · 2315 阅读 · 0 评论 -
[Linux]进程(十)——进程地址空间
1,进程的虚拟内存:背景知识a.out分段以及运行时候内存的结构点击打开链接linux进程地址空间linux进程地址空间\struct mm_struct { struct vm_area_struct *mmap; /* list of memory areas */ struct rb_root转载 2014-04-02 15:51:08 · 658 阅读 · 0 评论 -
[linux]进程(九)——线程
1,线程的私有数据:点击打开链接线程要有私有数据的原因:1,有时候需要维护基于每个线程的数据,2,让基于进程的接口适应多线程环境,线程私有数据的实现方式:线程私有数据采用了一种一键多值的技术,即一个键对应多个数值。键可以被进程内的所有线程访问,但是每个线程把这个键与不同的线程私有数据的地址关联。 int pthread_key_create(pthread_key_t原创 2014-03-21 14:21:58 · 701 阅读 · 0 评论 -
[linux]进程(二)--进程地址空间
7,linux进程命名空间的概念linux的命名空间属于操作系统级虚拟化,各个命名空间互相隔离,互相不可见,不同命名空间的进程PID可以相同,因此从操作系统层面看可能有相同的uid和pid父命名空间同时还可以包含子命名空间,子命名空间不知道父命名空间的存在,但是父命名空间知道子命名空间的存在命名空间的实现:为了task_struct的精简,内核引入了struct nsproxy原创 2014-02-24 17:33:43 · 955 阅读 · 0 评论 -
[linux]进程(三)——idle进程
9,linux进程切换进程切换:基本概念:进程上下文:当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的上下文,运行于进程上下文的进程是可以被抢占的。硬件上下文:进程恢复执行前必须载入寄存器的一组数据称为硬件上下文linux内核在进程切换的时候是并不区原创 2014-02-25 11:27:31 · 11302 阅读 · 0 评论 -
[Linux]进程——用户态编程相关
1,设定进程的最大资源struct rlimit rlim;rlim.rlim_cur = 8192;rlim.rlim_max = 8192;if (setrlimit(RLIMIT_NOFILE, &rlim)) { ERROR("Error setting RLIMIT_NOFILE, errno = %d\n", errno); }原创 2014-09-16 10:12:52 · 752 阅读 · 0 评论 -
[linux]进程(六)——守护进程
概念:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程的特点:守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。守护进程的编程要点:(1)后台运行 方原创 2014-03-05 20:15:19 · 795 阅读 · 0 评论 -
[linux]进程(十一)——进程权能
进程权能介绍点击打开链接1,基本概念传统UNIX的访问控制模型非常简单,就是“超级用户对普通用户”模型。在这种模型中,一个进程或帐户要么什么都能做即具有全部的系统权限,要么几乎什么也不能做即只有很小的权限,这取决于进程的UID。例如,如果一个进程需要加载/卸载内核模块以及管理文件系统等操作时,就需要完全的root权限。很显然这样做对系统安全存在很大的威胁。2,进程权能L转载 2014-08-12 10:51:30 · 1271 阅读 · 0 评论 -
[linux]进程(五)——进程调度(实时进程调度)
点击打开链接1,实时进程和普通进程调度的差别实时进程需要严格按照优先级的顺序执行,比如在八核平台上,必须是优先级最高的八个进程得到调度,如果此时八个优先级最高的进程都在某一个cpu的rt队列上,那么此时的调度就会涉及到了进程在不同cpu的迁移。2,实时调度算法概述该实时调度器主要为了解决以下四种情况:(1). 在唤醒任务时,待唤醒的任务放置到哪个运行队列转载 2015-05-10 10:11:00 · 2605 阅读 · 0 评论