写点什么

Linux 内核四大核心框架

用户头像
hanaper
关注
发布于: 57 分钟前
Linux内核四大核心框架

一、进程调度

1、task_struct 结构在内存的存放与内核栈是不可分离。每个进程都有自己的内核栈。当进程从用户态进入内核时,CPU 就自动地设置该进程的内核栈。也就是讲,CPU 从任务状态段 TSS 中装入内核栈指针 esp。

在 lntel 系统中,栈起始于末端,并朝这个内存区开始的方向增长。进程描述符存放在从 0x018fa000 开始的地址,只要把数据写进栈中,esp 的值就递减。

通过这个联合结构可以看出,内核栈系统规划占用 8KB 内存区。实际上进程 task_struct 结构所占的内存由内核动态分配的,更准确的讲,内核根本不给 task_struct 分配内存,而仅给内核栈分配 8KB 的内存。task_struct 结构大小占用 1K 字节左右,内核栈的大小不能超 7KB(对于内核栈完全足够)。

为何要将内核栈与 task_struct 放在一起有什么好处:

  • a. 内核可以方便而快速地找到这个结构;

  • b. 避免在创建进程时动态分配额外的内存;

  • c. task_struct 结构的起始地址总是开始于页大小(page_size)的边界。

上面这段代码相当一组汇编指令(设置 p 是指向当前进程 task_struct 结构的指针)

  • movl $0xffffe000,%ecx

  • andl %esp,%ecx

  • movl %ecx,p

Linux内核四大核心框架配套视频教程​


2、内核线程

内核线程(thread)或叫守护进程(daemon),在 OS 中占据相当大的比例,当 Linux OS 启动之后,尤其是 Xwindows 也启动之后,我们可以用 ps 命令查看系统中的进程,但我们会发现很多以'd'结尾的进程名,这些进程就是内核线程。

内核线程也可以叫做内核任务,它们周期性地执行,比如,磁盘高速缓存的刷新网络连通的维护,页面的换入换出等。

Linux OS 内核线程与普通进程有本质的区别:

  • a. 内核线程执行的是内核中的函数,而普通进程只有通过系统调用才能够执行内核中的函数;

  • b. 内核线程只运行在内核戊,而普通进程既可以运行在用户态,也可以运行在内核态;

  • c. 因为内核线程指只运行在内核态,它只能使用大于 PAGE_OFFSET(3G)的地址空间。另一个方面,不管在用户态还是内核态,普通进程可以使用 4GB 地址空间。

内核线程是由 kernel_thread()函数的内核态下进行创建。系统中大部分的内核线程是在系统的启动过程中建立:的。

3、Linux 调度程序 ---> 基本原理及调度算法

调度的实质就是资源的分配,系统通过不同的调度算法来实现资源分配。非常优先的调度算法考虑因素:公平、高效、周转时间、响应时间、吞量。

调度算法:

  • a. 时间片轮转调度算法: 时间片(time slice)就是分配给进程运行的一段时间。

  • b. 优先权调度算法(非抢占式优先权算法、抢占式优先调度算法)

  • c. 多级反馈队列调度: 这种调度算法本质:综合时间片轮转调度和抢占式优先权调度的优点,

  • 优先权高的进程先运行给定的时间片,相同优先权的里程轮流进行给定时间片。

  • d. 实时调度(实时系统,就是系统对外部事件有求必应、尽快响应)。

4、Linux 进程何时调度

  • a. 进程状态转换的时刻:进程终止、进程睡眠;

  • b. 当前进程的时间片用完;

  • c. 设备驱动程序;

  • d. 进程从中断、异常、系统调用返回到用户态时。

Linux内核四大核心框架配套视频教程


二、内存管理

Intel 368 的段机制和页机制是 Linux 实现虚拟存储管理的一种硬件平台。Linux 内存管理主要体现在虚拟内存管理。虚拟内存管理功能:进程保护、内存映射、共享虚拟内存。

Linux 虚拟内存结构见 PDF 文档。

实现虚拟内存组成模块,大部分代码放在/mm 目录的。

因为每个进程可以通过系统调用进入内核,Linux 内核由系统内的所有进程共享。


Linux内核四大核心框架配套视频教程​


更多 Linux 内核视频

发布于: 57 分钟前阅读数: 6
用户头像

hanaper

关注

还未添加个人签名 2018.05.07 加入

还未添加个人简介

评论

发布
暂无评论
Linux内核四大核心框架