计算机操作系统体系结构实验报告

合集下载

计算机体系结构实验报告

计算机体系结构实验报告

计算机体系结构实验报告实验目的:1.掌握计算机体系结构的基本概念和组成部分2.学会使用模拟器对计算机性能进行测试和优化3.理解计算机指令的执行过程和流水线工作原理4.掌握计算机性能指标的测量方法和分析技巧实验材料和工具:1.一台个人电脑2.计算机体系结构模拟器3.实验指导书和实验报告模板实验步骤:1.搭建计算机系统:根据实验指导书提供的指导,我们搭建了一个简单的计算机系统,包括中央处理器(CPU)、内存和输入输出设备。

2.编写测试程序:我们编写了一段简单的测试程序,用于测试计算机系统的性能。

3.运行测试程序:我们使用模拟器运行测试程序,并记录测试结果。

模拟器可以模拟计算机的执行过程,并提供各种性能指标的测量功能。

4.分析和优化:根据测试结果,我们对计算机系统的性能进行分析,并尝试优化系统设计和测试程序,以提高性能。

实验结果:通过测试程序的运行和性能指标的测量,我们得到了如下结果:1.计算机的时钟频率:根据模拟器显示的结果,我们得知计算机的时钟频率为1000MHz。

2. 指令执行时间:我们计算了测试程序的平均执行时间,得到了结果为5ms。

4.流水线效率:我们通过模拟器提供的流水线分析功能,得到了计算机流水线的平均效率为80%。

实验分析:根据测试结果1.提高时钟频率:通过增加时钟频率可以加快计算机的运行速度。

我们可以尝试调整计算机硬件的设计和制造工艺,提高时钟频率。

2.优化指令执行过程:我们可以通过优化指令的执行过程,减少执行时间。

例如,并行执行多个指令、增加指令缓存等。

3.提高流水线效率:流水线是提高计算机性能的关键技术,我们可以通过增加流水线级数和优化流水线结构,提高流水线效率。

4.增加并行计算能力:并行计算是提高计算机性能的重要途径,我们可以尝试增加计算机的并行计算能力,例如增加处理器核心的数量。

实验总结:通过本次实验,我们深入了解了计算机体系结构的工作原理和性能指标。

通过模拟器的使用,我们学会了对计算机性能进行测试和进行性能优化的方法。

计算机系统结构实验报告

计算机系统结构实验报告

计算机系统结构实验报告实验目的:掌握计算机系统的基本结构和工作原理,了解计算机系统的组成部分及其相互关系。

实验仪器和材料:计算机硬件设备(主机、硬盘、内存、显卡等)、操作系统、实验指导书、实验报告模板。

实验原理:实验步骤:1.搭建计算机硬件设备,将主机、硬盘、内存、显卡等组装连接好。

2. 安装操作系统,如Windows、Linux等。

3.启动计算机,进入操作系统界面。

4.打开任务管理器,查看CPU的使用情况。

5.打开任务管理器,查看内存的使用情况。

6.运行一些应用程序,观察CPU和内存的使用情况。

7.尝试使用输入输出设备,如键盘、鼠标等。

实验结果:通过实验,我们可以观察到计算机系统的硬件部分和软件部分的工作情况。

通过任务管理器,我们可以查看到CPU的使用情况和内存的使用情况。

在运行应用程序时,我们可以观察到CPU和内存的使用情况的变化。

通过使用输入输出设备,我们可以与计算机进行交互操作。

实验分析:从实验结果可以看出,计算机系统的硬件部分和软件部分都是相互关联的。

CPU作为计算机的核心部件,负责执行各种指令,通过数据传输和计算来完成各种操作。

而内存则用于存储数据和程序,通过读写操作来完成对数据的处理。

硬盘则用于长期存储数据。

操作系统则是计算机系统的管理者,通过调度CPU和内存的使用来实现对计算机资源的分配。

结论:计算机系统是由硬件和软件部分组成的,其中硬件部分包括CPU、内存、硬盘等,软件部分包括操作系统、应用程序等。

计算机系统通过CPU 的运算和数据传输来实现各种操作。

通过实验,我们可以观察到计算机系统的工作情况,并深入了解计算机系统的组成和工作原理。

实验总结:通过本次实验,我们对计算机系统的基本结构和工作原理有了更深入的了解。

实验中,我们搭建了计算机硬件设备,安装了操作系统,并通过观察和分析实验结果,进一步认识到计算机系统的组成部分和各部分之间的相互关系。

通过操作输入输出设备,我们还实践了与计算机进行交互操作的过程。

计算机操作系统实验报告

计算机操作系统实验报告

计算机操作系统实验报告一、实验目的本次实验的主要目的是深入了解计算机操作系统的工作原理和功能,通过实际操作和观察,掌握操作系统的基本概念和常用命令,提高对计算机系统的管理和控制能力。

二、实验环境1、操作系统:Windows 10 专业版2、硬件配置:Intel Core i5 处理器,8GB 内存,256GB 固态硬盘三、实验内容1、进程管理通过任务管理器观察系统中正在运行的进程,包括进程的名称、PID(进程标识符)、CPU 使用率、内存使用情况等。

尝试结束一些非关键进程,观察系统的反应。

2、内存管理使用系统自带的性能监视器查看内存的使用情况,包括物理内存、虚拟内存的总量、已使用量和可用量。

运行一些大型程序,观察内存的分配和释放过程。

3、文件管理创建、复制、移动、删除文件和文件夹,观察文件系统的操作效果。

查看文件和文件夹的属性,包括大小、创建时间、修改时间、访问权限等。

4、设备管理查看设备管理器中硬件设备的状态,包括是否正常工作、驱动程序的版本等。

尝试更新一些设备的驱动程序,观察设备性能的变化。

四、实验步骤及结果1、进程管理打开任务管理器,可以看到系统中正在运行的进程列表。

进程按照名称、PID、CPU 使用率、内存使用情况等进行排序。

例如,系统进程“System”和“svchostexe”通常占用一定的 CPU 和内存资源。

尝试结束一些非关键进程,如某些后台运行的软件进程。

在结束进程时,系统会提示可能会导致相关程序无法正常运行,确认后结束进程。

部分进程结束后,对应的程序会关闭,系统的资源占用也会相应减少。

2、内存管理打开性能监视器,在“内存”选项中可以直观地看到物理内存和虚拟内存的使用情况。

当运行大型程序时,如游戏或图形处理软件,内存的使用量会显著增加。

随着程序的关闭,已使用的内存会逐渐释放,可用内存量会回升。

3、文件管理在文件资源管理器中进行文件和文件夹的操作。

创建新文件和文件夹时,可以指定名称、类型和存储位置。

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C 和 C++。

实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。

通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。

2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。

通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。

在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。

(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。

通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。

2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。

在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。

(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

计算机操作系统体系结构实验报告

计算机操作系统体系结构实验报告

操作系统实验报告实验目的:随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构。

为了更好的了解计算机操作系统体系结构,以及linux 的体系结构,特作此报告。

实验内容:计算机操作系统体系结构一、模块组合结构操作系统刚开始发展时是以建立一个简单的小系统为目标来实现的,但是为了满足其他需求又陆续加入一些新的功能,其结构渐渐变得复杂而无法掌握。

以前我们使用的MS-DOS 就是这种结构最典型的例子。

这种操作系统是一个有多种功能的系统程序,也可以看成是一个大的可执行体,即整个操作系统是一些过程的集合。

系统中的每一个过程模块根据它们要完成的功能进行划分,然后按照一定的结构方式组合起来,协同完成整个系统的功能。

如图1所示:在模块组合结构中,没有一致的系统调用界面,模块之间通过对外提供的接口传递信息,模块内部实现隐藏的程序单元,使其对其它过程模块来说是透明的。

但是,随着功能的增加,模块组合结构变得越来越复杂而难以控制,模块间不加控制地相互调用和转移,以及信息传递方式的随意性,使系统存在一定隐患。

二、层次结构为了弥补模块组合结构中模块间调用存在的固有不足之处,就必须减少模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。

从这一点出发,层次结构的设计采用了高层建筑结构的理念,将操作系统或软件系统中的全部构成模块进行分类:将基础的模块放在基层(或称底层、一层),在此基础上,再将某些模块放在二层,二层的模块在基础模块提供的环境中工作;它只能调用基层的模块为其工作,反之不行。

严格的层次结构,第N+l层只能在N层模块提供的基础上建立,只能在N层提供的环境中工作,也只能向N 层的模块发调用请求。

在采用层次结构的操作系统中,各个模块都有相对固定的位置、相对固定的层次。

处在同一层次的各模块,其相对位置的概念可以不非常明确。

计算机操作系统实验报告

计算机操作系统实验报告

计算机操作系统实验报告一、实验目的本次计算机操作系统实验的主要目的是深入了解操作系统的工作原理和功能,通过实际操作和观察,增强对操作系统概念的理解,提高解决实际问题的能力。

二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio 20193、编程语言:C++三、实验内容1、进程管理实验创建多个进程,并观察它们的执行顺序和资源占用情况。

使用进程控制块(PCB)来跟踪进程的状态变化,如就绪、运行、阻塞等。

2、内存管理实验模拟内存分配和回收算法,如首次适应算法、最佳适应算法和最坏适应算法。

观察不同算法在内存利用率和分配效率方面的表现。

3、文件系统实验创建、读取、写入和删除文件,了解文件的操作流程。

研究文件的存储结构和目录管理方式。

4、线程同步与互斥实验使用互斥锁和信号量来实现线程之间的同步和互斥操作。

观察在多线程环境下资源竞争和同步的效果。

四、实验步骤1、进程管理实验步骤编写 C++程序,使用系统调用创建多个进程。

在每个进程中输出进程的标识符和当前执行时间。

通过观察控制台输出,分析进程的执行顺序和资源占用情况。

2、内存管理实验步骤实现不同的内存分配算法,并在程序中模拟内存请求和释放的过程。

记录每次内存分配和回收的结果,计算内存利用率和分配时间。

3、文件系统实验步骤使用文件操作函数创建文件,并写入一些数据。

读取文件中的数据,并将其输出到控制台。

删除文件,观察文件系统的变化。

4、线程同步与互斥实验步骤创建多个线程,共享一些公共资源。

在访问公共资源的代码段前使用互斥锁或信号量进行同步控制。

观察线程的执行结果,确保资源的正确访问和修改。

五、实验结果与分析1、进程管理实验结果与分析实验结果显示,进程的执行顺序是不确定的,取决于操作系统的调度策略和进程的优先级。

资源占用情况也因进程的不同而有所差异,一些进程可能占用较多的 CPU 时间和内存,而另一些则相对较少。

2、内存管理实验结果与分析首次适应算法在分配速度上较快,但容易产生内存碎片。

操作系统实验报告

操作系统实验报告

操作系统实验报告1. 实验目的本次实验的目的是通过设计一个简单的操作系统,深入理解操作系统的基本原理、结构和功能,并通过实践掌握操作系统的核心概念和实现方式。

2. 实验环境本次实验使用的实验环境如下:- 操作系统:Linux Ubuntu 18.04- 开发语言:C/C++- 开发工具:GCC编译器,GNU Make3. 实验内容及步骤本次实验包括以下几个主要内容和步骤:3.1 系统引导- 在操作系统启动时,首先执行系统引导程序,加载操作系统内核到内存中。

- 系统引导程序负责初始化硬件设备,建立起基本的运行环境,然后将控制权转交给操作系统内核。

3.2 内核初始化- 内核初始化过程包括初始化各种数据结构,建立进程控制块(PCB),初始化设备驱动程序等。

- 内核初始化完成后,操作系统进入空闲状态,等待用户的操作请求。

3.3 进程管理- 操作系统需要支持进程管理功能,包括进程的创建、销毁、调度和切换等。

- 进程管理模块负责分配和回收进程资源,根据调度算法决定进程的执行顺序,实现进程的并发执行。

3.4 内存管理- 操作系统需要支持内存管理功能,包括内存的分配和释放、内存的保护和共享等。

- 内存管理模块负责维护内存的使用情况,并根据进程的需求进行内存的分配和回收。

3.5 文件系统- 操作系统需要支持文件系统,提供对文件的创建、打开、读写和关闭等操作。

- 文件系统模块负责管理文件和目录的结构,以及实现对文件的存储和访问策略。

4. 实验结果与分析我们根据上述步骤,设计并实现了一个简单的操作系统。

通过测试和分析,得出以下实验结果和结论:4.1 系统启动与内核初始化- 当系统启动时,我们能够成功加载操作系统的内核,并初始化各种硬件设备。

- 内核初始化过程能够正确建立进程控制块(PCB),并初始化各个设备驱动程序。

4.2 进程管理- 我们能够成功创建和销毁进程,并按照设定的调度算法进行进程的切换。

- 进程间能够实现正确的互斥和同步操作,避免资源竞争和死锁等问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告实验目的:随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构。

为了更好的了解计算机操作系统体系结构,以及linux 的体系结构,特作此报告。

实验内容:计算机操作系统体系结构一、模块组合结构操作系统刚开始发展时是以建立一个简单的小系统为目标来实现的,但是为了满足其他需求又陆续加入一些新的功能,其结构渐渐变得复杂而无法掌握。

以前我们使用的MS-DOS 就是这种结构最典型的例子。

这种操作系统是一个有多种功能的系统程序,也可以看成是一个大的可执行体,即整个操作系统是一些过程的集合。

系统中的每一个过程模块根据它们要完成的功能进行划分,然后按照一定的结构方式组合起来,协同完成整个系统的功能。

如图1所示:在模块组合结构中,没有一致的系统调用界面,模块之间通过对外提供的接口传递信息,模块内部实现隐藏的程序单元,使其对其它过程模块来说是透明的。

但是,随着功能的增加,模块组合结构变得越来越复杂而难以控制,模块间不加控制地相互调用和转移,以及信息传递方式的随意性,使系统存在一定隐患。

二、层次结构为了弥补模块组合结构中模块间调用存在的固有不足之处,就必须减少模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。

从这一点出发,层次结构的设计采用了高层建筑结构的理念,将操作系统或软件系统中的全部构成模块进行分类:将基础的模块放在基层(或称底层、一层),在此基础上,再将某些模块放在二层,二层的模块在基础模块提供的环境中工作;它只能调用基层的模块为其工作,反之不行。

严格的层次结构,第N+l层只能在N层模块提供的基础上建立,只能在N层提供的环境中工作,也只能向N 层的模块发调用请求。

在采用层次结构的操作系统中,各个模块都有相对固定的位置、相对固定的层次。

处在同一层次的各模块,其相对位置的概念可以不非常明确。

处于不同层次的各模块,一般而言,不可以互相交换位置,只存在单向调用和单向依赖。

Unix/Linux系统采用的就是这种体系结构。

在层次结构中,强调的是系统中各组成部分所处的位置,但是想要让系统正常运作,不得不协调两种关系,即依赖关系和调用关系。

依赖关系是指处于上层(或外层)的软件成分依赖下层软件的存在、依赖下层软件的运行而运行。

例如,浏览器这部分软件就依赖GUI的存在和运行,GUI又依赖操作系统的存在和运行。

在操作系统内部,外围部分依赖内核的存在而存在,依赖内核的运行而运行,内核又依赖HAL而运行。

处在同层之内的软件成分可以是相对独立的,相互之间一般不存在相互依赖关系。

三、虚拟机结构虚拟机的基本思想是系统能提供两个功能:①多道程序处理能力;②提供一个比裸机有更方便扩展界面的计算机。

操作系统是覆盖在硬件裸机上的一层软件,它通过系统调用向位于它之上的用户应用程序服务。

从应用程序的角度看来,操作系统像是一台“计算书”,只不过它的功能比硬件裸机更强,它的指令系统是系统调用集而己。

因此,从概念上来讲,操作系统是“虚拟机”。

这是“虚拟机”概念的来源。

利用CPU调度以及虚拟内存技术,操作系统可以给运行于系统中的进程以假象:好像进程拥有自己的CPU和存储器,如同系统中只有一个进程,系统所有资源都为它服务。

从这个角度来讲,操作系统为每一个进程创建了一个使该进程独立运行于其中的“虚拟机”,在这个“虚拟机”中,进程拥有自己的“CPU”和“存储器”,同时进程还得到了硬件所无法提供的文件系统功能。

虚拟机操作系统就是根据这一想法而产生的。

虚拟机操作系统不提供传统操作系统中的文件系统的功能。

最初的虚拟机仅仅为进程提供一个访问底层的接口,它通过对硬件的复用提供给每一个进程以硬件的一个拷贝,因此能够直接的运行在硬件上的程序都可以直接运行在虚拟机之上。

后来出现了另外三种体系结构的虚拟机:由机器虚拟指令映射构成的虚拟机。

虚拟机操作系统并没有提供一个供应用程序直接运行的现成环境,它仅仅是对硬件进行(分时)复用从而得到硬件的多个拷贝,应用程序不可以直接运行在硬件之上,因此它也无法运行在虚拟机操作系统之上。

通常的情况是,普通的操作运行在虚拟机之上。

而应用程序运行在各自的操作系统之上,由于虚拟机操作系统是通过(分时)复用硬件资源同时提供多台虚拟机,因此同时可以有多个不同的操作系统运行在同一物理硬件机器之上,因此可以有多个不同操作系统的应用程序可以同时运行在同一台物理硬件机器之上。

虽然虚拟机操作系统有着诱人的特性,但是最突出的一个问题是实现比较困难。

如果要实现的是底层硬件的完全拷贝,也即它要模拟硬件几乎所有的特性,那将是相当困难的一件事情。

因此现代许多商业虚拟机采用映射部分指令结合直接调用宿主操作系统功能的方法,但这样必然会导致虚拟机性能的损失,所以虚拟机操作系统在业界是属于非主流的,但是在学术界有着重要意义,因为它是研究操作系统技术的理想平台。

四、微内核结构操作系统研究领域最近十几年突出的成就应该是微内核技术。

微内核的研究动机是为克服已有的操作系统内核由于功能的增加而逐渐变大的缺点。

图3所示:微内核体系结构的基本思想是把操作系统中与硬件直接相关的部分抽取出来作为一个公共层,称之为硬件抽象层(HAL)。

这个硬件抽象层其实就是一种虚拟机,它向所有基于该层的其它层通过API接口提供一系列标准服务。

在微内核中只保留了处理机调度、存储管理和消息通讯等少数几个组成部分,将传统操作系统内核中的一些组成部分放到内核之外来实现。

如传统操作系统中的文件管理系统、进程管理、设备管理、虚拟内存和网络等内核功能都放在内核外作为一个独立的子系统来实现。

因此,操作系统的大部分代码只要在一种统一的硬件体系结构上进行设计就可以了。

微内核体系结构的主要特点有:①内核非常小。

②许多操作系统服务不属于内核,而是运行在内核之上的,这样,当高层模块更新时内核无须重新编译。

③有一个硬件抽象层,内核能方便地移植到其它的硬件体系结构中。

因为当需要移植到新的软件或硬件环境中时,只需对与硬件相关的部分稍加修改即可把微内核嵌入到新的硬件环境中,在多数情况下并不需要移植外部服务器或客户应用。

④灵活性和扩展性.微内核最大的优点之一就是它的灵活性和扩展性。

如果要实现另一个视图,可以增加一个外部服务器。

若要想扩展功能,可以增加和扩展内部服务器。

微内核思想虽然是一种非常理想的,理论上具有明显先进性的操作系统设计思想,但是现代微内核结构操作系统还存在着许多问题,现代微内核操作系统结构和性能还不够理想。

在市场和应用领域,微内核的应用在近几年逐渐广泛,很多过程控制计算机不以通用计算机的面貌出现,只是完成特定的专用功能,常常采用微内核结构。

Linux 体系结构随着操作系统的不断发展,其内核的设计也有了新的变化,因此,传统的UNIX 也出现了很多不同的实现版本,其中,Linux 就是其中一个具有很好的代表性以及广阔的发展前景的开放源码的操作系统,其内核结构如图2 所示,Linux 与大部分UNIX一样仍然采用单内核体系结构,即它是由几个逻辑功能上不同的部分组合而成的大程序,与UNIX 不同之处在于它使用“模块”来弥补纯粹的单一内核的缺点,即采用模块实现机制。

这种机制进一步精简内核,内核只包括同步原语、简单的进程调度及进程间通信机制等功能,而将文件系统,设备驱动程序等属于内核上层的功能用模块加以实现。

在此,模块是在运行时能够被动态链接到内核的目标文件,当然,它也可从内核中动态地移出,一旦对系统进行修改或扩充,无须重新编译整个内核,只需对模块进行修改或添加。

与Windows 2000 采用的微内核体系结构不同之处在于,这些模块不是作为独立的进程在用户态下运行,而是与其他静态链接到内核的功能一样在核心态下运行,这样,就可以无须花费在微内核体系结构中所需的消息传递的时间及相应的系统开销,避免了由于缩小内核而带来的性能损失。

既然模块与内核一样都运行在核心态下,那么,哪些功能放在内核实现,哪些又放在模块中实现呢?在Linux 系统中,重要的功能如进程管理、内存管理等都放在内核加以实现;而如各种驱动程序、文件系统等则用模块加以实现。

当然,模块机制的引入也会带来一些问题。

首先,运行在核心态的内核是不会换出的,所以链接进内核的模块就会占用一定的内存和花费一定的系统开销;其次,由于链接入内核的模块可以访问内核的所有资源,并且该模块有可能请求其他模块的功能,这样,内核就必须维护符号表及模块之间的依赖性;最后,链入内核的模块也会成为内核的一部分,也可以对内核进行修改,因此,使用不当会导致系统瘫痪。

Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。

1.进程调度(SCHED):控制进程对CPU的访问。

当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。

可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。

Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。

2.内存管理(MM)允许多个进程安全的共享主内存区域。

Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。

必要时,操作系统负责在磁盘和内存间交换程序块。

内存管理从逻辑上分为硬件无关部分和硬件有关部分。

硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。

3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。

虚拟文件系统可以分为逻辑文件系统和设备驱动程序。

逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。

网络接口可分为网络协议和网络驱动程序。

网络协议部分负责实现每一种可能的网络传输协议。

网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

5.进程间通讯(IPC) 支持进程间各种通信机制。

处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。

一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。

例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。

相关文档
最新文档