PoEdu-Windows班-001操作系统

来源:互联网 发布:创世纪 知乎 编辑:程序博客网 时间:2024/05/22 07:53

操作系统

  • 操作系统也是一种软件。
  • 操作系统是一个特殊的软件, 它需要按照特定的规定来进行编写。
  • 操作系统提供了一系列的API, 使软件可以通过操作系统进行硬件操作。


Windows版本历史


16位图形用户界面
非NT的, 它仅仅是一个运行于 MS-DOS 系统的一个图形用户界面.
它包括:

  • Windows 1.0(1985)
  • Windows 2.0(1987)
  • Windows/286
  • Windows 3.X
 
16位和32位混合操作系统
它包括:
  • Windows 95(第一版发行于1995年,后来的改进版本发行于1996年和1997年)
  • Windows 98(1998年、1999年和2000年)
  • Windows ME
虽然它是Windows 98的家族之一, 但从来没有在广告出现过Windows ME也被认为是对Windows 2000的低端仿制版本, 以适应想享受当时新出现的Windows 2000但苦于硬件性能不足的用户由于 Windows ME 系统表现太差, 被戏称为 Windows Mistake Edition
 
32位操作系统
从 NT 3.1 开始,开启了微软的 NT 时代
它们包括:
  • Windows NT 3.1(1992年)
  • Windows NT 3.5
  • Windows NT 3.51
  • Windows NT 4.0
  • Windows 2000
  • Windows XP
  • 32位 Windows Vista
  • 32位 Windows 7
  • 32位 Windows 8
  • 32位 Windows 8.1
  • 32位 Windows 10
  • Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10同时有32位的x86版本与64位的x64版本
  • Windows Server 2003
  • Windows Server 2003 R2 Datacenter Edition(32-Bit x86)
  • Windows Server 2003 R2 Enterprise Edition(32-Bit x86)
  • Windows Server 2003 R2 Standard Edition(32-bit x86)
 
64位操作系统
支持Itanium家族架构的微软Windows产品有

  • Windows 2000 Advanced/Datacenter ServerLimited Edition
  • Windows XP 64-bit Edition
  • Windows XP 64-bit Edition Version 2013
  • Windows Server 2003/2003 R2Enterprise/Datacenter
  • Windows Server 2008/2008 R2 for ItaniumBased System

支持x64架构的Windows产品有:

  • Windows XP Professional x64 Edition
  • Windows Server 2003/2003R2全线产品(Web版除外)
  • Windows Vista/7/8/8.1
  • Windows Server 2008/2008R2/2012/2012R2 全线产品
  • Windows 10
 
移动设备操作系统
微软针对移动产品而开发的精简移动设备操作系统.
包括
  • Windows Mobile
  • Windows Phone
  • Windows 10 Mobile
 
Windows CE 内核
  • Pocket PC 2000
  • Pocket PC 2002
  • Windows Mobile 2003
  • Windows Mobile 2003 SE
  • Windows Mobile 5
  • Windows Mobile 6
  • Windows Mobile 6.1
  • Windows Mobile 6.5
  • Windows Mobile 6.5.3
  • Windows Phone 7
 
Windows NT内核
  • Windows Phone 8/8.1
  • Windows RT
  • Winndows RT 8.1
  • Windows 10 Mobile


NT结构

它是指一系列微软设计及制造,WindowsNT所派生出的视窗操作系统架构.

  • WindowsNT采用用户模式与核心模式的分层设计并且是抢占式和可重入的.
  • 可运行在单处理器或对称多处理器(SMP),并利用I/O请求包与异步I/O来处理所有的I/O请求.
  • Windows2000()之前采用的WindowsNT皆为32位版本的,第一版64位的WindowsNT首先用于64位的WindowsXP.
  • 用户模式下的程序与子系统仅能访问其可访问的资源,核心模式下的程序则可以访问所有资源与外部设备.
  • WindowsNT采用的核心是属于混合核心.
  • 其体系结构包括简单内核、硬件抽象层(HAL)、驱动程序、服务(总称为运行体),这些均属于核心模式.
  • WindowsNT的用户模式子系统可以通过核心模式中的I/OManager传递I/O请求给同样在核心模式中合适的驱动程序.
  • WindowsNT的用户模式包括了两个子系统:环境子系统(在不同操作系统类型下运行应用程序);集成子系统(Integralsubsystem)运行一些系统相关的函数.
  • WindowsNT,在核心模式的程序可以访问电脑所有的硬件和系统资源,且在核心模式的程序可以在用户模式下运行的服务与应用程序访问到临界区(criticalareas)时终止他们,以避免访问到不该访问的存储器空间.
  • 运行体提供了大部分的系统服务功能.
  • 位于硬件抽象层与运行体之间的WindowsNT的核心模式部分提供了多处理器同步、线程、中断调度与分派、异常处理、例外分派的功能.
  • 核心还负责在引导时初始化设备驱动程序.
  • 核心模式驱动程序分为三层:高层驱动程序、中层驱动程序、低层驱动程序.
  • Windows驱动程序模型(WDM)是存在于中层驱动程序,主要用于二进制档与源代码兼容于Windows98Windows2000的驱动程序.
  • 低层驱动程序也可以是旧式WindowsNT的设备驱动程序,或是PnP总线.

所有的程序都运行在内存中的

  • 我们的操作系统, 用户软件都运行于我们的物理内存
  • 如果软件中使用了错误的内存地址, 修改了其他软件中的数据, 就会导致其他程序的数据被更改, 从而引起应程序崩溃
  • 直接操作物理内存风险很大.
  • 在WindowsNT之前, 都是直接操作物理内存的
  • WindowsNT之后就分为了用户态和和核心态, 它是通虚拟内存管理程序实现的.
  • 虚拟内存中程序在执行的时候会正确地加载到物理内存.
  • 我们写的程序都会运行在用户态, 发现可以执行才会转到核心态.
  • 这样确保程序崩溃后操作系统并不会崩溃.
  • 所以 Windows 95, Windows 98 等系统很容易出现操作系统崩溃蓝屏

硬盘上面的程序是不可以执行的

  • CPU是在内存中取数据, 硬盘的数据要想被读入CPU, 需要首先被加载到内存中

NT架构的运行流程为:

  • 软件载入用户态
  • 从用户态载入核心态
  • 对硬件进行操作
  • 用户态我们也称之为 RING3, 它是我们平时所用的.
  • 核心态我们也称之为 RING0, 它是操作系统平时用的.

 

WindowsAPI

  • Windows提供了一套程序开发接口,全名叫做 Application ProgrammingInterface,即应用程序编程接口.
  • 它有 R0 APIR3 API
  • WindowsAPI是向下兼容的
  • 为了实现向下兼容,在有新的函数的时候,通常会加一个Ex
  • 比如, MessageBox,有新函数叫MessageBoxEx

SDK

  • 软件开发工具包(Software DevelopmentKit, SDK)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、作业系统等创建应用软件的开发工具的集合.SDK全称为Software Development Kit.

MFC

  • MFC是一套框架
  • 它是微软提供的,用于在C++环境下编写用于程序的一个框架和引擎
  • 它可以说是WinAPI C++结合后的再一次封装
  • 它属于应用程序框架

Windows API的分类

基础服务(Base Services)

  • 提供对Windows系统可用的基础资源的访问接口.
  • 文件系统(filesystem
  • 外部设备(device
  • 进程(process
  • 线程(thread
  • 访问注册表(Windowsregistry
  • 错误处理机制(errorhandling

    这些功能接口位于:
16位Windows下的kernel.exe、krnl286.exe或krnl386.exe系统文件中
32位Windows下的kernel32.dll和advapi32.dll中

图形设备接口(GDI

  • 提供输出图形内容到显示器,打印机以及其他外部输出设备.

    它位于
16位Windows下的gdi.exe;
32位Windows下的gdi32.dll
 

图形化用户界面(GUI

  • 提供创建和管理屏幕和大多数基本控件(control
  • 比如按钮和滚动条
  • 接收鼠标和键盘输入
  • 其他与GUI有关的功能

    这些调用接口位于
16位Windows下的user.exe
32位Windows下的user32.dll
从Windows XP版本之后, 基本控件和通用对话框控件(Common Control Library)的调用接口放在comctl32.dll中.

通用对话框链接库(Common Dialog Box Library

  • 为应用程序提供标准对话框
  • 比如打开/保存文件对话框
  • 颜色对画框
  • 字体对话框等等.

    这个链接库位于:
16位Windows下的commdlg.dll中
32位Windows下comdlg32.dll中
它被归类为User Interface API之下

通用控件链接库(Common Control Library

  • 为应用程序提供接口来访问操作系统提供的一些高级控件.
  • 比如状态栏(statusbar
  • 进度条(progressbars
  • 工具栏(toolbar
  • 标签(tab

    这个链接库位于
16位Windows下的commctrl.dll中
32位Windows下comctl32.dll中
它被归类为User Interface API之下

Windows外壳(Windows Shell

  • 作为WindowsAPI的组成部分,不仅允许应用程序访问Windows外壳提供的功能,还对之有所改进和增强.

它位于
  16位Windows下的shell.dll中
  32位Windows下的shell32.dll中(Windows 95则在shlwapi.dll中)
  它被归类为User Interface API之下

网络服务(Network Services

为访问操作系统提供的多种网络功能提供接口

它包括

NetBIOS

Winsock

NetDDE

RPC

Web相关API

Internet Explorer网页浏览器也提供许多程序接口

可嵌入的网页浏览器控件(以及 Trident / MSHTML引擎)

位于shdocvw.dllmshtml.dll之中

urlmon.dll中的命名服务(URL moniters service

利用COM对象为应用程序提供解析URL服务

应用程序也可以为其他程序提供自己的URL处理程序

WinInet IE的网络层,支持HTTPHTTPS等协议

一个支持多种语言文本的链接库(mlang.dll

DirectX Transforms

一组图像过滤组件

XML支持(MSXML组件)

Windows的邮件功能相关的API

地址本和邮件API

Windows7取消邮件功能之后也随之从Windows API中去除

由于WindowsMailWindows Vista上取代了Outlook Express, 对应的API也随之变化.

多媒体相关API

自从Windows95 OSR2以来, MicrosoftDirectX API作为Windows安装的一部分.

DirectX提供一组松散相关的多媒体和游戏服务

Direct3D可以作为OpenGL的替代,来访问3D加速硬件.

DirectDraw提供硬件加速2D framebuffer(帧缓冲)访问接口.

DirectX9以来,相比Direct3D更倾向于后者

因为Direct3D提供更全面的高性能图形功能(毕竟2D渲染只是3D渲染的(不严格)子集).

已被Direct2D替代。

DirectSound提供底层次的硬件加速声卡访问.

XAudio替代

DirectInput用来与输入设备(摇杆和gamepad)进行通信

已被DirectX9中引入的XInput所替代

DirectPlay提供一个多人游戏的架构(multiplayer gaminginfrastructure.

它已经被DirectX9所替代

Microsoft不建议用它开发游戏。

DirectShow可以创建和运行通用的多媒体管道(generic multimediapipelines

它可以与GStreamer框架相媲美

经常被用来渲染游戏视频和创建媒体播放器(Windows Media Player

诸如FFDShow之类的编解码器正是基于此;

WindowsVista及更高版本中, DirectShowMedia Foundation替代).

不建议用DirectShow开发游戏

DirectMusic提供类似MIDI的功能

DirectSound一起被XAudio替代

程序通信API

Windows API的功能主要通过使操作系统和应用程序之间的交互来实现.

为了实现不同Windows应用程序的通信,微软随着主要Windows API, 推出一系列的技术.

最初的DDEDynamicData Exchange)升级为对象连接与嵌入(Object Linking andEmbedding

再后来是组件对象模型(COM

封装库

微软利用许多更底层的WindowsAPI函数,开发出许多封装库(wrapper,让应用程序以更抽象的方式与WindowsAPI进行交互.

MFCMicrosoftFoundation Class Library)用C++类别来封装WindowsAPI的功能,因而允许用更为面向对象的方式与API进行交互

ATLActiveTemplate Library)是对COM的面向模板(templateoriented)的封装

WTLWindowsTemplate Library)作为ATL的增强,被用来作为MFC的轻型的替代物

其他著名的封装库是Borland公司的产品,为了与MFC竞争而推出的OWLObjectWindows Library)提供了类似的面向对象封装

不久Borland又推出VCLVisualComponent Library)来取而代之

大多数的Windows程序框架(applicationframework)是对WindowsAPI的封装

.NET FrameworkJava以及其他在Windows下的程序语言,都是(或者包含)封装库.