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

进程IO之 进程

一、进程相关概念

1.什么是进程

程序:静态的,编译好的可执行文件,存放在磁盘中的指令和数据的集合

进程:动态的,是程序的一次执行过程,是独立的可调度的任务

2.进程的特点

(1)对32位系统,系统会为每个进程分配0~4G的虚拟空间,其中,0~3G(用户空间)是每个进程独有的,3~4G(内核空间)是所有进程共有

      进程间通信:通过内核空间

(2)  CPU调度进程时会给进程分配时间片(几毫秒~十几毫秒),当时间片用完后,cpu再进行其他进程的调度,实现进程的轮转,从而实现多任务的操作。(没有外界干预的情况下怎么调度进程是CPU随机分配的 )

(3)进程控制块task_struct(了解)

● 进程控制块pcb:包含描述进程的相关信息

● 进程标识PID:唯一的标识一个进程

                主要进程标识:

                进程号(PID: Process Identity Number)

                父进程号:(Parent Process ID: PPID)

● 进程用户

● 进程状态、优先级

● 文件描述符(记录当前进程打开的文件)

3.进程段

Linux中的进程大致包含三个段:

数据段存放的是全局变量、常数以及动态数据分配的数据空间(如malloc函数取得的空间)等。

正文段:存放的是程序中的代码

堆栈段存放的是函数的返回地址、函数的参数以及程序中的局部变量 (类比内存的栈区)

4.进程分类

 交互进程:该类进程是由shell控制和运行的。交互进程既可以在前台运行,也可以在后台运行。 该类进程经常与用户进行交互,需要等待用户的输入,当接收到用户的输入后,该类 进程会立刻响应,典型的交互式进程有:shell命令进程、文本编辑器等

批处理进程:该类进程不属于某个终端,它被提交到一个队列中以便顺序执行。

守护进程:该类进程在后台运行。它一般在Linux启动时开始执行,系统关闭时才结束。
               (使用top命令查看进程信息时,tty字段为?的进程)

 5.进程状态

                      

6. 进程状态切换

           

 7.进程相关命令

补充优先级调度

根据进程的优先级进行调度,优先级高的进程先执行。

两种类型:

1.  非剥夺式(非抢占式)优先级调度算法。当一个进程正在处理上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在进行的进程继续运行,直到由于其自身原因而主动让出处理机(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。

2.  剥夺式(抢占式)优先级调度算法。当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。

二、进程函数接口

1.创建进程 fork()

 #include <sys/types.h>#include <unistd.h>/*
功能:创建子进程
返回值:   成功:父进程-->返回子进程进程号子进程-->返回0失败:父进程-->返回-1,并设置errno子进程并未创建*/
pid_t fork(void);

特点:

1)子进程几乎拷贝了父进程的全部内容。包括代码、数据、系统数据段中的pc值、栈中的数据、父进程中打开的文件等;但它们的PID、PPID是不同的。

2)父子进程有独立的地址空间,互不影响;当在相应的进程中改变全局变量、静态变量,都互不影响。

3)若父进程先结束,子进程成为孤儿进程,被init进程收养,子进程变成后台进程。

4)若子进程先结束,父进程如果没有及时回收资源,子进程变成僵尸进程(要避免僵尸进程产生)

http://www.lryc.cn/news/2386723.html

相关文章:

  • OpenGL Chan视频学习-5 Vertex Attributes and Layouts in OpenGL
  • ESP32学习笔记_Peripherals(3)——ADC
  • QT学习一
  • 黑马点评Reids重点详解(Reids使用重点)
  • 小米2025年校招笔试真题手撕(一)
  • 《软件工程》第 11 章 - 结构化软件开发
  • MongoDB基础知识(浅显)
  • Neo4j(三) - 使用Java操作Neo4j详解
  • MPI实现大数据Ring Broadcast逻辑
  • 蓝桥杯3503 更小的数
  • 高并发下使用防重表做防重案例
  • 算法-全排列
  • 最好用的wordpress外贸主题
  • 2025 河北ICPC( D. 金泰园(二分)-- C.年少的誓约(公式转化))
  • mongodb语法$vlookup性能分析
  • 晶圆隐裂检测提高半导体行业效率
  • 临床试验中的独立数据监查委员会
  • 在 LangChain 中集成 Mem0 记忆系统教程
  • PTA练习题
  • 华润电力招聘认知能力测评及性格测评真题题库考什么?
  • Maven Profile在插件与依赖中的深度集成
  • 手机平板等设备租赁行业MDM方案解析
  • 【前端】使用HTTPS
  • Python应用“面向对象”小练习
  • 如何调试CATIA CAA程序导致的CATIA异常崩溃问题
  • SQL查询效率以及索引设计
  • day37打卡
  • 分布式缓存:证明分布式系统的 CAP 理论
  • 软件设计师“面向对象设计”真题考点分析——求三连
  • vue项目webpack、vite、rollup、parcel四种构建工具对比