`
fixopen
  • 浏览: 82605 次
文章分类
社区版块
存档分类
最新评论

操作系统,loader以及应用服务器

阅读更多
这是该系列的第二部分。

上次说道,OS主要分成计算的管理,存储的管理和IO的管理,其中,计算的管理从OS的角度来看是最重要最根本的。

注:我们暂时不考虑并发。
我们现在要从一个动态的角度看问题了。基于程序存储+图灵机这个基本思想,我们构建了现在形形色色的计算机系统。既然程序是被存储的,那么它一定被放在存储系统里面,而对于运算,实际上是一系列的指令来控制计算的进行。这里面就涉及到存放在存储系统里的静态的程序怎么幻化成可以操纵计算的动态的操作者。

这个过程叫做loader。loader就是把程序从静态的存储状态转换为动态的进程状态,然后这个动态的程序就可以控制计算过程了。

说到这儿,不得不先明确几个基本概念了。

进程:运行着的程序。

程序:有运行潜力的,包含控制运算的指令集合的文件。

文件:存储系统管理的基本单位,每种文件都可以有自己特定的内部结构。但是对于操作系统来说,这些结构大都是不可见的。操作系统一般把文件看成简单的字节序列。
每一个文件都需要有一个或者多个自己的解析器,这些解析器可以解释文件形成特定的意义。

loader:装载器,程序文件的解析器,它负责解释程序文件,形成进程。请注意,它本身也是一个运行着的程序,也就是进程。这里似乎是一个无法解开的死结,其实不然,想想计算机的启动过程就明白了。

装载器的职责包括解释可执行文件,为它们准备好执行环境,也就是执行开始或者过程中可能会需要的各种资源,所依赖的各种库,以及需要的场地。狭义一点,整个操作系统都可以看成是为各种应用提供运行环境的一个系统。看到这儿想起什么了?——应用服务器。对,就是应用服务器。不过应用服务器一般还提供负载均衡、应用分区、应用池及重新回收和利用等等高端的特性。不过,Windows2003自己也提供了这些特性,所以难怪Windows会号称自己就是应用服务器了。

先说一些外围技术,前面提到的可执行文件,其实就是程序文件,它们会被装载器解释,现在的问题是:我随便给一个文件,让装载器解释执行,会有什么问题?答案,没有什么问题。原因:所有的文件的内容都是数据。可是这……,这不可能,也不应该啊。对,是不应该。所以我们需要一些约定。比如:Windows的约定是文件扩展名。文件扩展名是文件名最后一个点以后的部分。对于某些特定文件扩展名(确切地说是:com exe cmd bat msc scr cpl等等),Windows的装载器就会认为它是可执行的,进而试图执行之。

而UNIX类的操作系统,不是通过文件名约定的,而是通过文件系统中的文件属性来约定的,那种属性中包括x(可执行)的文件就是可执行文件。

其实,上面的描述还隐藏了一些细节,我通过原生的和次生的这两个概念来把隐藏的揭露出来:)

不过,我首先还要描述一个叫做魔术字的概念。

魔术字就是某个字,它一般是2的某个幂(这个幂可能是0 1 2 3,再多了就比较少见了)长,当然,也不一定。它会被放在某些需要做标记的文件开头,一个特定的魔术字就代表一个特定的文件类型。这个约定跟前面两种形式的约定相比,有很多比较明显的优势和劣势,一般都会双管齐下,互为备份的。

现在开始我们原生和次生:)。

所谓原生,就是由装载器直接装载运行的那种可执行文件。所谓次生,是由装载器装载入另一个解释器,由这个解释器去装载运行这个可执行文件的。呵呵,差别似乎不是很大,但是由于增加了一个间接层,我们有了很多腾挪的余地。比如:Windows平台的JS文件,UNIX平台的perl文件,再一次的,UNIX 在这些文件上提供了方便于Windows的特性,它们(脚本文件们)一般都有一个叫做dingbang(或许我写错了……)的首行,用来指定自己的解释器。

现在我得解释一下在装载器看来可执行文件的格式(我现在只关注原生的可执行文件)。

对于任何文件,如果相对复杂,一般都会有一个头部,记录相关的元数据。可执行文件也不例外。

对于可执行文件,历史上有过很多格式,其中最简单的那种甚至没有头部,就直接是指令集合。最经典的例子就是DOS下的com文件。当然还有很多别的格式, a.out格式是其中非常出名的一种格式,甚至前不久还在用。但若论影响力和持久性,最出名的可执行文件格式非COFF和ELF莫属。COFF和ELF似乎都是贝尔实验室整出来的格式(对于ELF我有点拿不准),ELF是COFF的继任者。Windows上的PE格式就是一种COFF格式。

……,时间有限,先到此为止!
分享到:
评论

相关推荐

    linux操作系统培训资料.pptx

    所以,linux操作系统已经渗透到嵌入式领域、服务器领域、个人pc领域,成为目前应用领域最广的一种操作系统。 linux操作系统培训资料全文共28页,当前为第3页。 Linux基础 Linux系统的组成 整个linux系统由内核、...

    vortigern:构建Web应用程序的通用样板,带有TypeScript,React,Redux,服务器端渲染等

    Vortigern ... 用于调度异步操作。 用于解决react-router中的异步道具。 建立系统 捆绑。 作为ts加载器。 作为js loader。 为我们的开发服务器提供热重装功能 用于在服务器端加载样式。 以导出捆绑CS

    嵌入式\(高校应用案例)北航软件学院

    ZKQ090102 Linux安装 正确安装Linux操作系统 ZKQ090103 Linux 开发环境与应用程序设计 Linux C 编程基础,gdb调式器,Makefile文件概述;Linux系统调用原理;基于系统调用的文件I/O操作;文件上锁,程序机制与功能...

    安装 SUSE Linux Enterprise Server --服务器版

    其他安装目标可能是提供运行操作系统所需的足够磁盘空间和速度的所有种类 的块设备。这包括网络块设备,如 iSCSI 或 SAN。也可以在提供标准 Unix 许 可权限的网络文件系统上安装。但是,引导这些网络文件系统可能会...

    普联架构设计技术方案.pptx

    1、开发平台概念—技术路线 UNIX、LINUX、WINDOWS 采取B/S结构实现 体系结构 采用JAVA开发遵循J2EE标准 技术标准 ORACLE 10g 数据库 服务器操作系统 J2EE Application Server 中间件 数据库服务器 应用服务器 ...

    ORACLE9i_优化设计与系统调整

    §7.1.1 操作系统安装考虑 91 §7.1.2 Oracle系统安装考虑 92 §7.2 关于创建多个Oracle实例问题 93 §7.3 Oracle系统安装后的优化基础工作 94 §7.3.1 Oracle系统有关目录所有文件的保护 94 §7.3.2 避免新用户使用...

    PHP网站调试用 PHP+IIS+MYSQL

    1、全面适合 Win2000/XP/2003/win7 操作系统 。 2、该程序包集成以下软件,均为最新版本。 PHP 5.2.17 新型的CGI程序编写语言,易学易用、速度快、跨平台。 PHP 5.3.27 新型的CGI程序编写语言,易学易用、速度快...

    【卷一/共两卷】AJAX实战pdf高清版90M

    6.3 为Ajax设计通知系统 6.3.1 对通知建模 6.3.2 定义用户界面需求 6.4 实现通知框架 6.4.1 显示状态栏图标 6.4.2 显示详细的通知信息 6.4.3 集成 6.5 用通知框架处理网络请求 6.6 表示数据的时效性 6.6.1 定义简单...

    WindowsTFTP文件传输工具.rar

    1.boot loader 从网络下载操作系统镜像 2.网络设备配置和管理 3.传输小型设备上的配置文件或固件 TFTP 的特点包括: 简单性:TFTP 是一个非常简单的协议,仅提供了基本的文件读写功能,没有目录列表、认证和加密等...

    Oracle9i的init.ora参数中文说明

    值范围: 根据操作系统而定。 默认值 : 1 circuits: 说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 (如果正在使用...

    O2O掌上城市(ShopNC本地生活).rar

    系统可以在上述系统中安全稳定的运行,但您仍然需要做好服务器操作系统级的安全防备措施。 例如 Windows 用户需更改 MySQL for Windows 的初始 root 密码,避免跨目录的文件读写. 类Unix 用户需避免 使用过于简单的...

    oracle数据库dba管理手册

    10.5.2 数据库和操作系统备份集成 303 10.6 使用备份过程时的恢复情形 304 10.6.1 实例失败 304 10.6.2 介质失败 305 10.6.3 恢复意外删除或修改的对象 306 10.6.4 并行恢复 307 10.6.5 Recovery Manager 308 第11章...

    phpStudy2013最新版,非安装版,解压即可

    1、全面适合 Win2000/XP/2003/win7 操作系统 。 2、该程序包集成以下软件,均为最新版本。 PHP 5.3.21 新型的CGI程序编写语言,易学易用、速度快、跨平台。 Apache 2.4.3 最流行的HTTP服务器软件,快速、可靠、...

    phpStudy 2013.2.20 phpStudy最新版,重写版下载

    1、全面适合 Win2000/XP/2003/win7 操作系统 。 2、该程序包集成以下软件,均为最新版本。 PHP 5.3.21 新型的CGI程序编写语言,易学易用、速度快、跨平台。 Apache 2.4.3 最流行的HTTP服务器软件,快速、可靠、...

    screen-recorder:一个免费的私人屏幕录制网络应用程序

    如果您不熟悉此书,则有一个简短的小指南,说明如何安装(可在Chrome操作系统上运行)。 通过在项目目录中运行以下命令来安装必要的组件: npm i @material/fab @material/ripple您还需要以下所有Node依赖项: :...

    phpStudy v2014 3.10.zip

    1、全面适合 Win2000/XP/2003/win7 操作系统。 2、该程序包集成以下软件,均为最新版本。 3、MySQL数据库用户名:root,密码root,安装后请重新设置密码。 4、本程序纯绿色,支持PHP5.3和PHP5.4一键切换,支持...

    whitestorm-typescript-boilerplate:使用Reactredux的WhitestormJS的TypeScript样板

    WhiteStormJS-React / Redux-three.js-TypeScript...用于调度异步操作。 用于解决react-router中的异步道具。 建立系统 捆绑。 作为ts加载器。 作为js loader。 为我们的开发服务器提供热重装功能 以导出捆绑CSS。

    create-react-app-typescript:使用create-react-app --scripts-version = react-scripts-ts进行项目配置

    操作系统:窗口 配置管理:git 部署自动化: 编辑器: 服务器语言:java 决定不进行SSR。 图书馆选择 选择React 。 我选择的最重要的原因是,我有在其他项目中使用React和React Native创建许多Web和移动应用程序...

    网络安全之网络备份解决方案.doc

    无与伦比的保护 无论用户采用何种Novell网络操作系统进行连网,ARCserveIT都能为其提供妥善的 保护。ARCserveIT可对采用与NDS兼容的应用程序创建的基本与扩展模式提供全面的支持 。此外,ARCserveIT还可自动进入...

Global site tag (gtag.js) - Google Analytics