作者:empty 页数:241 出版社:empty |
对于在校的学生和已经参加工作的工程师而言,能否以较小的时间和精力比较全面地了解操作系统呢?陆游老夫子说过 纸上得来终觉浅,绝知此事要躬行”,也许在了解基本的操作系统概念和原理基础上,通过实际动.
操作系统的基本原理与简单实现对于在校的学生和已经参加工作的工程师而言,能否以较小的时间和精力比较全面地了解操作系统呢?陆游老夫子说过“纸上得来终觉浅,绝知此事要躬行 ,也许在了解基本的操作系统櫃念和原理基础上,通过实际动手来一步一步分析、设计和实现一个微型化的操作系统,会发现操作系统原来如此,概念原理和实际实现之间有紧密的联系和巨大的差异。
早期开放开源的UNIX操作系统和MIT教授Frans Kaashoek等基于UNIX V 6设计的xv 6操作系统给了我们启发:对一个计算机专业的本科生而言,设计实现一个操作系统有挑战但是可行!但x86相对封闭&复杂和有一定历史包袱的CPU硬件接给OS学习带来了一定的挑战。1988年前后, UCBerkeley的Dave Patterson主导了BerkeleyRISC项目并设计了其第一代的处理器RISC I, 并在2014年发展到了开放&开源的第五代指令集架构RISC-V。本书想进行这样的教学尝试, 以操作系统基本原理为教学引导, 以简洁的RISC-VCPU为底层硬件基础, 设计并实现一个微型但全面的“麻雀 操作系统-u core。期望能够采用简化的计算机硬件为基础, 以操作系统的基本概念和核心原理为实践指导,逐步解析操作系统各种知识点和对应的实验,做到有“理 可循和有“码 可查,最终让读者了解和掌握操作系统的原理、设计与实现
本章概述本章站在一万米的高空来看操作系统和计算机原理。相对用软件而言,操作系统其实是一个相比较复杂的系统软件,直接管理计算机硬件和各种外设,以及给应用软件提供帮助,这样描述还太简单了一些,我们可对其进一步描述:操作系统是一个可以管理CPU、内存和各种外设, 并管理和服务应用软件的软件。为了完成这些工作, 操作系统需要知道如何与硬件打交道,如何更好地面向应用软件做好服务,本章将讲述操作系统学习的一些基础知识, 以及对用于本书的u core教学操作系统做一个介绍。然后再简单介绍操作系统的基本概念、操作系统抽象以及操作系统的特征,最后还将简要介绍操作系统的历史和基本架构。本书希望通过设计实现操作系统来更好地理解操作系统原理和概念。设计实现操作系统其实就是设计实现一个可以管理CPU、内存和各种外设, 并管理和服务应用软件的系统软件, 为此还是需要先了解一些基本的计算机原理和编程的知识。本书的例子和描述需要读者学习过计算机原理课程、程序设计课程,掌握C语言编程(了解指针等的编程)。如需完成基于RISC-V的u core实验, 则对基于RISC-V的体系结构有一定的了解, 大致了解RISC-V的汇编语言。外设计算机系统中的硬件设备(外设) 千差万别, 一般连接在计算机系统中I/0总线上, 通过I/O控制器与CPU进行交互。I/O控制器在物理上包含三个层次:I/O地址空间、I/O接和设备控制器。每个连接到I/O总线上的设备都有自己的I/O地址空间(即I/0端) , 这也是CPU可以直接访问的地址, CPU一般支持I/O地址空间访问, 即通过特定的I/O访问指令访问;也支持基于内存的I/O地址空间,即通过一般的访存指令访问。这些I/O访问请求通过I/O总线传递给I/O接。I/O接是处于一组I/O端和对应的设备控制器之间的一种硬件电路。它将I/O访问请求中的特定值转换成设备所需要的命令和数据;并且检测设备的状态变化,及时将各种状态信息写回到特定I/O地址空间,供操作系统通过I/0访问指令来访问。I/O接包括键盘接、图形接、磁盘接、总线鼠标、网络接、括并、串、通用串行总线、PCMCIA接和SCSI接等。设备控制器并不是所有I/O设备所必须的,只有少数复杂的设备才需要。它负责解释从I/O接接收到的高级命令,并将其以适当的方式发送到I/O设备;井且对I/O设备发送的消息进行解释并修改I/O端的状态寄存器。典型的设备控制器就是磁盘控制器, 它将CPU发送过来的读写数据指令转换成底层的磁盘操作。操作系统对硬件设备的控制方式主要与三种:程序循环检测方式(Programmed I/O, 简称PIO) 、中断驱动方式(Interrupt-driven I/O) 、直接内存访问方式(DMA, Direct Memory Access) 。
内存内存是用于存放代码和数据地址的硬件,访问速度快,空间大,为高效定位代码和数据的位置,需要建立内存地址,即访问内存空间的索引, 一般而言, 内存地址有两个:一个是CPU通过总线访问物理内存用到的物理地址, 一个是我们编写的应用程序所用到的逻辑地址(也有人称为虚拟地址)。比如如下C代码片段:这里的boo是一个整型变量, foo变量是一个指向boo地址的整型指针变量, foo中储存的内容就是boo的逻辑地址。对于一般的32位CPU而言, 以寻址的物理内存地址空间为2 ^32=4G字节, 支持以页(页大小一般为4KB) 为单位对内物理内存空间进行重新编排内存地址,形成虚拟内存地址,而编排虚拟内存地址的策略由操作系统完成。这样操作系统就可以指定不同的物理内存空间给应用程序, 而应用程序“看到 的是操作系统在CPU的支持下虚拟化后的地址空间。最终,让操作系统可以更灵活地安排应用程序所占用的内存空间,也简化了应用程序对内存空间的管理80386是32位的处理器, 即可以寻址的物理内存地址空间为2 ^32=4G字节。为更好理解面向80386处理器的u core操作系统,需要用到三个地址空间的概念:物理地址、线性地址和逻辑地址。物理内存地址空间是处理器提交到总线上用于访问计算机系统中的内存和外设的最终地址。一个计算机系统中只有一个物理地址空间。线性地址空间是80386处理器通过段(Segment) 机制控制下的形成的地址空间。在操作系统的管理下, 每个运行的应用程序有相对独立的一个或多个内存空间段,每个段有各自的起始地址和长度属性,大小不固定,这样可让多个运行的应用程序之在操作系统完成对80386处理器段机制的初始化和配置(主要是需要操作系统通过特定的指令和操作建立全局描述符表,完成虚拟地址与线性地址的映射关系)后,80386处理器的段管理功能单元负责把虚拟地址转换成线性地址,在没有下面介绍的页机制启动的情况下,这个线性地址就是物理地址。相对而言, 段机制对大量应用程序分散地使用大内存的支持能力较弱。所以Intel公司又加入了页机制, 每个页的大小是固定的(一般为4KB),也可完成对内存单元的安全保护,隔离,且可有效支持大量应用程序分散地使用大内存的在操作系统完成对80386处理器页机制的初始化和配置(主要是需要操作系统通过特定的指令和操作建立页表,完成虚拟地址与线性地址的映射关系)后,应用程序看到的逻辑地址先被处理器中的段管理功能单元转换为线性地址,然后再通过88386处理器中的页管理功能单元把线性地址转换成物理地址。·分段机制启动、分页机制未启动:逻辑地址-->段机制处理-->线性地址=物理地址·分段机制和分页机制都启动:逻辑地址-->段机制处理-->线性地址-->页机制处理-->物理地址通用CPU一般能够在硬件上支持内存空间的隔离, 使得多个程序在各自独立的内存空间中并发执行。这种硬件机制即支持用户特权级和内核特权级.应用程序运行在用户特权级,这样应用不能执行特权指令,且不能破坏操作系统内核的数据和操作系统执行过程。而操作系统内核运行在内核特权级,可以访问特权指令,并管理和控制应用程序,硬件外设等。所以对于操作系统而言, 需要CPU硬件至少支持用户特权级和内核特权级(控制隔离) , 以及内存空间隔离(数80386处理器有四种运行模式:Machine模式、Hypervisor模式、Supervisor模式和user模式, 所以这里对实模实模式:这是个人计算机早期的8086处理器采用的一种简单运行模式, 当时微软的MS-DOS操作系统主要就是运行在8086的实模式下。80386加电启动后处于实模式运行状态,在这种状态下软件可访问的物理内存空间不能超过1MB,且无法发挥Intel 80386以上级别的32位CPU的4GB内存管理能力。实模式将整个物理内存看成分段的区域, 程序代码和数据位于不同区域,操作系统和用户程序并没有区别对待,而且每一个指针都是指向实际的物理地址。这样用户程序的一个指针如果指向了操作系统区域或其他用户程序区域,并修改了内容,那么其后果就很可能是灾难性的。
致谢
介绍
封面
操作系统简介
启操作系统
应凡备的背景知识和学习环境
外设
内存
CPU
了解计算机硬件架构
了解操作系统
*操作系晓-icon
小结
官家:Intel-80386加电后启动过程
背:设备管理:理醉议务动机制
告景:内存管理:理钢保护模式和分机刷
实现:实模式到保护模式的切换
实现:设置栈内存空间
实现:示字符串
肯景:动问硬盘数据控制
背:理解ELF文件格式
音景:操作系统执行代码的成
实现:boot foa de加载并运行u on te
实现:可输出字节半的a core
实验三:能导示函数调用关系的u core
一般计算机硬件架构
SISC-V旋性架构
操作系统的历史
操作系统的定义与目标
操作系统的接
操作系的抽象
操作系统的特狂
实现:分析内核函数调用关系
背景:理解CPU对外设中断的件支持
实现:初始化中面控制器
实规:初始化中断门描述表
实现:外没的相关中断初始化
实现:中断处理过程
背景:分段机制的特权限制
背量:80386的任务切换
实现:内核态切换到用户志
实现:用户套奶换到内核志
背量计算机物理内存分布和大小
实现:理内存探测
原理:分页内存管理
背量:X HG的分页硬件支持
实现实现分页内存管理
原理:页内存分配算法
实现:slab法的简化设计实现
原理:扣内存管理
pru j 78989.192根述
proj 7:支持页异常和VMA结构
实现yin u_struc i数据结构和相关操作
实现:缺页异常处理
pru j:支持页换入换出
原理更面置算法
实现页面置换机制实
p可1:实现共孕内存
pm j 92:实现巧时复制
原理进程的属性与特征制析
实现设计进程控制决
实现创建并执行内核程
原型用户进程的特征
创建用户进程
基于时间事件的等待与吸醒
进程退出和等待进程
系统调用实现
等神队列设计与卖
内存页置换机制的执行过程
原注:线理的属性与特征分析
实现:创建井执行用户程
进程运行状态转变过程
原理进程调座
实现进程调度
实验四:可管理中断并处理中断方式uD的u or
实验五:可在内核态和用户态之间进行切换的ut on
探作系统基本原理:管理计算机硬件
实验1建立分更管理机制
实验2实现任意大小内存分配
实验3支持存