w
h
y
?
y
o
u
a
r
e
h
e
r
e
?
【潇湘夜雨 莫大先生】
衡山派掌门人莫大先生一直没有婚娶。
有一回群雄聚会,刘正风忍不住问他:”师兄,你都一把年纪了,怎么还不娶妻生娃呢?”
莫大先生眼睛半开半闭,拉着他的胡琴,慢悠悠地说出一番话来:
要说成婚哪,首先得找个女人,对吧?
婚姻本来就是男人和女人的事。――东方不败脸色一沉,绣花的手
...
复杂度
常用排序Bubble Sort常识,不较介绍了
Selection Sort选择最小的一个交换位置,交换次数比较少
Insertion Sort不太喜欢这种思路
Shell Sort是插入排序的一种更高效的改进版本,跟快排比起来有点尴尬
假设有这样一组数[ 13 14 94 33 82
...
内存管理初步物理内存认为的先规划成两部分,用户的物理内存和内核的物理内存,专项专用,内核有方法去占用用户的内存,但是规定两部分内存是专用的,内核只使用自己的物理内存。
物理内存的内核、用户部分分别用 bitmap 来统计管理。
虚拟内存首先,虚拟内存也是需要管理的,毕竟程序要申请堆上的内存,假定我们
...
用C语言写内核无论什么语言,要编译成 ELF文件格式(或者定一个其他的标准)
12345int main(){ while(1){}; return 0;}
链接可以指定最终生成的可执行文件的起始虚拟地址,我们 指定 内核加载到 0x1500的地方
...
规划内核的内存分布MBR、loader部分我们把 加MBR、Loader以及后面需要加载的内核都放到 物理内存的 0-1M 这个空间里面,其中,MBR执行完了以后,我们把它覆盖掉,如下面的图。
图1: MBR,loader的物理内存定位
图二: 覆盖MBR位置写kerner.bin
分离用户空间
...
原始进程Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)
idle进程
由系统自动创建, 运行在内核态
idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thre
...
Linux2.6以前的线程在Linux内核2.6出现之前进程是(最小)可调度的对象,当时的Linux不真正支持线程。Linux 2.4内核中不知道什么是“线程”,只有一个“task_struct”的数据结构,就是进程。
Linux内核有一个系统调用指令clone(),这个指令产生一个调用调用的进程的
...
中断分类按照中断的来源分类,来自CPU外部的中断称为外部中断,来自CPU内部的称为内部中断;细分的话,外部中断根据严重程度,分为可屏蔽中断和不可屏蔽中断;内部中断按照是否正常分为软中断和异常。
外部中断外部中断来自CPU的外部的某个硬件,因此又被称为硬件中断,比如网卡收到了一个数据包,它就会通知CP
...
2019年4月上交拜访颢C
和大学室友爬黄山
黄山周边
遇到一个可爱的小妹妹 :)
函数调用约定编译器一般使用堆栈实现函数调用,每个进程都有自己的栈,用栈来传递参数,会带来以下问题:
参数存储在栈中,那么谁来负责回收参数所占的栈空间,是调用者?还是被调用者
当参数很多的时候后,主调函数将参数以什么样的顺序传递
高级语言有调用的约定:
举例:
123456789101112131
...