首页 > 系统相关 >linux进程概念

linux进程概念

时间:2024-11-11 16:17:44浏览次数:6  
标签:状态 优先级 概念 linux 进程 CPU 运行 nice

前言:

进程是linux中非常重要的概念,执行的每一个程序都是进程。因此我们需要了解进程。

1. 冯洛伊曼体系结构

我们常见的计算机以及不常见的计算机大多都遵循冯洛伊曼体系结构。

冯洛伊曼体系结构由五部分组成,分别是输出设备,输入设备,存储器,运算器和控制器组成。

输入设备包括键盘鼠标等。

输出设备包括显示器,投影仪等。

其中输入设备和输出设备并称为外设。

运算器和控制器并称为CPU。

注意:

存储器指的是内存。

CPU只能对内存中的数据进行读写,不能直接获取外设的数据。

外设只能通过存储器进行输入输出数据。

即所有设备都只能直接和内存打交道。

2. 操作系统

操作系统的功能:对下将软硬件资源管理起来,对上提供一个良好(稳定,安全,可靠)的执行环境。

2.1 那如何理解管理呢?

管理的下层的软硬件程序。

通过将各个软硬件用struct进行属性描述,再将其用链表或其他数据结构进行组织。这便是管理。

2.2 系统调用和库函数概念

系统调用的是操作系统给出的部分接口,供上层开发使用,这部分由操作系统提供的接口叫系统调用。其man中的是2号页。

由于系统调用对用户要求较高,并且功能比较基础。因此部分开发者对其进行适度封装。从而形成库,更有利于对上层用户进行二次开发。对应man中的三号页

操作系统对进程的管理很简单,就是先描述进程,再组织进程。

3. 进程

什么是进程呢?

进程是程序的一个执行实例,正在执行的程序等。

3.1 如何描述进程

进程的信息被放在进程控制块里面,是进程属性的集合。

PCB(process control block):进程控制块。linux操作系统下面的pcb是:task_struct

task_struct是linux内核中的一种数据结构,里面包含着进程的信息。

3.1.1 task_struct内容分类

标识符:描述进程的唯一标识符

状态:任务状态等

优先级:相对于其他进程的优先级(renice,nice)

上下文数据:进程的各种数据,如页表等。

3.2 查看进程

可以使用 ls /proc查看进程的信息

也可以使用top或ps等查看进程信息。

eg:ps axj | head -1 &&ps axj |grep a.out

结果:

解释:使用grep筛选出只含test,但是因为grep要再开一个进程,所以还会出现一个含test的结果。因此使用-v排除掉

代码:ps axj | head -1 &&ps axj |grep a.out|grep -v grep

3.2.1 获取pid和ppid

pid即标识符,是区分其他进程的唯一标识。

进程id:pid。通过getpid()得到。

父进程id:ppid。通过getppid()得到。

3.3 fork()函数

fork函数是进程里面一个极其重要的函数,其作用是开辟一个子进程,让子进程执行与父进程不一样的代码。

基础使用:

int ret = fork();
if(ret ==0)
{
 ............
}
if(ret>0)
{
 ............
}
if(ret <0)
{
  perror("");
}

fork函数有三种返回值,如果返回值是>0的,那么下面执行的就是父进程,如果返回值==0,那么就是子进程。如果<0,那么函数就报错。

3.4 进程状态

什么是正在运行的进程呢?我们需要知道进程的不同状态,在linux内核中,进程有时候也叫任务。

R状态:运行态,进程在运行中,要么在运行队列里

S状态:休眠态,进程在等待其他资源,也叫可中断睡眠

D磁盘休眠状态:也叫补课中断休眠状态,通常出现在进程向磁盘中写入数据的时候。

T状态:停止状态,通过sigstop信号给进程来停止进程,也可以通过sigcont信号让进程继续运行

x状态:死亡状态,即进程结束后的返回状态

z状态:僵尸状态,即进程死亡后没有人将其进行回收,进程就会一直保持该状态,最终导致内存泄漏。

我们还是通过ps等进行进程信息的查看

这里s后面的+表示的是该进程在前台运行。

为什么这个进程在运行,但是状态却显示的s状态呢?

因为CPU的运行速度不是靠人力能想象的,运行的非常快,而且CPU对每个进程会有时间片的概念,即每个进程在CPU上面运行的时间是很短很短的,这样是为了让每个进程在短时间内都能运行上。

3.5  孤儿进程

如果父进程提前退出,那么子进程退出后就会进入z状态,那么这种情况该如何处理呢?

这种情况的子进程称为孤儿进程。此时的子进程需要被1号进程领养,然后进程回收。

3.6 进程优先级

CPU资源分配的先后顺序就是指进程的优先权。

优先权高的进程优先执行。配置进程优先级对于多任务环境的linux很有用,能够有效改善系统性能。

这里面的NI是进程的nice值。

UID指的是执行者身份

pri是进程的优先级:其值越小越早被执行。

nice值加入后,pri(new) =pri(old) + nice;

当nice为负值时,pri减小,优先级变高,越快被执行。

nice的取值范围为-20到19,共40个级别。pri一开始为80。

如何查看优先级呢?

使用top查看进程优先级。

也可以用top更改进程的nice。 

进入top后按r,再输入进程pid,再输入nice值,既可以完全对已存在进程的nice值的修改。

3.7 进程间的特性:

竞争性:多个进程争夺同一个CPU资源。

独立性:多进程独享各自资源,多进程运行期间互不干扰

并行:多个进程在多个CPU下分别同时运行

并发:多个进程在同一个CPU下才用进程切换的方式,在一段时间内,让多个进程都得以推进,称为并发。

标签:状态,优先级,概念,linux,进程,CPU,运行,nice
From: https://blog.csdn.net/Ajiang2824735304/article/details/143680166

相关文章

  • apt-get——Debian Linux发行版中的APT软件包管理工具
    转自于:https://github.com/jaywcjlove/linux-command,https://blog.csdn.net/liudsl/article/details/79200134后不赘述apt-getDebianLinux发行版中的APT软件包管理工具,现在更推荐使用apt,相关命令附后。说明apt-get命令是DebianLinux发行版中的APT软件包管理工具。所有......
  • 一文详解!什么是设备管理?设备管理概念、功能、定义解读!
    一文详解!什么是设备管理?设备管理概念、功能、定义解读!管工厂的老板应该都很熟悉,一个制造厂的生产线,如果设备运行不畅,停机时间过长,不仅会影响产品的按时交付,还可能导致客户流失。这个时候设备管理的重要性就体现出来了,设备管理不仅涉及如何维护和保养这些设备,更关系到如何确保它们......
  • Linux中文件系统层次结构简述
    在Linux操作系统中,并没有像Windows那样的“盘符”概念。相反,Linux使用一个统一的文件系统层次结构,所有的文件和目录都挂载在一个单一的根目录/下。这种设计使得文件系统的管理更加灵活和一致。文件系统层次结构在Linux中,文件系统通常按照以下层次结构组织:/(根目录):文件系......
  • linux系统的简单介绍
    一个项目的工作流程:1.linux系统Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(LinusBenedictTorvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作......
  • 1分钟学会在Linux下模拟网络延迟
    1.背景为了测试程序的健壮性以及在弱网环境下程序的表现,通常需要创造一个“不那么稳定”的网络环境,但这种模拟十分不好控制变量,比如希望控制网络延迟在500ms时,现实环境则是难以实现的,那有什么解决的办法呢?答案是,可以在Linux下使用tc命令来模拟延迟。2.安装在不同的发行......
  • 【Linux进程篇2】学习进程大框架,学习进程前期必备。
    --------------------------------------------------------------------------------------------------------------------------------每日鸡汤:心有多大,舞台就有多大,只有想不到的,没有做不到的。-----------------------------------------------------------------------......
  • 【Linux】Linux环境基础开发工具使用(下)
    【Linux】Linux环境基础开发工具使用(下)......
  • 组态软件的概念
      一、前言组态软件是一种用于设计、配置和管理自动化系统的软件。它可以帮助用户快速地创建和修改自动化系统的界面、逻辑和通信功能,从而提高生产效率和质量。二、组态软件的定义组态软件是一种集成开发环境,用于设计、配置和管理自动化系统。它通常包括以下功能:1.图形......
  • linux 卸载node 并重装
     1、先卸载npmsudonpmuninstallnpm-g2、卸载nodeyumremovenodejsnpm-y看看是否有残留进入/usr/local/lib删除所有node和node_modules文件夹进入/usr/local/include删除所有node和node_modules文件夹进入/usr/local/bin删除node的可执行文件......
  • Linux安装jdk
    Linux安装jdk下载JDK安装包前往Oracle官网或其他JDK发行版网站,下载适合Linux系统的JDK安装包(可执行命令lscpu,查看Architecture字段确定)。创建安装目录在/usr/local目录下创建用于存放JDK安装包的目录,例如/usr/local/javasudomkdir/usr/local/javacd/usr/local/java上......