Linux自学day23-进程和线程

1. 什么是进程?

进程是程序执行的过程,涵盖创建、调度和消亡阶段,是活的。

程序是一段数据的集合,是死的。

进程还是操作系统资源分配的最小单元,拥有独立的虚拟地址空间,包括文本段、数据段、系统数据段等区域,用于存储代码、数据等不同类型信息。

2. 进程空间如何划分?每个区域的特点?每个区域存放哪些数据?

32 位操作系统中,进程有 0 - 4G 虚拟内存空间,包含内核栈区系统数据段堆区数据段未初始化数据段 (.bss)、字符串常量区 (.rodata)、文本段

文本段:存储代码和指令;

数据段:存放全局变量、静态变量、字符串常量,编译时分配空间,程序结束回收;

系统数据段:栈区由操作系统管理,存放局部变量,变量定义时分配空间,作用域结束回收,未初始化值为随机值;堆区由程序员管理,通过 malloc 申请、free 释放;

内核:操作系统核心区域,用户无法访问,负责多种系统管理任务。

3. 常见的进程调度算法有哪些?

常见的进程调度算法有:

先来先执行(先到的任务先执行)

高优先级调度算法(优先执行优先级高的任务)

时间片轮转调度算法(CPU 按固定时间片在进程间切换执行)

多级队列反馈(根据进程特性划分队列,不同队列有不同调度策略)

负载均衡调度算法(将任务均衡分配到多个处理器上执行)

4. 进程状态分为哪几种类型?

进程状态分为:

就绪态(正在运行的任务,未占用 CPU)

运行态(正在运行且占用 CPU)

可唤醒等待态(进程挂起,等待资源到达后继续执行)

不可唤醒等待态(进程挂起,等待特定信号继续执行)

暂停态(进程挂起,等待 CPU 指令继续执行)

僵尸态(代码执行完毕,但空间仍存在)

结束态(代码执行完毕,空间被回收)

5. 进程相关的命令有哪些?

进程相关命令有:

top:按 CPU 占用率查看当前所有进程任务

ps -ef:查看所有进程,可与 grep 组合查找特定进程

ps -aux:查看进程状态

pstree:查看所有进程的关系

kill:通过 PID 或进程名终止进程

在命令后加 &:在后台执行程序。

6. 如何创建进程?fork 和 vfork 有什么区别?

通过 fork 函数创建进程,fork 函数调用后会创建一个子进程,父进程和子进程从 fork 函数调用处开始并发执行。

fork 和 vfork 的区别在于:

fork 创建的子进程拥有独立的地址空间,父子进程的地址空间相互独立

vfork 创建的子进程共享父进程的地址空间,子进程执行期间父进程被阻塞,直到子进程调用 exit 或 exec 系列函数,并且 vfork 保证子进程先运行。

7. 什么是僵尸进程?如何产生?如何避免?

僵尸进程是进程执行结束后,空间没有被回收的进程。

产生原因是子进程结束时,父进程未回收其空间。

避免方法有两种:

一是让父进程先结束,子进程成为孤儿进程被 init 进程收养,子进程结束时 init 进程回收其空间;二是子进程结束时,父进程使用 wait 或 waitpid 函数回收子进程空间。

相关推荐
自由鬼9 分钟前
开源漏洞扫描器:OpenVAS
运维·服务器·安全·网络安全·开源·漏洞管理
難釋懷11 分钟前
Shell脚本-while循环语法结构
linux·运维·服务器·bash
B64A-消闲28 分钟前
shell命令一
linux·运维
biter008830 分钟前
ubuntu(28):ubuntu系统多版本conda和多版本cuda共存
linux·人工智能·ubuntu·conda
embedded_w34 分钟前
U8G2在PC端模拟(C语言版本)
c语言
兜小糖的小秃毛36 分钟前
两段文本比对,高亮出差异部分
linux·前端·javascript
电鱼智能的电小鱼1 小时前
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
linux·网络·人工智能·嵌入式硬件·无人机·边缘计算
星霜旅人1 小时前
【Linux】Vim文本编辑器
linux
難釋懷1 小时前
Shell脚本-for循环应用案例
linux·运维·服务器·bash
矛取矛求2 小时前
C++区别于C语言的提升用法(万字总结)
c语言·c++