文件系统-inode相关操作 inode结构体 struct m_inode { unsigned short i_mode;// 文件类型和属性(rwx 位) unsigned short i_uid; // 用户 id(文件拥有者标识符) unsigned long i_size;// 文件大小(字节数) unsigned long i_mti…
Linux内核-文件系统-位图操作 inode节点概念 文件与磁盘的映射 文件系统概念 不管读取什么磁盘上的资源,都是先getblk(获取该资源对应的设备和块号的高速缓冲区),然后在bread(确认有效数据的高速缓冲区),最后再进行区域内存的拷贝 一个设备的文件系统框架 所有块的大小都是固定的,称为盘块或磁盘块 扇区:块设备上一个长度为512B的数…
文件系统-高速缓冲区 文件系统基本概念 磁盘中要有目录的映射,我们把磁盘分成盘片,这里的“盘片”指的就是逻辑划分出的独立文件系统区域,也就是我们今天说的 C盘、D盘。 每一个盘片都有一个文件系统的子系统(章节目录) 引导块:用来引导设备的,引导块可以为空,但一定要空开,因为保持格式的一致性 超级块:该文件子系统的描述符(记录该盘片的逻辑块位图的地址…
文件系统启动流程 内核打开文件系统流程大致分析 这里以linux3.4.2内核为例,大致看一下流程是如何进行的 打开控制台 //init/main.c kernel_init() /* Open the /dev/console on the rootfs, this should never fail */ if (sys_open((const…
内核信号处理函数 sigaction结构体 // 下面是 sigaction 的数据结构。 // sa_handler 是对应某信号指定要采取的行动。可以是上面的 SIG_DFL,或者是 SIG_IGN 来忽略 // 该信号,也可以是指向处理该信号的一个指针。 // sa_mask 给出了对信号的屏蔽码,在信号程序执行时将阻塞对这些信号的处理。 /…
操作系统启动引导 操作系统的起点: 磁盘引导程序,需要将内核等移入内存进行运行,并初始化多种模块和硬件 终点:运行第一个应用程序,系统的根文件系统 大致流程 BIOS/bootloader 由PC机的BIOS(0xFFFF0是BIOS存储的总线地址)把bootsect.s从某个固定的地址拿到了内存中某个固定的地址(0x90000),并且进行了一系列…
进程销毁 内核销毁流程 当用户程序调用exit()函数的时候,触发了系统调用,最后调用到kernel/exit.c中的sys_exit()函数,最后底层调用int do_exit(long code)。该函数会释放进程的代码段和数据段占用的内存 关闭当前进程打开的所有文件,对当前的目录和inode节点进行同步 如果当前要销毁的进程有子进程,那么就让…
进程调度 进程调度相关概念 多任务操作系统就是能同时并法地交互执行多个进程的操作系统,多任务系统分为两类: 非抢占式操作系统 抢占式操作系统 linux是抢占式的多任务模式,它由调度程序决定什么时候停止一个进程的运行,以便其他的进程能够得到执行机会 策略 策略决定调度程序在何时让什么进程运行 进程可以分为I/O消耗型和处理器消耗型,I/O消耗型指的…
0.1版本的中断流程 Linux中断工作流程 中断处理过程: 将所有寄存器的值入栈 将异常码(中断号)入栈 将当前的函数返回值入栈(为了能够在中断执行完成后恢复到被中断的地方) 中断执行过程:调用对应的中断执行函数 中断恢复过程 函数返回值出栈 寄存器值出栈 Linux0.11的内核版本还没有中断上下半部的产生,内核代码非常精简,其设计哲学就是简单…
进程初始化与创建 Linux进程表示 Linux内核对于进程的表示使用的是task_struct结构体,它的定义在<include/sched.h>中,每一个进程都被抽象为一个task_struct结构体 而所有进程是用一个task_struct链表来管理 struct task_struct * task[NR_TASKS] …