进程的部分知识点总结

进程地址空间与页表方面知识点(缺页中断及写时拷贝部分原理) 何为进程进程 = 内核数据结构(PCB+mm_struct+页表(MMU))+ 代码和数据看一份代码我们知道,当子进程出现写实拷贝的时候,将共享的数据拷贝一份,为子进程独立存储。让我们运行该代码。分析结果:1、写实拷贝前:在写实拷贝前子进程与父进程的flag数据相同,数据地址相同,无可厚非为写时拷贝前,父子进程共享一块数据空间2、写实拷贝:子进程准备修改flag数据,先发生写实拷贝-父进程的flag数据拷贝一份,然后拷贝的空间给子进程形成独立,然后子进程的数据flag改变为222。 阅读详情

         本篇博客将为大家分析进程的调度算法、task_struct结构体,模拟实现僵尸进程and孤儿进程,

并对进程与虚拟空间做相应的阐述,最后将使用setenv、export等环境变量 相关的函数和命

令进行相应的操作 。

task_struct结构体:

task_struct是什么?首先我们对该结构体做一个相对的认识。

       linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一

个进程所需要的所有信息它在定义在linux-2.6.38.8/include/linux/sched.h文件中

task_struct主要包含以下几个成员:
1)进程状态,记录进程在等待、运行或死锁
2)调度信息,由那个调度函数调度,怎么调度等
3)进程的通讯状态
4)因为也要插入进程树,必须 有联系父子兄弟的指针,当然是task_struct型
5)时间信息,比如计算好执行时间,以便cpu分配
6)标号,决定进程归属
7)可以读写 打开的一些文件信息
8)进程上下文和内核上下文
9)处理器上下文

10)内存信息


进程的调度算法:

关于进程的调度方法,以下将对其中的五种方法做一个总结:

1)时间片轮调度算法(RR):给每个进程固定的执行时间,根据进程达到的先后顺序在单位时间片

内执行,执行完成后便调度执行下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,

属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。使用于分时

系统。

2)先来先服务调度算法(FCFS):根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,

会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短工作

3)优先级调度算法(HPF):在进程等待队列中选择优先级最高的来执行。

4)多级反馈队列调度算法:将时间片轮转和优先级调度相结合,把进程优先级分成不同的队列,先

按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的相应时间,可行性强,

适用于各种作业环境。

5)高响应比优先级调度算法:根据“响应比=(进程执行时间+进程等待时间)/进程执行时间”这个

公式得到的响应比来进行观察。高响应比会随着等待事件增加而变大,优先级会提高,能够避免饥饿

现象。优点是兼顾长短作业,缺点是计算机响应开销大,适用于处理系统。


僵尸进程与孤儿进程的实现:

在linux中,进程分为多种状态,如下:
R(running):运行状态;
S(sleeping):睡眠状态(浅度睡眠);
D(disk sleep):磁盘睡眠状态;
T(stopped):停止状态;
X(dead):死亡状态;
Z(zomble):僵尸状态

       僵尸状态是一种比较特殊的状态:当进程退出并且父进程(使用wait()系统调用)没有读取到子

进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直等待父

进程读取退出状态代码。如果父进程还存在而一直不调用wait,则该僵尸进程将无法回收,等待其父进

程退出后该进程将被init回收。

代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<unistd.h>

int main(){
pid_t pid=getpid();
pid_t id=fork();
if(id = -1){
printf("fork error!return code is %d\n",errno);
return;
}
else if(id = 0){
printf("child pid is %d\n",getpid());
exit();
}
else{
while(1){
printf("father pid is %d,return pid is %d\n",getpid(),id);
       sleep(1);
}
}
return 0;
}
孤儿进程:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main(){
int id=fork();
if(id = -1){
printf("fork error!return code is %d\n",errno);
return;
}
else if(id = 0){
printf("child pid is %d,parents pid is %d\n",getpid(),getppid());
sleep(3);
}
else{
printf("father pid is %d,child pid is %d\n",getppid(),getpid());
       printf("father process is exxited!\n");
}
return 0;
}


set env, export等函数的区别:



   1) env是显示变量 ;
set和export是设置变量;
set用于csh环境;
export用于bash环境;
   格式:
set DISPLAY 192.168.1.1:0
export DISPLAY =192.168.1.1:0
   2)  env命令显示用户的变量;
        export命令显示当前导出成用户变量的shell变量


   3)  set命令显示当前shell的变量,包含当前用户的变量;
env命令显示当前用户的变量;
export命令显示当前导出成用户变量的shell变量。  

        每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用

什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,

        但shell自己的变量不同shell是不同的,比如BASH_ARGC,  BASH等,这些变量只有set才会显示,

是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变

量可以通过export “导出”变成一个用户变量。




































北航软件学院复试专业课知识点梳理(操作系统部分) 1.并发是指一段时间运行多个程序,并行是同一时刻多个指令,并行一般需要硬件支持,并发是通过进程线程实现的 2.共享是指系统中的资源可以被多个并发进程共同使用 3.虚拟技术把一个物理实体转换为多个空间实体,分为时分复用(多进程并发)和空分复用(虚拟内存) 4.操作系统基本功能: 1)进程管理 (进程控制,进程同步,进程通信,死锁处理) 2)内存管理 (内存分配,地址映射,... 阅读详情

相关推荐

进程、线程知识点总结

进程:是个动态的概念,指的是一个静态的程序对某个数据集的一次运行活动,而程序是静态的概念,是由代码和数据组成的程序块而已。 进程5大特点:动态性,并发性,独立运行性,异步性,和结构化的特性。 在多道程序环境下,程序不能独立运行,操作系统所有的特征都是基于进程而体现

进程基础知识

注意:只有进程空间的各段的内容要发生变化时(子进程或父进程进行写操作时,都会引起复制),才会将父进程的内容复制一份给子进程。在fork之后两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。 一个进程终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。kill 对其无效。

BSY丶的博客 524

潜在图神经网络学习笔记(Latent Graph Neural Networks for Human Skeleton-based Action Recognition)

在本文中,我们从一个新的角度来解决这个问题,通过将非结构化的骨架数据映射到潜在空间,如图2所示,这里称为潜在特征空间或嵌入空间,其中一组项嵌入在一个流形中[ 1 ],并且在潜在空间中彼此更相似的项被放置在彼此更接近的位置。潜在空间中的位置可以被认为是由一组潜在变量定义的,这些潜在变量来源于对象的相似性。将骨架数据嵌入到流形中,消除了远近邻居之间的冗余依赖关系,以解决加权问题。得到具有多尺度聚合特征的稀疏图矩阵结构,以更好地理解骨骼关节的直接加权信息。

qq_45631885的博客 489

进程基础知识点

1、进程的定义 程序和进程的区别: 程序:就是磁盘上的可执行文件文件,并且只占用磁盘上的空间,是一个静态的概念。 进程:被执行之后的程序叫做进程,不占用磁盘空间,需要消耗系统的内存,CPU资源,每个运行的进程的都对应一个属于自己的虚拟地址空间,这是一个动态的概念。 2、进程的状态及转换 进程整个生命周期可以简单划分为三种状态: 就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间。 执行态:该进程正在占用CPU运行。 等待态:进程因不具备某些执行条件而暂时无法继续执行的状态。

你说小白白不白的博客 3739

GEE开发之Landsat8计算MNDWI和数据分析

上一篇博客介绍了landsat8计算NDWI以及数据的获取,这次介绍MNDWI(改进的归一化差异水体指数)。

等待着冬天的风的博客 8440

调用D3D11硬解码和渲染VideoProcessor版本

在https://blog.youkuaiyun.com/robothn/article/details/78781321一文中使用shader来显示FFMPEG硬解码后的YUV420P,本文调用D3D11的videoprocessor来进行图像空间变换和尺寸变换,取得了较好的效果。 1.初始化D3D11设备、videodevice等数据结构 FFMPEG调用D3D11硬解码,获取其对应的device,videodevice。。。 FFMPEG使用av_hwdevice_find_type_by_name调用D3d11

zlyadvocate的博客 9286

进程(知识点总结)

进程是程序的一次动态执行过程,包括创建、调度、消亡。

qq_74823956的博客 334

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

一、操作系统导论——进程(知识点总结)

一、操作系统导论——进程知识点总结 抽象:进程 1、进程的定义:操作系统为正在运行的程序提供抽象,就是所谓的进程。 2、时分共享和空分共享: 时分共享:通过允许资源由一个实体使用一小段时间,然后由另一个实体使用一小段时间,如此下去,所谓的资源(例如,CPU 或网络链接)可以被许多人共享。 空分共享:资源在空间上被划分给希望使用它的人,磁盘空间自然是一个空分共享资源。 3、进程API: 创建(create) 销毁(destroy) 等待(wait) 其他控制(miscellaneous control)

ZkSky的博客 930

Unity-Chan Toon Shader卡通渲染学习

2.0 (UTS2)是一款用于图像和视频的卡通着色器,旨在满足从事卡通着色 3DCG 动画的创作者的需求。二、从0-1复刻UTS21.漫反射UTS2的漫反射部分主要有三个层组成,分别是基本颜色、第一阴影色和第二阴影色,分别对应着美术理论中的白、灰、黑。

qq_63133691的博客 2543

059、RealBasicVSR 实战:真实场景视频超分的退化建模与优化技巧

本文分享了RealBasicVSR在真实场景视频超分中的实战经验。针对传统方法假设理想化下采样导致的性能瓶颈,重点阐述了三个关键技术点:1)通过可学习退化编码器建模复杂未知退化过程,避免手动设计退化参数的局限;2)采用双向传播和DCN对齐增强时序一致性;3)组合多种损失函数并优化训练策略(如余弦退火学习率、随机退化增强)。作者结合项目实践指出了显存管理、训练时长、评估指标等常见问题,并给出实用建议:优先验证数据退化复杂度,重视数据预处理,合理调整超参数。文章强调真实场景视频超分的核心在于让模型自适应未知退化

ai技术增长的博客 180

操作系统精髓-进程相关知识总结

最近在复习操作系统,顺便总结一下进程相关知识,参考书籍:《操作系统-精髓与设计原理》,希望对大家有所帮助。

BoringError的博客 1048

Android 15.0 系统开机屏幕设置默认横屏显示

在15.0的系统ROM产品定制化开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从 两部分来实现,一部分是系统开机动画横屏显示,另一部分是系统屏幕显示横屏显示,从这两方面就可以做到开机默认横屏显示了

安卓兼职framework和app工程师的博客 719

操作系统知识点回顾—线程进程部分

一、进程的通信方式 1.管道: 管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。写进程在管道的尾端写入数据,读进程在管道的道端读出数据。数据读出后将从管道中移走,其它读进程都不能再读到这些数据。管道提供了简单的流控制机制。进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。同样地,管道已经满时,进程再试图写管道,在其它进程从管道中移...

程序员世杰 910

PCL 改进的RANSAC算法实现点云粗配准【2024最新版】

一种改进的RANSAC点云粗配准算法,具体改进见论文:“Pose Estimation using Local Structure-Specific Shape and Appearance Context”

点云侠的博客 37万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

操作系统进程管理部分相关概念知识点

1、进程管理属于处理器(CPU)管理的内容。那么为何要引入进程,为什么不能以程序为单位进行程序运行的管理? 因为程序的运行是走走停停的,为有效描述程序在内存中的运行状态(例如当前是否处于运行状态还是就绪状态、阻塞状态,占用了哪些系统资源等)。 简单说就是便于管理。当然也是为了方便分批系统资源。 进程是程序的一次执行,是动态的,而程序是静态的;进程是程序运行时资源分配的独立单位;进程相对程序多了一个PCB(进程控制块)。 2.什么是调度,什么是队列? 调度就是安排的意思,进程管理中的调度指的是处理机调度:就是

#两个西柚 1490

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Linux进程管理的相关知识点以及我的相关笔记链接

在Linux操作系统中,进程管理是操作系统内核非常重要的部分,涉及到进程的创建、调度、同步、通信等多个方面。

昊虹AI笔记 1370

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

1.整理权限章节2.整理进程管理章节所有知识点

示例:setfacl -m u:bob:rwx file.txt # 给用户bob添加rwx权限。setfacl -m g:admins:rx /project # 给admins组添加rx权限。setfacl -d -m u:bob:rwx dir # 设置默认ACL(新文件继承)renice 5 -p 1234 # 将PID=1234的进程nice值设为5。​:定义新建文件/目录的默认权限(从全权限中减去umask值)ps -f --forest # 显示进程树。

twb5201314的博客 1101

IO知识点

1使用两个进程,一个打印文件前一部分,另一个答应后一部分。2.一个进程倒置,一个进程打印。

Iliketreenewbee的博客 210

DAY5 进程创建及线程知识点

进程创建及线程知识点

m0_69965956的博客 199

基于双子进程的分工拷贝

创建3个进程,子进1程拷贝文件的前一半,子进程2拷贝后一半文件,父进程回收两个子进程资源。

m0_73888651的博客 175

操作系统之进程

文章脉络图如下:      进程     进程是指可以与其他程序并发执行的段程序的一次执行过程,是系统进行资源分配和调度的基本单位,即进程是运行中的程序,是程序的一次运行活动,具有动态性和并发性。     从静态角度看,进程实体由程序块、进程控制块(PCB)和数据块三部分组成。     程序块:进程需要完成的任务     数据块:包括程序执行时所需的数据和工作区。

李达 1970

进程环境-

文件系统的第三部分 进程环境 讲单进程,因为每一个进程我们要搞清楚它里面到底是怎么样组成的,有什么状态,和系统的变量和资源相关的一些内容,为后面的多进程并发做铺垫 1. main函数 int main(int argc,char * argv[]) 历史早期的main函数有第三个变量:环境变量,但现在已经成为一个分支了 int main(int argc,char * argv[],char * envp[]) 2. 进程的终止(正常,异常) 正常终止: 从main函数返回:return 0 调用

c99c89的博客 377

Linux多进程与多线程

摘要 本文介绍了多进程和多线程的基本概念及实现机制。在多进程方面,详细阐述了进程的创建、内存管理(虚拟/物理内存)、父子进程关系、写时复制技术、进程间通信和进程终止。重点讲解了fork()函数、exec函数族和进程同步方法。在多线程方面,对比了线程与进程的区别,介绍了线程创建、同步机制(互斥锁)以及内核线程的实现方式。文章还分析了两种并发模型在数据共享、资源占用、可靠性等方面的优缺点,为开发者选择适合的并发方案提供了参考依据。

Cali321的博客 918

线程与进程的区别

学习电脑和编程语言就会遇到进程和线程,初学者往往会在此陷入迷茫和纠结中。其实弄清这两个概念不是很难。从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。 方法/步骤 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活

zhangfulin_hwatop的专栏 879
上一篇: 编辑、编译与安装的知识点总结
下一篇: vim基础知识
CYD、孤狼
博客等级 码龄9年 24粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值