首页 > 系统相关 >进程管理

进程管理

时间:2024-08-31 16:52:33浏览次数:3  
标签:管理 后台作业 线程 前台 进程 root rocky8

一、解析进程和线程的区别? 解析进程的结构。
进程与线程的区别:
定义:
进程:进程是操作系统进行资源分配和调度的基本单位。它是正在执行的程序的实例,拥有独立的地址空间和系统资源。
线程:线程是进程中的一个实体,是CPU调度和执行的基本单位。线程自身不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。
资源拥有:
进程拥有独立的内存地址空间,每个进程都有自己独立的代码段、数据段和堆栈。
线程共享进程的内存地址空间,多个线程共享代码段、数据段和堆栈。
创建开销:
创建进程的开销比创建线程大,因为进程需要独立的内存空间和系统资源。
创建线程的开销较小,因为线程共享进程的资源,不需要额外的内存空间。
通信方式:
进程间通信(IPC)需要特定的机制,如管道、信号、消息队列等。
线程间通信可以直接通过读写进程数据段(如全局变量)来实现,因为它们共享相同的内存地址空间。
独立性:
进程间相互独立,一个进程的崩溃不会直接影响到其他进程。
线程间高度依赖,一个线程的崩溃可能会影响到整个进程。
上下文切换:
进程上下文切换开销大,因为涉及到虚拟地址空间的切换。
线程上下文切换开销小,因为它们共享相同的地址空间。
进程的结构:
进程通常由以下几个部分组成:

进程控制块(PCB):是操作系统管理进程的重要数据结构,包含了进程的基本信息,如进程状态、优先级、程序计数器、寄存器集合、进程ID、内存管理信息等。
代码段:包含进程执行的指令。
数据段:包含进程执行时使用的数据,包括全局变量和静态变量。
堆栈:用于存储局部变量、函数参数、返回地址等信息。
堆:用于动态内存分配,如使用malloc或new分配的内存。
文件描述符:进程打开的文件列表,用于文件操作。
信号处理:进程对信号的响应方式。
环境变量:进程运行时的环境设置。
线程列表:如果进程是多线程的,这里会包含所有线程的信息。
其他资源:如信号量、共享内存等同步和通信机制。
二、结合进程管理命令,说明进程各种状态。
进程的状态
进程在操作系统中的典型状态包括:

新建(New):进程已被创建,但还没有开始运行。此时,进程的PCB已经建立,但还没有被调度运行。
就绪(Ready):进程已经准备好运行,等待被调度器分配CPU。它可能因为等待I/O操作或其他资源而进入就绪状态。
运行(Running):进程正在执行。在单核CPU系统中,同一时刻只有一个进程处于运行状态;在多核系统中,可以有多个进程同时运行。
等待(Waiting):又称阻塞状态,进程正在等待某个事件的发生,如等待I/O操作完成、等待信号量等。在等待状态下,进程不会占用CPU资源。
终止(Terminated):进程已经完成其任务或由于某种原因被终止。在终止状态下,操作系统将释放进程所占用的资源。
挂起(Suspended):进程被暂时挂起,不参与调度。挂起状态可以进一步分为两种:
阻塞挂起(Blocked Suspended):进程在等待某个事件的同时被挂起。
就绪挂起(Ready Suspended):进程在就绪状态下被挂起。
在Linux系统中,可以使用一些命令来查看和管理系统中的进程,这些命令可以帮助我们了解进程的状态:

ps:显示当前系统中的进程状态。
ps aux:显示所有进程的详细信息。
ps -l:显示更详细的进程信息。
top:实时显示系统中进程的动态。
top:启动top命令,实时显示进程信息。
pstree:以树状图的形式显示进程。
pstree:显示进程树。
pgrep:根据条件查找进程。
pgrep :根据进程名查找进程。
pkill:根据条件杀死进程。
pkill :根据进程名杀死进程。
kill:发送信号给进程。
kill -9 :强制杀死进程。
nice 和 renice:调整进程的优先级。
nice :以低优先级运行命令。
renice :调整正在运行的进程的优先级。
三、说明IPC通信和RPC通信实现的方式。
IPC(进程间通信)和RPC(远程过程调用)是两种不同的通信机制,它们允许不同的进程或系统之间进行数据交换和通信。以下是它们各自的实现方式:

IPC通信的实现方式:
管道(Pipe):
匿名管道:最简单的IPC形式,用于有亲缘关系的进程间的通信。
命名管道(FIFO):允许不相关的进程间的通信。
消息队列:
消息队列允许一个或多个进程向它写入或读取消息。
信号(Signal):
信号是一种软件中断,用于通知进程某个事件已经发生。
共享内存:
允许多个进程共享一个给定的存储区,是最快的一种IPC。
信号量(Semaphore):
信号量用于控制多个进程对共享资源的访问。
套接字(Socket):
套接字是一种通信机制,允许不同主机上的进程进行通信。
共享文件系统:
进程可以通过读写文件系统中的文件来交换信息。
内存映射文件:
通过将文件映射到内存中,多个进程可以共享内存区域。
RPC通信的实现方式:
客户端-服务器模型:
RPC通信通常采用客户端-服务器模型,客户端发送请求,服务器处理请求并返回结果。
远程过程调用协议:
定义了RPC通信的协议,包括参数的编码、传输和解码。
数据序列化:
客户端需要将调用参数序列化(如转换成字节流),通过网络发送给服务器。
网络传输:
使用TCP/IP或其他网络协议来传输序列化后的数据。
服务端处理:
服务器接收到请求后,反序列化参数,调用相应的本地过程,并处理请求。
结果返回:
服务器将结果序列化后通过网络发送回客户端。
客户端接收:
客户端接收到结果,反序列化并使用结果。
动态绑定:
RPC允许客户端在不知道服务端接口的情况下调用远程过程。
错误处理:
RPC机制需要处理网络错误、数据序列化错误等。
安全机制:
包括认证、授权、数据加密等,以确保通信的安全性。
实现示例:
IPC示例:在Linux系统中,可以使用shmget和shmat系统调用来创建和访问共享内存。
RPC示例:使用gRPC框架,客户端和服务器可以通过protobuf定义服务接口,然后使用gRPC工具生成客户端和服务器端的代码,实现RPC通信。
IPC和RPC都是进程间通信的重要方式,但它们的主要区别在于IPC通常用于同一系统内的不同进程间通信,而RPC则用于不同系统或网络中的进程间通信。

四、总结Linux,前台和后台作业的区别,并说明如何在前台和后台中进行状态转换。
前台作业与后台作业的区别:
前台作业(Foreground Job):
前台作业与终端直接交互,可以接收用户的输入并显示输出。
终端被前台作业独占,直到作业完成或被暂停。
可以通过Ctrl + C来中断前台作业。
后台作业(Background Job):
后台作业不与终端直接交互,它们在后台运行,不会阻塞用户在终端进行其他操作。
后台作业的输出通常会被重定向到文件或终端,以避免与其他命令的输出冲突。
可以通过jobs命令查看后台作业的状态。
状态转换:
从前台转到后台:
使用Ctrl + Z可以将当前前台作业挂起到后台,挂起的作业会被暂停。
然后使用bg命令将挂起的作业放到后台继续运行。
从后台转到前台:
使用fg命令可以将后台作业调回到前台运行。
如果有多个后台作业,可以使用fg %job_number来指定将哪个作业调回前台。
将后台作业暂停:
后台作业可以通过kill命令发送SIGSTOP信号来暂停,例如kill -STOP %job_number。
将暂停的后台作业恢复:
使用bg命令可以将暂停的后台作业恢复到后台继续运行。
示例:
假设你正在运行一个长时间运行的命令,如top,并且想要将其放到后台运行:

[root@rocky8 ~]#top
top - 16:29:59 up 2:20, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 151 total, 1 running, 150 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1945.4 total, 1420.2 free, 206.0 used, 319.2 buff/cache
......

top
运行时,按下Ctrl + Z将其挂起:
[1]+ Stopped top
[root@rocky8 ~]#

然后使用bg命令将其放到后台运行

[root@rocky8 ~]#bg
[1]+ top &

现在top命令在后台运行。如果你想将其调回前台,可以使用fg命令

fg
五、定时任务

实现定时任务,每日凌晨1点,删除指定文件

[root@rocky8 ~]#which rm
alias rm='rm -i'
/usr/bin/rm

创建文件

[root@rocky8 ~]#touch test.txt

编辑计划任务

[root@rocky8 ~]#crontab -e
crontab: installing new crontab
[root@rocky8 ~]#crontab -l
0 1 * * * /usr/bin/rm -rf /root/test.txt >/dev/null 2>&1
实现定时任务每月月初对指定文件进行压缩

创建任务每月1号对test1.txt文件进行压缩

[root@rocky8 ~]#touch test1.txt

[root@rocky8 ~]#which tar
/usr/bin/tar

创建计划任务

[root@rocky8 ~]#crontab -e
crontab: installing new crontab
[root@rocky8 ~]#crontab -l
0 0 1 * * /usr/bin/tar -czf /root/test1/txt

标签:管理,后台作业,线程,前台,进程,root,rocky8
From: https://www.cnblogs.com/lyon-blog/p/18390479

相关文章

  • 基于asp.net的小区物业管理系统附完整源码
    今天给大家分享一个小区物业管理系统,希望对大家的学习有所帮助1.主要功能该系统的主要功能包含三个角色,管理员、员工、业主,主要功能包含用户管理、车位管理、业主管理、数据库备份、个人中心、密码修改、报修管理、物业费管理、用户注册登录等等模块。2.开发工具及其......
  • 【Material-UI】Switches with FormGroup:如何有效管理多选控件
    文章目录一、Switch组件与FormGroup的基本概述1.Switch组件简介2.FormGroup组件的作用二、SwitcheswithFormGroup的应用场景三、如何实现SwitcheswithFormGroup1.代码详解2.事件处理四、使用FormGroup的注意事项1.确保控件关联性2.多选情况下的替代......
  • 进程间的通信(无名管道)
    进程间通信IPCInterProcessCommunication1.进程间通信方式1.早期的进程间通信:无名管道(pipe)、有名管道(fifo)、信号(signal)2.systemVPIC:共享内存(sharememory)、信号灯集(semaphore)、消息队列(messagequeue)3.BSD:套接字(socket)2.无名管道2.1特点只......
  • [开题报告]flask框架的殡仪馆信息管理系统设计与实现(python+程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的进步和人口老龄化的加剧,殡葬服务行业面临着前所未有的挑战与机遇。传统的手工记录与管理方式已难以满足现代殡仪馆高效、规范、......
  • 进程(接口、守护进程)
    进程process1.什么是进程进程和程序的区别1.1概念程序:编译好的可执行文件存放在磁盘上的指令和数据的有序集合(文件)程序是静态的,没有任何执行的概念。进程:一个独立的可调度的任务执行一个程序分配资源的总称进程是程序执行的一次过程进程是动态的,包括创建、调......
  • [开题报告]flask框架春荣公司人事管理系统设计与实现(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今快速发展的商业环境中,人力资源管理已成为企业核心竞争力的重要组成部分。随着企业规模的扩大和员工数量的增加,传统的人事管理方式已......
  • 磁盘和文件系统管理(一)
    检测并确认新硬盘fdisk命令查看或管理磁盘分区fdisk-l[磁盘设备]或fdisk[磁盘设备]交互模式中的常用指令m、p、n、d、t、w、qddeleteapartition*删除分区gcreateanewemptyGPTpartitiontable创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区)llist......
  • 磁盘和文件系统管理(二)
    LVM概述2-1LogicalVolumeManager,逻辑卷管理动态调整磁盘容量,从而提高磁盘管理的灵活性需要注意:/boot分区用于存放引导文件,不能基于LVM创建图形界面管理工具system-config-lvm/centos7系列光盘源文件中不带该程序LVM机制的基本概念PV(物理卷)VG(卷组)LV(逻辑卷)LVM的......
  • 进程和计划任务管理
    查看进程信息psps命令查看静态的进程统计信息ps-elf查看进程信息toptop命令查看动态的进程排名信息top查看进程信息pgreppgrep命令根据特定条件查询进程PID信息pgrep-l“log”pgrep-l-Uteacher-ttty1查看进程信息pstreepstree命令以树形结构列出进程......
  • 目录和文件管理
    cat命令用途:显示出文件的内容cat[选项]文件名…more命令用途:全屏方式分页显示文件内容more[选项]文件名…交互操作方法按Enter键向下逐行滚动按空格键向下翻一屏按q键退出less命令用途:与more命令相同,但扩展功能更多less[选项]文件名…交互操作方法Page......