1.存储程序计算机
我的理解就是,冯诺依曼体系结构,cpu取指执行,关键的一个寄存器就是ip,取指,译码,执行,然后ip+1,重复以上步骤。然后一些特殊的指令可以实现不连续的执行,比如 call, jmp,ret等。
2.函数调用堆栈
函数调用堆栈是计算机发展的一大步,因为堆栈是高级语言里函数的基础,函数的实现依赖于堆栈,调用函数的时候,入栈,保存上一个栈的一些信息,然后执行新的一个函数,最后return的时候,恢复上一个函数调用前的一些信息。
3.中断
中断就是cpu停止当前正在做的事情,转而处理其他程序的指令这一过程。
一般中断都被封装在系统调用内,而系统调用一般被封装在API内,API是用户和计算机打交道的一个接口。
就比如下面的一段代码:
void testfork() {
if (0 = =fork()){
printf(“create new process success !\n”);
}
printf(“testfork ok\n”);
}
这段代码看起来很简单,就是调用c语言的一个api,执行了一次fork(),生成了一个新的进程。子进程和父进程打印不同的内容。
其实熟悉linux系统的人都知道,fork的工作实际上是以系统调用的方式完成相应功能的,具体的工作是由sys_fork负责实施。其实对于任何一个操作系统来说,创建一个新的进程都是属于核心的功能,因为要做很多底层的工作,消耗系统的物理资源,比如说分配物理内存,从父进程copy相关信息,设置页目录和页表等等,这些显然不能随便让哪个程序去做,于是自然引出了特权级别的概念,显然,最关键性的操作必须由高级特权的程序来执行。