`

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

    操作系统学习资料.zip

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

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

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

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

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

    Linux操作系统学习平台的构建.pdf

    Linux操作系统学习平台的构建.pdf 本文主要介绍了Linux操作系统学习平台的构建,旨在解决初学者学习Linux操作系统时所面临的第一个问题--学习平台的构建。文章提出了使用虚拟机和Red Hat Linux发行版的解决方案,以...

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

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

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

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

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

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

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

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

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

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

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

    资源名称:计算机操作系统学习指导与题解资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    2023王道操作系统课件

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

    操作系统基础知识学习

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

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

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

    orange's一个操作系统的实现-【自己动手写操作系统第二版】

    这本书旨在帮助读者通过实际操作来理解操作系统的原理和构造,适合对操作系统感兴趣的DIY爱好者和计算机科学的学习者。 在书中,作者详细介绍了如何从零开始构建一个迷你操作系统,涵盖了操作系统设计与实现的关键...

    UNIX操作系统学习教程

    UNIX操作系统是一种多用户、多任务的操作系统,具有强大的网络功能和良好的可移植性,它的设计理念、系统结构及其丰富的软件工具对后世的...通过持续的学习和实践,用户可以熟练掌握UNIX操作系统,发挥其强大的功能。

    计算机操作系统学习与辅导教程]

    计算机操作系统学习与辅导教程] 初学者有帮助 浅显易学

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

    操作系统学习指导和考试指导-李善平 第一版资源

    操作系统学习(里面含三套适合不同层次有人学习)

    本压缩包包含三套操作系统课程的学习材料,分别来自复旦大学、华中科技大学和武汉大学,每一套都有其独特的教学视角和深度,适合不同程度的学生进行学习。 复旦大学的操作系统课程可能涵盖了操作系统的基本概念,如...

    王道操作系统课件 2024

    操作系统是计算机科学中的核心课程,它管理着计算机的硬件资源,为用户提供服务并...这些课件覆盖了操作系统学习的核心知识点,通过深入研究,学生将能够全面理解操作系统的运作机制,并为解决实际问题打下坚实基础。

Global site tag (gtag.js) - Google Analytics