"操作系统课设之-Linux" 本文档是关于 Linux 操作系统内核的详细介绍,包括 Linux 内核代码的阅读和分析,以及时钟中断与进程调度的相关知识。 一、Linux 操作系统介绍 Linux 是一类 Unix 计算机操作系统的统称,Linux 操作系统的内核的名字也是“Linux”。Linux 操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux 这个词本身只表示 Linux 内核,但在实际上人们已经习惯了用 Linux 来形容整个基于 Linux 内核,并且使用 GNU 工程各种工具和数据库的操作系统。 二、进程调度 进程是计算机中一种基本的执行单元,进程分为两种:普通进程和实时进程。普通进程的优先级用进程控制块中的 counter 表示,实时进程的优先级用 rt_priority 表示,它在进程控制块中有定义。当就绪队列中同时存在两种进程的时候,实时进程总是先于普通进程运行,它的实现机制是实时进程的权值以 1000 做为基础值,也就是说实时进程的权值是 1000 加上它的进程优先级,而普通进程的优先级就是它的进程优先级。 三、Intel 8254 PIT 芯片简介 Intel 8254 PIT 是一款时钟芯片,有 3 个计时通道,每个通道都有其不同的用途。通道 0 用来负责更新系统时钟,每当一个时钟滴答过去时,它就会通过 IRQ0 向系统产生一次时钟中断。通道 1 通常用于控制 DMAC 对 RAM 的刷新。通道 2 被连接到 PC 机的扬声器,以产生方波信号。每个通道都有一个向下减小的计数器,8254 PIT 的输入时钟信号的频率是 1193181HZ,也即一秒钟输入 1193181 个 clock-cycle。每输入一个 clock-cycle 其时间通道的计数器就向下减 1,一直减到 0 值。因此对于通道 0 而言,当他的计数器减到 0 时,PIT 就向系统产生一次时钟中断,表示一个时钟滴答已经过去了。 四、时间系统基本概念 1. 实时时钟(RTC 时钟):是一块芯片(或叫做时钟电路),靠电池供电,即使系统断电,也可以维持日期和时间。独立于操作系统,也被称为硬件电路,为整个计算机提供一个计时标准,是最原始最底层的时钟数据。Linux 只用 RTC 来获取时间和日期,也允许进程对 RTC 编程。 2. 操作系统时钟(软时钟、系统时钟):产生于 PC 主板上的定时/计数芯片,由操作系统控制这个芯片的工作,基本单位是该芯片的计数周期。开机时操作系统去的 RTC 中的时间数据来初始化 OS 时钟,通过计数芯片的向下计数形成 OS 时钟。 3. 时钟运作机制:RTC 是 OS 时钟的基准,操作系统通过读取 RTC 来初始化 OS 时钟,此后二者保持同步运行,每隔一个固定时间会刷新或校正 RTC 中的信息,共同维持着系统时间。 4. 时间基准:1970-01-01 00:00:00 5. 时间系统用全局变量 jiffies 表示系统自启动以来的时钟滴答数目。 五、动态定时器 动态定时器是指内核的定时器队列是可以动态变化的,内核函数 init_timer()用来初始化一个定时器。假定一个定时器要经过 interval 个时钟滴答数目后才到期(interval = expires -jiffies),则 Linux 采用了以下思想来实现其动态内核定时器机制:对那些 0≤interval≤255 的定时器,Linux 严格按照定时器向量的基本语义来组织这些定时器,也即 Linux 内核最关心那些在接下来的 255 个时钟节拍内就要到期的定时器,因此将它们按照各自不同的 expires 值组成 256 个定时器向量。而对那些 256≤interval≤0xffffffff 的定时器,由于他们离到期还有一段时间,因此内核并不关心他们,而是将它们以一种扩展的定时器向量语义。 六、时钟中断 时钟中断是指可编程定时器/计数器产生输出脉冲,送入 CPU,引发一个中断请求信号,我们称之为时钟中断。每产生时钟中断,系统就会执行相应的中断处理程序,以处理时钟中断事件。 本文档详细介绍了 Linux 操作系统的基本概念,包括 Linux 内核、进程调度、Intel 8254 PIT 芯片、时间系统基本概念、动态定时器和时钟中断等知识点,为读者提供了一个系统的 Linux 操作系统知识架构。
剩余28页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助