Linux进程基础

devtools/2024/11/29 14:57:54/

前言:并行和并发

1.并发:操作系统中是指一个时间段中有几个进程都处于正在运行到运行完毕之间,且它们都是在同一个处理器上运行的抢占了共享的这个CPU资源

在用户的视角上,这些进程看似同时进行,但不是真正意义上的“同时进行”,因为只有一个处理器,在固定的时刻只有固定的进程被执行了,只不过CPU处理的速度很快,它把一个时间段划分成很短的时间片段,然后在这之间来回切换。这个时间片段短到人无法感知的程度,所以才能让用户感觉是多个进程同时在进行。并发也称时分复用,是系统对于进程的一种调度管理

2.并行:系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,是真正的同时进行,这种方式我们称之为并行

其实决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以并行

一、进程的概念

.c文件通过命令gcc xxx.c -o 程序名 编译成二进制文件并给它取了个名字 这就是程序

  • 程序:二进制文件存在ROM(flash、磁盘...),属于静态概念

  • 进程:程序的一次执行过程,启动中的程序,存在RAM运行内存中,占用cpu,属于动态概念

shell上查看当前进程的命令有:

  • ps 显示当前目录的进程
  • ps -elf 或 ps -aux显示查看当前所有进程
  • ps -elf|grep xxx 符号'|'是管道符,可以过滤出与"xxx"相关的进程
  • top 类似windows上的"任务管理器"

显示所有进程,能看到有关每个进程具体的信息,有PID、CPU占用率、创建时间等。

其中:PID进程标识符,它是一个非负整数,对于每个进程而言都是唯一的(进程创建后就会获得一个PID,如果进程退出或被杀死后,这个PID也会消失,留给之后的进程用)

不过有一些PID是固定的:

0 交换进程(进程调度用的)

1 init进程 (系统初始化时设置配置文件的工作

二、进程的空间分配

 当一个程序被执行的时候,系统自动为进程分配如下的虚拟内存(物理内存不可直接访问)

  • 命令行参数环境变量:main函数的参数:int argc ,char **argv

  • stack栈:局部变量(不包括static声明的变量)、函数调用时的入参返回地址

  • heap堆:进程运行中调用malloc申请的动态内存

  • bss:未初始化的全局变量

  • data:数据段,已初始化的全局变量

  • txt:代码段

  • 进程控制块(pcb):除包含上面的内容,还存放了进程的属性,有PID、进程用户、进程状态、优先级(优先级高的进程先执行)、文件描述符表(记录进程中打开的文件,最多可打开1024个文件)

 三、进程类型

  • 交互进程:在shell下启动(shell本身也是一个进程),可在前台和后台运行(用得多),shell窗口上正在运行的进程可用ctrl Z 使其在后台运行,但 ctrl C 关不掉后台进程

  • 批处理进程:作业队列中按顺序执行的(用得少)

  • 守护进程:特殊的后台服务进程,独立于终端,一直在后台运行,守护进程无法被shell命令切换为前台进程

jobs                         查看后台进程

bg [进程序号]          将挂起的进程放在后台运行

fg [后台进程序号]    把后台运行的进程放到前台运行

./程序名 &                程序后台运行


http://www.ppmy.cn/devtools/137944.html

相关文章

QT6学习第四天 感受QT的文件编译

QT6学习第四天 感受QT的文件编译 使用纯代码编写程序新建工程 使用其他编辑器纯代码编写程序并在命令行运行使用 .ui 表单文件生成界面使用自定义 C 窗口类使用现成的QT Designer界面类 使用纯代码编写程序 我们知道QT Creator中可以用拖拽的方式在 .ui 文件上布局&#xff0c…

【计算机网络】计算机网络概述

当我们决定要谈谈网络的时候,我想在谈之前,有必要了解一下“协议”这个词。协议,定义了在俩个或者多个通信实体之间交换报文的格式和次序,以及报文发送、接收报文或者其他的事件所采取的动作。定义都比较晦涩,那就让我…

QML学习 —— 33、弹出式菜单(附源码)

效果 说明 Menu菜单类型为本机平台菜单弹出式菜单提供QML API。 代码 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 import QtQuick.Layouts 1.12Window {id: rootvisible:

解决Ubuntu下无法远程登录

1.检查 SSH 服务状态: sudo systemctl status ssh.service ssh服务状态正常 2.查看是否安装了SSH服务(如果显示为空则没安装) sudo ps -e |grep ssh 3.安装openssh-server sudo apt-get install openssh-server 4.查看是否安装成功 su…

Spring Boot英语知识网站:安全与维护

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了英语知识应用网站的开发全过程。通过分析英语知识应用网站管理的不足,创建了一个计算机管理英语知识应用网站的方案。文章介绍了英语知识应用网站的系…

【随笔】一次JS和python中的MD5加密的记录

// 使用CryptoJS进行MD5加密和Base64编码 const sign CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(CryptoJS.MD5(sign2encrypt).toString()));上面这段JS和下面这个python等价 def hash_and_encode(input_string):sign2encrypt input_string# 使用 hashlib 进行 …

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论,感谢大家支持! 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

如何用Excel做数据可视化自动化报表?

作为一个经常需要做数据报表的人,我最常用的工具是Excel,对于我来说用Excel处理繁琐冗杂的数据并不难,但是我发现身边很多人用Excel做的数据报表非常的耗时,而且最后的成品也是难以直视,逻辑和配色等都非常的“灾难”。…