0%

ctrl + c

中断键,给前台进程组中所有进程发送SIGINT信号,并终止进程。

ctrl + z

挂起键,给前台进程组中所有进程发送SIGTSTP信号, 并挂起进程。被挂起的进程并没有真正结束,可以使用fgbg命令恢复被挂起的进程。

阅读全文 »

实验简介

编写一个通用高速缓存模拟器,并优化小型矩阵转置核心函数,以最小化对模拟高速缓存的不命中次数。

预备知识

1. 局部性原理

局部性通常有两种形式:

  • 时间局部性:被引用过一次的内存位置很可能在不远的将来被多次引用。
  • 空间局部性:如一个内存位置被引用,其附近的内存位置很可能在不远的将来被引用。
阅读全文 »

msleepmdelay都是内核的延时函数,原型如下:

1
2
void mdelay(unsigned long msecs);
void msleep(unsigned int millisecs);

区别

mdelay是忙等待函数,会占用CPU资源,延迟时间是准确的。

msleep是休眠函数,不占用CPU资源,延迟时间通常高于给定值。

阅读全文 »

运行环境

Linux debian 4.19.0-10-amd64

编译内核模块

0. 准备编译所需的内核头文件

系统默认内核头文件路径在/lib/modules/`uname -r`,先确认该路径是否存在:

1
ls /lib/modules/`uname -r`/build

如路径不存在,需要先安装内核头文件,方法如下:

阅读全文 »

问题描述

打开office软件失败,提示无法找到应用程序的许可证。

原因

Software Protection服务启动失败,可以通过services.msc查看该服务的启动状态

解决方法

修改注册表,将如下文本复制到文件,文件名改为software prtection服务.reg, 双击该文件即可。

阅读全文 »

实验介绍

本实验中,我们需要利用缓冲区溢出漏洞,来修改一个二进制可执行文件的运行时行为。

预备知识

  • 缓冲区溢出的原理,参考《CSAPP原书第3版》3.10小节

  • gdbobjdump使用

  • x86_64下的汇编

阅读全文 »

从官网安装指定版本, 以3.12.1版本为例:

1
2
3
4
5
6
wget https://cmake.org/files/v3.12/cmake-3.12.1.tar.gz
tar -zxvf cmake-3.12.1.tar.gz
cd cmake-3.12.1
./bootstrap
make -j8
make install
阅读全文 »

实验简介

二进制炸弹是一个作为目标代码提供的程序。运行时提示用户输入6个不同的字符串,如其中一个字符串不正确,炸弹会引爆并打印一条错误信息。需要通过反汇编确定输入的6个字符串,从而拆除炸弹。

知识点

  • 汇编语言基础
  • GDB和OBJDUMP工具的使用
阅读全文 »

问题现象

gdb调试core文件或进程时,出现加载so库符号失败,错误信息如下

1
2
warning: Could not load shared library symbols for ../libadd.so
Do you need "set solib-search-path" or "set sysroot"?

执行info sharedlibrary,查看Syms Read字段为No, 表示对应so库符号加载失败。

1
2
3
4
5
6
7
8
$ pwd /home/gdb
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x00007fba2c572570 0x00007fba2c57267b No ../libadd.so
0x00007fba2c370570 0x00007fba2c37066b No ../../var/libsub.so
(gdb) bt
#0 0x00007fba2c57266b in ?? ()
#1 0x00007ffc6f703ff0 in ?? ()
阅读全文 »

一、源码安装redis

1
2
3
4
5
6
7
8
9
10
11
# 0.官网下载最新redis源码包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
# 1.将redis.tar.gz拷贝到/usr/local目录并解压
mkdir -p /usr/local/ && cd /usr/local
cp /path/to/redis-5.0.5.tar.gz .
tar -zxvf redis-5.0.5.tar.gz
mv redis-5.0.5 redis && cd redis
# 2.编译、测试、安装
make -j4 # 编译
make test # 测试,显示All tests passed without errors
make install # 安装
阅读全文 »