
X86
文章平均质量分 66
天马行空_xaut
这个作者很懒,什么都没留下…
展开
-
windows设置CPU主频
方法如下:1、首先从“开始”菜单进入“控制面板”,在查看方式为大(小)图标的情况下点击电源选项;2、来到电源选项发现这里有三种模式,当前正在使用的是平衡模式,应更改平衡计划设置,这样才能立刻生效。在此以高性能为例,点击“更改计划设置”;3、来到编辑窗口后,点击“更改高级电源设置”,如图所示;4、来到电源选项窗口,在下方列表中依次展开“处理器电源管理--最大处理状态”,将其由100%设置为85%,点确定即可。将最大处理状态设置为85%后,大家可以通过任务管理器的数值进行对比转载 2021-11-24 16:12:08 · 4505 阅读 · 1 评论 -
I/O设备虚拟化
Hypervisor——一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。QEMU就是一款开源的模拟器及虚拟机监管器(VMM)。VMM通过I/O虚拟化来复用有限的外设资源,其通过截获 Guest OS对I/O设备的访问请求,然后通过软件模拟真实的硬件,目前I/O设备的虚拟化方式主要有三种:设备接口完全模拟、前端/后端模拟、直接划分。1、设备接口完全模拟:即软件精确模拟与物理设备完..转载 2021-08-03 16:32:14 · 1689 阅读 · 0 评论 -
浮点寄存器AVX概述
转自:https://www.iteye.com/blog/aisxyz-2440913 本文介绍的浮点寄存器是基于 AVX2(Advanced Vector Extension,高级向量扩展,2 表示第二个版本)的,这是目前最新的,旧一点的还有如 SSE(Streaming SIMD Extension,流式 SIMD 扩展,SIMD 即单指令多数据)、MMX 等,这些浮点指令体系因为历史原因也被称为媒体指令,因为早期主要是用于支持图形和图像处理。每个扩展都是管理寄存器组中的数据,这些寄...转载 2021-07-21 09:25:40 · 3254 阅读 · 0 评论 -
一致性代码段和非一致性代码段【转】
原帖地址:http://www.dewen.org/q/1022一致代码段是内核开辟出来的供应用程序访问的段,但是不允许用户程序写入数据。CPL(Current Priviliege Level):它代表了当前代码段的特权等级,由CS和SS的第0位和第1位表示。当程序转移到不同的特权等级的代码时处理器将改变CPL。在遇到一致代 码段时,一致代码可以被相同或者更低特权等级(用户程序)的代码访问。当处理器访问一个与CPL特权等级不同的一致代码段时,CPL不会被改变。 DPL(Descriptor ..转载 2021-07-02 16:46:51 · 505 阅读 · 0 评论 -
Linux 中断过程堆栈切换之trampoline stack
查了一天堆栈切换的资料,发现大家都在讲user stack 、kernel stack、interrupt stack、IST,但是没有人讲一下trampoline stack,这对初入kernel的小伙伴不太友好的trampoline stack,这里分享一下心得:进程在执行的时候,必然会使用到系统调用或者中断,按照SDM中的描述,中断发生时,硬件会自动切换堆栈到内核堆栈:这个切换后的堆栈的地址是存放在TSS中ESP0(或RSP0)中的:问题是RSP0中存放的到底是哪个stack?原创 2021-06-30 10:48:12 · 1424 阅读 · 0 评论 -
服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)
1 3种系统架构与2种存储器共享方式1.1 架构概述从系统架构来看,目前的商用服务器大体可以分为三类 对称多处理器结构(SMP:Symmetric Multi-Processor) 非一致存储访问结构(NUMA:Non-Uniform Memory Access) 海量并行处理结构(MPP:Massive Parallel Processing)。 共享存储型多处理机有两种模型 均匀存储器存取(Uniform-Memory-Access,简称UMA)模型转载 2021-04-16 15:33:32 · 537 阅读 · 0 评论 -
用GDB跟踪汇编代码排查返回值
原创文章,转载请注明出处~平台为兆芯x86-64 CPU前边《嵌入式汇编实现系统调用-rename》中有发现用libc的rename函数实现的时候,如果原本的文件不存在,会返回-1(Operation not permitted),为了找到原因,我们用GDB跟踪汇编代码执行过程。1.首先编译过程加入参数-g方便gdb调试:root@henry-002:/usr/test_code# gcc rename_libc.c -o rename_libc_debug --static -g2.原创 2021-03-18 15:34:43 · 927 阅读 · 0 评论 -
嵌入式汇编实现系统调用-rename
原创文章,转载请标注出处~平台为兆芯x86-64环境rename系统调用有两个入参,有一个返回值,首先用libc实现功能:#include <stdio.h>#include <string.h>int main(void){ int error = -1; char *oldname = "hello.c"; char *newname = "newhello.c"; error = rename(oldname,newname)原创 2021-03-17 11:49:08 · 354 阅读 · 0 评论 -
嵌入式汇编实现系统调用-sysinfo
平台为兆芯x86-64平台,原创文章,转载请标注出处~在前一篇文章中,使用嵌入式汇编实现了time系统调用,这个系统调用没有入参,今天使用嵌入式汇编实现sysinfo,此系统调用有一个指针入参。首先使用libc实现sysinfo的调用:#include <sys/sysinfo.h>#include <stdio.h>#include <string.h>int main(){ int errno = -1; long uptime =原创 2021-03-16 19:35:35 · 312 阅读 · 0 评论 -
嵌入式汇编实现系统调用-time
平台为x86-64系统调用是用户层调用linux服务的最常用的方式,但是大家通常使用封装好的库函数,比如libc提供的API进行使用,本篇文章使用嵌入式汇编实现time的系统调用。首先使用libc编写一段程序做为对比:#include<stdio.h>#include<time.h>int main(void){ time_t timer = 0; struct tm *tblock; timer = time(NULL); //获取当前时原创 2021-03-16 17:55:21 · 603 阅读 · 0 评论 -
GDT,LDT,GDTR,LDTR 详解,包你理解透彻
本文转自技术部落:https://www.techbulo.com/708.html一、引入保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引段寄存器PS:原先实模式下的各个段寄存器作为保护模式下的段选择器,80486中有6个(即CS,SS,DS,ES,FS,GS)80位的段寄存器。由选择器CS对应表示的段仍为代码段,选择器SS对应表示的段仍为堆栈段。二、详解先说明一下概念(1)全局描述符转载 2021-01-21 17:44:08 · 1015 阅读 · 0 评论