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

相关推荐
一只栖枝2 小时前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
wuicer5 小时前
ubuntu 20.04 安装anaconda以及安装spyder
linux·运维·ubuntu
玩转以太网6 小时前
基于W55MH32Q-EVB 实现 HTTP 服务器配置 OLED 滚动显示信息
服务器·网络协议·http
cui__OaO6 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
小狗爱吃黄桃罐头6 小时前
正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
linux·驱动开发·学习
小晶晶京京7 小时前
day34-LNMP详解
linux·运维·服务器
画个太阳作晴天7 小时前
A12预装app
linux·服务器·前端
艾莉丝努力练剑7 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
fengyehongWorld7 小时前
Linux crontab定时任务
linux·运维
shuangrenlong8 小时前
ubuntu更新chrome版本
linux·chrome·ubuntu