【操作系统】探究进程奥秘:显示进程列表的解密与实战

🌈个人主页:Sarapines Programmer
🔥 系列专栏:Linux专栏:《探秘Linux | 操作系统解密》
⏰诗赋清音:月悬苍穹泛清辉,梦随星河徜徉辉。情牵天际云千层,志立乘风意自飞。

目录

🌌1 初识Linux OS

🌌2 显示进程列表

🌍2.1 研究目的

🌍2.2 研究内容

🌍2.3 研究步骤

🌍2.4 研究过程

🌍2.5 研究心得

📝总结


🌌1 初识Linux OS

Linux是一种开源的Unix-like操作系统内核,它是基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。Linux内核最初是由芬兰程序员Linus Torvalds在1991年创建的,之后成为自由软件和开源社区的一个主要项目。

以下是Linux操作系统的一些主要特点和组成部分:

  1. 内核(Kernel): Linux内核是操作系统的核心,它管理系统资源,如处理器、内存、设备驱动程序等。Linus Torvalds最初编写了Linux内核,它是Linux操作系统的基础。

  2. Shell(命令解释器): Linux操作系统使用命令行界面(CLI),用户与系统交互通过Shell。用户可以通过输入命令执行各种任务,管理文件、进程、权限等。常见的Shell包括Bash(Bourne Again SHell)和Zsh。

  3. 文件系统: Linux支持多种文件系统,包括Ext4、XFS、Btrfs等。文件系统负责管理存储设备上的文件和目录,以及文件的权限、所有权等信息。

  4. 用户界面: 虽然Linux以CLI为主,但也支持图形用户界面(GUI)。常见的Linux桌面环境有GNOME、KDE、XFCE等,它们提供了直观的用户体验。

  5. 软件包管理系统: 大多数Linux发行版都有自己的软件包管理系统,用于安装、更新和删除软件。常见的包管理工具有APT(Debian/Ubuntu)、YUM(Red Hat/CentOS)、Pacman(Arch Linux)等。

  6. 网络功能: Linux具有强大的网络功能,支持各种网络协议和服务。它可以作为服务器运行各种网络服务,如Web服务器(Apache、Nginx)、邮件服务器(Postfix、Sendmail)、文件服务器(Samba)等。

  7. 多用户和多任务: Linux是一个多用户系统,多个用户可以同时访问同一台机器。它也是一个多任务系统,可以同时运行多个进程。

  8. 安全性: Linux以安全性而闻名,系统管理员可以设置用户权限、访问控制列表(ACLs)等来确保系统的安全性。

  9. 开源和自由: Linux是开源软件,其源代码可以被任何人查看、修改和分发。大多数Linux发行版是免费提供的,用户可以自由选择、使用和分发。

  10. 发行版(Distribution): 由于Linux内核是开源的,不同的组织和社区创建了各种Linux发行版,例如Ubuntu、Debian、Fedora、CentOS、Arch Linux等。每个发行版都有自己的特点和包管理系统。

总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。


🌌2 显示进程列表

🌍2.1 研究目的

  1. 掌握进程结构及进程管理原理:理解进程结构是深入研究操作系统的基础。进程是程序的执行实体,了解其结构包括进程控制块、程序计数器、寄存器等要素。同时,深入了解进程管理原理,如进程的创建、调度、同步和通信,是为了有效地协调和控制各个进程,确保系统资源的合理利用。

  2. 进一步了解用户空间和内核空间的概念:用户空间和内核空间是操作系统的关键概念。用户空间是给用户程序提供的独立内存空间,而内核空间是操作系统内核运行的特权空间。通过研究显示进程列表,可以更深入地理解用户空间和内核空间之间的切换机制,以及用户程序和操作系统内核之间的交互方式。

  3. 加深对进程调度算法的理解:进程调度算法直接影响系统的性能和响应速度。通过研究显示进程列表,可以深入了解不同的进程调度算法,如先来先服务(FCFS)、最短作业优先(SJF)、轮转法(Round Robin)等。了解这些算法的优缺点,有助于优化系统的性能和资源利用效率。

  4. 探讨进程间通信和同步机制:多个进程之间的通信和同步是操作系统设计中的关键问题。通过研究显示进程列表,可以更深入地了解进程间通信的方式,如共享内存,以及同步机制的实现,如信号量、互斥锁等。这有助于确保进程间协同工作的正确性和稳定性。


🌍2.2 研究内容

  1. 进程列表的获取和展示: 研究如何在操作系统中获取和展示当前运行的进程列表。这包括了理解系统调用和API,以及使用相应的工具或命令行来检索有关正在运行进程的信息。了解进程的状态、PID(进程标识符)、CPU利用率等关键信息是这个方面的核心内容。

  2. 进程调度和优先级: 深入研究操作系统是如何进行进程调度的,包括进程的创建、暂停、恢复和终止等操作。了解进程调度算法和优先级策略,以及它们如何影响系统性能和响应时间,是理解操作系统中进程列表管理的重要组成部分。

  3. 进程通信和同步: 研究进程之间的通信和同步机制,以确保它们能够有效地协同工作。这可能涉及到共享内存、消息传递、信号和同步原语等概念。了解这些机制有助于理解进程列表中的多任务协作,以及如何避免竞态条件和死锁等问题。


🌍2.3 研究步骤

1.使用vi /usr/src/linux-2.4.20-8/include /linux/sched.h查看task_struct结构中的成员变量,后续显示的变量名称可在此处找到.

2.参考ppt给定源码,根据task_struct结构中找出的十个成员变量通过指针指向,并使用%字符限制显示格式(此处需要在task_struct结构中提前记录变量所属类型和变量名)

3.输入gcc -c –I/usr/src/linux-2.4.20-8/include –Wall xxx.c进行编译,并使用ls查看编译成功显示xxx.o文件.

4.输入insmod xxx.o进行挂载,显示挂载成功.

5.输入dmesg查看日志信息显示十列,其中第一列为变量名.

6.输入rmmod xxx取消挂载,显示Quit等信息.


🌍2.4 研究过程


🌍2.5 研究心得

  1. 深入理解用户空间和内核空间: 通过本次试验,我加深了对用户空间和内核空间的理解。特别是在研究进程结构和管理原理时,我意识到这两个空间的界限对于操作系统的正常运行至关重要。了解了task_struct结构体的成员变量,并发现进程通过双向循环链表连接,这进一步加深了我对用户空间和内核空间交互的认识。

  2. 掌握进程结构及管理原理: 在课程设计中,我通过查询task_struct结构体,深入了解了进程的结构和管理原理。了解到进程通过task_struct的next_task和prev_task成员变量形成链表,而通过指针操作,可以灵活地管理和控制进程。这为我理解操作系统中进程管理的底层机制提供了实际案例和经验。

  3. 挑战和优化显示格式: 在进行dmesg显示的表头格式设置时,我面临了一些挑战,特别是在限定格式时遇到了显示不全的问题。我通过采用空格限制和调整%限定符的方式,虽然较为笨拙但在不断的尝试中,我找到了较为美观和有效的显示格式。这过程中,我也学到了通过编译和挂载等方式进行实时调试和优化的重要性,为后续的实际项目开发积累了经验。


📝总结

Linux操作系统的领域就像一片未被勘探的信息大海,引领你勇敢踏入开源系统的神秘领域。这是一场独特的学习冒险,从基本概念到系统架构,逐步揭示更深层次的操作系统原理、命令行工具和高级系统管理的奥秘。

渴望挑战Linux操作系统的学习路径和掌握系统管理技术?不妨点击下方链接,一同探讨更多Linux操作系统的奇迹吧。我们推出了引领趋势的💻 Linux专栏:《探秘Linux | 操作系统解密》,旨在深度探索Linux的实际应用和创新。🌐🔍

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

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

相关文章

OpenCV之图像匹配与定位

利用图像特征的keypoints和descriptor来实现图像的匹配与定位。图像匹配算法主要有暴力匹配和FLANN匹配,而图像定位是通过图像匹配结果来反向查询它们在目标图片中的具体坐标位置。 以QQ登录界面为例,将整个QQ登录界面保存为QQ.png文件,QQ登…

IDEA2023版如何创建web项目

一、新建项目 点击File->New->Project...,如果是第一次创建项目则单击New Project 二、添加Web Application 建好的样子 把web移动到main目录下同时改名为webapp 三、不存在Add Framework Support添加Web Application 如何存在Add Framework Support&#x…

运维工程师的出路揭秘:跨越35岁半衰期,探寻职业发展新路径

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆云计算学堂 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 写在前面 本章主题 一.35岁被称为运维半衰期…

800+顶尖架构师齐聚深圳,第十届GIAC全球互联网架构大会,分享行业前沿视角与技术架构落地实践思考!(附:大会核心PPT下载)

2023年6月30-7月1日,由MSUP与高可用架构社区、深圳市软件行业协会联合主办的GIAC全球互联网架构大会在深圳华侨城洲际酒店圆满落幕。 本届大会邀请到了阿里、美图、腾讯、字节跳动、顺丰、华为、快手、B站等多个行业的近百位一线架构师、技术专家,围绕AI…

类加载器及其类加载子系统

类加载器子系统作用 类加载器子系统的作用是负责将字节码文件加载到内存中,并将其转化为能够被虚拟机直接使用的形式。它是Java虚拟机的一部分,具体作用如下: 加载 类加载器负责将类的字节码文件加载到虚拟机的方法区中,以便…

L1-061:新胖子公式

题目描述 根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。 输入格式: 输入在一行中给出两个正数,依次为…

白龙地铁消费项目(地铁消费系统,包括用户端、管理端)

大一学的C#可视化项目文件,所有功能均可使用。可以直接下载 下方是演示照片

sigmoid softmax优化

1.前言 最近在搞模型部署发现,推理速度不能满足我们需求,于是最近学习了优化算子技巧,学到了sigmoid,softmax算子优化,真的数学之美。2.sigmoid算子优化 一.算子优化图 我们根据sigmoid公式,我们进行求反…

谷歌公布 2023 年最受欢迎的 Chrome 扩展

2023年,谷歌公布了最受欢迎的Chrome扩展,共有12款涵盖了多个领域,从提升工作效率到游戏娱乐。这些扩展旨在增强用户的浏览体验和生产力。 Scribe 功能:使用AI记录工作流程并创建逐步指南。 特点:自动记录和生成详细…

【完整项目】基于Python+Tkinter+FFD(free-form deformations)的2D彩色图像实时网格自由变形软件的设计与实现

文章目录 一、效果展示二、前言介绍三、软件使用说明3.1 环境配置3.2 文件结构3.3 准备工作 四、快速开始五、主要思路算法思路网格变形和实时操作思路 六、总结与反思七、代码链接八、其他完整项目 一、效果展示 校正比萨斜塔: 人脸变形: 图像拼接结果…

C# 读取Word表格到DataSet

目录 功能需求 Office 数据源的一些映射关系 范例运行环境 配置Office DCOM 关键代码 组件库引入 ​核心代码 杀掉进程 总结 功能需求 在应用项目里,多数情况下我们会遇到导入 Excel 文件数据到数据库的功能需求,但某些情况下,也存…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十七:演示功能模块相关功能实现

一、本章内容 本章实现常见业务功能,包括文章管理、商品管理、订单管理、会员管理等功能。 1. 详细课程地址: https://edu.csdn.net/course/detail/38183 2. 源码下载地址: 点击下载 二、界面预览 三、开发视频 3.1 B站视频地址:

Jenkins 自动设置镜像版本号

使用Jenkins环境变量当作镜像版本号 这样version变量就是版本号,在镜像构建的过程中可以使用 docker build 之后,如果有自己的镜像库,肯定要docker push 一下 至于部署的步骤,一般需要stop并删除原有的容器.我这里用的是docker-compose。同样…

如何使用 pnpm 实现前端 Monorepo项目管理

前言 随着软件开发项目变得越来越庞大和复杂,如何有效管理和维护代码库成为了一个重要的问题。一种流行的解决方案是 Monorepo,也就是在一个版本控制系统中管理所有的项目代码。 什么是 Monorepo Monorepo 是一种项目代码管理方式,指单个仓…

PHP-8.1.0-dev 后门命令执行漏洞复现_zerodiumvar_dump

0x00漏洞描述 PHP 8.1.0-dev 版本在2021年3月28日被植入后门,但是后门很快被发现并清除。当服务器存在该后门时,攻击者可以通过发送User-Agentt头来执行任意代码。 0x01影响范围 PHP 8.1.0-dev 0x02环境搭建 1、本次环境搭建使用vulhub中的docker环…

PPT中加入页码

PPT中加入页码 文章目录 简单版本样式更改 简单版本 PPT中插入页码,基础的就是在“插入”选项卡中单机“幻灯片编号”即可 样式更改 然而,就像我们做幻灯片不满足于白底黑字一样,页码也总不能是默认的样式。 比如,在页码下面…

2023年全国省市区县行政区划矢量数据(含10段线)

2023年,中国地图面貌发生了重大变化,领土面积由960万平方公里扩大到1045万平方公里,九段线改为了十段线。 因此在使用地图的时候,特别是做全国的地图的时候,一定需要最新的行政界限,今天就将最新的省市县行…

在Vue3中使用qrcode库实现二维码生成

本文主要介绍在Vue3中使用qrcode库实现二维码生成的方法。 目录 一、基础用法实现二、toDataURL()方法三、toCanvas()方法四、create()方法五、QRCodeRenderersOptions()方法 在Vue3中实现二维码生成需要使用第三方库来处理生成二维码的逻辑。常用的库有 qrcode和 vue-qrcode…

使用 pytest.ini 文件控制输出 log 日志

一、前置说明 pytest.ini 文件中可以配置参数来控制 pytest 的运行行为,其存放路径要求与 conftest.py 一样。 项目根目录project_root/ ├── pytest.ini ├── tests/ │ └── test_demo.py以test开头的测试子目录project_root/ ├── tests/ │ ├── pytest.in…

c# OpenCvSharp透视矫正六步实现透视矫正(八)

透视矫正,引用文档拍照扫描,相片矫正这块。 读取图像Cv2.ImRead();预处理(灰度化,高斯滤波、边缘检测)轮廓检测(获取到最大轮廓)获取最大面积轮廓的四个顶点标识最小矩形坐标透视矫正显示 完整代码 // 1、…