`

操作系统学习1

 
阅读更多

我们用一组简单的数学公式来描述操作系统的组成要素:

操作系统 = 内核 + 系统程序

系统程序 = 编译环境 API + AUI

编译环境 编译程序+连接程序 装载程序

API      = 系统调用 语言库函数( C,C++,Java,etc

AUI     =  shell + 系统服务例程(如 x 服务器等) + 应用程序 ( 浏览器,字处理,编辑器 )

操作系统最底层的组件是内核,其上层搭建了许多系统软件。系统程序包括三个部分。这三个部分分别是:编译环境、应用程序接口和用户接口。编译环境包含汇编, C 等低高级语言编译程序,连接程序和装载程序,这些程序负责将文本格式的程序语言转变为机器能识别和装载的机器代码;应用程序接口( API )包含内核提供的系统调用接口和语言库,系统调用是为了能让应用程序使用内核服务,语言库函数则是为了方便应用程序开发,所以将一些常用的基础功能预先编译以供使用,比如对 C 语言来说常用的 C 库有 gun C 等;用户接口 (AUI) 包括我们熟悉的 shell( 关于 shell 应该专门写一个教程 ) 、系统服务程序和常用的应用程序。

这些部分并非所有的操作系统都必须一个不少的包含,不过其中大多数功能都应该提供,尤其内核,系统调用, shell 这些基本组件,它们都属于操作系统必备组件,其它组件是否包含需要根据具体系统的要求和应用环境决定,你也可以将其归为操作系统之外的附加部分。


内核概念

操作系统最核心,最基础的组件就要属内核了——内核和操作系统的其它系统软件或应用程序本质的区别在于内核运行在高特权级,和硬件直接交互,操作权限几乎不收任何限制,因此内核程序编写也要求格外谨慎,必须保证效率和可靠。

内核设计的主要任务

内核作为操作系统的核心,运行级别最高。其它系统程序都必须通过它才可以使用系统资源,获取系统服务。所以内核使用最为频繁,一切系统行为无论巨细都要通过内核参与。

因此内核运行效率和正确性对整个系统的运行效率和可靠性至观重要,如果内核效率稍微下降,那么在应用程序中就必然造成层层放大。

    内核要求高效率,所以它必须自系统运行起就要载入内存,并且在运行期间一直驻留在内存中,直到系统关闭。这是内核与其它应用程序或系统程序的另一个显著区别。虽然说内存今天已经不再是天价了,但是毕竟内存容量有限,所以内核大小不能过大( Linux 内核只有几 M 或十几 M ,甚至可以裁减得更小),因此内核只应该包含最基础和核心的功能,其它附加功能应该尽量提到用户空间完成。

    那么到底有那些功能是操作系统使用最频繁,最需要在内核中实现的呢?内核直接架构于硬件资源之上,因此首先要做的就是对硬件的资源管理。因此内核必须负责:内存管理,进程和进程调度(对 CPU 的管理),文件系统管理, I/O 处理等任务。

我们的杂志核心就是在解释内核原理的基础上,带领大家学习内核级别的开发,也就是说进行核心开发。本期仅仅给大家一个概念上的说明,描述内核设计需要完成的主要任务,至于具体内核各部分的详细讨论在后续期刊中将逐步展开。

内核至少需要包含如下几个模块。

进程管理 : 进程是操作系统中的执行代码,是任务在系统内的动态化身。内核必须负责将任务抽象为进程,而且必须能将进程执行,能为进程分配资源,维护进程的执行状态, 提供进程间通讯方法。更进一步讲,进程管理还必须保证进程运行的可靠性,因此需要提供进程同步,互斥,防死锁等等服务,另外进程调度也是进程管理中的重要 任务。

内存管理 :计算机存储部件由快到慢、由小到大分为缓存、内存和磁盘。其中最主要和必须是内存,内存管理包括内存的分配和释放,以及访问保护等。另外对使用虚拟内存的系统,内存管理还包含虚拟内存管理,磁盘交换管理,内存影射等等。

文件系统 :文件是多数系统中用户使用和管理数据的主要方式,文件系统需要负责用户文件访问,访问权限控制,文件格式转换,数据传输等一系列问题。

设备管理 :除了存储设备外,系统还有大量外设需要操作系统管理,比如时钟,网卡,键盘,磁盘等等,设备管理需要负责驱动这些设备为上层调用服务。

I/O 管理 操作系统中 I/O 管理负责处理复杂的 I/O 操作,其中包括 I/O 缓冲和磁盘调度等。

另外中断管理 也是操作系统内核应该实现的功能。

 

以上是操作系统内核设计要考虑的主要问题,其中各种模块彼此相互交错、相互利用。不过这些模块的划分并不是绝对的,在实际系统中可能有不同的组合或更细致地划分,因此我们不必追究模块的具体内容,需要关注的是内核究竟需要完成那些功能。

内核模块大致也有层次之分,我们可以这样理解层次含义:直接和硬件作用的是硬件抽象层 ,和用户更靠近的属于逻辑抽象层

所谓硬件抽象层,是指管理硬件设备的模块,比如存储管理、设备管理这些模块将硬件功能抽象为内核数据结构和接口函数,以供上层使用。比如磁盘设备驱动,需要将磁盘设备功能抽象为打开 open ,写入 (write) ,读取( read )等接口函数;内存管理需要将内存抽象为页、段等结构体。然后分配、合并、释放等工作都是通过操作这些抽象得来的结构体,再由这些结构影射到内存的物理实体上去的完成实际操作的。

所谓逻辑抽象层最主要的目的是为了贴近用户需求,最重要的逻辑抽象模块就是文件系统,文件系统的存在完全是从用户角度出发设计的,因为用户最能接受以用文件形式包装的信息,所以文件系统属于逻辑上的抽象,因为物理设备中没有对应文件的实体。

对于进程管理来说,其中进程执行和调度要和处理器打交道,应该说属于硬件抽象层,但其中进程状态维护,进程通讯等更接近用户使用,因此可以归结到逻辑抽象层。

另外 I/O 管理和中断管理些模块,在内核中属于为其它模块服务的借用力量,它们主要被文件系统或设备管理模块使用,但总之是面向硬件的,所以也可以将其归为硬件逻辑层。

分享到:
评论

相关推荐

    Linux操作系统学习资料

    Linux 操作系统学习资料 Linux 操作系统是当今最流行的开源操作系统之一,广泛应用于服务器、嵌入式系统和个人桌面领域。本节课程旨在为学习者提供一份详细的 Linux 学习资料,涵盖了 Linux 的基础知识、使用场景...

    计算机操作系统学习指导与题解.pdf

    本书为《计算机操作系统》一书的配套... 本书可作为计算机及相关专业本、专科生学习操作系统的辅导教材,也可作为报考相关专业硕士研究生的复习用书,还可作为读者自学操作系统的参考书。本PDF有完整书签,便于查阅。

    计算机操作系统学习课件

    这个“计算机操作系统学习课件”旨在帮助初学者理解操作系统的基本概念、功能以及其在计算机科学中的重要性。 首先,我们需要理解操作系统(OS)的基本定义。操作系统是用户与计算机硬件之间的桥梁,它管理着计算机...

    操作系统学习与考试系统(XOSCATS)

    Step2 解压“操作系统学习与考试系统(XOSCATS).rar”压缩包中XOSCATS.rar,将解压目录下所有文件拷贝到Step1创建的 C:\XOSCATS目录下。 二、运行 打开C:\XOSCATS目录下的CATS.exe(用户可以根据需要创建桌面快捷方式...

    操作系统学习资料.zip

    操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip操作系统学习资料.zip...

    汤小丹《计算机操作系统(第4版)》学习指导与题解

    1. 操作系统的定义和功能:介绍操作系统作为一个系统软件在计算机系统中的地位和作用,包括管理硬件资源、提供用户接口等功能。 2. 进程管理:涉及进程的概念、进程状态、进程同步与互斥、死锁等问题的分析和解决...

    计算机操作系统学习指导与题解

    计算机操作系统学习指导与题解将操作系统这本书进行全面介绍,可供学者进行学习参考,还附有每章题解

    操作系统学习指导和考试指导part2

    操作系统学习指导和考试指导part2操作系统学习指导和考试指导part2操作系统学习指导和考试指导part2操作系统学习指导和考试指导part2

    操作系统学习指导和考试指导(李善平)

    李善平编著的《操作系统学习指导和考试指导》一书,便是这样一本针对操作系统理论与实践相结合的考研必备参考资料。 本书主要涵盖了操作系统的基本概念、设计原理和实际应用,旨在帮助读者建立起对操作系统全面而...

    《自动手写操作系统》学习包

    在本学习包《自动手写操作系统》中,我们将深入探讨操作系统的设计原理、实现方法以及如何进行软盘写入这一传统但至关重要的操作。 操作系统是计算机的灵魂,它负责调度任务、管理内存、处理输入输出、提供用户界面...

    2022全国大学生计算机系统能力大赛-操作系统赛源码+学习说明(内核实现赛道作品).zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习...2022全国大学生计算机系统能力大赛-操作系统赛源码+学习说明(内核实现赛道作品).zip

    Linux操作系统管理学习路线图

    Linux操作系统管理学习路线图,三四个文档,希望对大家有点帮助。

    2023王道操作系统课件

    操作系统是计算机科学中的核心课程,对于计算机专业的学生来说,深入理解和掌握操作系统原理至关重要,尤其...通过系统学习,学生不仅能在考试中取得好成绩,更能为将来从事操作系统相关的研究或开发工作打下坚实基础。

    Linux操作系统的学习

    这个视频很全面的讲述了Linux操作系统的用法,以及如何使用Linux操作系统

    操作系统基础知识学习

    适合初学者快速理解windows操作系统

    自己动手写操作系统(一部学习操作系统原理很好的教材)

    在计算机科学的广阔天地中,操作系统作为基础而关键的一环,其原理与构建一直是学习者们关注的焦点。《自己动手写操作系统》一书以其独到的教学方法,为渴望深入操作系统世界的读者提供了一条捷径。不仅包含了操作...

    Unix操作系统全面学习资料以及开发资料

    Unix操作系统的学习资料,适用于初学者晋级

    操作系统概念,第九版

    从以上分析来看,这本教材非常适合作为操作系统学习的参考资料,尤其是对于那些希望深入理解和掌握操作系统基础知识的专业人士和学生。通过阅读和研究,读者将能够建立起操作系统的稳固基础,并对相关高级主题有一个...

    计算机操作系统(第4版)汤小丹(N).rar

    这本书深入浅出地讲解了操作系统的基本概念、设计原理和实现技术,是学习操作系统理论和技术的重要参考资料。教学PPT则为学生提供了直观易懂的学习辅助,帮助他们更好地理解和掌握课程内容。 操作系统是计算机系统...

Global site tag (gtag.js) - Google Analytics