摘要: ASLR(Address Space Layout Randomization)在2005年被引入到Linux的内核 kernel 2.6.12 中,当然早在2004年就以patch的形式被引入。随着内存地址的随机化,使得响应的应用变得随机。这意味着同一应用多次执行所使用内存空间完全不同,也意味着简 阅读全文
posted @ 2023-02-12 10:18 Parker_Zhou 阅读(657) 评论(0) 推荐(1) 编辑
摘要: 1、虚拟化采用的机制:采用时分共享CPU的方式,也就是运行一个进程一段时间,然后运行另一个进程,如此轮换。 2、虚拟化机制的挑战:第一个是性能:如何在不增加系统开销的情况下实现虚拟化?第二个是控制权:如何有效地运行进程,同时保留对 CPU 的控制? 3、基本技巧:受限直接执行。 什么是受限直接执行, 阅读全文
posted @ 2023-01-31 22:53 Parker_Zhou 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 通过gdb正确理解执行的代码: 1、启动:gdb a.out 2、源代码视角:layout src 3、开始调试:start 4、单步:s 5、查看当前栈帧所有变量:info frame 6、监控变量:wa xxx 7、结束:finish C语言程序的状态到底有什么? 全局变量+局部变量+ 什么是函 阅读全文
posted @ 2023-01-31 22:52 Parker_Zhou 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 1 //由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数 2 //gcc pthread_sig_mutex.c -lpthread -D_GNU_SOURCE -o pth 阅读全文
posted @ 2022-12-25 11:26 Parker_Zhou 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 线程创建函数:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 第一个参数thread是出参,传出创建的线程id;第二个参数at 阅读全文
posted @ 2022-12-25 10:58 Parker_Zhou 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 为了保证线程在执行某段代码时不被其他线程打断,可以使用互斥锁进行保护,而这段被保护的代码区域被称为临界区。 原理:线程执行锁定函数pthread_mutex_lock()时,如果锁没有被其他线程占用,则获取并占用锁,然后执行自己后面的代码段;此时其他线程无法获取锁,在执行到pthread_mutex 阅读全文
posted @ 2022-12-24 21:50 Parker_Zhou 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 信号是进程间通信的方式之一,进程之间通过发送和接收不同的值来通信,这些不同的值被标示为各种信号。 我们使用kill指令杀死一个进程,本质上是kill这个程序给对应的进程发送了一个进程终止的信号SIGTERM。通过kill -l可以查看系统默认的信号。 1、接收信号: 1 //main.c 2 #in 阅读全文
posted @ 2022-12-19 19:54 Parker_Zhou 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 1、hello.c: 1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 MODULE_LICENSE("GPL"); 5 //__init是属性标志,意思是将函数放入.init.txt的输 阅读全文
posted @ 2022-12-10 16:37 Parker_Zhou 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 尝试通过执行service iptables start启动iptables失败,提示iptables: unrecognized service。 可以通过modprobe ip_tables启动。 补充: 1、service 可以控制系统服务(打开、关闭、重启),通过service xxx st 阅读全文
posted @ 2022-12-10 13:43 Parker_Zhou 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 1 #include <sys/wait.h> 2 pid_t wait(int *stat_loc); 父进程调用wait,如果没有子进程退出,则会立即阻塞自己;当有子进程退出,wait会收集子进程的信息,并将该进程彻底销毁,然后返回子进程ID;失败返回-1,同时errno为ECHID。 参数st 阅读全文
posted @ 2022-07-09 12:35 Parker_Zhou 阅读(447) 评论(0) 推荐(0) 编辑