视频笔记,视频地址:
https://www.bilibili.com/video/BV1XW41127Lq?p=7
物理地址&虚拟地址
地址转换
内核使用的是虚拟地址,CPU使用和访问的是物理地址。
所以虚拟地址要最终转换成物理地址
页表
做映射,物理地址的映射
页表存在内存中
一般来说,页的大小是4K,所以页表的大小就是所有需要访问的物理地址/4K
假设 内存大小是 4G
页表大小:102410241024*1024 / 4096 /1024 /1024 = 1M ??
4096 M / 4K ?
内存的属性
可读、可写,可执行。 方便实现对内存的安全访问
根据内存中存放程序、数据等,来分配权限
内存管理
以页(4k byte)为单位进行管理
分配内存举例
系统调用
内核态 用户态
两个状态是隔离的。
系统调用是用户使用内核函数(API)的媒介
具体实现
通过一个exception,使得应用程序陷入内核中执行
内核线程
内核只有线程,没有进程
因为代码空间只有一份,所有只有线程,没有进程
线程的task_struct
一个数据结构,放了内核线程的所有关键信息和特征
线程的调度
三种调度方式
SCHED_RR 时间片轮转,优先级一样
SCHED_PRI 线程之间有相对优先级,优先级高的先运行
SCHED_RT 实时进程 ,优先级最高
调度的时机:
1.时钟中断发生时
2.Linux发生内核态和用户态切换时
3.Linux执行完信号时
进程间同步和通信方式
中断
中断的硬件概念
一个外部的电平信号
中断处理的上半部
需要Linux内核暂时中断响应其他外部中断信号
一定是处理关键的,同时能够迅速完成的程序段。另外这个程序段一定是不能等待其他条件发生
中断处理的下半部
1.上半部中来不及处理的比较长的程序段
2.需要等待其他程序运行结果或者需要等待获取其他资源的程序段
时钟和定时器管理
时钟的硬件概念
时钟从硬件上讲是一种产生定时中断的电路
RTC和system timer
RTC — 实时计数器
设置定时中断,延迟处理
微秒级延迟
system timer
很多情况用作为延迟和计算相对时间的
tick&jiffies
tick: 时钟中断的周期
假设系统时钟是100M,那么大致的tick值是10ms
jiffies:是一个全局变量
如果是64位系统,它就是64位的变量,记录了从上电开始,所经历的tick数
文件系统概述
虚拟文件系统(VFS)
是Linux内核为了屏蔽物理文件系统的差异,所产生的一个中间层
主要的物理文件系统(ext4, yaffs2)
ext4
最大特点是有完善的日志。(什么时候进行读写,哪个扇区。。。
yaffs2
比较适合在nan flash部署的文件系统