🏷️ 知识点:进程内存空间

共 2 道相关题目

模拟卷 年第 39 题 计算机网络 选择题

TCP 的通信双方,有一方发送了带有 FIN 标志的数据段后表示( )。

A. 将断开通信双方的 TCP 连接 B. 单方面释放连接,表示本方已经无数据发送,但是可以接受对方的数据 C. 中止数据连接,双方都不能发送数据 D. 连接被重新建立

进程内存空间

[tag_link]

正确答案:B

在 TCP 协议中,FIN(Finish)标志用于终止连接。

当通信一方发送带有 FIN 标志的数据段时,表示该方已经完成数据发送,并希望关闭从本方到对方的单向连接。 此时,连接进入“半关闭”状态:发送 FIN 的一方不再发送数据,但仍可以接收对方发送的数据,直到对方也发送 FIN 来关闭另一个方向的连接。

选项 A 错误,因为发送 FIN 并不会立即断开通信双方的 TCP 连接,对方可能仍需发送剩余数据; 选项 C 错误,因为发送 FIN 后,对方在确认前仍可发送数据; 选项 D 错误,因为 FIN 用于连接终止,而非重新建立连接。 因此,只有选项 B 准确描述了发送 FIN 后的状态。


2025 年第 46 题 操作系统 综合题

某进程的虚拟地址空间如图,阴影部分为未占用区域,有 C 程序:

char * ptr;
void main() {
    int length;
    ptr=(char*) malloc(100);
    scanf("%s", ptr);
    length = strlen(ptr);
    printf("length=%d\n", length);
    free(ptr) ;
}

(1) 上述程序执行时,PCB 位于哪个区域,执行 scanf () 等待键盘输入时,该进程处于什么状态?

(2) main() 函数的代码位于哪个区域?其直接调用的哪些函数的功能需要通过执行驱动程序实现?

(3) 变量 ptr 被分配在哪个区域?若变量 length 没有被分配在寄存器中,则会被分配在哪个区域?ptr 指向的字符串位于哪个区域?

进程内存空间

[tag_link]

本题考察 进程内存空间,题目中给出的内存结构和标准 linux 进程结构由些许差异,主要不同点在于图中的 读/写代码段 将 .bss 和 .data 融合了,考生看到能够理解就可以。

1)进程管理属于操作系统提供的功能,所以 PCB(进程)位于内核区,执行 scanf() 时,进程在等待键盘 I/O,处于阻塞态。

2)main() 函数的代码位于只读代码段(.text),其直接调用的 scanf() 和 printf() 需要执行驱动程序。

3)ptr 是作为全局变量定义的,所以其位于读/写数据段,length 变量在 main 函数中定义,如果该变量不在寄存器中被分配的话,那么就位于用户栈段,ptr 指针指向的内存单元是使用 malloc 函数动态分配的,位于堆区。