第二章-Windows程序运行原理——(1) CPU保护模式和Windows系统

来源:互联网 发布:阿里云香港连不上 编辑:程序博客网 时间:2024/05/22 06:54

第二章-Windows程序运行原理——(1) CPU保护模式和Windows系统

 

1. Windows系统多任务的实现

 

在Windows下每个任务都有独立的地址空间。在Windows下称为进程。

 

进程就是一个正在运行的一个应用程序实例。

 

但是,真正占有CPU时间片的执行指令不是进程,而是线程。线程是进程内代码的执行单元。

 

Windows下的多任务实现,是在同一个时间里,操作系统可能会运行多个程序实例。但是,每个进程又拥有自己独立的内存空间。在该进程内的地址空间里的线程,运行的时候也只能够访问属于它自己的那段内存空间地址,访问不了其他进程的内存地址。Windows将他们隔离开来。

例如:进程A有一段内存地址 0x87654321,进程B也有一段内存地址0x87654321,当进程A里面访问自己的那段内存地址时,里面保存的是进程A的数据,而进程B访问自己的那段地址的时候,地址里面又是自身的值。总而言之,每个独立的进程,都只能访问自己的内存地址,当然Windows也提供了其他的API,可以访问其他进程的地址空间,在这里暂时不做讨论。

 

2. Windows虚拟内存

 

在 Windows 下,32位系统会为每个进程分配4G的虚拟地址空间。在CPU的支持下,操作系统可以将磁盘空间当作内存空间来使用。在磁盘上应用于这一机制的文件被称为页文件,它包含了对所有进程都有效的虚拟内存。

    在大多数系统上,Windows操作系统会将4G的地址空间的前半部分(2G)留给进程作为私有存储,自己使用后一半。对于用户空间的地址,私有的,被保护起来。对于操作系统空间的地址,包括内核代码,驱动设备等,所有的进程中都是共享的。这部分数据也是被保护了起来,试图访问这部分内存,会遇到一个访问异常。

 

3.内核模式和用户模式

 

80386处理器,定义了4种特权级别(0-3),或者称为环。其中0级是最高级,3级是最低级,用户级。

    操作系统为了阻止应用程序访问或者修改系统数据。使用了两种访问模式:内核模式和用户模式,分别使用处理器的0环和3环处理。用户程序在用户模式下运行,系统程序代码在内核模式下运行。

    但是当应用程序调用一个系统函数的时候,用户的应用程序会从用户模式切换到内核模式去执行。因为最终会访问系统内部的数据。


0 0