作者:小 琛
欢迎转载,请标明出处
引言:接下来的博文将进入Linux进程学习
何为操作系统?
我们都说,Linux是一种操作系统,Windows也是一种操作一种,那所谓的操作系统到底是什么呢?
- 操作系统本身其实是一个软件
- 操作系统构成:内核+应用
- 操作系统的作用:管理软硬件资源
操作系统是如何进行管理进程呢?
这句话非常重要:管理=描述+组织
操作系统对进程的管理:描述+组织具体是什么
描述
在讨论描述问题前,我们要先知道另一个概念:进程
进程是程序的一个执行实例,或者说是正在执行的程序
下图中的那个结构体:task_struct就是操作系统实现描述的工具,我们使用它来描述一个进程(这个结构体的内容不止这两个,这里仅用于举例)。
组织
操作系统是如何将众多的PCB组织起来的?
使用一种数据结构的方式:双向链表挂接
解读“PCB”
上文说到,Linux对进程的管理是描述+组织。
描述进程-PCB(process control block),Linux操作系统下的PCB是:task_struct
- 标示符—pid: 进程标识符,用来区别其他进程。
- 状态: 任务状态,退出代码,退出信号等。
- 优先级: 相对于其他进程的优先级。
- 程序计数器: 程序中即将被执行的下一条指令的地址
- 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
- 上下文数据: 进程执行时处理器的寄存器中的数据(作用就是当你进行另一个操作之后,你之前的数据不会丢失)。
- I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
- 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。