首页 > 系统相关 >【Windows】操作系统之任务管理器(第一篇)

【Windows】操作系统之任务管理器(第一篇)

时间:2024-07-20 16:55:29浏览次数:9  
标签:文件 Widget 管理器 操作系统 编译 Windows 第一篇 ui

一、操作系统简介

Windows操作系统是由微软公司(Microsoft)开发的一款图形操作系统,它以其强大的功能和广泛的用户基础,成为了目前世界上用户使用最多、兼容性最强的操作系统之一。以下是关于Windows操作系统的详细介绍:

一、历史与发展

  • 起源:Windows操作系统的历史可以追溯到1983年,当时微软推出了第一个版本Windows 1.0。随着时间的推移,Windows系统经历了多个版本的迭代和发展,逐渐成为了计算机领域的主导操作系统。
  • 重要版本:Windows系统的主要版本包括Windows XP、Windows 7、Windows 8、Windows 10以及最新的Windows 11等。每个版本都引入了新的功能和改进,以满足不同用户的需求。

二、主要功能

Windows操作系统具有多种核心功能,这些功能共同构成了其强大的计算机使用体验:

  1. 处理机管理:负责处理中断事件、处理器调度等,确保计算机能够高效地运行多个任务。
  2. 存储管理:管理存储器资源,为多道程序运行提供支撑,包括存储分配、存储共享、存储保护和存储扩充等功能。
  3. 设备管理:管理各类外围设备,完成用户提出的I/O请求,提高I/O设备的利用率。
  4. 文件管理:对系统的信息资源进行管理,实现文件的共享、保护和保密,保证文件的安全性。
  5. 网络与通信管理:支持多协议标准,如TCP/IP,提供Internet连接和网络管理功能。
  6. 用户接口:提供友好的用户接口,包括程序接口、命令接口和图形接口,方便用户与系统进行交互。

三、特点与优势

  1. 易用性:Windows操作系统具有直观的图形用户界面(GUI),易于理解和使用。
  2. 多任务处理能力:支持同时运行多个应用程序,提高工作效率。
  3. 安全性:具有强大的安全特性,如账户控制、权限控制、文件安全等,保护用户数据和设备安全。
  4. 稳定性:经过不断优化和改进,Windows操作系统具有很好的稳定性,能够减少崩溃和故障的发生。
  5. 网络支持:支持多协议标准,方便用户进行Internet连接和网络管理。
  6. 自动更新:提供定期更新服务,不断改进功能和修复故障,提升用户体验。

操作系统是硬件上面第一层软件,直接与硬件交流,在操作系统中安装了很多的软件,也就是所谓的程序,程序是静态的指令。它只占系统磁盘的空间。执行以后,变成进程,占系统内存。

二、程序如何变成进程?

程序的编译过程通常包括四个主要阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。下面将详细解释每个阶段的作用和主要任务。

1. 预处理(Preprocessing)

作用
预处理是编译过程的第一步,它主要处理源代码中的预处理指令(如#include、#define等),并准备源代码以便后续的编译阶段。

主要任务

  • 宏定义展开:将所有的#define删除,并展开所有的宏定义。
  • 处理预编译指令:如#if、#elif、#else、#endif等条件编译指令。
  • 头文件包含:处理#include预编译指令,将被包含的文件插入到预编译指令的位置。
  • 删除注释:删除所有的注释。
  • 添加行号信息:添加行号信息、文件名标识,便于调试。
  • 保留#pragma指令:因为在编写程序时,经常要用到#pragma指令来设定编译的状态或指示编译器完成一些特定的动作。

示例
使用GCC编译器时,可以通过gcc -E main.c -o main.i命令生成预处理后的文件(.i文件)。

2. 编译(Compilation)

作用
编译是将预处理后的源代码转换成汇编代码的过程。

主要任务

  • 词法分析:将源代码字符串分割成一系列的标记(tokens)。
  • 语法分析:根据语言的语法规则,将标记组织成语法树(或抽象语法树)。
  • 语义分析:检查语法树的语义正确性,并进行类型检查等。
  • 中间代码生成:从语法树生成中间代码,便于后续的优化和生成目标代码。
  • 目标代码生成:将中间代码转换成特定平台的汇编代码。

示例
使用GCC编译器时,可以通过gcc -S main.i -o main.s命令生成汇编代码文件(.s文件)。

3. 汇编(Assembly)

作用
汇编是将汇编代码转换成机器码(二进制指令)的过程。

主要任务

  • 指令翻译:根据汇编指令和特定平台的规则,将汇编指令翻译成二进制形式的机器码。
  • 符号表生成:生成符号表,其中包含了程序中使用的变量、函数等的地址信息。
  • 生成目标文件:将翻译后的机器码和符号表等信息打包成目标文件(.o文件或.obj文件)。

示例
使用GCC编译器时,可以通过gcc -c main.s -o main.o命令生成目标文件(.o文件)。

4. 链接(Linking)

作用
链接是将多个目标文件以及所需的库文件合并成一个可执行文件的过程。

主要任务

  • 符号解析:解析目标文件中的符号引用,确定每个符号的实际地址。
  • 重定位:根据符号的实际地址,修改目标文件中相关的引用地址。
  • 库文件合并:将程序中用到的库文件中的代码和数据合并到可执行文件中。
  • 生成可执行文件:最终生成一个可以在特定平台上运行的可执行文件。

示例
使用GCC编译器时,可以通过gcc main.o -o main命令将目标文件链接成可执行文件(main)。

综上所述,程序的编译过程是一个复杂且系统的过程,它涉及多个阶段和多个方面的知识和技术。通过这个过程,高级语言编写的源代码被转换成计算机可以直接执行的机器码。

三、应用 任务管理器

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <windows.h>
#include <tlhelp32.h>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
public:
    void showProcess();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //显示所有的进程
    showProcess();


}

Widget::~Widget()
{
    delete ui;
}

void Widget::showProcess()
{
     //显示所有的进程
    PROCESSENTRY32  pe =  {sizeof(PROCESSENTRY32)};
    //1.获取操作系统的进程的链表,快照
    HANDLE hsnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if( INVALID_HANDLE_VALUE == hsnapShot)return;
    //2.获取链表的头
    bool bflag = Process32First(hsnapShot,&pe);

    //Qt 垃圾自动回收机制---- 对象树
    QString str;
    int i =0;
    while(bflag){
        //进程名称
        str = QString::fromWCharArray(pe.szExeFile);
        ui->tableWidget->setItem(i,0,new QTableWidgetItem(str));
        //进程id
        str = QString::number(pe.th32ProcessID);
        ui->tableWidget->setItem(i,1,new QTableWidgetItem(str));
        //线程数
        str = QString::number(pe.cntThreads);
        ui->tableWidget->setItem(i,2,new QTableWidgetItem(str));
        //3.遍历链表
       bflag = Process32Next(hsnapShot,&pe);
        ++i;
    }

}


void Widget::on_pushButton_clicked()
{
    //获取进程id
   int nRow = ui->tableWidget->currentRow();
   if(nRow == -1)return;
   QTableWidgetItem *pitem =  ui->tableWidget->item(nRow,1);
    //获取句柄
   int nProcessId = pitem->text().toInt();
   HANDLE hProcess= OpenProcess(PROCESS_TERMINATE,0,nProcessId);
    //结束进程
   if(hProcess){
        TerminateProcess(hProcess,-1);
        ui->tableWidget->removeRow(nRow);
   }
}

标签:文件,Widget,管理器,操作系统,编译,Windows,第一篇,ui
From: https://blog.csdn.net/abclui/article/details/140527283

相关文章

  • Windows下使用QT+OpenCV完成人脸检测(获取摄像头数据进行检测)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)Windows下使用QT+OpenCV完成人脸检测(获取摄像头数据进行检测)1.简介本文......
  • Node.js安装及环境配置超详细教程【Windows系统】
    目录Step1:下载安装包Step2:安装程序Step3:环境配置Step4:查看step5:nmp镜像 1.下载node.js  下载地址:Node.js 2.安装   2.1自定义安装路径(可以选择默认) 下图根据本身的需要进行,我选择了默认Node.jsruntime,然后Next:Node.jsruntime:表示运行环境npmpacka......
  • 将 .NET Framework 应用程序更新到 .NET Core。这是一个 VB.NET Windows 服务
    我有一个用VB.NET编写的有点旧的.NET4.7Windows服务。我想将其升级到.NETCore8.0,但升级向导似乎不想处理大量工作如果.NETCore支持VB.NETWindows服务,我找不到任何真正的内容....我可以找到大量创建控制台应用程序等的C#示例,但没有找到VB.NET的任何内......
  • Windows平台生成dump文件
    目录一.前言二.什么是dump文件三.为什么要生成dump四.修改注册表生成dump五.其他一.前言1.windows下的dump文件包括内核模式dump和用户模式dump两种,本文讨论用户模式dump。2.windows平台下生成用户模式dump有三种方式:用任务管理器手动生成/修改注册表/通过代码注册......
  • 在 Windows 上运行 Linux:WSL2 完整指南(一)
    系列文章目录在Windows上运行Linux:WSL2完整指南(一)......
  • Windows图形界面(GUI)-DLG-C/C++ - 工具栏(ToolBar)
    公开视频-> 链接点击跳转公开课程博客首页-> ​​​​​​链接点击跳转博客主页目录工具栏(ToolBar)创建工具栏-CreateWindowEx初始工具栏-TB_BUTTONSTRUCTSIZE工具栏图标-TBADDBITMAP-TB_ADDBITMAP工具栏按钮-TB_ADDBUTTONS示例代码工具栏(ToolBar)......
  • Windows图形界面(GUI)-DLG-C/C++ - 滑动条(Trackbar)
    公开视频-> 链接点击跳转公开课程博客首页-> ​​​​​​链接点击跳转博客主页目录滑动条(Trackbar)使用场景初始控件控件消息示例代码滑动条(Trackbar)使用场景音量控制亮度调节视频播放进度控制任何需要用户在特定范围内选择值的场景初始控件TBM_......
  • PVE安装windows7
    ProxmoxVEpve安装win7系统,安装Windows10和Windows11也是一样的流程/设置朗读全文Yourbrowserdoesnotsupporttheaudioelement.有什么用分享整个PVE重新安装Windows7的过程J4125已经有Window2008了,用来承载服务端应用还是妥妥的;可是最近搞硬件,CH341A土豪金24/25......
  • SteamDeck双系统之重装windows
    朗读全文Yourbrowserdoesnotsupporttheaudioelement.有什么用Steamdeck双系统之重装Windows系统解决WinPE无法进入安装时一直转圈怎么用方案一:使用U盘,进WinPE重装Windowssteamdeck更新steamos之后丢失启动项的简单修复教程sudoefibootmgr-c-L"S......
  • 电脑windows7系统环境Framework 4.6.2无法安装的解决方法
    一、错误1、尚未安装.net4.6,无法建立到信任根颁发机构的证书链的错误2、出现错误的原因:在安装Microsoft.NETFramework4.6.2脱机包时提示无法建立到信任根颁发机构的证书链二、解决方法1、实际上是要安装一个根证书MicrosoftRootCertificateAuthority2011.cer2、开始......