linux0.01内核源码结构】的更多相关文章

目录 boot 系统引导. fs 文件系统. include 头文件.一些C标准库,系统核心库. init 入口.main.c. kernel 内核. lib 库.C源程序,一些基本核心的程序. mm 内存管理 tools C程序编译构建相关.不算系统文件 Makefile C程序编译构建相关.不算系统文件. main.c -> main() void main(void) /* This really IS void, no error here. */ { /* The startup ro…
转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July  二零一一年一月六日 ----------------------------------------- 博主声明:1.本系列非linux系统教程,仅仅是针对linux0.11内核源码,所做的剖析,注释.2.本系列参考:深入理解linux内核.linux内核完全注释,linux内核源代码情景分析3.…
一.概述 Linux内核庞大,但是这些文件的结构还是有章可循的,分别位于不同的目录下,各个目录功能相对独立. 二.源码结构表 目录名 描述 arch 体系结构相关的代码,对于每个架构的CPU,arch目录下有一个对应的子目录,比如arch/arm.arch/i386 block 块设备的通用函数 crypto 常用的加密和散列算法(如AES.SHA等),还有一些压缩和CRC校验算法 drivers 所有的设备驱动程序,里面每一个子目录对一个一类驱动程序,比如drivers/block为块设备驱动…
PostgreSQL的源代码可以随意获得,其开源协议也允许研究者任意修改,这里介绍一下PostgreSQL的源码结构以及部分实现机制.下载PostgreSQL源代码并减压后,其一级目录结构如下图: PostgreSQL源代码一级结构 其中config目录下存放一些系统的配置文件.contrib目录下包括一些没有集成到核心代码中的外围工具和一些实验性质的开发代码.doc目录下是帮助文档,由SGML编写.src为系统核心代码,其他文件属于编译安装相关文件. src目录,各子目录及其对应内容如下表:…
linux内核源码虽然是用C写的,不过其中有很多用嵌入式汇编直接操作底层硬件的“宏函数”,要想顺利的理解内核理论和具体实现逻辑,学会看嵌入式汇编是必修课,下面内容是学习过程中的笔记:当做回顾时的参考. 一.嵌入式汇编语法: 1.格式 asm("汇编语句" //"("之前用asm 或 __asm__ 意为"()"的内容是汇编语句 :输出寄存器 :输入寄存器 :会被修改的寄存器); 除第一行以外,后面带冒号的行若不使用就都可一省略. 输出寄存器:表示…
本来想自己写的,但是发现了一篇十分优秀的博客 https://www.cnblogs.com/tradoff/p/5734582.html system_call的源码解析:https://blog.csdn.net/tq02h2a/article/details/2934094?utm_source=blogxgwz3 了解调用进程的流程 理一理思路 通过内核栈来切换进程的流程 用户态fork触发int80中断 进入_system_call 1.一些通用寄存器入栈保存(ds,es,fs) 2.…
一 内核组成部分 内核是一个操作系统的核心,主要由五个部分组成:进程调度,内存管理,虚拟文件系统,网络结构,进程间通信. 1.进程调度(SCHED) 控制进程对CPU的访问.当需要选择下一个进程运行时,由调度程序选择最值得运行的进程.可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程.Linux使用了比较简单的基于优先级的进程调度算法选择新的进程. 2.内存管理(MM) 允许多个进程安全的共享主内存区域.Linux的内存管理支持虚拟内存,即在计算机中运行…
准备工作 1.进程的状态有五种:新建(N),就绪或等待(J),睡眠或阻塞(W),运行(R),退出(E),其实还有个僵尸进程,这里先忽略 2.编写一个样本程序process.c,里面实现了一个函数 /* * 此函数按照参数占用CPU和I/O时间 * last: 函数实际占用CPU和I/O的总时间,不含在就绪队列中的时间,>=0是必须的 * cpu_time: 一次连续占用CPU的时间,>=0是必须的 * io_time: 一次I/O消耗的时间,>=0是必须的 * 如果last > c…
以fork()函数为例,分析内核态进程切换的实现 首先在用户态的某个进程中执行了fork()函数 fork引发中断,切入内核,内核栈绑定用户栈 首先分析五段论中的第一段: 中断入口:先把相关寄存器压栈保存,然后call真正的fork系统调用 当前进程被阻塞或时间片到后,使用调度算法进行线程切换 reschedule的展开:其实是把ret_from_sys_call的地址压栈(作用之后就会看到),然后再去进行调度算法 此时的内核栈:??2后是内核当前的esp指针 第五段和调度算法:执行完调度算法后…
详细代码戳这里. 一.启动引导 采用软件grub2进行引导,基于规范multiboot2进行启动引导加载.multiboot2的文档资料戳这里. 二.具体内容 开发环境 系统环境:Ubuntu 14.04 / Ubuntu 16.04 32bit/64bit: 辅助软件:Qemu and Xorriso: 编译器:GCC 实现功能 实现了图像模式下的显卡驱动,移植和编写了相关函数和打印函数:(参考<30天自制操作系统>) 实现了全局描述符表.中断描述符表的添加: 完成了中断请求,实现了定时器中…