目录
- 进程=PCB+可执行程序的代码和数据
- OS管理进程=描述进程+管理进程(OS调度进程,CPU处理进程,进程访问不同的软硬件资源)
前言
- 课本概念:程序的一个执行实例,正在执行的程序等
- 内核观点:担当分配系统资源(CPU时间,内存)的实体。
- 非常抽象,抽象问题具体化。
- 在window中:任务管理器。
- 操作系统中进程可以同时存在多个。
- 操作系统管理进程核心也是:先描述再组织。
到底什么是进程,进程又是怎样被管理的呢❓
进程基本概念
- 课本概念:程序的一个执行实例,正在执行的程序等
- 内核观点:担当分配系统资源(CPU时间,内存)的实体。
- 进程=PCB+可执行程序的代码和数据
- 代码和数据是进程的实体
- PCB进程控制块是进程的属性信息
- 请问所有的被加载到内存里面的可执行程序的数据和代码都是进程嘛❓
- 什么才是真正的进程❓
第一个被加载到内存的可执行程序是谁❓
谁来管理 被加载到内存的可执行程序的代码和数据❓怎样管理❓
- 第一个被加载到内存的可执行程序是操作系统的代码和数据。
- 由操作系统OS来管理。
- 管理:先描述再组织 。
- 一个进程,一定要有一个PCB。(PCB类似结构体)
- 被加载到内存的可执行程序的代码和数据 只是进程对应的代码和数据。
- 综上所述:进程=PCB+可执行程序的代码和数据
- 操作系统对进程的管理就变成对链表的增删查改
描述进程PCB
- 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
- PCB:process control block 进程控制块。描述一个进程的结构体。
- PCB所形成的数据结构在操作系统内部,属于操作系统管理进程。
- PCB所形成的数据结构称为"内核数据结构"
- PCB的存在就是方便OS对进程进程管理的。
- PCB是所有描述进程的代码和数据属性的结构体的统称。
- 课本上称之为PCB(process control block),Linux操作系统下的PCB是: task_struct。
task_struct-PCB的一种
- 在Linux中描述进程的结构体PCB叫做task_struct。
- task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。
task_struct内容分类
- 标示符: 描述本进程的唯一标示符,用来区别其他进程。
- 状态: 任务状态,退出代码,退出信号等。
- 优先级: 相对于其他进程的优先级。
- 程序计数器: 程序中即将被执行的下一条指令的地址。
- 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
- 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
- I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
- 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
- 其他信息
组织进程
在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。
内核数据结构就是用的双链表
操作系统管理进程
- 操作系统是一款软件。
- 操作系统在在没开机之前也是存放在磁盘中的二进制文件,开机之后,加载到内存的第一个软件,内核数据结构也在。
- 进程=内核task_struct结构体+程序的代码和数据。
创建/管理进程
将可执行程序加载到内存。
操作系统内部动态开辟PCB。
PCB形成数据结构。
操作系统对进程的管理,转化成对数据结构的管理,对链表的增删查改。
❌OS不是对内存中进程的代码和数据管理,而是对PCB的管理。
操作系统调度进程(CPU处理进程)
❓如何理解进程的动态运行
>>>>操作系统是在管理进程而非代码和数据。
>>>>进程需要排队,PCB排队,不是代码和数据排队。
>>>>在不同队列中,访问不同资源。
OS调度进程 | 排队
- OS中进程PBC很多,内核数据结构很多,当进程被调度时需要排队。
- 排队:本质上是进程的PCB在排队,内核数据结构在排队。
- 调度运行进程,本质就是让进程控制块task_struct 进行排队,内核数据结构进行排队。
- OS想要调度进程给CPU处理的时候,进程都需要排队。
- 进程被调度,运行起来,都需要在OS中排队。
进程的动态运行
- 常见:被放到CPU中运行,等待访问硬件资源。
- CPU或者其他设备想要进程去访问/执行,都是PCB(task_struct)来被调度和执行的。
- 只要我们的进程task_struct将来在不同的队列中,进程就可以访问到不同的资源了。(意思是:进程的PCB一会被放到CPU,一会被放到其他设备等。呈现了一个动态运行的效果)。
- OS调度进程去切换访问不同的软硬件资源,也就是PCB放在不同的软硬件资源里。
- 进程处于不同队列,来回切换>>>>>>>>>>>后面进程状态的时候会详细详解。
🙂感谢大家的阅读,若有错误和不足,欢迎指正。