系统编程day04

news2025/5/29 8:21:42

一.进程的基本概念

一.定义

         进程是一个程序执行的过程(也可以说是正在运行的程序),是系统分配资源的基本单位,由cpu对各个进程指挥调度,在单核cpu的情况下,各个进程可以通过一定规则在cpu上并发运行。

二.PCB块

1.PCB是一个结构体(对应的结构体为task_struct),全名是process control block

(进程控制块)/print circuit board;

2.一个进程运行就有对应的一块pcb块,它记录着运行程序的所有信息和状态

3.pcb中包含着:

                PID—进程标识符(区分进程用的是ID号)
                chdir—当前工作路径
                umask 0002--合适的权限
                fds—进程打开的文件列表
                signal—信号相关设置 处理异步io:
                用户id,组id:记录谁运行的,与权限有关
                进程资源的上限(ulimit -a,显示资源上限);

三.进程和程序的区别


1.程序是静态的,存储在硬盘中代码,数据的集合;

2.进程是动态,程序执行的过程,包括进程的创建、调度、消亡;

        .c ----> a.out-----> process(pid)

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

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

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

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

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

二.内存空间

(1)code(代码段):只读特性

(2)data(数据段):可读可写;装全局变量、静态变量(带初值)(bss:未初始化变量)

(3)heap(堆区):可读可写;动态内存空间,程序员使用malloc申请

(4)Map/share(映射/共享区):只读;外部代码共享过来

(5)Stack 8M(栈):可读可写;最大不超过8M

3.虚拟地址空间共4G:0~ 3G,是进程的空间,3G~4G是内核的空间

4.虚拟内存/地址 :透明、隔离、权限

5.映射表

(1)映射表将虚拟内存的地址转换为物理内存的地址;

(2)映射表通常由页表(Page Table)组成,它记录了虚拟地址到物理地址的映射关

        系;

(3)一个页面大小通常为4k(4036字节);

 三.进程的状态

1.基本操作系统三个操作状态:就绪→执行态→阻塞(等待,睡眠)

     就绪状态:进程已经准备好执行,所有的资源都已分配,只等待CPU时间执行

2.linux中的状态:运行态,睡眠态,僵尸,暂停态;

  Linux进程状态及转换关系:

3.进程的分类


1.交互式进程

2.批处理进程 (shell脚本)(批量执行一次命令)

3. 守护进程(程序走起来不需要输入,eg:杀毒类软件、启动输入法)

4.进程的作用


1.并发性:允许多个进程同时运行,提高了CPU利用率和系统响应速度;

2.稳定性:如果一个进程发生错误,通常不会影响到其他进程,这提高了系统的稳定性;

5.进程的调度


1.调度器通过调度策略来决定哪个进程先运行;

2.内核主要功能之一就是完成进程调度, 硬件,bios,io,文件系统,驱动;

3.调度算法:other(常规默认的),idle,rr,fifo  先来先服务   短任务优先   优先级    时间片轮转

4.扩展

(1)分时操作系统:Linux、Windows(尽量在规定时间内完成)

(2)实时操作系统:rt_thread ucos(规定时间内必须完成)

5.进程上下文切换:就是值指调度器要切换CPU给另一个进程的时候,要保存当前进

      程的状态,然后加载打开一个新的进程这样的一个过程。

6.宏观并行:在一个时间段多个任务和进程是同时进行的

7.微观串行:在一个时间点只能一条一条指令执行

 四.进程的相关命令

1、ps aux

 主要看进程号、进程状态

查看进程相关信息:(PROCESS STATE CODES)
(1)就绪态、运行态 —— R
(2)睡眠态、等待态
        可唤醒等待态 ——S
        不可唤醒等待态 ——D
(3)停止态 ——T
(4)僵尸态 ——Z

(5)结束态

2、top

 根据CPU占用率查看进程相关信息(3秒刷一下)
PR NI 表示优先级
数字越小代表优先级越高

3、kill和killall

kill -2 PID 15

其中PID为接受者,终端为发送者


发送信号+PID对应的进程,默认接收者关闭

killall -9 进程名(强制关闭)


发送信号 进程名对应的所有进程
killall a.out

 4.fork()函数

        pid_t fork();

1.特点:

(1)一次调用,会返回两次;

(2)子进程先运行和是父进程先进程,顺序不确定;

(3)变量不共享(虚拟隔离机制);

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

2.功能:

3.通过该函数可以从当前进程中克隆一个同名新进程;

(2)克隆的进程称为子进程,原有的进程称为 父进程;

(3)子进程是父进程的完全拷贝;

(4)子进程的执行过程是从fork函数之后执行;

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

4.返回值:int 类型的数字;

(1)在父进程中:成功 返回值是子进程的pid号 >0 

                               失败 返回-1;

(2)在子进程中:成功 返回值 0

                               失败 无

5.getpid()函数
        pid_t getpid(void);

1.功能:获得调用该函数进程的pid

2.参数:缺省

3.返回值:进程的pid

6.getppid()函数
        pid_t getppid(void);

1.功能:获得调用该函数进程的父进程pid号

2.参数:缺省

3.返回值:返回父进程id号

五.父子进程

1.子进程是父进程的副本,子进程获得父进程数据段,堆、栈正文段共享;

2.区别:

(1)fork的返回值 父的是大于0,子是等于0;

(2)pid不同 子相对于父至少要加个1;

写时复制

1.定义:写时复制是计算机编程里的一种优化策略。它的核心思想在于,进行数据修

改操作时,并非马上复制整个数据对象,而是要等到真正需要修改数据的那个时刻才执

行复制操作。这样做能够避免不必要的数据复制,进而提升系统性能,提高资源利用

率。

2.优点:提高效率、创建子进程速度快、开的空间少、回收速度快

 

六.进程的终止(8种情况)


1.主动退出

(1)main 中 return

(2)exit(), c库函数,会执行io库的清理工作,关闭所有的流,以及所有打开的文

        件。已经清理函数(atexit);(函数一调,进程结束,再退之前释放该释放的资

        源)

(3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。(单调函数,进程

        结束,但清理的相对较少)

(4) 主线程退出

(5)主线程调用pthread_exit

2.异常终止

(6)abort(),该函数禁止应用层调用,发生严重错误系统调用;

(7)signal   kill pid   有权限的发送信号(内存访问错误则发送信号结束)

(8)最后一个线程被pthread_cancle(线程属于进程的一部分,进程里面无线程会退

        出)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2386158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arduino Uno KY-037声音传感器实验

KY-037声音传感器实验 KY-037声音传感器实验1、 实验内容2、KY-037声音传感器介绍3、实验注意事项4、代码和实验现象 KY-037声音传感器实验 1、 实验内容 通过对KY-037声音传感器吹气,控制LED的打开和关闭,吹一下LED打开,在吹一下LED关闭。…

基于音频Transformer与动作单元的多模态情绪识别算法设计与实现(在RAVDESS数据集上的应用)

摘要:情感识别技术在医学、自动驾驶等多个领域的广泛应用,正吸引着研究界的持续关注。本研究提出了一种融合语音情感识别(SER)与面部情感识别(FER)的自动情绪识别系统。在SER方面,我们采用两种迁…

什么是VR实景?有哪些高价值场景?

在数字化浪潮的推动下,虚拟现实技术正以前所未有的速度改变着我们的生活方式和工作模式。 其中,VR实景作为VR技术的一个重要应用场景,独特的沉浸感和交互性,在众多领域展现出应用潜力和高价值场景。什么是VR实景?VR实…

同一无线网络下的设备IP地址是否相同?

在家庭和办公网络普及的今天,许多人都会好奇:连接同一个Wi-Fi的设备是否共享相同的IP地址?这个问题看似简单,实则涉及多个角度。本文将为您揭示其中的技术奥秘。 用一个无线网IP地址一样吗?同一无线网络(如…

第2周 PINN核心技术揭秘: 如何用神经网络求解偏微分方程

1. PDEs与传统数值方法回顾 (Review of PDEs & Traditional Numerical Methods) 1.1 什么是偏微分方程 (Partial Differential Equations, PDEs)? 偏微分方程是描述自然界和工程领域中各种物理现象(如热量传播、流体流动、波的振动、电磁场分布等)的基本数学语言。 1.…

【C语言】习题练手套餐 2

每日习题分享。 字符串函数的运用 首先回顾一下字符串函数。 字符串长度 strlen(const char *s);功能:计算字符串的长度,不包含终止符\0。 字符串连接 char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, si…

[项目总结] 基于Docker与Nginx对项目进行部署

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

神经正切核推导(2)

对神经正切核的理解和推导(1)-CSDN博客 这篇文章包括很多概念的理解 声明: 本篇文章来自于Neural Tangent Kernel (NTK)基础推导 - Gearlesskai - 博客园 旨在对上述推导过程进行再推导与理解 手写推导部分与其他颜…

Ctrl+鼠标滚动阻止页面放大/缩小

项目场景: 提示:这里简述项目相关背景: 一般在我们做大屏的时候,不希望Ctrl鼠标上下滚动的时候页面会放大/缩小,那么在有时候,又不希望影响到别的页面,比如说这个大屏是在另一个管理后台中&am…

3d世界坐标系转屏幕坐标系

世界坐标 ——> NDC标准设备坐标 ——> 屏幕坐标 标准设备NDC坐标系 屏幕坐标系 .project方法将 将向量(坐标)从世界空间投影到相机的标准化设备坐标 (NDC) 空间。 手动实现HTML元素定位到模型位置,实现模型标签效果(和css2Render原理同理&#…

【2025】基于Springboot + vue + 协同过滤算法实现的旅游推荐系统

项目描述 本系统包含管理员和用户两个角色。 管理员角色: 用户管理:管理系统中所有用户的信息,包括添加、删除和修改用户。 配置管理:管理系统配置参数,如上传图片的路径等。 权限管理:分配和管理不同角…

AI数据治理破局的战略重构

AI数据治理破局的战略重构 AI正在颠覆传统数据治理模式动态策略驱动的AI治理新模式构建AI时代的数据防护栏结语 人工智能正重塑商业世界,那些真正理解当代数据治理变革的企业将占据决定性优势。 旧日的数据治理手册已经无法应对AI时代的全新挑战,我们需要…

QT6安装与概念介绍

文章目录 前言installModulesQt Core元对象系统属性系统对象模型对象树和所有者信号 & 槽 前言 QT不是纯粹的C标准,它在此基础上引入MOC编译器,在调用C编译器之前会使用该编译器将非C的内容如 Q_OBJECT、signal:等进行处理。此外QT还引入了对象间通…

Docker(二):开机自启动与基础配置、镜像加速器优化与疑难排查指南

引言 docker 的快速部署与高效运行依赖于两大核心环节:基础环境搭建与镜像生态优化。本期博文从零开始,系统讲解 docker 服务的管理配置与镜像加速实践。第一部分聚焦 docker 服务的安装、权限控制与自启动设置,确保环境稳定可用&#xff1b…

Lua基础语法

文章目录 一、注释二、 数据类型1. 注意事项2. 全局/局部变量 三、 标识符1. 保留字2. 变量3. 动态类型 四、 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 其他运算符 五、 函数1. 固定参函数2. 可变参函数3. 可返回多个值4. 函数作为参数 六、循环控制语句1. while...do…

2025年渗透测试面试题总结-匿名[实习]安全工程师(安全厂商)(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一面技术问题 1. Burp插件原理 2. JavaWeb项目经验 3. CC1-7链原理(以CC6为例&#xff0…

【node.js】实战项目

个人主页:Guiat 归属专栏:node.js 文章目录 1. 项目概览与架构设计1.1 实战项目:企业级电商管理系统1.2 技术栈选择 2. 项目初始化与基础架构2.1 项目结构设计2.2 基础配置管理 3. 用户服务实现3.1 用户服务架构3.2 用户模型设计3.3 用户服务…

免费插件集-illustrator插件-Ai插件-查找选中颜色与pantone中匹配颜色

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,实现查找选中颜色与pantone中匹配颜色。首先从下载网址下载这款插件https://download.csdn.net/download/m0_6731…

[爬虫实战] 爬微博图片:xpath的具体运用

博客配套代码发布于github:微博图片 相关知识点:图片懒加载 [爬虫知识] 数据解析 相关爬虫专栏:JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 这里我们以网页微博图片为例,尝试获取该页面下所有图片并保存。 一、分析网站 刷…

MySQL中简单的操作

一.数据库 1.1数据库的建立: create database 库名; 1.2数据库的查看: show databases; 1.3数据库的删除: drop database 库名; 二.数据库中的表 2.1表的建立: create table 表名&…