当前位置: 首页 > article >正文

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 函数回收子进程空间。


http://www.kler.cn/a/555831.html

相关文章:

  • 图解RNN中的梯度消失与爆炸问题
  • 【每日论文】TESS 2: A Large-Scale Generalist Diffusion Language Model
  • Ollama常用命令详解:快速掌握核心操作
  • 解决element-ui的el-select使用filterable属性时,下拉框展开后,点击箭头图标收不回去问题
  • ARM Linux V4L2 Camera 实验
  • 后台管理系统-月卡管理
  • 蓝桥杯 Java B 组之全排列与子集生成(掌握回溯模板)
  • Spring全面讲解(无比详细)
  • Https通信中证书验证流程
  • 前端三大件之一HTML
  • IntelliJ IDEA 控制台输出中文出现乱码
  • VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合
  • 1.13作业
  • 详解Nginx 配置
  • 关于ES中text类型时间字段范围查询的结构化解决方案
  • SprinBoot整合HTTP API:从零开始的实战指南
  • 以太网的PHY(物理层)详解
  • 适配器模式 Adapter Pattern
  • 如何设计提示词让AI以思维链方式回答问题
  • Linux:文件(二)