• 第1章:基础知识


    x86系列的CPU采用 Little-ending 字节序,而网络协议采用的是 Big-ending.

    用于16位 Windwos 的API称为 Win16 , 32/64位 的 API 称为 Win32 .

    Windows 运转的核心是动态链接.

    ①kernel32.dll 主要负责操作系统核心功能服务,包括线程与进程控制,内存管理,文件访问等.

    ②user32.dll 主要负责处理用户接口,包括键盘和鼠标输入,窗口和菜单管理等.

    ③gdi32.dll 主要负责图形设备接口,允许程序在屏幕和打印机上显示文本和图像.

    以及Advapi32.dll(对象安全性,注册表操作) , Comctl32.dll(通用控件,即GUI图形用户模块) , Comdlg32.dll(公共对话框,应用程序公用对话框模块,用于例如打开文件对话框) ,

    Shell32.dll(用户界面外壳)和网络( Netapi32.dll ) .

    虽然Win32 API是一个基于C语言的接口,但是Win API中的函数可以由用不同语言编写的程序调用,只需要遵守调用规范.

    借用网上CSDN的一张图展示什么是 NT( new technology ) 架构:

     图形界面的出现正是由于微软推出的 NT 架构.

    Windows NT采用用户模式与核心模式的分层设计并且是抢占式可重入的。可运行在单处理器或对称多处理器(SMP)上,并利用I/O请求包与异步I/O来处理所有的I/O请求。在Windows 2000之后采用的都是 Windows NT架构.

    在NT系统中,系统核心采用的是 Unicode 标准字符集( ASCII 字符集的拓展). Win32 API 能接受这两种字符集,但是字符转换需要占用系统资源.

    在 Win32 API 函数字符集中 , A 代表 ASCII , W 代表 WideChars (即 Unicode ). 前者是字节,后者是字节字符.在编写函数时,不需要关系用哪种版本,直接使用原函数即可.开发工具的编译模块会根据设置来决定使用哪种函数.

    以 MessageBox 为例:

    WoW64 ( Windows On Windows 64-bit ) 是64位 Windwos 操作系统的子系统,使得大多数应用程序在不进行修改的情况下运行在64位操作系统下.

    Windows 的64位操作系统文件放在 " System32 " 文件夹中 , Windows SysWOW64 文件夹存储32位系统文件.

    当64位程序加载时,会加载64位的 DLL 文件.

    32位程序加载时 WOW64 建立 ntdll.dll 需要的运行环境,并将CPU模式切回32位,并运行加载器. WOW64 捕获程序对32位 ntdll.dll 的调用并重定向到 64位 的版本.在原生系统调用返回之前,将64位的值转化为32位.

    Windows 消息

    Windows本身是由消息驱动的,存在两种消息队列:系统消息队列和应用程序消息队列.

    事件发生时,首先会将消息放入系统消息队列,然后再复制到应用程序消息队列,应用程序监控消息,并将消息发送至相应的窗口函数.消息是非抢占的,先来先服务.

    消息成功投递则返回True.

    虚拟内存

    以 Win32 为例 , 232  = 4 x 230 = 4 G.即拥有 4G 的虚拟内存空间.此时不区分代码段和数据段.

    ①应用程序启动时,操作系统创建一个进程,并分配2G的虚拟地址.2 G = 231.只需要4字节的空间来表示一个资源的地址.

    ②虚拟内存管理器负责维护应用程序和物理地址间的数据交流.

    ③虚拟地址中仅仅保存有需要的资源的物理地址,当需要时才会被读入物理内存.若已在内存中,则只需要引用其地址即可.

    ④不同应用程序之间的地址空间是彼此隔离的.

  • 相关阅读:
    【kafka学习之五】kafka运维:kafka操作日志设置和主题删除
    【Redis学习之十一】Java客户端实现redis集群操作
    FastDFS:Java客户都实现文件的上传、下载、修改、删除
    DevOps之四:Git & GitLab
    代码静态检查Eclipse插件:SonarLint插件离线安装
    DevOps之三:CentOS7.3 安装部署Jenkins(三种方式) & Hudson
    DevOps之三:Maven私服Nexus使用 && 清理nexus历史镜像
    DevOps之三:搭建Maven私服Nexus
    DevOps之二:搭建SVN服务器(SvnAdmin)
    财务对账
  • 原文地址:https://www.cnblogs.com/Rev-omi/p/13430881.html
Copyright © 2020-2023  润新知