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

🌈个人主页: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.rhkb.cn/news/224764.html

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

相关文章

Go_defer详解

defer 1. 前言 defer语句用于延迟函数的调用,每次defer都会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行。 为了方便描述,我们把创建defer的函数称为主函数,defer语句后面的函数称为延迟函数。 延迟函数可能有输入…

IDEA 2022.2 安装教程

1.下载2020.3版本IDEA 链接:https://pan.baidu.com/s/1IFK8VRjT7vM2VM75ToveGQ?pwd176m 提取码:176m 2.安装 下载完成后,双击exe安装包,出现IDEA安装欢迎首页: 3.将 ja - netfiltet 文件复制到idea安装目录附件 …

Docker部署Nexus Maven私服并实现远程访问Nexus界面

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定N…

【ONE·MySQL || 基础介绍】

总言 主要内容:MySQL在Centos 7下的安装(主要学习相关指令语句,理解安装操作是在做什么)、对MySQL数据库有一个基础认识。 文章目录 总言0、MySQL的安装与卸载(Centos 7)0.1、MySQL的卸载0.1.1、卸载不必要…

面向对象设计与分析40讲(15)简单工厂方法模式

文章目录 定义示例优缺点定义 简单工厂模式是一种创建型模式,用于根据客户端的需求创建对象实例,所谓的需求反映到编程语言里就是传入的参数。 简单工厂模式包括三个主要部分: 工厂类(Simple Factory):这是整个模式的核心。它负责根据客户端的请求来创建并返回相应的对…

.Net7.0 或更高版本 System.Drawing.Common 上传图片跨平台方案

项目升级.Net7.0以后,System.Drawing.Common开关已经被删除,且System.Drawing.Common仅在 Windows 上支持 ,于是想办法将原来上传图片验证文件名和获取图片扩展名方法替换一下,便开始搜索相关解决方案。 .Net6.0文档:…

Java Web基础详解

回顾 之前的两篇的文章已经大概的带我们了解了tomcat的一些基本的操作,比如从零搭建我们自己的调试环境以及官方文档构建的方式,接下来的话,我将带大家来了解一下tomcat的一些基础知识,这些基础知识将以问题的方式抛出&#xff0…

移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例

前段时间鸿蒙4.0引发了很多讨论,不少业内人士认为,鸿蒙将与iOS、安卓鼎足而三了。 事实上,从如今手机操作系统竞赛中不难看出,安卓与iOS的形态、功能逐渐趋同化,两大系统互相取长补短,综合性能等差距越来越…

索引进阶 | 再谈 MySQL 的慢 SQL 优化

索引可以提高数据检索的效率,降低数据库的IO成本。 MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。 MySQL提供了Explain,用于显示SQL执行的详细信息,可以…

《Git快速入门》Git分支

1.master、origin、origin/master 区别 首先搞懂git分支的一些名称区别: master : Git 的默认分支名字。它并不是一个特殊分支、跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它&#xff0c…

iOS设备信息详解

文章目录 ID 体系iOS设备信息详解IDFA介绍特点IDFA新政前世今生获取方式 IDFV介绍获取方式 UUID介绍特点获取方式 UDID介绍获取方式 OpenUDID介绍 Bundle ID介绍分类其他 IP地址介绍获取方式 MAC地址介绍获取方式正常获取MAC地址获取对应Wi-Fi的MAC地址 系统版本获取方式 设备型…

什么是OAuth2.0

前言 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数…

智能优化算法应用:基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蛇优化算法4.实验参数设定5.算法结果6.参考文…

Zookeeper-应用实战

Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。 ZooKeeper官方的Java客户端API。 第三方的Java客户端API,比如Curator。 ZooKeeper官方的客户端API提供了基本的操作:创建会话、创建节点、读取节点、更新数据、…

AI赋能金融创新:ChatGPT引领量化交易新时代

文章目录 一、引言二、ChatGPT与量化交易的融合三、实践应用:ChatGPT在量化交易中的成功案例四、挑战与前景五、结论《AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀》📚→ [当当](http://product.dangdang.com/29658180.html) | [京东…

深入了解 Android 中的应用程序签名

深入了解 Android 中的应用程序签名 一、应用程序签名介绍1.1 应用程序签名1.2 应用程序签名的意义1.3 应用程序签名的流程1.4 应用程序签名的方案1.5 签名的重要性和应用场景 二、AOSP 的应用签名2.1 AOSP的应用签名文件路径2.2 应用程序指定签名文件 三、Android Studio 的应…

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测

【遥感影像深度学习】系列的第一章,Python遥感影像深度学习的入门课程,介绍如何使用卷积神经网络(CNN)从卫星图像中分割云层 1、数据集 在本项目中,我们将使用 Kaggle 提供的 38-Cloud Segmentation in Satellite Images数据集。 该数据集由裁剪成 384x384 (适用…

【csapp】cachelab

文章目录 Part APart B32 * 3264 * 6461 * 67 实验全程参考大佬的博客CS:APP3e 深入理解计算机系统_3e CacheLab实验 ,感觉大佬在矩阵转置那块介绍的还是有些简略,我自己又做了点动图加以补充理解。膜拜大佬! Part A 先解决解析命令行参数的…

jsonhandle 插件下载

网盘地址: 链接:https://pan.baidu.com/s/1hj4GKuGNyDNP2JzsJTLFtg 提取码:87rw 1.打开谷歌浏览器,选择扩展程序,记得选择为开发者模式,然后把下载好的CRX文件拖进去就行了

从零构建tomcat环境

一、官网构建 1.1 下载 一般来说对于开源软件都有自己的官方网站,并且会附上使用文档以及一些特性和二次构建的方法,那么我们首先的话需要从官网或者tomcat上下载到我们需要的源码包。下载地址:官网、Github。 这里需要声明一下&#xff…