转载原文连接:https://linux.cn/blog-15563-5964.html
本文所有内容只限于linux kernel 范围。
一,地址
为了更好的跨平台性,Linux kernel采用物理的地址和虚拟地址形式,Linux kernel 所使用的地址是虚拟地址,CPU使用的是物理地址,那么这个就涉及一个地址转换、也必须要有一个地址转换过程。在地址转换过程中涉及到对应的表。页表(用于物理地址与虚拟地址转换的地址对应表)的大小一般为4k。页表存放在内存中的。
二,内存管理
页表是存放物理地址与虚拟地址的对应表,且大小为4k,内存管理是管理内存地址,而页表是存放地址的,内存管理即管理以页表为单位的进行内存管理。
三,系统调用
Linux 系统中有很多API,大方向上被分为用户态API和系统态API, 系统态API就是内核中的API。在做应用层程序时,会调用用户态API,而隔离系统态API。用户态API通过系统调用系统态API。系统调用是用来隔离用户态API和系统态API。
四,线程调度
Linux kernel只共享一份代码空间,因此只有线程,并没有进程。多线程系统需要管理如何何时互相调用、切换等操作,便引入线程调度概念,线程调度方式有三种方式:1,时间段轮询,2,实时线程优先,3,线程优先等级
五,同步与线程通讯
同步主要是原子操作,即不能够打断的基本操作。同步线程通讯即一个线程要求另一个线程完成某些任务,并且等待这个线程完成任务后,才继续执行。而异步线程通讯不要求另一个线程完成某些任务,也不会等待。
六,中断
学过硬件的朋友都知道中断,其实就是外部电路的电平信号。在Linux kernel处理中分成中断的前半部分和后半部分
七,时钟与定时器管理
时钟专用于系统时间,从硬件角度看,时钟是一种中断电路。定时器从硬件角度看,是一种计数器。实际上时钟在多数情况下称作系统心跳,程序的处理速度或程序执行时间,就体现在此。(当然不能超过硬件的条件)
八,文件系统
Linux kernel中为了更好的跨平台性,使用了虚拟文件系统,屏蔽了物理文件系统的差异,产生这么一个文件系统中间层。主要的物理文件系统有ext4(拥有完善的日志系统)、yaffs2(适合nand flash的文件系统)、ubifs(操作速度最快的)、btfs(主要解决碎片问题)。
从以上几点中,可以看出Linux kernel中为跨平台,做了大量的封装。
跨平台:跨硬件体系架构等硬件方面的
作者:夜域诡士
阅读(1402) | 评论(0) | 转发(0) |