【期末复习】二、进程管理

程序:静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。

进程:动态的,是程序的一次执行过程。(同一个程序多次执行会对应多个进程)


1.进程的内存结构🍊

  1. 0f199b06175644999fe50365447238e7.jpeg

3461618936ab4630add892ee283376b4.png

【程序分析题】

#include <stdio.h>
#include <stdlib.h>

int global = 100;

void f(int x, int y) {
    int local = 50;
    int *p = (int *)malloc(100);
    // 假设在此处进行一些操作
    free(p);
}

int main() {
    static int s = 20;
    int a = 30;
    f(a, global);
    return 0;
}

①全局变量global存储在内存的哪个区域?

全局变量global存储在数据段(Data Segment)。

②函数f中的局部变量local存储在内存的哪个区域?

函数f中的局部变量local存储在栈(Stack)中。

③函数f中通过malloc分配的内存位于哪个区域?

函数f中通过malloc分配的内存位于堆(Heap)。

④函数main中的静态变量s存储在内存的哪个区域?

函数main中的静态变量s存储在数据段(Data Segment)。

⑤在函数f执行过程中,当调用malloc时,栈指针(SP)和程序计数器(PC)会如何变化?

当函数f调用malloc时,栈指针(SP)会向低地址方向移动(因为栈是从高地址向低地址生长),为局部变量local和指针p在栈上分配空间;程序计数器(PC)会指向malloc函数在内存中的代码位置(位于文本段,Text Segment),执行malloc函数的二进制指令,然后在堆上分配 100 字节的内存,堆指针会相应调整以指向新分配的内存块。


2.进程的状态

三状态

9d874003c3f3441cb7f00730898b2b4c.png

进程何时离开CPU

内部事件:进程主动放弃(yield)CPU,进入等待/终止状态;使用I/O设备,(非)正常结束(除零异常)。

外部事件:进程被剥夺CPU使用权,进入就绪状态,这个动作叫抢占(preempt);时间片到达,高优先权进程到达。

五状态

a60358dc052e459da6eac50b2eca4e83.png

七状态

a5d695de14f046faab085fec8f304cb7.png


【简答题】进程的三状态/五状态/七状态具体是什么?

三状态模型是最简单的进程状态模型,包括:

(1)运行(Running): 进程正在使用CPU,其指令正在执行。

(2)就绪(Ready): 进程具备执行条件,可以获得CPU执行,但当前未被分配CPU。

(3)阻塞(Blocked/Waiting): 进程正在等待某个事件发生(如I/O操作完成),暂时不能执行。

五状态模型增加了对进程创建和终止的支持,包括:

(1)新建(New):进程正在被创建,系统尚未对其进行完全初始化。

(2)就绪(Ready):已准备好运行,但未获得CPU。

(3)运行(Running):正在使用CPU执行。

(4)阻塞(Blocked/Waiting):等待事件(如I/O)完成。

(5)终止(Terminated/Exit):进程执行完成或被终止,等待操作系统进行清理。

七状态模型详细描述了进程切换的多个转变状态,具体状态可能因设计而异,一般包括:

(1)新建(New):进程正在被创建,系统尚未对其进行完全初始化。

(2)就绪(Ready):已准备好运行,但未获得CPU。

(3)运行(Running):正在使用CPU执行。

(4)阻塞(Blocked/Waiting):等待事件(如I/O)完成。

(5)终止(Terminated/Exit): 进程执行完成或被终止,等待操作系统进行清理。

(6)挂起就绪(Ready Suspended): 进程已被挂起,但若从挂起中恢复即可直接运行。

(7)挂起阻塞(Blocked Suspended): 进程处于阻塞状态,并已被挂起。


3.进程的切换 

中断是触发事件,可能会导致上下文切换,而进程切换是上下文切换在进程层面的一种体现。

进程切换是上下文切换的一种特殊情况,它特指 CPU 从一个进程的执行切换到另一个进程的执行。而上下文切换是指在多任务操作系统中,CPU 从一个进程(或线程)的运行环境切换到另一个进程(或线程)的运行环境的过程。

切换时机

进程需要进入等待状态(主动)

进程被抢占CPU而进入就绪状态(被动)

切换过程

保存被中断进程的上下文信息(Context)

修改被中断进程的控制信息(如状态等)

将被中断的进程加入相应的状态队列

调度一个新的进程并恢复它的上下文信息

【简答题】进程的上下文都包含哪些具体的内容?

进程的上下文主要包含以下两个方面:

(1) 运行实体: 栈、堆、数据段和文本段以及与之相关联的程序计数器(PC)、栈指针(SP)、通用寄存器等。

(2) 进程控制块(PCB)信息: 进程标识符(PID)、进程状态、优先级、打开的文件列表等。

eab9de8101604044b6f40115afbfba0a.png


通过系统调用创建新进程:system(),fork(),exec()


4.进程通讯

什么是进程通信?进程通信是指在操作系统中,不同的进程之间交换数据和信息的方式。其主要目的是为了在多进程环境中实现同步、资源共享和数据共享。

35fc856a57354fa0b6a6ed5f8e8db8fd.png

Linux常见的进程通信机制

①管道:匿名管道,命名管道(FIFO)

②消息队列

③共享内存

④信号量和 PV 操作

⑤信号

⑥套接字

5.线程<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值