进程就是操作系统中被加载到内存中的、正在运行的应用程序实例。
进程的组成——程序、数据、进程控制块(PCB)
- 进程控制块采用数据结构的形式,主要保存PID(进程的标识符),PPID(父进程的标识符),UID(启动进程的用户ID),GID(所归属的组)等信息。
- PID,PPID为非零整数,其中PID唯一的标识一个进程。
进程的状态——运行、就绪、阻塞态
1.运行:就是一个进程正在CPU上运行中
2.就绪:进程获取了所有需要用的系统资源,就等着CPU调度运行它
3 .阻塞:进程因为在请求I/O或等待某个资源而暂停运行了
- 随着进程创建的越来越多,系统资源(如内存)不足了,就需要把某些进程 挂起(就是先移出内存,放到硬盘交换分区里面去)
- 这时就有了活跃就绪态、挂起就绪态、活跃阻塞态、挂起阻塞态。这里的活跃/挂起区别在于:进程是否在内存里面。被挂起的进程不参与CPU调度。
- Linux系统中的每一个进程都由进程控制块PCB来描述和控制的。它实际为一个叫做task_struct的数据结构。
进程的调度
- Linux进程分两类:普通进程和实时进程。CPU优先实时进程
- 进程的调度策略——****时间片轮转调度和先来先服务调度
- 所有进程的都是相互关联的,没有哪个进程是独立运行的,处了系统初始化进程。可以用pstree命令来查看目前所有进程的关系
- Linux中所有进程都用一个双向链表连接起来,系统可以根据这个链表来查看所有进程。
- Linux遵循一切为文件的思想
Linux C之进程控制
进程控制分为进程的创建、终止,以及获取进行的信息等操作。
- 创建进程:可以使用system()、fork()、vfork()、popen()函数。
- 终止进程:exit()以及_exit系统调用