Linux 信号

信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。通俗来讲,信号就是进程间的一种异步通信机制。

对于内核来说,信号的意义在于通知进程让进程知道已经发生了某个特定事件,或/和强迫进程执行它的信号处理程序,比如本文[……]

阅读全文

本文涉及到中断/异常、系统调用、信号、进程切换,因为有这之间涉及到很多依赖,而很多概念容易混淆,所以专门梳理一下概念

中断/异常:

中断是由间隔定时器和I/O设备产生的,即CPU的外围设备产生,以通知CPU一个事件的发生,硬件上存在可编程中断控制器(PIC, APIC),负责向 CPU[……]

阅读全文

之前自己实现了一些math库中的一些函数

在写exp函数时用的公式是:

exp-1

后来看了别人的实现, 比起我的版本, 每一次循环都少做一个乘法

就把别人的代码贴了进去, 把自己的注释起来了

当时没想过原理, 只简单用几个数字验证了下正确性

今天抽空写写画画算是搞明白了

公式还是相同的公式,[……]

阅读全文

最近自己实现了math.h中的一些函数, 目的还是为了熟悉一些原理性的知识, 虽然很多函数都有直接对应的硬件指令了…

#define LLMAX 0x7FFFFFFFFFFFFFFFLL
#define LLMIN 0X8000000000000000LL

typedef union[......]

阅读全文

好歹大了一岁了, 具体目标还是要有

希望22岁这一年继续好好学习, 读万卷书, 行万里路

同时警惕被物质化, 不能随波逐流, 不忘这一切的初衷

 

细化目标:

1. 继续坚持长跑和学习英语

2. 加强算法的学习, 有空多上OJ刷题, 强化编码功底和算法能[……]

阅读全文

我们可以定义一些最基本的计算,比如加减乘除、移位等,然后通过对基本计算进行高阶组合,形成更复杂的计算,比如幂、开方、阶乘等等

而计算机中除了基本的计算,还有基本的控制指令,比如循环、判断、递归、函数调用等

当具备这些特性后,我们就可以用他们进行组合,模拟出一个高阶的机器

比如我们可[……]

阅读全文

有时会需要测试一个函数的运行时间, 用标准库的时间函数精度不够, 打印出来的运行时间是0.00000…
用循环来放大这个时间一般不会有问题的
但是如果多个算法之间时间开销差别很大, 比如函数aa()运行一次的时间是1.0s, 而函数bb()运行时间是0.000000s, 这时候再对他们用循环10[……]

阅读全文