0802|IO进程线程 day5 进程概念

news2024/11/19 16:28:55

一、进程的基础

1.1 什么是进程

1)进程程序一次执行过程

  • 程序:是静态的,它是存储在外存上的可执行二进制文件;
  • 进程:动态的概念,它是程序的一次执行过程,包括了进程的创建,调度、消亡,是存在于内存中的。

2)进程是独立的,可以被CPU调度的任务

  • Linux中的调度机制:时间片轮询机制;
  • 操作系统会给每一个进程分配时间片,当时间片结束后,cpu资源会切走,当前进程等待下一次调度。

3)进程在被调度的时候,系统会分配和释放各种资源(CPU资源,内存资源,进程调度块(PCB))。

1.2 进程的五种状态及五态图

五种状态:

  1. 创建态
  2. 就绪态
  3. 运行态
  4. 阻塞态
  5. 终止态

ps:进程运行过程中有5种种状态,运行态只是进程运行过程中的一种状态。

五态图:

1.3 进程的内存分布【重点】

1)内存分布

  1. 在Linux操作系统中,每个进程都会被分配4G的内存空间(虚拟内存);
  2. 其中0-3G是用户空间代码使用,每个进程相互独立;
  3. 其中3-4G是内核空间,所有进程共享。

每个进程的用户空间都有自己独立的区:

1> 静态存储区 2> 堆区 3> 栈区

2)虚拟内存和物理内存

虚拟内存和物理内存之间的关系--->映射关系

物理内存:

  • 硬件上(内存条上)真正存在的存储空间。

虚拟内存:

  • 程序启动后,会分配4G的虚拟地址空间,用户只能访问到虚拟地址空间。当要使用的时候,由虚拟地址映射到物理地址上。
  • 32位操作系统,指针变量的大小为4bytes,取值范围为[0, 2^32-1],所以寻址范围为4G
  • 64位操作系统,指针变量的大小为8bytes,只取了前48bit存储地址,所以寻址范围是256TB

虚拟内存的目的:

  • 动态分配内存。

 

1.4 进程是资源分配的最小单位【重点】

以进程为单位分配和释放各种资源。

  1. 内存资源的申请和释放;
  2. 文件描述符表:每个进程都有自己的1024个文件描述符;
  3. 时间片;
  4. 管理自己的虚拟地址空间,使用的时候映射到物理地址上;

... ...

1.5 进程标识

操作系统会给每一个进程分配一个编号,这个编号就是进程号。

主要进程标识

  • 进程号:PID (process id)
  • 父进程号:PPID (parent process id)
  • 进程组号:PGID (process group id) 若干个进程的集合,称之为进程组,默认情况下新创建的进程会继承父进程的组ID
  • 会话组号:SID (session id) 若干个进程组的集合,称之为会话组,默认情况下新创建的进程会继承父进程的会话ID

操作系统刚启动的时候,会启动三个进程。三个特殊的进程号:

  • 0 idle进程 操作系统引导程序,创建1号,2号进程。
  • 1 init进程 初始化内核的各个模块,当内核启动完成后,用于收养孤儿进程(没有父进程的进程)
  • 2 kthreadd进程 用于进程间调度。

1.6 进程相关的shell指令

1) ps -aux

功能:显示进程占计算机资源的百分比;

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

2) ps -ajx

功能:显示进程之间的关系

PPID     PID    PGID    SID     TTY       TPGID STAT   UID   TIME COMMAND
父进程  进程号  进程组  会话组

3) pidof

功能:根据进程名字获取PID号;
格式:
    pidof a.out

4) pstree

功能:显示进程关系树

5) kill

kill -9  pid            根据pid号杀死进程
killall -9  进程名字    根据进程名字杀死进程

6) 进程的STAT

               D    不能被中断的阻塞状态
               R    运行状态
               S    可以被中断的阻塞状态
               T    被信号控制的挂起状态
               t    进程被调试的挂起状态

               X    死亡态,死亡是一瞬间的,该状态永远看不到
               Z    僵尸状态,当前进程退出后,父进程没有为其收尸。
               


               <    高优先级的
               N    低优先级的
               L    有些页被锁进内存
               s    会话组组长
               l    多线程
               +    运行在前端

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

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

相关文章

c语言——计算两个正整数的最大公倍数

//计算两个正整数的最大公倍数 //例如40和60的最大公约数为20. //计算两个正整数的最大公倍数 //例如40和60的最大公约数为20. #include<stdio.h> int main() {int a,b,temp,i;printf("Input a & b:");scanf("%d%d",&a,&b);if(a<b){…

Cat.1如何成为物联网业务加速器?

随着Cat.1芯片及模组在功耗和成本上的不断优化&#xff0c;在窄带物联网领域&#xff0c;越来越多的终端客户把Cat.1当做与NB-IoT相比较的第二选择。越来越多的表计、烟感、市政等行业终端将Cat.1模组应用于非集中化部署的上报类终端业务中&#xff0c;Cat.1这只“网红猫”仍保…

UIKit相关

CALayer和UIView 区别 UIView继承自UIResponder&#xff0c;主要负责事件传递、事件响应&#xff0c;属于基于UIKit框架 CALayer继承自NSObject&#xff0c;负责图像渲染&#xff0c;动画和视图的显示&#xff0c;属于QuartzCore框架 而且这两大内容都符合单一职责原则&#…

【开发心得】黑客是如何攻击你的web应用的?

本文记录一次黑客利用sql注入漏洞攻击应用系统的全过程。 由于涉及到隐私&#xff0c;所以就不能上图了&#xff0c;尽量把过程描述的详细一下&#xff0c;希望能够给开发人员提个醒&#xff0c;有些漏洞&#xff0c;其实修补很简单。好在现在有了chatGPT&#xff0c;把你的代…

调度:setTimeout 和 setInterval

有时一个函数并不需要立刻执行&#xff0c;而是等待特定一段时间之后再执行。这就是所谓的“计划调用&#xff08;scheduling a call&#xff09; setTimeout() 是延时器&#xff0c;setInterval() 是定时器 setTimeout 允许我们将函数推迟到一段时间间隔之后再执行。setInte…

mongodb docker 及常用命令

MongoDB属于非关系型数据库&#xff0c;它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇&#xff1a; centos7 mongodb 4.0.28…

el-tooltip设置文字溢出时展示否则不展示

改写el-tooltip使其支持文字溢出时展示否则不展示&#xff0c;而不是需要使用js设置单独控制 新建 src/utils/rewriteElTooltip.js &#xff08;一模一样 cv就行&#xff09; export default function rewriteElTooltip(el) {el.props {...el.props,overflow: Boolea…

docker: Error response from daemon: No command specified.

执行 docker run -it -d -v /home/dell/workspace/workspace/test_192.168.1.202_pipeline:/home/workspace1 --name test_192.168.1.202_pipeline_10 qnx:7.1报错 问题定位&#xff1a;export导入的镜像需要带上command&#xff0c;以下命令查看command信息 docker ps --no…

计算机二级Python基本操作题-序号44

1. # 使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为100的三角形 import turtle for i in range(3): #绘制三条边turtle.seth(i * 120) #底边行进角度为0&#xff1b;右斜边行进角度为120(按逆时针);左斜边行进角度为240(按逆时针)turtle.fd(100) #边长为100…

甜椒叶病害数据集

1.数据集分为训练集和测试集 2.训练集如下所示 第一个文件夹是细菌斑叶&#xff08;449张&#xff09; 第二个是健康叶子&#xff08;4014张&#xff09; 测试集 细菌斑叶 11张 健康叶子10张 import numpy as np import os import matplotlib.pyplot as plt import cv2impor…

创建个人博客(在文章的列表页,根据文章标题和文章内容实现搜索)

1. 在视图文件增加搜索表单&#xff1a; 在文章列表页的视图文件中&#xff0c;增加一个搜索表单&#xff0c;包含一个文本搜索框和一个提交按钮 <% form_tag articles_path, method: :get do %><% text_field_tag :title, params[:title], placeholder: "搜索…

关于拓扑排序

又重新学了一下拓扑排序&#xff0c;这次发现就十分简单了&#xff0c;拓扑排序的步骤 1.他必须是一个有向无环图&#xff0c;起点我们就是入度为0的点 2.我们首先要输出的就是入度为0的点&#xff0c;然后依次删除这些点连向的点&#xff0c;使这些点的入度-1&#xff0c;如果…

Java POI 基于模板导出列表数据

目录 1、基于POI模板导出列表数据 &#x1f4da;1.1、需求 &#x1f4dd;1.2、思路 &#x1f331;1.3、实现 &#x1f3e1; 2、导出用户详细数据 &#x1f64e;2.1、需求 &#x1f4bc;2.2、思路 &#x1f468;‍&#x1f4bb;2.3、实现 &#x1f46d; 3、导出数据带图片、公式…

基于STM32设计的数显热水器

一、项目介绍 当前介绍的项目是基于 STM32F103ZET6 系列 MCU 设计的数显热水器&#xff0c;通过显示屏来显示热水器的温度及其工作状态&#xff0c;通过 PT100 传感器来检测热水器的温度变化&#xff0c;并通过电加热片实现加热过程&#xff0c;以达到控制热水器温度的目的。 …

虚拟机之间配置免密登录

目录 一、配置主机名映射 二、虚拟机配置SSH免密登录 三、验证 一、配置主机名映射 即修改/etc/hosts文件&#xff0c;将几台服务器和主机名进行映射。 注意每台服务器都要进行同样的配置。这样在各自服务器下&#xff0c;我们就可以通过主机名访问对应的ip地址了。 当然&…

拿捏--->打印菱形

文章目录 题目描述算法思路代码示例 题目描述 在屏幕上输出以下图案&#xff1a; 算法思路 代码示例 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int n;scanf("%d", &n);//上半部分菱形for (int i 0; i < n; i) //上半部分…

LinearAlgebraMIT_6_ColumnSpaceAndNullSpace

这节课的两个重点是column space列空间和null space零空间。 x.1 pre-multiply/left multiply and post-multiply/right multiply 对于pre-multiply/left multiply左乘和post-multiply/right multiply右乘&#xff0c;如果用英文的pre-和post-是比较容易理解的&#xff0c; A…

Promise用法

学习了promise之后&#xff0c;有点懂但让我说又说不出来&#xff0c;参考别人的记录一下。 1.什么是promise&#xff1f; 2.promise解决了什么问题 3.es6 promise语法 &#xff08;1&#xff09;then链式操作语法 &#xff08;2&#xff09;catch的语法 &#xff08;3&#xf…

DataX 异构数据贴源同步产品 - 技术分享篇(一)

DataX 是阿里开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX设计理念 DataX本身作为数据同步框架&#xff0c;将不同数据源的同步抽象为从源头…

springboot自定义错误消息

为了提供自定义错误消息提示&#xff0c;springboot在resources目录下&#xff0c;有一个文件ValidationMessages.properties 用于存储 验证错误的消息提示&#xff1a; 比如&#xff1a; 这样一个ValidationMessage.properties username.notempty用户名不能为空 username.len…