static struct gatedesc idt[256] = {{0}};

这行代码看起来有点奇怪…
其实struct也可以用{value1, value2, …}的方式初始化,与数组的初始化类似,例如:

struct gatedesc idt1 = {7};

表示idt1的第一个元素用7初始化,其余元素用0初始化。
因此开始这行代码表示新建一个大小为256的gatedesc数组,数组的每一项的每个元素(或说“成员变量”)都是0。