当前位置: 首页 > news >正文

一 、揭秘操作系统架构:从整体式到微内核的技术演变

一、操作系统的历史

操作系统的历史可以追溯到计算机的初期发展阶段,并大致分为几个重要时期:

无操作系统时代(1946~1955):最早的计算机如 ENIAC 等并没有操作系统,程序员需要手动控制硬件,使用插线板和打孔卡进行编程。这种操作极为复杂且低效。
  - 例子:程序员需要通过重新布线来改变程序的运行逻辑。

操作系统的诞生(1955~1965):随着晶体管技术的出现,计算机速度更快,操作系统开始出现。最早的操作系统是单道批处理系统,它允许一个作业独占计算机的所有资源,但效率低下。

操作系统的发展(1965~1980):引入了多道批处理系统,允许多个作业同时在内存中运行,提高了资源利用率。还出现了分时系统,用户可以共享计算机,通过终端与计算机进行交互。

现代操作系统的演变(1980~至今):操作系统进入多样化阶段,出现了实时系统网络操作系统分布式系统等。计算机从单机逐渐发展为网络化,操作系统需要处理更多的并发任务和资源管理。

二、引言

操作系统的定义:操作系统是管理计算机硬件和软件资源的程序,负责调度计算、存储和外部设备。它提供了一个用户接口,使用户能够方便地操作计算机。

操作系统的重要性:没有操作系统,用户无法使用计算机进行有效的操作。操作系统是计算机与用户之间的桥梁,管理着系统资源的调度与分配。

学习操作系统的目的:理解操作系统的工作原理,能够优化系统性能,编写高效的应用程序,或者开发系统软件,如设备驱动程序和内核级程序。
例子:编写网络服务器时,理解操作系统的进程调度和内存管理可以帮助优化性能。

三、操作系统的功能

操作系统的主要功能包括以下几个方面:

进程管理:操作系统需要管理运行中的程序(称为进程),包括进程的创建、调度、终止,以及如何协调多个进程的并发运行。
例子:当你同时打开浏览器和播放器时,操作系统需要确保它们互不干扰,并合理分配 CPU 时间。

内存管理:操作系统负责分配内存给进程,并保证进程在使用内存时不相互干扰。通过虚拟内存,操作系统可以让程序认为它有更多的内存可用。
例子:你电脑上同时打开很多程序时,内存不够用,操作系统会使用虚拟内存把一些数据存放到硬盘上。

文件系统管理:操作系统提供文件的读写、创建、删除等操作,并确保文件的安全性和完整性。
例子:操作系统中的 NTFS 和 ext4 就是不同的文件系统,它们定义了如何在磁盘上组织文件和目录。

设备管理:操作系统负责管理各种外部设备(如打印机、硬盘、显示器等),通过设备驱动程序与硬件进行通信。
例子:当你插入 U 盘时,操作系统加载相应的驱动程序,使得 U 盘可以正常读取和写入数据。

用户界面:操作系统提供命令行界面(CLI)或图形用户界面(GUI),让用户与系统交互。
  例子:Windows 的图形用户界面(GUI)让用户可以通过点击图标来操作,而 Linux 终端提供命令行界面(CLI)给高级用户更多控制权。

四、操作系统的功能

操作系统可以根据功能和应用领域分为以下几种类型:

批处理系统:一次处理大量作业,通常用于没有交互需求的情况。作业一旦提交,用户无法直接干预作业的执行。
例子:早期的大型机系统用于统计和科学计算时会使用批处理操作系统。

分时系统:多个用户可以通过终端同时使用同一台计算机,每个用户觉得自己独占系统。操作系统通过快速切换进程来实现这种效果。
例子:UNIX 系统可以允许多个用户同时登录并执行各自的任务。

实时系统:用于对时间要求极高的任务,必须在规定的时间内处理完事件。常用于控制系统和嵌入式系统。
例子:航空控制系统或工业机器人控制系统都是实时操作系统的应用场景。

网络操作系统:支持计算机网络中的资源共享和通信。
 例子:Windows Server、Linux Server 等可以在企业中管理服务器和用户。

分布式操作系统:在多个计算机上运行的操作系统,共享资源,实现分布式计算和处理。
  例子:Google 使用的分布式操作系统来管理海量服务器上的数据处理任务。

五、操作系统的特征

现代操作系统具有以下四个主要特征:

并发性:多个任务(进程或线程)可以同时进行。
例子:当你一边听音乐一边浏览网页时,这两个任务是并发执行的。

共享性:系统资源可以被多个用户或进程同时使用。
例子:多个程序可以同时读取同一个文件,但只能有一个进程能写入该文件。

虚拟性:操作系统可以虚拟化物理资源,让用户觉得系统资源比实际的更多。
例子:虚拟内存让用户觉得计算机内存比实际的物理内存大。

异步性:程序的执行顺序不确定,受资源调度影响。
例子:你电脑上打开的多个程序运行速度不同,某些程序可能会暂停等待资源。

六、操作系统的用户界面

操作系统为用户提供了不同的交互方式:

命令行界面(CLI):用户通过键入命令与系统交互,适合高级用户。
例子:Linux 终端或 Windows PowerShell 可以让用户通过命令控制系统。

程序界面:程序通过操作系统提供的 API(应用程序接口)来访问系统资源。
例子:程序员使用操作系统 API 来写文件、分配内存等。

图形用户界面(GUI):通过图形和窗口与用户交互,操作更为直观和友好。
例子:Windows 和 macOS 都是典型的 GUI 操作系统。

七、操作系统的结构

操作系统的结构设计可以分为以下几种:

整体式结构:所有功能模块紧密耦合,效率高但扩展性差。
例子:早期的 MS-DOS 是一个整体式操作系统。

MS-DOS 是一个典型的整体式操作系统。它的所有功能模块紧密联系,用户程序可以直接访问硬件(缺少硬件保护机制),这虽然提高了运行效率,但导致了系统的不稳定性和扩展困难。

层次式结构:操作系统功能分层,每一层都有明确的任务。上层依赖下层,结构更清晰。
例子:UNIX 系统使用层次式结构,用户界面在最上层,内核在最底层。

UNIX 操作系统使用了层次式结构,最底层是硬件接口(设备驱动程序和内核),中间层负责内存管理和进程调度,最上层是用户与系统交互的部分,如 Shell 和用户程序。每一层的职责清晰且独立。

微内核结构:核心功能被缩减到最小,其他功能模块运行在用户空间,扩展性更强。
例子:Mac OS X 使用微内核架构,核心部分只有基础功能,其他部分可以动态加载。

Mac OS X(现为 macOS) 采用了微内核架构,核心部分基于 Mach 微内核。它的核心功能如线程管理和消息传递在内核中运行,其他如文件系统和设备驱动则位于用户空间,可以动态加载。

客户/服务器模型:操作系统将任务分解为客户和服务器,客户请求服务,服务器提供资源。
例子:网络操作系统如 Windows Server 使用这种模型处理网络请求。

Windows Server 采用了客户/服务器模型,允许网络中的多个客户端请求服务器上的资源,如文件服务、数据库服务等。该模型广泛用于网络操作系统和云计算系统。

该模型非常适合分布式系统和网络操作系统,尤其在云计算、服务器集群和大型企业网络中被广泛使用。由于客户和服务器是分布式的,系统可以根据需要动态地扩展服务器来处理更多的客户请求。

八、参考教材与资料


《计算机操作系统》,汤小丹等著,西安科技大学出版社
《现代操作系统》,Tanenbaum著,陈向群等译,机械工业出版社
《操作系统—精髓与设计原理》,William Stallings著,陈向群等译,电子工业出版社
  网站:Linux Kernel Documentation:The Linux Kernel documentation — The Linux Kernel documentationicon-default.png?t=O83Ahttps://www.kernel.org/doc/html/latest/            Microsoft Docs:Microsoft Learn: Build skills that open doors in your careerGain technical skills through documentation and training, earn certifications, and connect with the communityicon-default.png?t=O83Ahttps://docs.microsoft.com/


http://www.mrgr.cn/news/54659.html

相关文章:

  • STM32启动文件浅析
  • Qt编写的modbus模拟器/支持网络和串口以及websocket/支持网络rtu
  • React Native学习计划
  • ComfyUI 虚拟环境的重置,实现执行环境正常化
  • 深入解析缓存与数据库数据不一致问题
  • 多线程实战:从循环打印ABC到单例模式线程池
  • <Project-11 Calculator> 计算器 0.3 年龄计算器 age Calculator HTML JS
  • 可达性分析法
  • 力扣71~75题
  • docker容器操作
  • 最近很火的ITIL证书是什么证书?
  • 软硬连接,Linux下的动静态库
  • Nat Comput Sci | 分而治之!基于子任务分解的单细胞扰动人工智能模型 STAMP
  • 洛谷 P1038 [NOIP2003 提高组] 神经网络(拓扑排序)
  • Redis之持久化机制和实现原理
  • C/C++程序员为什么要了解汇编?汇编语言的好处与学习路径详解
  • Python进阶语法
  • Vue request请求拦截 全局拦截Promise后 api请求捕获异常catch
  • day3:管道,解压缩,vim
  • 写一段代码判断素数的函数,从主函数中输出一个整数,判断它是否为素数。
  • ret2reg
  • 分布式缓存的基本概念入门以及如何保证数据一致性
  • Mysql数据库压缩版的卸载、安装及初始化
  • c++ 对象作用域
  • Java 类和对象详解(下)
  • Leetcode 3327. Check if DFS Strings Are Palindromes