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

Windows操作系统的体系结构、运行环境和运行状态

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。说Windows操作系统的运行环境和运行状态,首先要介绍一下Windows操作系统的体系结构,然后再要说到最重要的两个概念:核心态与用户态。

操作系统的体系结构就是操作系统的组成结构。操作系统的体系结构主要包括模块组合结构、层次结构和微内核结构。下面来具体看看这三种,但我们这里不介绍宏内核和纵向结构内核。

  

模块组合结构

模块组合结构是软件工程出现以前的早期操作系统以及目前一些小型操作系统的体系结构。操作系统是一个有多种功能的系统程序,可以看作一个整体模块,也可以看作若干个模块按一定的结构方式组成的。系统中的每一个模块都是根据要完成的功能来划分的,这些功能模块按照一定的结构方式组合起来,协同完成整个系统的功能。优点是结构紧密、接口简单直接、系统的效率相对较高。缺点是首先这种结构的模块之间可以随意转接,各模块相互牵连,不容易把握好模块的独立性,导致系统结构不清晰。其次这种结构的可扩展性较差。在更换一个模块或修改一个模块时,要先弄清模块间的接口,如果要按当初设计的模块接口来设计新的模块,而当初设计的模块接口很可能是随意约定的,那么要做这项工作就存在一定难度。最后这种结构系统的可适应性差。随着系统规模的不断增大,采用这种结构构造的系统的复杂性会迅速增长,所以它只适用于系统小、模块少、使用环境比较稳定的系统。

层次结构

要弥补模块组合结构中模块间调用存在的不足之处,就必须改善模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。层次结构的设计就是从这一点出发,力求使模块之间调用的无序性变为有序,减少了模块调用的无规则性。按层次结构来设计操作系统,就是将操作系统的所有功能模块按功能的调用次序排列成若干层,使得功能模块之间只存在单向调用和单向依赖。优点是模块间的组织和依赖关系清晰明了,上层功能是建立在下层功能基础之上的,系统的可读性、可适应性以及可靠性都得到了增强。此外,对某一层进行修改或替换时,最多只影响到邻近的两层,便于修改和扩充。缺点是操作系统的各个功能模块应该放在哪一层,如何有效地进行分层是必须要考虑的问题。为了增强其适应性,必须把与机器特点紧密相关的软件(如中断处理、输入/输出管理等)放在最底层;其次,要将最常用的操作方式放在最内层,而把随着这些操作方式改变的部分放在外层。另外,当前操作系统的设计都是基于进程的概念,通常要将为进程提供服务的系统调用模块放在系统的内层。

微内核结构

随着网络技术的普遍应用和发展,很有必要为用户提供一个符合处理分布式信息的分布式系统环境。因此,操作系统可以采用微内核结构。微内核的主要思想是:在操作系统内核中只留下一些最基本的功能,而将其他服务尽可能地从内核中分离出去,用若干个运行在用户态下的进程(即服务器进程)来实现,形成所谓的“客户/服务器”模式,即C/S模式。普通用户进程(即客户进程)可通过内核向服务器进程发送请求,以取得操作系统的服务。从微内核结构的主要思想可以看出,它非常适用于分布式系统。优点是首先每个服务进程运行在独立的用户进程中,即便某个服务器失败或产生问题,也不会引起系统其他服务器和其他组成部分的崩溃,可靠性好;其次系统具有很好的灵活性,只要接口规范,操作系统可以方便地增删服务功能;再次便于维护,即修改服务器的代码不会影响系统其他部分;最后这种结构的操作系统适合分布式处理的计算环境。缺点是这种结构的操作系统效率不高,因为所有用户进程都要通过微内核相互通信,所以微内核本身就成了系统的“瓶颈”,尤其是通信频繁的系统。

Windows操作系统以微内核结构起家,融合了宏内核的优点,形成了混合内核的特点,所以Windows操作系统是混合内核。由于本文是说Windows操作系统,不是介绍Linux操作系统,我们这里也就不介绍宏内核了,大家可以到CSDN上搜索宏内核的文章看。我们这里也没有介绍云计算和虚拟化,所以纵向结构内核(外内核)也不介绍了,纵向结构内核可能会在未来几年在云计算上发挥重要作用,本质上来说,纵向结构内核不同于宏内核和微内核的地方就在于,应用程序可以直接访问纵向结构内核资源。

Windows操作系统可以运行在多种环境下,通常包括传统环境(Windows PC等常见环境)、网络环境(分布式操作系统等)、嵌入式环境(Windows手机操作系统、家用电器的操作系统等)。这些属于操作系统的硬件环境,此外还有人机接口和操作系统与其他软件的关系。为了避免Windows操作系统及其关键数据(如PCB等)受到用户程序有意或无意的破坏,通常将处理器的执行状态分为两种:核心态与用户态。

核心态。核心态又称管态、系统态,是操作系统管理程序执行时机器所处的状态。注意,是机器当时所处的状态,不是程序所处的状态,这点要注意。它具有较高的特权,能执行包括特权指令的一切指令,能访问所有寄存器和存储区。

用户态。用户态又称目态,是用户程序执行时机器所处的状态,注意,是机器当时所处的状态,不是程序所处的状态,这点要注意。是具有较低特权的执行状态,它只能执行规定的指令,只能访问指定的寄存器和存储区。

划分核心态与用户态之后,这两类状态的相关程序以及各自的存储空间被严格区分了,而且在CPU执行时有着完全不同的待遇。用户态程序不能直接调用核心态程序,而是通过执行访问核心态的命令,引起中断,由中断系统转入操作系统内的相应程序,例如,在系统调用时,将由用户态转换到核心态。

特权指令:只能由操作系统内核部分使用,不允许用户直接使用的指令,如I/O指令、设置中断屏蔽指令、清内存指令、存储保护指令和设置时钟指令。

Windows操作系统中一些与硬件关联较紧密的模块(如时钟管理、中断处理、设备驱动等)以及运行频率较高的程序(如进程管理、存储器管理、设备管理等)构成了Windows操作系统的内核。内核的指令操作工作在核心态,主要包括以下4个方面的内容。

1)时钟管理。时钟是计算机的各部件中最关键的设备,Windows操作系统通过时钟管理,向用户提供标准的系统时间。另外通过时钟中断的管理,可以实现进程的切换,如时间片轮转调度。

2)中断机制。键盘或鼠标的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。中断机制中,只有一小部分属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少终端的处理时间,提高系统的并行处理能力。

3)原语。计算机进程的控制通常由原语完成。所谓原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。在Windows操作系统中,某些被进程调用的操作,如队列操作、对信号量的操作、检查启动外设操作等,一旦开始执行,就不能被中断,否则就会出现操作错误,造成系统混乱。所以,这些操作都要用原语来实现。原语是操作系统核心(不是由进程,而是由一组程序模块组成)的一个组成部分,并且常驻内存,通常在管态下执行。原语一旦开始执行,就要连续执行完,不允许中断。处于操作系统最底层,是最接近硬件的部分。这些程序的运行时间较短,调用频繁。原语是在操作系统中调用核心层子程序的指令。与一般广义指令的区别在于它是不可中断的,而且总是作为一个基本单位出现。它与一般过程的区别在于:它们是“原子操作(primitive or atomic action)”。所谓原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。原子操作在管态下执行,常驻内存。原语的作用是为了实现进程的通信和控制,系统对进程的控制如不使用原语,就会造成其状态的不确定性,从而达不到进程控制的目的。

4)系统控制的数据结构及处理。Windows操作系统中需要一些用来登记状态信息的数据结构,如作业控制块、进程控制块、设备控制块、各类链表、消息队列、缓冲器、空闲登记区、内存分配表等。除此之外还应该定义对这些数据结构的一系列操作:进程管理、存储器管理、设备管理。

这里要补充说明一下Windows操作系统的中断与异常。中断与异常是一对类似但又有区别的概念。中断,也称外中断,是系统正常功能的一部分,例如,因进程调度使系统停止当前运行的进程转而执行其他进程,或者因缺少所需资源而中断当前操作等待资源到达,在系统处理完其他事情之后,会继续执行中断前的进程。异常,也称内中断,是由错误引起的,如文件损坏、进程越界等。通常异常会引起中断,而中断未必是由异常引起的。

最后说一下Windows操作系统的系统调用。

系统调用是Windows操作系统提供的用户接口之一,是由Windows操作系统实现的所有系统调用所构成的集合,即程序接口或应用编程接口(Application Programming Interface,API),是应用程序同系统之间的接口。

Windows操作系统的主要功能是为应用程序的运行创建良好的环境。为了达到这个目的,内核提供了一系列具备预定功能的内核函数,通过一组称为系统调用(System Call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,并将处理结果返回给应用程序。如果没有系统调用和内核函数,用户将不能编写大型应用程序。Windows操作系统提供的系统调用通常包括进程控制、文件系统控制(文件读写操作和文件系统操作)、系统控制、内存管理、网络管理、socket控制、用户管理以及进程间通信(信号、消息、管道、信号量和共享内存)。

Windows操作系统执行系统调用的流程如下面两图所示。用户需要执行系统调用时,首先准备并传递系统调用所需的参数,通过陷入(trap)指令进入操作系统的系统内核,此时将从用户态进入内核态;之后执行相应的系统调用函数,使用特定的系统内核功能;最后将处理结果返回给用户进程,此时将从内核态返回用户态。

操作系统执行系统调用的流程画法一:

操作系统执行系统调用的流程画法二:

操作系统执行系统调用的流程画法三:

操作系统执行系统调用的流程画法四:

操作系统执行系统调用的流程画法五:

这种五种画法我认为都是很经典的,究竟哪一种更适合你理解,仁者见仁。大家可以选择一种画法去理解。我个人认为第三种画法画得最好。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

相关文章:

Windows操作系统的体系结构、运行环境和运行状态

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。说Windows操作系统的运行环境和运行状态,首先要介绍一下Windows操作系统的体系结构,然后再要说到最重要的两个概念:核…...

【工作笔记】Http响应头过长

起因 突然有测试小伙伴反馈进公司官网主页会白屏,但只是个例不是普遍现象 查监控发现没监控到异常问题 查了很久(这个很久单指对于线上问题来说)才定位是请求的异常,因为这套系统的异常用的是 ExceptionHandler,这也导…...

hive建分区表,分桶表,内部表,外部表

hive建分区表,分桶表,内部表,外部表 一、概念介绍 Hive是基于Hadoop的一个工具,用来帮助不熟悉 MapReduce的人使用SQL对存储在Hadoop中的大规模数据进行数据提取、转化、加载。Hive数据仓库工具能将结构化的数据文件映射为一张数…...

【分享】灌溉制度设计小程序VB源代码

说明 根据作物需水特性和当地气候、土壤、农业技术及灌水技术等因素制定的灌水方案。主要内容包括灌水次数、灌水时间、灌水定额和灌溉定额。灌溉制度是规划、设计灌溉工程和进行灌区运行管理的基本资料,是编制和执行灌区用水计划的重要依据。 1—计划湿润土层允…...

PR9268/300-000库存现货振动传感器 雄霸工控

PR9268/300-000库存现货振动传感器 雄霸工控PR9268/300-000库存现货振动传感器 雄霸工控SDM010PR9670/110-100PR9670/010-100PR9670/003-000PR9670/002-000PR9670/001-000PR9670/000-000PR9600/014-000PR9600/011-000PR9376/010-021PR9376/010-011PR9376/010-011PR9376/010-001…...

浅谈模型评估选择及重要性

作者:王同学 来源:投稿 编辑:学姐 模型评估作为机器学习领域一项不可分割的部分,却常常被大家忽略,其实在机器学习领域中重要的不仅仅是模型结构和参数量,对模型的评估也是至关重要的,只有选择那…...

多线程的初识和创建

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:知不足而奋进,望远山而前行。 目 录💤一. 认识线程(Thread)🍎1. 线程的引入🍏2. 线程…...

一句话设计模式3:工厂模式

工厂模式:new多种对象的简单方式。 文章目录 工厂模式:new多种对象的简单方式。前言一、两种工厂模式二、如何实现工厂模式1. 简单工厂2. 抽象工厂总结前言 工厂模式可以说比较常见的设计模式,仔细观察在很多源码中都有此种模式的应用;用来解决创建对象的创建问题; 一、两种工…...

【Codeforces Round #853 (Div. 2)】C. Serval and Toxel‘s Arrays【题解】

题目 Toxel likes arrays. Before traveling to the Paldea region, Serval gave him an array aaa as a gift. This array has nnn pairwise distinct elements. In order to get more arrays, Toxel performed mmm operations with the initial array. In the iii-th opera…...

100天精通Python(数据可视化篇)——第77天:数据可视化入门基础大全(万字总结+含常用图表动图展示)

文章目录1. 什么是数据可视化?2. 为什么会用数据可视化?3. 数据可视化的好处?4. 如何使用数据可视化?5. Python数据可视化常用工具1)Matplotlib绘图2)Seaborn绘图3)Bokeh绘图6. 常用图表介绍及其…...

PMP考前冲刺2.27 | 2023新征程,一举拿证

题目1-2:1.在产品开发过程中,项目发起人向项目团队推荐了一种新材料,新材料比现有的材料更便宜而且性能更好。如果团队采用新材料,不但有利于提升产品质量,而且可以显著降低成本。项目经理应该怎么办?A.采用新材料&am…...

【C++】map和set的封装(红黑树)

map和set的封装一、介绍二、stl源码剖析三、仿函数获取数值四、红黑树的迭代器五、map的[]5.1 普通迭代器转const迭代器六、set源码七、map源码八、红黑树源码一、介绍 首先要知道map和set的底层都是用红黑树实现的 【数据结构】红黑树 set只需要一个key,但是map既…...

【批处理脚本】-1.14-移动文件(夹)命令move

"><--点击返回「批处理BAT从入门到精通」总目录--> 共10页精讲(列举了所有move的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...

逻辑地址和物理地址转换

在操作系统的学习中&#xff0c;很多抵挡都会涉及虚拟地址转换为物理地址的计算&#xff0c;本篇就简单介绍一下在分页存储管理、分段存储管理、磁盘存储管理中涉及的地址转换问题。 虚拟地址与物理地址 编程一般只有可能和逻辑地址打交道&#xff0c;比如在 C 语言中&#x…...

HyperGBM用4记组合拳提升AutoML模型泛化能力

本文作者&#xff1a;杨健&#xff0c;九章云极 DataCanvas 主任架构师 如何有效提高模型的泛化能力&#xff0c;始终是机器学习领域的重要课题。经过大量的实践证明比较有效的方式包括&#xff1a; 利用Early Stopping防止过拟合通过正则化降低模型的复杂度使用更多的训练数…...

P6软件中的前锋线设置

卷首语 所谓前锋线&#xff0c;是指从评估时刻的时标点出发&#xff0c;用点划线一次连接各项活动的实际进展位置所形成的的线段&#xff0c;其通常为折线。 关键路径法 前锋线比较法&#xff0c;是通过在进度计划中绘制实际进度前锋线以判断活动实际进度与计划进度的偏差&a…...

Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<二>---后端架构完善与接口开发

数据库准备&#xff1a; 在上一次Spring Boot Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建已经将SpringBoot相关的配置环境给搭建好了&#xff0c;接下来则需要为咱们的项目创建一个数据库。 1、mysql的安装&#xff1a; 关于mysql的安装这里就…...

如何在logback.xml中自定义动态属性

原文地址&#xff1a;http://blog.jboost.cn/trick-logback-prop.html 当使用logback来记录Web应用的日志时&#xff0c;我们通过在logback.xml中配置appender来指定日志输出格式及输出文件路径&#xff0c;这在一台主机或一个文件系统上部署单个实例没有问题&#xff0c;但是…...

嵌入式系统硬件设计与实践(第一步下载eda软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 现实生活中&#xff0c;我们经常发现有的人定了很多的目标&#xff0c;但是到最后一个都没有实现。这听上去有点奇怪&#xff0c;但确实是实实在在…...

Portraiture4免费磨皮插件支持PS/LR

Portraiture 4免去了繁琐的手工劳动&#xff0c;选择性的屏蔽和由像素的平滑&#xff0c;以帮助您实现卓越的肖像润色。智能平滑&#xff0c;并删除不完善之处&#xff0c;同时保持皮肤的纹理和其他重要肖像的细节&#xff0c;如头发&#xff0c;眉毛&#xff0c;睫毛等。 一键…...

Python学习笔记202302

1、numpy.empty 作用&#xff1a;根据给定的维度和数值类型返回一个新的数组&#xff0c;其元素不进行初始化。 用法&#xff1a;numpy.empty(shape, dtypefloat, order‘C’) 2、logging.debug 作用&#xff1a;Python 的日志记录工具&#xff0c;这个模块为应用与库实现了灵…...

2023年大数据面试开胃菜

1、kafka的message包括哪些信息一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成&#xff0c;header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候&#xff0c;会在magic和crc32之间多一个字节…...

优雅的controller层设计

controller层设计 Controller 层逻辑 ​ MVC架构下&#xff0c;我们的web工程结构会分为三层&#xff0c;自下而上是dao层&#xff0c;service层和controller层。controller层为控制层&#xff0c;主要处理外部请求。调用service层&#xff0c;一般情况下&#xff0c;contro…...

同步、通信、死锁

基础概念竞争资源引起两个问题死锁&#xff1a;因资源竞争陷入永远等待的状态饥饿&#xff1a;一个可运行程序由于其他进程总是优先于它&#xff0c;而被调用程序总是无限期地拖延而不能执行进程互斥&#xff1a;若干进程因相互争夺独占型资源而产生的竞争关系进程同步&#xf…...

【聚类】谱聚类解读、代码示例

【聚类】谱聚类详解、代码示例 文章目录【聚类】谱聚类详解、代码示例1. 介绍2. 方法解读2.1 先验知识2.1.1 无向权重图2.1.2 拉普拉斯矩阵2.2 构建图&#xff08;第一步&#xff09;2.2.1 ϵ\epsilonϵ 邻近法2.2.2 k 近邻法2.2.3 全连接法2.3 切图&#xff08;第二步&#xf…...

最牛逼的垃圾回收期ZGC(1),简介

1丶什么是ZGC? ZGC是JDK 11中引入的一种可扩展的、低延迟的垃圾收集器。ZGC最主要的特点是&#xff1a;在非常短的时间内&#xff08;一般不到10ms&#xff09;&#xff0c;就可以完成一次垃圾回收&#xff0c;而且这个时间是与堆的大小无关的。另外&#xff0c;ZGC支持非常大…...

微服务的Feign到底是什么

Feign是什么 分区是一种数据库优化技术&#xff0c;它可以将大表按照一定的规则分成多个小表&#xff0c;从而提高查询和维护的效率。在分区的过程中&#xff0c;数据库会将数据按照分区规则分配到不同的分区中&#xff0c;并且可以在分区中使用索引和其他优化技术来提高查询效…...

JavaScript 正则表达式

正则表达式&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。什么是正则表达式&#xff1f;正则表达式是由一…...

【批处理脚本】-1.15-文件内字符串查找命令find

"><--点击返回「批处理BAT从入门到精通」总目录--> 共7页精讲(列举了所有find的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...

【手撕面试题】JavaScript(高频知识点二)

目录 面试官&#xff1a;请你谈谈JS的this指向问题 面试官&#xff1a;说一说call apply bind的作用和区别&#xff1f; 面试官&#xff1a;请你谈谈对事件委托的理解 面试官&#xff1a;说一说promise是什么与使用方法&#xff1f; 面试官&#xff1a;说一说跨域是什么&a…...

电子政务门户网站建设的教训/微信怎么推广找客源

直接上图&#xff1a;通过 SHOW PROCESSLIST 命令可以实时查看mysql正在执行的操作&#xff0c;这对查看系统中哪些语句执行时间长&#xff08;需要优化的语句&#xff09;是很有帮助的&#xff0c;例如上图中红色框标出的地方&#xff0c;Info列中的语句在我执行SHOW PROCESSL…...

株洲高端网站建设工作室/天眼查询个人信息

jQuery代码段可获取当前网页的完整标题并将其存储在变量中&#xff0c;以与其他脚本一起使用。 这是您在浏览器标题上看到的标题。 Current page title: mytitle .安迪建议的另一种方式。 var current_href $(location).attr(href); var current_title $(document).attr(titl…...

phpcms 怎么做视频网站/武汉seo招聘网

本系列转自&#xff1a;https://www.cnblogs.com/woodytu/category/744422.html为什么简单恢复模式模式真的是坏主意&#xff1f;SQL Server里在文件组间如何移动数据&#xff1f;SQL Server里的文件和文件组故障恢复和恢复模式&#xff08;Crash Recovery & Recovery Mode…...

高校门户网站开发/兰州seo网站建设

给定一个二叉树&#xff0c;它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节点&#xff09;。二叉树不超过1000个节点&…...

电子商务网站推广方法和技巧/广州推广引流公司

兰州计算机学校排行情况得到了很多学生和家长的关注。我国计算机事业飞速发展&#xff0c;特别是在最近几年的计算机发展都是我们有目共睹和亲身体验的。伴随着网络时代的发展&#xff0c;计算机行业急需热门专业的人才也是受到现在初高中应往届毕业生的亲睐。下文3721职校网就…...

网站建设 数据库/谷歌搜索引擎入口2022

项目组成员在针对要开发的系统做需求调研后&#xff0c;就要编写对应的需求说明书。 作为软件工程师&#xff0c;你就得知道需求分析说明书和需求规格说明书的区别&#xff0c;以期在正确的时候编写正确的需求文档。 两者有何不同&#xff1a; &#xff08;1&#xff09;面向…...