深入理解Windows操作系统机制(一)

文章探讨了Windows操作系统的本质,指出用户日常接触的是人机交互界面而非内核。重点讲述了Windows操作系统的核心态和用户态,中断处理机制,以及多道程序设计的概念。还提到了操作系统对资源的管理和控制,包括处理器、存储器、I/O设备的管理,并讨论了实时系统和分时系统的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。

我们每天都在用Windows操作系统,但是其实我们每天直接在打交道的并不是Windows操作系统的内核,而是Windows操作系统的人机交互界面,这个界面其实只是Windows操作系统的一个组件,在Linux上,我们使用Linux系统所使用的界面则只是Linux系统上的一个程序。所以说,我们接触的并不是这些系统的内核。久而久之,我们基本会慢慢把界面里所展示的直观的东西误认为是Windows操作系统本身,其实不是。

今天我们来重新审视Windows操作系统,看看Windows操作系统本身典型特征和主要功能。由Windows操作系统的功能,可以知道Windows操作系统提供的服务有下面这些:提供了一个用以执行程序的环境,提供的服务有程序执行、I/O操作、文件操作、资源分配与保护、错误检测与排除等。

Windows操作系统借鉴了多道程序设计的理念,所谓多道程序设计技术就是指在内存中同时存放两道或两道以上的作业,这些作业同时处于运行状态,且它们在管理程序控制下,相互穿插运行。这些作业共享处理器、外设以及其他资源。

Windows操作系统的中断处理程序只能是操作系统程序,不可能是应用程序。中断处理属于系统中会对系统产生重大影响的动作,因此只允许核心态程序执行。而应用程序通常指用户程序,运行在用户态下,不能进行这些操作。

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

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

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

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

Windows操作系统作为计算机系统资源的管理者,管理着各种各样的硬件和软件资源。归纳起来可将资源分为4类:处理器、存储器、I/O设备以及信息(数据和程序)。中断机制包括硬件的中断装置和操作系统的中断处理服务程序,因此中断机制并不能说是一种资源。Windows操作系统时间片设得太短会导致过多的进程切换,降低了CPU的效率;而设得太长又可能引起对短的交互请求的响应变差。

防止死锁和避免死锁是两种方法,实质上都是通过施加某些限制条件的方法,来预防发生死锁。两者的主要差别在于:防止死锁所施加的限制条件较严格。防止死锁的办法是破坏死锁产生的必要条件,如摒弃“请求和保持”条件、摒弃“不剥夺”条件和摒弃“环路等待”条件。而银行家算法属于避免死锁算法。发生死锁时,无进程处于运行状态,而等待队列不为空。不同类型的操作系统对时间的要求不同,反映各自的系统特点。实时系统的时间要求是根据被控对象来确定的,而时间片通常是分时系统的时间要求。

系统调用是操作系统提供给编程人员的唯一接口。系统调用在高级语言中常以函数形式提供给程序员。其他选项都错在范围和限定上。实时操作系统(RTOS)是指当外界事件或数产生时,能够接收并以足够快的速度予以处理,其处理的结果又能在规定的间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。分时系统必须有交互功能,实时系统对响应的要求比分时系统更高。在分时系统中,用户不会独占文件系统,这是多用户共享的。

高级程序设计语言不属于Windows操作系统关心的主要问题,Windows操作系统关心的问题都与硬件和系统资源有关。高级程序设计语言的实现依赖于编译器(或解释器),编译器的功能是将用高级程序设计语言写成的代码进行语法、语义检查,优化,生成中间代码,最后生成目标代码,目标代码便可在目标机器上直接运行。

多道程序设计技术是在内存中同时存两道或两道以上的作业,这些作业同时处于运行状态,且它们在管理程序控制下,相互穿插运行。这些作业共享处理器、外设以及其他资源。中断处理程序只能是操作系统程序,不可能是应用程序。中断处理属于系统中会对系统产生重大影响的动作,因此只允许核心态程序执行;而应用程序通常指用户程序,运行在用户态下,不能进行这些操作。  

Windows操作系统作为用户与计算机硬件系统之间的接口,用户可通过以下3种方式使用计算机:①命令方式;②系统调用方式;③图形、窗口方式。终端命令属于①,图标菜单属于③,系统调用属于②。而批处理命令就是把一批终端命令放在一个文本里,然后批量执行。UNIX的shell文件也是类似的,宏命令一般是指用户与应用程序之间的接口。 

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

Windows操作系统上一共存在四种中断,分别是硬件故障中断、程序中断、外部中断,访管中断。

Windows操作系统上运行的程序在用户态下,即在执行用户程序时引起的中断属于来自CPU的中断,不是硬件故障中断和外部中断。特权指令指的是只允许核心态下使用的指令,因此用户态下对特权指令的使用会实现从用户态到核心态的改变,即会产生访管中断。

Windows操作系统硬件故障中断是由硬件故障引起的中断,比如,在使用打印机时打印机突然断电,造成硬件异常所引起的中断。

Windows操作系统程序中断指的是程序在执行过程中产生的一般中断,比如,当程序有使用磁盘等要求时产生的中断,如本文中用户程序使用的不是特权指令而是一般指令,产生的中断就应该是这种。

Windows操作系统外部中断是指由外部事件引起的中断,比如单击鼠标和键盘输入等操作引起的中断。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值