linux进程



一. 进程控制中的专有名词

多用户:多个用户同一时间使用计算机
多任务:同时执行几个任务,并且可以在还没有执行完一个任务的时候执行另一个任务
程序:静态,保存在硬盘上的可执行代码
进程:动态,运行中的程序,表示过程(操作系统资源管理的最小单位)
线程:在进程内部,比进程更小的能独立运行的基本单位
实际用户:标识运行该进程的用户
有效用户:标识来运行该进程的用户身份
父进程和子进程:相当于父亲和儿子

 

二. 如何获取进程标识符呢?

可以使用下面这几个函数:

  1. pid_t getgid(id)   //进程id  
  2. pid_t getppid(id) //父进程id  
  3. pid_t getuid(id)   //实际用户id  
  4. pid_t geteuid(id) //有效用户id  
  5. pid_t getgid(id)  //实际组id  
  6. pid_t getegid(id) //有效组id  
pid_t getgid(id)   //进程id
pid_t getppid(id) //父进程id
pid_t getuid(id)   //实际用户id
pid_t geteuid(id) //有效用户id
pid_t getgid(id)  //实际组id
pid_t getegid(id) //有效组id

 

三. Linux进程是由那些组成的?

Linux中一个进程由三部分组成:代码段,数据段,堆栈段

从内存的低地址到高地址依次为:

代码段:二进制机器代码

数据段:存储已被初始化的变量,包括全局变量和已被初始化的静态变量

未初始化数据段:存储未被初始化的静态变量,又称BBS

堆:用于存放程序运行中动态分配的变量

栈:用于函数调用,保存函数的返回地址,函数的参数,函数内部定义的局部变量

 

四.进程有有哪些状态?

运行状态、可中断等待状态、不可中断等待状态、僵死状态、停止状态

 

五.Linux下程序是如何转化为进程的呢?

内核将程序读入内存,为程序分配内存空间

内核为该进程分配进程标识符pid和其他所需资源

内核为该进程保存PID及相应的状态信息,把进程放到运行队列中等待执行.程序转化为进程后就可以被操作系统的调度程序调度执行了

 

六.可执行程序和内存映像的区别:

1.可执行程序位于硬盘,内存映像位于内存

2.可执行程序没有堆栈(程序被加载到内存中才会分配堆栈)

3.可执行程序中未初始化数据段并不储存在位于硬盘中的可执行文件中

4.可执行程序是静态的,不变的,内存映像动态变化

 

七. 如何创建一个进程

由操作系统创建:进程之间平等,不存在资源继承
PS.在系统启动时,操作系统会创建一些进程,承担着管理和分配系统资源的任务,通常被称为系统进程
由父进程创建:子进程,继承父进程

fork函数:

#include<sys/types.h>#include<unistd.h>

pid_t fork(void);

这个函数可以说是很特殊了,它有两个返回值,调用一次返回两次。其实就相当于fork一个进程之后,当前进程分裂为两个,一个父进程,一个刚刚fork的子进程;一个返回值是父进程调用fork函数后的返回值,即刚刚创建的子进程的ID,另一个是子进程中fork函数的返回值,该返回值是0
若进程创建失败,则只返回一个-1,失败原因通常是父进程拥有的子进程的个数超过了规定的限制,此时errnoEAGAIN;可供使用的内存不足也会导致进程创建失败,此时errnoENOMEN
所以可以通过返回值来区别父进程和子进程:父进程返回子进程ID,子进程返回0

 

八.什么是孤儿进程呢?

如果一个子进程的父进程先于子进程结束,子进程就成为一个孤儿,它有init进程收养,成为其子进程

 

九.什么是守护进程呢?

指在后台运行的,没有控制终端与之相连的进程。它独立于控制终端,通常周期性地执行某种任务。Linux的大多数服务器都是使用守护进程的方式实现。

 

十.什么是僵尸进程?

当子进程先于父进程终止,而父进程又没有调用wait函数等待子进程结束,子进程进入僵死状态,并且会一直保持下去除非系统重启.子进程处于僵死状态,内核只保存该进程的一些必要信息以备父进程所需.此时子进程始终占用着资源,同时也减少了系统可以创建的最大进程数;如果子进程先于父进程终止,且父进程调用了waitwaitpid函数,则父进程会等待子进程结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值