当前位置: 首页 > news >正文

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

一、操作系统简介

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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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));//进程idstr = 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()
{//获取进程idint 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);}
}

相关文章:

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

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

图同构的必要条件

来源&#xff1a;离散数学...

Django获取request请求中的参数

支持 post put json_str request.body # 属性获取最原始的请求体数据 json_dict json.loads(json_str)# 将原始数据转成字典格式 json_dict.get("key", "默认值") # 获取数据参考 https://blog.csdn.net/user_san/article/details/109654028...

kotlin compose 实现应用内多语言切换(不重新打开App)

1. 示例图 2.具体实现 如何实现上述示例,且不需要重新打开App ①自定义 MainApplication 实现 Application ,定义两个变量: class MainApplication : Application() { object GlobalDpData { var language: String = "" var defaultLanguage: Strin…...

记录些MySQL题集(16)

MySQL 存储过程与触发器 一、初识MySQL的存储过程 Stored Procedure存储过程是数据库系统中一个十分重要的功能&#xff0c;使用存储过程可以大幅度缩短大SQL的响应时间&#xff0c;同时也可以提高数据库编程的灵活性。 存储过程是一组为了完成特定功能的SQL语句集合&#x…...

【算法基础】Dijkstra 算法

定义&#xff1a; g [ i ] [ j ] g[i][j] g[i][j] 表示 v i v_i vi​ 到 $v_j $的边权重&#xff0c;如果没有连接&#xff0c;则 g [ i ] [ j ] ∞ g[i][j] \infty g[i][j]∞ d i s [ i ] dis[i] dis[i] 表示 v k v_k vk​ 到节点 v i v_i vi​ 的最短长度&#xff0c; …...

使用 Flask 3 搭建问答平台(三):注册页面模板渲染

前言 前端文件下载 链接https://pan.baidu.com/s/1Ju5hhhhy5pcUMM7VS3S5YA?pwd6666%C2%A0 知识点 1. 在路由中渲染前端页面 2. 使用 JinJa 2 模板实现前端代码复用 一、auth.py from flask import render_templatebp.route(/register, methods[GET]) def register():re…...

pycharm如何debug for循环里面的错误值

一般debug时&#xff0c;在for循环里面的话&#xff0c;需要自己一步一步点。如果循环几百次那种就比较麻烦。此时可以采用try except的方式来解决 例子如下 #ptyhon debug for循环的代码 num[1,2,3,s,4] ans0 for i in num:try:ansiexcept:print(错误) print(ans) 结果如下&a…...

解决网页中的 video 标签在移动端浏览器(如百度访问网页)视频脱离文档流播放问题

问题现象 部分浏览器视频脱离文档流&#xff0c;滚动时&#xff0c;视频是悬浮出来&#xff0c;在顶部播放 解决方案 添加下列属性&#xff0c;可解决大部分浏览器的脱离文档流的问题 <videowebkit-playsinline""playsInlinex5-playsinlinet7-video-player-t…...

.Net--CLS,CTS,CLI,BCL,FCL

1.什么是CLS&#xff1f; 所以.NET专门为此参考每种语言(例如C# &#xff0c;VB&#xff0c;F#)并找出了语言间的共性&#xff0c;然后定义了一组规则&#xff0c;开发者都遵守这个规则来编码&#xff0c;那么代码就能被任意.NET平台支持的语言所通用。 而与其说是规则&#x…...

Stable Diffusion:质量高画风清新细节丰富的二次元大模型二次元插图

今天和大家分享一个基于Pony模型训练的二次元模型&#xff1a;二次元插图。关于该模型有4个不同的分支版本。 1.5版本&#xff1a;loar模型&#xff0c;推荐底模型niji-动漫二次元4.5。 xl版本&#xff1a;SDXL模型版本 mix版本&#xff1a;光影减弱&#xff0c;减少SDXL版本…...

数读MEME之争:以太坊获更高价值共识,抢占热点成Solana流量密码

在当前显著的加密牛市中&#xff0c;以太坊和Solana之间的竞争不仅在币价表现上显而易见&#xff0c;生态发展方面也备受关注。特别是在这轮MEME行情中&#xff0c;双方阵营的MEME代币呈现出不同的特点和趋势。 市场表现对比 以太坊的优势&#xff1a; 市场份额和认可度更高&…...

python的with语句

1.with语句的作用 在 Python 中&#xff0c;with 语句用于创建一个上下文管理器&#xff0c;以更简洁和安全的方式管理资源。 其主要优点是可以确保在代码块执行完毕后&#xff0c;相关资源能够被正确释放或清理&#xff0c;即使在代码块内部发生了异常。 以下是一个使用 with…...

Selenium原理深度解析

在自动化测试领域&#xff0c;Selenium无疑是最受欢迎和广泛使用的工具之一。它支持多种浏览器和操作系统&#xff0c;为开发人员和测试人员提供了强大的自动化测试解决方案。本文将深入探讨Selenium的工作原理&#xff0c;包括其架构、核心组件、执行流程以及它在自动化测试中…...

算法复杂度<数据结构 C版>

什么是算法复杂度&#xff1f; 简单来说算法复杂度是用来衡量一个算法的优劣的&#xff0c;一个程序在运行时&#xff0c;对运行时间和运行空间有要求&#xff0c;即时间复杂度和空间复杂度。 目录 什么是算法复杂度&#xff1f; 大O的渐近表达式 时间复杂度示例 空间复杂度…...

【XSS】

文章目录 0x01 简介0x02 XSS Payload用法XSS攻击平台及调试JavaScript 0x03 XSS绕过XSS漏洞防御策略 跨站脚本攻击&#xff0c;Cross Site Script。&#xff08;重点在于脚本script&#xff09; 有关XSS可以造成的 危害&#xff0c;见 0x02 XSS Payload用法 分类 反射型、存储…...

Go网络编程-RPC程序设计

gRPC 通信 RPC 介绍 RPC, Remote Procedure Call&#xff0c;远程过程调用。与 HTTP 一致&#xff0c;也是应用层协议。该协议的目标是实现&#xff1a;调用远程过程&#xff08;方法、函数&#xff09;就如调用本地方法一致。 如图所示&#xff1a; 说明&#xff1a; Servi…...

Linux 性能优化:轻松入门

文章目录 前言一、磁盘性能优化1、 磁盘 RAID 模式选择2、文件系统优化 二、优化 CPU1、性能监控 &#xff1a;2、进程优先级调整 &#xff1a;3、进程与 CPU 绑定 &#xff1a; 三、优化内存四、网络性能优化1、调整 TCP 缓冲区大小2、修改系统级别的文件描述符的数量3、调整 …...

C++相关概念和易错语法(22)(final、纯虚函数、继承多态难点)

1.final final在继承和多态中都可以使用&#xff0c;在继承中是指不想将自己被继承&#xff0c;在多态中是指不想该函数被重写&#xff0c;比较简单&#xff0c;下面是一些使用例子。 2.纯虚函数 当我们需要抽象一个类的时候&#xff0c;我们就需要用到纯虚函数。所谓抽象的类…...

状态管理的艺术:探索Flutter的Provider库

状态管理的艺术&#xff1a;探索Flutter的Provider库 前言 上一篇文章中&#xff0c;我们详细介绍了 Flutter 应用中的状态管理&#xff0c;以及 StatefulWidget 和 setState 的使用。 本篇我们继续介绍另一个实现状态管理的方式&#xff1a;Provider。 Provider优缺点 基…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...