`

操作系统学习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 的基础知识、使用场景...

    计算机操作系统学习课件

    这个“计算机操作系统学习课件”旨在帮助初学者理解操作系统的基本概念、功能以及其在计算机科学中的重要性。 首先,我们需要理解操作系统(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. 进程管理:涉及进程的概念、进程状态、进程同步与互斥、死锁等问题的分析和解决...

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

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

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

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

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

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

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

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

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

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

    操作系统学习课件

    很详细的操作系统学习课件,郑州轻工业学院计算机学院的讲师资源

    操作系统学习资料

    这份"操作系统学习资料"压缩包提供了一系列的幻灯片,涵盖了操作系统的核心概念,为初学者提供了宝贵的资源。 首先,我们来看看标题提及的"操作系统学习资料"。操作系统是控制计算机硬件与软件资源的软件,它为用户...

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

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

    学习操作系统的看法,转自别人

    学习操作系统原理能够帮助我们更好地理解和优化软件性能,提升开发效率。本文将深入探讨操作系统的学习方法和核心概念。 首先,理解操作系统的历史背景至关重要。在没有操作系统之前,程序员需要直接与硬件交互,...

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

    这本书不仅介绍了操作系统的基本概念,还通过实际编写操作系统的代码,让学习者能够亲身体验到操作系统的构建过程。下面将详细阐述这本书中的关键知识点。 首先,操作系统是计算机系统的核心,它负责管理和控制硬件...

    Linux操作系统的学习

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

    操作系统基础知识学习

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics