进程部分相关概念

news2024/9/24 3:27:00

进程


进程是一个程序执行的过程,会去分配内存资源,cpu的调度

进程不仅仅是一个正在运行的程序,它包含了程序执行所需的所有资源和状态信息

  • 资源分配:操作系统会为每个进程分配必要的资源,如内存空间、文件句柄等。这些资源保证进程能够正常执行。

  • CPU调度:操作系统通过调度程序(scheduler)决定哪个进程在某一时刻占用CPU。因为CPU资源是有限的,多个进程需要轮流使用CPU,因此操作系统会频繁地切换进程。

  • 程序执行状态:进程不仅仅是代码,它还包含了程序的执行状态,如程序计数器、寄存器内容等。这些信息能够帮助操作系统在暂停进程后继续其执行。

  • 进程控制块(PCB):进程控制块是操作系统用来描述和管理进程的一个数据结构。它包含了与进程相关的所有信息,包括进程ID、进程状态、程序计数器、内存管理信息、文件描述符等。PCB是操作系统管理进程的核心部分。pcb  是一个结构体,process control block  print circuit board

  • task_struct结构体:在Linux操作系统中,每个进程都通过一个task_struct结构体来描述。task_struct中包含了与进程相关的各种信息,包括进程状态、优先级、CPU时间、内存管理信息等。它是Linux内核中用来管理进程的关键数据结构。

  • PID (Process Identifier):

    • PID 是进程标识符,每个进程都有一个唯一的 PID,操作系统通过 PID 来区分和管理不同的进程。PID 在操作系统中是唯一的,即在同一时刻不会有两个进程拥有相同的 PID。
  • CWD (Current Working Directory):

    • CWD 是当前工作目录,即进程当前操作的目录路径。每个进程都有一个与之关联的当前工作目录。通过调用 chdir 函数来更改当前工作目录。例如,如果一个进程的 CWD 是 /home/user/, 那么这个进程在打开一个相对路径文件 file.txt 时,会默认在 /home/user/file.txt 这个路径下寻找文件。
  • umask:

    • umask 是一个控制新建文件和目录权限的掩码。当一个文件或目录被创建时,系统会根据默认的权限(通常是 666 对文件,777 对目录)减去 umask 的值来设置实际的权限。例如,umask 0002 意味着新创建的目录的权限为 775 (即 777 - 2)。
  • 进程打开的文件列表:

    • 每个进程都有一个文件描述符表,其中记录了该进程当前打开的所有文件。文件描述符用于标识和操作文件。通过 /proc/[PID]/fd 可以查看某个进程打开的文件列表。
  • 信号相关设置:

    • 信号是进程间通信的一种机制,用于向进程发送通知或控制指令。Linux 系统中有 64 种标准信号,每种信号有不同的含义,例如 SIGINT(中断)、SIGTERM(终止)、SIGKILL(强制终止)等。信号处理函数可以用来定义进程在接收到某个信号时应该如何响应。
  • 用户 ID 和组 ID:

    • 每个进程都关联着一个用户 ID(UID)和组 ID(GID),用于控制进程的权限。UID 表示该进程所属的用户,而 GID 表示该进程所属的用户组。通过这些 ID,操作系统可以控制进程的文件访问权限和其他操作权限。
  • 进程资源的上限:

    • 操作系统可以对进程使用的资源设置上限,以防止某个进程占用过多的系统资源。ulimit 命令可以用来查看和设置这些资源的上限。例如,ulimit -a 命令可以显示当前进程的各种资源限制,如最大文件大小、最大内存使用量、最大进程数等。

  • Open Files:

    • 进程能够同时打开的文件数量是有限的,这个限制通常由操作系统设定。对于大多数系统来说,这个上限值默认是 1024。这意味着一个进程在同一时间最多可以打开 1024 个文件。这一限制包括标准输入、输出和错误流,以及通过系统调用打开的文件或设备。
    • 如果需要打开更多的文件,可以通过修改系统设置或使用 ulimit -n 命令来调整这个值。不过,需要注意的是,过多的打开文件可能会导致资源枯竭或影响系统性能。
  • Stack Size (栈大小):

    • 栈是每个进程在内存中分配的一块区域,用于存储函数的局部变量、参数、返回地址等。每个函数调用都会将数据推入栈中,而函数返回时,数据会从栈中弹出。
    • 栈的大小也是有限的,默认值通常是 8MB,但这取决于具体的操作系统和配置。栈大小限制意味着在递归深度过大或使用大量局部变量时,可能会遇到栈溢出(stack overflow)的问题。
    • 可以通过 ulimit -s 命令来查看或设置进程的栈大小限制。如果程序需要更大的栈空间(例如在深度递归或大量局部数据的情况下),可以增大这个限制,但要小心,过大的栈可能会导致系统内存不足。

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

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

相关文章

nginx重定向与防盗链

重定向 由于网站的扩容,负荷较大,需要将一部分内容迁移到其他服务器上。但是这个时候又不能更改用户常访问的域名,因此对其进行重定向。 1. 域名重定向 www.sxl1.com/aaa的站点需要重定向到aaa.sxl1.com rewrite ^/aaa$ aaa.sxl1.com/…

letcode 分类练习 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树

letcode 分类练习 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树 513.找树左下角的值112. 路径总和106.从中序与后序遍历序列构造二叉树 513.找树左下角的值 遍历二叉树,并记录当前的深度,如果深度大于最大深度,那么…

关于 Vivado HLS 的三大误读

【转载】关于 Vivado HLS 的三大误读 目前,在高层次综合(HLS, High Level Synthesis)领域,Vivado HLS可谓独树一帜。它有效地拉近了软件工程师与FPGA之间的距离,加速了算法开发的进程,缩短了产品上市时间。…

leetcode_52. N 皇后 II

52. N 皇后 II 题目描述:n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。 示例 1: 输入:n 4 输出:2…

C++:病毒系列回归记2/3 (Doge智能系统已上线)

上一期:C:病毒系列回归记1/3 (Doge智能系统已上线) 这一步真的非常爽哦 void Crazy(int n) {if(n 0)system("start ラム.vbs");if(n 1)system("start 今年のトラック.vbs");if(n 2)system("start ロシアのスートン焼却発電.vbs")…

安装并配置开发环境

安装并配置开发环境 获取虚拟机系统 下载vmware虚拟机工具 使用浏览器打开网址 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 参考下图箭头所示,点击下载安装 Windows版本的VMware Workstation ,点击 DOWNLOAD …

java基础--day10字符串

视频网址:字符串-01-API和API帮助文档_哔哩哔哩_bilibili 1.API 1.1API概述 什么是PAI API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来&am…

MySQL笔记01: MySQL入门_1.3 MySQL启动停止与登录

1.3 MySQL启动停止与登录 1.3.1 MySQL启动与停止 MySQL数据库分为客户端和服务器端,只有服务器端服务开启以后,才可以通过客户端登录MySQL服务端。 首先,以管理员身份运行“命令提示符”: (1)启动MySQL服务…

AArch64中的寄存器

目录 通用寄存器 其他寄存器 系统寄存器 通用寄存器 大多数A64指令在寄存器上操作。该架构提供了31个通用寄存器。 每个寄存器可以作为64位的X寄存器(X0..X30)使用,或者作为32位的W寄存器(W0..W30)使用。这两种是查…

PyTorch——transforms

接着上一篇,我们这一篇讲transforms 1、什么是transform 首先transform是来自PyTorch的一个扩展库——【torchvision】,【torchvision】这个库提供了许多计算机视觉相关的工具和功能,能够在神经网络中,将图像、数据集、预处理模型…

[Winform] Chart获得当前点的X和Y值

在利用C#控件绘制曲线图后,有时我们需要通过鼠标查看数据点的值信息,常用的方法就是利用chart控件的chart1_GetToolTipText(object sender, ToolTipEventArgs e)事件来获取数据点的信息,如下我用两个label来显示获取的数据点的值 相关代码如下…

【手撕数据结构】链式二叉树

目录 链式二叉树的结构及其声明链式二叉树的四种遍历方式前序遍历中序遍历(中根遍历)后序遍历层序遍历概念思路分析详细代码 求树的节点个数变量累加法(错误)分治递归法 求树的叶子节点个数警惕空指针正确代码 求第k层节点个树思路分析及规则明细代码详细…

POK´ELLMON:在宝可梦战斗中实现人类水平的人工智能

人工智能咨询培训老师叶梓 转载标明出处 最近,由美国乔治亚理工学院的Sihao Hu、Tiansheng Huang和Ling Liu发表的论文介绍了POKELLMON,这是一个开创性的基于大模型(LLM)的具身智能体,它在战术战斗游戏中,特…

【Android 笔记】Android APK编译打包流程

前言 本文将介绍Android从一个项目打包成APK的过程,其中涉及Android Java和Kotlin文件、资源文件、清单文件、依赖jar包和so库等在打包过程中处理。 步骤 总体的打包流程如下图,下面就介绍下详细的打包步骤。 1、将aidl文件编译成java文件 在构建过程中…

2024音频剪辑指南:探索四大高效工具!

音频剪辑不仅仅是技术活,更是一种艺术创作,它能够让声音更加生动、更具感染力。今天,我们就来探索几款优秀的音频剪辑工具。 福昕音频剪辑 链接:www.pdf365.cn/foxit-clip/ 福昕音频剪辑是一款界面简洁、操作直观的音频编辑软件…

详解安卓辅助功能服务AccessibilityService(无障碍服务,微信抢红包助手原理)

前言 在手机的更多设置或者高级设置中,我们会发现有个无障碍的功能,很多人不知道这个功能具体是干嘛的,包括我们开发也很少接触这部分功能,以至于对这块不甚了解。前段时间在同事的安利下去了解了下这部分功能。在这里和大家浅谈下…

scikit-learn特征预处理

特征预处理 什么是特征预处理 通过一些转换函数,将特征数据转换成更适合算法模型的特征数据的过程 数值数据的无量纲化: 归一化标准化 特征预处理API sklearn.preprocessing为什么进行无量纲化 通过欧式距离公式计算两个约会对象是否属于同一类别 …

使用HTML和cgi实现网页登录功能

0.HTML文件结构 一.HTML文件 1.test.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>菜鸟教程(runoob.com)</title></head><body><!-- 将结果提交给/cgi-bin/test.cgi下 --><form actio…

联盟推广计划:释放SaaS企业增长潜力

在SaaS行业&#xff0c;用户增长是企业成功的关键。本文深入探讨联盟推广计划&#xff0c;分析其核心特点和优势&#xff0c;以及如何实施这一策略以实现用户增长和品牌扩展。随着SaaS市场的不断成熟&#xff0c;企业越来越需要创新的营销策略来突破增长瓶颈。PartnerShare联盟…

2025舜宇内推码

舜宇光学集团校招 【2025内推码】 DSwNQ9yu DSwNQ9yu DSJXN8Mr 舜宇光学科技2025校招内推&#xff01;冲冲冲&#xff01; 光学龙头-舜宇集团2025届全球校园招聘正式启动&#xff01;&#xff01;&#xff01; 提供住宿&#xff08;硕士单人间&#xff0c;独立卫浴&#xff0…