多任务(20250210)

1. 进程的概念

(1) 程序:是一段存放在外存中代码的集合(静态的)

(2) 进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的)

2. 如何实现多任务

Linux中,通过进程、线性实现多任务

3. 进程

正在执行的程序(动态),需要消耗内存和CPU,是一个动态执行的过程

进程的生存周期:创建 -> 调度 -> 消亡

进程:源代码编译为可执行程序,运行程序,消耗CPU和内存资源

进程和程序的区别:

1)程序是永存,进程是暂时的

2)进程有程序状态的变化,程序没有

3)进程可以并发,程序无并发

4)进程与进程会存在竞争计算机的资源

5)一个程序可以运行多次,变成多个进程, 一个进程可以运行一个或多个程序

4. 进程的创建

每个进程被创建时,操作系统回味进程创建4G虚拟的内存空间

系统启动(空间被创建)时,bss段按位清零

5. 进程调度

原则:保障多个任务能同时执行

1)宏观并行

多个任务同时向下执行

2)微观串行

CPU在多个任务中快速切换,保障多个任务同时向下执行

多任务操作系统分为:

非抢占式多任务:由调度程序来决定什么时候停止一个进程的运行(如时间片结束时),以便其他进程得到执行机会

Unix, Linux抢占式多任务:除非进程自己主动停止运行,否则会一直执行。

Mac os9 Windows3.1

常用调度算法:

  1. 先来先执行,后来后执行

  2. 短作业优先

  3. 高优先级调度算法

  4. 时间片轮转调度算法

6. 进程的状态

1)运行态(用户运行态、内核运行态) R

正在执行,且被CPU任务调度所执行的进程

2)就绪态 R

正在执行,没有CPU任务调度执行的进程(只缺少cpu)

3)可唤醒等待态 S

也称为睡眠态,阻塞等待资源的进程

4 )不可唤醒等待态 D

不想被CPU任务调度所打断的进程任务可以设置为不可唤醒等待态

5) 暂停态 T

被暂停执行的进程

6) 僵尸态 Z

进程执行结束,空间没有被回收

7) 结束态 X

进程执行结束,空间被回收

三态图

Linux七态图

7. 进程相关指令

1.ps -aux

查看进程状态

ps -aux|grep a.out

2.top

根据CPU占用率查看进程信息

q 退出

3.ps -ef

查看当前时刻进程信息

PID:进程的ID号(唯一)

PPID:父进程的ID号

4.pstree

查看进程关系

pstree -p

查看所有进程关系及pid号

pstree -sp + 进程id号

查看某一进程关系

5.kill

killall

给进程发送一个信号

kill -9 进程PID

killall -9 进程名

6.jobs

查看当前终端下的后台执行任务

7.fg 编号

让一个后台执行的任务放到前台执行

8 进程相关接口

父子进程:

父进程:创建新进程的进程称为新进程的父进程

子进程:被创建的进程称为原进程的子进程

8.1 fork 函数

pid_t fork(void);

一次调用,会返回两次。

子进程先运行还是父进程先运行,顺序不确定,变量不共享。

子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。

功能:通过该函数可以从当前进程中克隆一个同名新进程。

克隆的进程称为子进程,原有的进程称为 父进程。

子进程是父进程的完全拷贝。

子进程的执行过程是从fork函数之后执行。

子进程与父进程具有相同的代码逻辑。

参数:

返回值:

失败返回-1

成功父进程中返回子进程的PID

子进程中返回0

8.2 getpid函数

pid_t getpid(void);

功能:

获得调用该函数进程的pid

参数:

返回值:

进程的pid

8.3 getppid函数

pid_t getppid(void);

功能:

获得调用该函数进程的父进程pid号

参数:

返回值:

返回父进程id号

相关推荐
laimaxgg14 分钟前
Docker命令
linux·运维·服务器·ubuntu·docker
yuren_xia1 小时前
Vim 编辑器的常用快捷键介绍
linux·编辑器·vim
Chance Z1 小时前
Ubuntu搭建Pytorch环境
linux·pytorch·ubuntu
m0_521118231 小时前
ubuntu 22.04配置cuda和cudnn
linux·ubuntu
傍晚冰川2 小时前
【STM32】解读启动文件startup_stm32f10x_md.s
linux·笔记·stm32·单片机·学习
宇泽希3 小时前
防火墙ip白名单配置
linux
Ronin-Lotus3 小时前
嵌入式通信篇---通信频段
linux·运维·网络·通信·频段
lgily-12254 小时前
Linux机器测试IP及端口连通性方法记录
linux·运维·tcp/ip
weixin_贾4 小时前
【海洋建模实战】从0到1掌握ROMS全流程!Linux开发+多尺度耦合+风暴潮模拟
linux·拉格朗日·roms·风暴潮耦合模拟·粒子追踪模拟
_zwy5 小时前
【Linux 进程控制】—— 进程亦生生不息:起于鸿蒙,守若空谷,归于太虚
linux·运维·服务器·c++