学习笔记第二十三天

 1.程序与进程

        程序(Program):是静态的,它是一组指令的集合,这些指令被存储硬盘上,,程序本身

不占用CPU或内存资源,直到它被加载到内存中执行。

        程序---静态---硬盘

        进程(Process):是动态的,是程序在内存中的一次执行过程,当程序被加载到内存并由

CPU执行时,它就成为了一个进程。

        进程---动态---内存

2. 进程的结构

        进程 = pcb +进程实体。

        进程实体:

               堆(Heap):堆是进程在运行时用于动态分配内存的区域。

               栈(Stack):栈是进程内存中的一个区域,用于存储局部变量和函数调用的上下文(包

括参数、返回地址等)。栈的存取特点是后进先出(LIFO,Last In First Out)。

                bss(Block Started by Symbol):bss段(Block Started by Symbol)是程序中未初始

化的全局变量和静态变量的存储区域。

               data:data段(或称为初始化数据段)是程序中已初始化的全局变量和静态变量的存储

区域。

               text(或称为代码段):text段(也称为代码段或正文段)是存储程序指令的区域。

 3.创建进程:

        进程可以通过多种方式创建,如fork()系统调用在Linux中创建与父进程几乎完全相同的子进

程。

        创建进程时,系统会为进程分配必要的资源,包括内存空间、文件描述符等,并设置进程的

状态为就绪(等待CPU调度)。

        3.1执行任务

        进程在执行任务时,可以执行与父进程相同的任务(如fork()后直接运行),也可以执行完

全不同的任务(如fork()exec()新程序)。

        进程在执行过程中会占用CPU资源,进行数据的读写操作,处理信号等。

        进程的状态会随着执行过程而变化,包括就绪(R)、睡眠(S,等待IO等操作完成)、不可

中断睡眠(D,通常是因为IO操作)、停止(T,收到停止信号)等。        

        3.2进程结束

        进程执行完毕后,会调用exit()函数退出。进程退出时,会释放其占用的所有资源,包括内

存、文件描述符等。

        进程退出后,根据其父进程的状态,可能会成为孤儿进程(父进程已退出)或僵尸进程(父

进程未回收其状态信息)。

        僵尸进程则需要其父进程通过wait()waitpid()等系统调用来回收其状态信息,避免资源泄

露。

        孤儿进程会被系统自动分配给init进程(PID为1的进程)作为其父进程。

4.进程的作用

        并发:通过进程,系统可以并发地执行多个任务,提高资源的利用率和系统的吞吐量。

        资源管理:进程是系统进行资源分配和调度的基本单位,通过进程管理,系统可以合理地分

配和使用CPU、内存等资源。

        隔离性:进程之间相对独立,一个进程的崩溃不会影响其他进程的运行,提高了系统的稳定

性和可靠性。

5.进程状态

        Linux中进程的状态主要有以下几种:

  • D:不可中断睡眠状态,通常是因为IO操作。
  • R:就绪状态,在就绪队列中等待CPU调度。
  • S:可中断睡眠状态,等待某个事件完成。
  • T:停止状态,收到停止信号或正在被跟踪。
  • Z:僵尸状态,进程已终止但未被父进程回收。

6. 查询进程相关命令

        6.1ps aux | grep 进程名

        该命令用于查看与指定进程名相关的进程信息。输出结果中的ST列表示进程的状态        

        6.2top

  top命令提供了一个动态的实时视图,显示了系统中各个进程的CPU、内存使用情况等信息。

它可以根据CPU占用率对进程进行排序,并实时更新显示的信息。

        6.3kill和killall

        kill PID:向指定PID的进程发送SIGTERM信号,请求进程终止。进程可以选择忽略或捕获该

信号,但默认情况下会终止执行。

        kill -9 进程PID号:向指定PID的进程发送SIGKILL信号,强制终止进程。SIGKILL信号不能被

捕获、阻塞或忽略。

        kill -l:列出所有可用的信号及其编号。

        killall -9 进程名:向所有名称匹配指定字符串的进程发送SIGKILL信号,强制终止它们。

        killall a.out:向所有名称为a.out的进程发送SIGTERM信号,请求它们终止.

6.4getpid   

 pid_t getpid(void); //pid_t

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

  返回值:进程的pid号。
       
6.5getppid    

pid_t getppid(void);

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

返回值:返父进程pid号。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++速学day4

类的继承关系 蛇 和 爬行类动物 //这两个类就是继承关系 子类 父类 //它们的关系相当于 派生类 基类 继承的作用 1、 吸收基类成员 2、改造基类成员 3、添加新的成员 class Dervid…

docker基本管理和应用

docker是一个开源的应用容器引擎,基于go语言开发的 docker是运行在linux的容器化工具,可以理解为轻量级的虚拟机 可以在任何主机上,轻松创建的一个轻量级,可移植的,自给自足的容器 鲸鱼--------->宿主机 集装箱…

vulnstack-7(红日靶场七)

环境配置 vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:漏洞详情http://vulnstack.qiyuanxuetang.net/vuln/detail/9/ 添加两个网卡 DMZ区域: 给Ubuntu (Web 1) 配置了两个网卡,一个可以对外提供服务;…

前端路由VueRouter总结

简介: Vue路由vue-router是官方的路由插件,能够轻松的管理 SPA 项目中组件的切换。Vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来vue-router 目前有 3.x 的版本和 4.x 的版本,vue-…

设计模式(1)创建型模式和结构型模式

1、目标 本文的主要目标是学习创建型模式和结构型模式,并分别代码实现每种设计模式 2、创建型模式 2.1 单例模式(singleton) 单例模式是创建一个对象保证只有这个类的唯一实例,单例模式分为饿汉式和懒汉式,饿汉式是…

sliver源码分析-初始化以及脚手架

引言 项目概述:对开源的C2框架sliver进行源码分析,意图学习其原理。本篇分析sliver的入口以及脚手架,和基本的配置文件目标与读者:网络安全兴趣爱好者 准备工作 源码路径BishopFox/sliver: Adversary Emulation Framework (git…

[C++][opencv]基于opencv实现photoshop算法图像旋转

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 //图像旋转: src为原图像, dst为新图像, angle为旋转角度, isClip表示是采取缩小图片的方式 int imageRotate4(InputArray src, OutputArray dst, double angle, bool isClip) {Mat input src.…

【c++】类和对象 (中) (类的默认成员函数)

类的默认成员函数 在C中,如果你定义了一个类但没有显式地提供特定的成员函数(比如构造函数、析构函数、拷贝构造函数、拷贝赋值运算符等),编译器会为这些函数生成默认的实现。这些默认生成的成员函数称为类的默认成员函数。那么既…

C#学习笔记15:上位机助手_usercontrol窗体内嵌的应用

今日完善一下之前的上位机助手,做一个组合窗体内嵌的多功能助手软件应用, 与之前的上位机软件相比: 更注重控件能够随着窗体缩放而缩放变换,串口助手部分能自动后台检测串口设备,解决市面上大部分串口助手的打开初始化会卡顿的问题 ( 多线程后…

Linux服务管理-Nginx配置

静态解析主要解析html、css动态解析需要解析php 动态资源通过轮询分配到后端的Apache服务器处理 apache是同步阻塞,nginx是异步非阻塞

论文阅读笔记:Efficient Teacher: Semi-Supervised Object Detection for YOLOv5

Efficient Teacher: Semi-Supervised Object Detection for YOLOv5 1 背景1.1 动机1.2 问题 2 创新点3 方法4 模块4.1 伪标签分配4.2 Epoch Adapter 5 效果5.1 与SOTA方法对比5.2 消融实验 论文:https://arxiv.org/pdf/2302.07577v3.pdf 代码:https://g…

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…

map和set的使用

关联式容器 在学习关联式容器之前&#xff0c;我们学习过的容器有vector、list、deque…这些容器称为序列式容器&#xff0c;单纯的存储数据存储的数据没有关联性。 即将学习的map 和set属于关联式容器&#xff0c;其里面存储的是<key, value>结构的键值对&#xff0c;…

制造知识普及(九)--企业内部物料编码(IPN)与制造商物料编码(MPN)

在日常的物料管理业务逻辑中&#xff0c;一物一码是物料管理的基本的业务规则&#xff0c;不管物料从产品开发还是仓库管理&#xff0c;甚至成本核算&#xff0c;都要遵循这个原则&#xff0c;才能保证产品数据的准确性&#xff0c;才具备唯一追溯的可行性。大部分企业都是这种…

某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]

文章目录 某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏…

C#数据类型转换

代码&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Test05 {class Program{static void Main(string[] args){double db 2008;//声明一个double类型变量db&#xff0c;并初始化为2008object obj db;//对db…

JAVA实现判断小程序用户是否关注公众号

本文主要描述了判断小程序用户是否关注公众号的逻辑实现及部分代码 首先阐述一下大致流程&#xff1a; 1、在将小程序和公众号绑定至同一个微信开发平台下&#xff1b; 2、后端拉取公众号已关注用户列表&#xff0c;并获取其中每一个用户的unionID&#xff0c; 建立已关注用户…

OCR调研

OCR调研 一、介绍 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是一种将图像中的文字转换为计算机可处理格式的技术。OCR技术经历了从传统OCR到基于深度学习的OCR的转变。深度学习OCR技术通过模拟人脑神经元结构处理文本和图像数据&am…

MATLAB - 强化学习(Reinforcement Learning)

系列文章目录 前言 一、什么是强化学习&#xff1f; 强化学习是一种以目标为导向的计算方法&#xff0c;计算机通过与未知的动态环境交互来学习执行任务。这种学习方法能让计算机在没有人工干预和明确编程的情况下&#xff0c;做出一系列决策&#xff0c;使任务的累积奖励最大化…

cmake 编译教程

参考链接&#xff1a;cmake使用详细教程&#xff08;日常使用这一篇就足够了&#xff09;_cmake教程-CSDN博客 一、只有一个源文件的程序编译 首先在当前目录下创建两个文件 hello.cpp CMakeLists.txt &#xff08;注意CMakeLists大小写&#xff0c;不要写错了&#xff09; …