MATLAB

回到顶部 ↑

算法

回到顶部 ↑

wxwidgets

回到顶部 ↑

linux

回到顶部 ↑

数据结构

回到顶部 ↑

bash

回到顶部 ↑

bitmap

回到顶部 ↑

c语言

回到顶部 ↑

html

回到顶部 ↑

opencv

回到顶部 ↑

python

回到顶部 ↑

shell

回到顶部 ↑

ubuntu

回到顶部 ↑

vim

回到顶部 ↑

串口

回到顶部 ↑

学习

回到顶部 ↑

快捷键

回到顶部 ↑

接收

回到顶部 ↑

正则表达式

回到顶部 ↑

测试

回到顶部 ↑

线性代数

回到顶部 ↑

终端

回到顶部 ↑

编程语言

回到顶部 ↑

路由协议

ospf基础

ospf基础

~1 分钟 阅读用时

isis基础

isis基础

1 分钟 阅读用时
回到顶部 ↑

转换

回到顶部 ↑

10054错误

回到顶部 ↑

3.0.2

回到顶部 ↑

3B

回到顶部 ↑

5-3-4

回到顶部 ↑

API

回到顶部 ↑

GUI

回到顶部 ↑

HEX

回到顶部 ↑

SetCommMask

回到顶部 ↑

Ubuntu

回到顶部 ↑

VNC

回到顶部 ↑

WIN32

回到顶部 ↑

ascii

回到顶部 ↑

beautifulsoap

回到顶部 ↑

c++

回到顶部 ↑

c/c++

回到顶部 ↑

cant find thread-local storage

回到顶部 ↑

codeblocks

回到顶部 ↑

css

回到顶部 ↑

ctb

回到顶部 ↑

errno

回到顶部 ↑

gdb

gdb使用

gdb使用

1 分钟 阅读用时
回到顶部 ↑

git

回到顶部 ↑

http协议

回到顶部 ↑

isis

isis基础

isis基础

1 分钟 阅读用时
回到顶部 ↑

javascript

回到顶部 ↑

led

回到顶部 ↑

lua

回到顶部 ↑

oled

回到顶部 ↑

ospf

ospf基础

ospf基础

~1 分钟 阅读用时
回到顶部 ↑

printf

回到顶部 ↑

regex

回到顶部 ↑

spf

回到顶部 ↑

tcp

回到顶部 ↑

tty

回到顶部 ↑

ubunt18.04

回到顶部 ↑

ubuntu18.04

回到顶部 ↑

vrrp

回到顶部 ↑

web

回到顶部 ↑

win32

回到顶部 ↑

windows

回到顶部 ↑

wxthread

回到顶部 ↑

上位机

回到顶部 ↑

串口通信

回到顶部 ↑

主窗口

回到顶部 ↑

事件

回到顶部 ↑

事件处理

回到顶部 ↑

传输层

回到顶部 ↑

内核

回到顶部 ↑

冗余

回到顶部 ↑

几何变换

回到顶部 ↑

分析

回到顶部 ↑

动态规划

回到顶部 ↑

区别

回到顶部 ↑

取地址

回到顶部 ↑

图像

回到顶部 ↑

图像分割

回到顶部 ↑

图像增强

回到顶部 ↑

图像拼接

回到顶部 ↑

图像数据

回到顶部 ↑

图片

回到顶部 ↑

基础知识

回到顶部 ↑

多级菜单

回到顶部 ↑

多线程

回到顶部 ↑

多维数组

回到顶部 ↑

字节对齐

回到顶部 ↑

字节序

回到顶部 ↑

实例

回到顶部 ↑

小鹤双拼

回到顶部 ↑

应届生

回到顶部 ↑

形态学

回到顶部 ↑

手动挡

回到顶部 ↑

指针

回到顶部 ↑

换挡

回到顶部 ↑

数组

回到顶部 ↑

数组名

回到顶部 ↑

方法

回到顶部 ↑

显示

回到顶部 ↑

杭州

回到顶部 ↑

极限竞速地平线

回到顶部 ↑

树莓派

回到顶部 ↑

框架

回到顶部 ↑

概率论

回到顶部 ↑

正则

回到顶部 ↑

消息

回到顶部 ↑

环境

回到顶部 ↑

环境配置

回到顶部 ↑

目录

回到顶部 ↑

知识图谱

回到顶部 ↑

租房

回到顶部 ↑

笔记

深入理解计算机系统笔记–备忘

深入理解计算机系统笔记–备忘

  1. 多核cpu:将多个cpu(称为“核”)集成到一个集成电路芯片上、1. 超线程:允许一个cpu执行多个控制流的技术,cpu的某些硬件有多个备份,比如程序计数器(pc)和寄存器,而其他的硬件可能只有一份,比如浮点运算单元。超线程技术可以使cpu(核)在单个周期的基础上决定要执行哪个线程,而传统cpu可能需要20 000个时钟周期完成线程的切换。(从这里来看,一个核同一时刻还是只能执行一个控制流的,只不过快的多的线程切换速度可以将一个核模拟为两个核)1. 文件是对i/o设备的抽象,虚拟内存是对程序存储器的抽象,进程是对一个正在运行程序的抽象1. 跳转指令的编码最常用的是相对编码:将目标指令的地址与紧跟在跳转指令后面的那条指令之间的差作为编码;1. 一个模块中的两个c文件中可以定义两个同名的全局变量,但其中要有弱定义的。比如一个强定义,一个弱定义,或者多个弱定义。强定义:可以被外部文件调用的函数名,初始化了的全局变量;弱定义:比如未赋值的全局变量。 链接器处理多重定义符号的规则:1.不允许有多个同名的强符号2.若有一个强符号和多个弱符号,那么选择强符号3.如果是多个弱符号同名,任意选一个;注意:若这些同名符号不同类型,也是可以链接过的。。。。。1. 链接可执行于编译时,加载时,运行时。1. 链接:符号解析,重定位1. 编译时指定库的顺序:被依赖的要放在依赖它的的右边,若存在相互引用,可以重复出现,比如foo.c依赖libx.a,libx.a依赖liby.a,而liby.a又依赖libx.a那么,gcc foo.c libx.a liby.a libx.a1. 程序的运行时内存映像,代码段总是从0x400000开始,后面是数据段,运行时堆。用户栈最大合法用户地址空间位2的48次方。再往上的地址就是内核的代码和数据了。代码段与数据段之间有空隙(为了对齐要求),而栈,共享模块,堆由于安全性还会使用地址空间布局随机化,每次程序运行时,他们的地址都会改变。1. 处理目标文件的工具:
    strings:列出一个目标文件中所有可打印的字符串
    strip:从目标文件中删除符号表信息
    nm:列出一个目标文件中的符号表中定义的符号
    size:显示目标文件中节的名字和大小
    readelf:显示一个目标文件的完整结构,包括elf头中编码的所有信息,包含size和nm的功能
    objdump:能够显示一个目标文件中的所有信息,它最大的作用时反汇编.text段中的二进制指令1. 操作进程的工具
    strace:打印一个进程及其子进程调用的每个系统调用的轨迹
    strace -fp 可以跟踪所有线程的系统调用 进一步的,指定线程的tid可以监视特定线程的系统调用
    pstack 打印栈信息
~1 分钟 阅读用时
回到顶部 ↑

线程

回到顶部 ↑

结构框架

回到顶部 ↑

绘图

回到顶部 ↑

编译

回到顶部 ↑

自定义

回到顶部 ↑

自定义事件

回到顶部 ↑

警告音

回到顶部 ↑

设备上下文

回到顶部 ↑

调试

gdb使用

gdb使用

1 分钟 阅读用时
回到顶部 ↑

路由

回到顶部 ↑

运维

回到顶部 ↑

通配符

回到顶部 ↑

逻辑

回到顶部 ↑

配置

回到顶部 ↑

重定向

回到顶部 ↑

链接DLL

回到顶部 ↑

链表

回到顶部 ↑

键位

回到顶部 ↑

面向对象

回到顶部 ↑

面试

回到顶部 ↑

音效

回到顶部 ↑