LInux进程与线程学习笔记
进程与线程 1、进程的相关概念 (1)、进程与程序: 1、进程是动态的,程序是静态的; 2、进程有生命周期,程序没有生命周期; 3、一个进程只能对应一个程序,一个程序却可以对应多个进程,没有建立进程的程序不能作为一个独立的单位获得操作系统的认可; (2)、进程控制块(PCB) 每个进程在内核中都有一个进程控制块来维护进程的相关信息,linux内核的进程控制块是task-struct结构体。内部成员很多,主要有: a、进程ID:系统中每个进程都有唯一的id,用pid_t类型表示。 b、进程状态:有初始、就绪、运行、挂起、终止五个状态。 c、进程切换需要保存和恢复的CPU寄存器。 d、描述虚拟地址空间的信息。 e、描述控制终端的信息。 f、当前工作目录。 g、文件描述符表:包含很多指向file结构体的指针。 h、和信号相关的信息。 i、用户组id和组id。 j、会话(session)和进程组。 k、umask掩码。 l、进程可以使用的资源上限。 2、进程控制 (1)、fork函数 pid_t fork(void) 问题: a、fork函数的返回值? 答:当fork函数创建子进程成功后,会返回两个,一个数为0:代表子进程的返回值;当返回值大于0时:父进程返回值,代表子进程的id。 b、子进程创建成功后,代码的执行位置? 答:父进程执行到哪,子进程就从哪里开始执行。 c、父子进程的执行顺序