隔离的应用程序

本文节选自《寒江独钓》一书

对于许多只进行高级语言的用户模式的应用程序编程的读者而言,编写一个“程序”在大多数情况下等价于编写一个可执行的应用程序。在Windows下,这意味着建造一个exe文件。一个exe文件被双击执行后,在Windows系统中,产生一个“进程”(Process)。虽然在高级语言中很多细节被忽略,但是在单个进程内的编程具有以下的特点:
    (1)可以自由使用通用寄存器,不用关心这些寄存器被其他进程修改。换句话说,不同进程(本质上是线程)看似各自拥有一套通用寄存器。
    (2)原则上可以自由使用0~N范围内的内存空间。N的大小取决于操作系统的位数(32位或者64位)。在Windows上实际编程有一些限制,但这些细节暂时忽略,不用关心这些内存空间被其他进程修改。如果读者编写一个程序,对一个变量取地址,然后把这个地址设法传递给其他进程,那么另一个进程看见的地址中的内容是一样的吗?答案当然是否定的,每个进程的用户空间内存是隔离的。
    (3)通过操作系统约定的方式与其他进程共享其他资源,比如网络。大多数操作系统要求进程在使用TCP协议时必须打开一个端口,以避免和其他进程冲突。
    因为有了这些特点,所以在单个进程内编程变得非常容易。编程者只需要定义和使用本进程所需要的资源,并编写代码操作这些资源即可,不需要关心其他进程。
    虽然CPU有一些特性支持进程的隔离,但是更重要的是操作系统应用这些特性给各个进程提供了资源隔离的种种措施。这使应用程序的编程变得简单了,而且也变得更安全。因为大部分独立的应用程序,都不希望被其他应用程序影响。这中间的问题值得读者思考:
    既然一个进程的可执行代码,都加载在这个进程的内存空间范围内,那么那些需要调用操作系统的调用才能实现的功能(比如说读取硬盘。大家应该不记得自己曾经读/写端口,或者做过DMA,去实现读取硬盘的操作,显然驱动程序已经提供了这些功能),所需要的代码,它们位于什么空间呢?也在这个进程的内存空间范围内吗?
    答案当然是肯定的。不大可能有隔离的空间去容纳操作系统内核的代码(包括驱动程序)。
    既然如此,是不是一个应用程序中的代码,就可以直接访问到操作系统的内核代码了呢?当然,如果是这样的话,那么只要编写一个应用程序,就可以直接修改操作系统内核的代码了(既然知道它们在哪里,当然总是可以设法修改它们)。

设置内核的运行环境之隔离的应用程序相关推荐

  1. python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境

    一如既往地, 咱们不仅仅是学习 Python 的基础知识, 同时, 也按照2/8 规律学习关键知识的关键部分 - python 核心词汇 如何安装 Python 下载 Python 打开网址:http ...

  2. uniapp判断当前运行环境 app h5 微信小程序 百度小程序

    hbuilderX最新版本现在已经支持在代码中获取当前所处环境 仅3.4.10+版本以上才支持,如果您的hbuilderX版本不是这个版本的需要先升级一下版本 hbuilderx下载 选择3.4.11 ...

  3. uniapp判断当前运行环境 app h5 微信小程序

    仅3.4.10+版本以上才支持,如果您的hbuilderX版本不是这个版本的需要先升级一下版本 hbuilderx下载 选择3.4.11及以上版本 const type = uni.getSystem ...

  4. deepin部署python开发环境_deepin系统下部署Python3.5的开发及运行环境

    deepin系统下部署Python3.5的开发及运行环境 1 概述 本人小白一枚,由于最近要学习python接口自动化测试,所以记录一下相关学习经过及经验,希望对跟我一样小白的朋友可以有所帮助. 2 ...

  5. 在Pycharm中选择合适的运行环境

    在Pycharm中选择合适的运行环境 问题描述: 在运行程序的过程中,我们总会出现明明自己已经下载了库文件,但是在调用的时候仍然会报 No module 之类的错误,往往这类错误的原因都是因为我们没有 ...

  6. Ubuntu部署python3.7的开发和运行环境

    1 概述 由于最近项目全部由python2.x转向 python3.x(使用 python3.7.1) ,之前的云主机的的默认python版本都面临升级,故进行了升级后将相应的步骤记录下来,作为学习笔 ...

  7. 搭建自己的电影网站 1 (建立网站运行环境)

    系列文章 搭建自己的电影网站 1 (建立网站运行环境) 搭建自己的电影网站 2 (安装MacCMS10) 搭建自己的电影网站 3 (使用cpolar发布本地maccms10网站) 大家在休闲之时,总会 ...

  8. 理解WebKit和Chromium: Web应用和Web运行环境

    转载请注明原文地址:http://blog.csdn.net/milado_nju 注:鉴于这一领域非常热,自己也投身其中,会单独开辟一个专题介绍Web应用和Web运行环境. ## 概述 Web已经从 ...

  9. java游戏运行环境_Java运行环境

    一.计算机存储单元 位(bit): 一个数字0或者一个数字1,代表一位 字节(Byte): 每逢8位是一个字节,计算机中数据存储的最小的单位 1 Byte= 8bit 通常的换算单位: 1KB=102 ...

  10. iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法

    第一次在windows7下配置IIS,虽然有丰富的xp下配置IIS的经验,但还是会遇到不少的问题.特别是对入门者来说,搞清一些东西还是挺费时间的.其实win7下的IIS7配置过程是非常简单的.下面让s ...

最新文章

  1. GCD之信号量机制二
  2. 2012需要分析的一些技术(1)
  3. 公司网络推广浅析网站想要“久居”首页的方法有哪些?
  4. python socket 说明
  5. Filezilla-使用ssh连接到服务器-上传下载文件
  6. SAP UI5 Nav container - how the inner control is added
  7. 微信 开发 图片 上传 阿里云 oss 服务器
  8. LeetCode 1860. 增长的内存泄露(等差数列)
  9. Kerberos认证过程学习理解
  10. 全球第一!苹果市值冲破3万亿美元 创历史记录
  11. 无人车公司May Mobility种子轮融资1150万美元,宝马丰田联合领投
  12. ios 8 适配须知
  13. 计算机在录制声音过程中流向,Bandicam电脑声音如何录制?电脑声音录制流程图文介绍...
  14. 在哪打开用户和计算机,控制面板在哪 打开控制面板的几种方法
  15. android app 头像上传原理
  16. mysql task06(结营)
  17. HTTP详解(请求方式)
  18. 【HTTP】10分钟带你快速了解HTTP中常见的状态码(内附大量实例)
  19. SCI科研制图的尺寸及字体大小
  20. Kotlin实现RxBus3

热门文章

  1. 51-nod(1443)(最短路)
  2. Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容
  3. RQNOJ 140 分配时间:dp
  4. 启动Tomcat出现Using CATALINA_BASE
  5. OpenStack云计算快速入门之三:OpenStack镜像管理
  6. 365RSS.cn = Web3.0?
  7. blog转到CNBlog了
  8. SQLi-LABS Page-4 (Challenges) Less-54-Less-65
  9. Linux的巡检命令
  10. leetcode 算法 Excel表列序号 python实现