w h y ? y o u a r e h e r e ?

内存管理初步物理内存认为的先规划成两部分,用户的物理内存和内核的物理内存,专项专用,内核有方法去占用用户的内存,但是规定两部分内存是专用的,内核只使用自己的物理内存。 物理内存的内核、用户部分分别用 bitmap 来统计管理。 虚拟内存首先,虚拟内存也是需要管理的,毕竟程序要申请堆上的内存,假定我们 ...
Read more »

规划内核的内存分布MBR、loader部分我们把 加MBR、Loader以及后面需要加载的内核都放到 物理内存的 0-1M 这个空间里面,其中,MBR执行完了以后,我们把它覆盖掉,如下面的图。 图1: MBR,loader的物理内存定位 图二: 覆盖MBR位置写kerner.bin 分离用户空间 ...
Read more »

Linux2.6以前的线程在Linux内核2.6出现之前进程是(最小)可调度的对象,当时的Linux不真正支持线程。Linux 2.4内核中不知道什么是“线程”,只有一个“task_struct”的数据结构,就是进程。 Linux内核有一个系统调用指令clone(),这个指令产生一个调用调用的进程的 ...
Read more »

中断分类按照中断的来源分类,来自CPU外部的中断称为外部中断,来自CPU内部的称为内部中断;细分的话,外部中断根据严重程度,分为可屏蔽中断和不可屏蔽中断;内部中断按照是否正常分为软中断和异常。 外部中断外部中断来自CPU的外部的某个硬件,因此又被称为硬件中断,比如网卡收到了一个数据包,它就会通知CP ...
Read more »

函数调用约定编译器一般使用堆栈实现函数调用,每个进程都有自己的栈,用栈来传递参数,会带来以下问题: 参数存储在栈中,那么谁来负责回收参数所占的栈空间,是调用者?还是被调用者 当参数很多的时候后,主调函数将参数以什么样的顺序传递 高级语言有调用的约定: 举例: 123456789101112131 ...
Read more »

文件描述符限制文件描述符Linux的核心思想之一就是”一切皆文件”。即Linux中所有的内容都是以文件的形式保存和管理的,它为不同类型的文件提供了统一的操作接口,对于不同类型的文件,我们都可以使用fopen()/fclose()/fwrite()/fread()等对这些文件进行读写处理。在Linux ...
Read more »

内核与C语言写内核能用C标准库吗?我们开发用户应用程序的时候,有标准库可以用,最典型的就是GUN C库,标准库一般是系统调用的封装,表面上是通过标准库访问系统资源,实际上是通过系统调用实现的。Linux的系统调用一般是先往eax寄存器写入系统调用号,然后通过0x80中断来实现。中断向量号为0x80称 ...
Read more »