当前位置:文档之家› JBoss启动与运行过程的研究

JBoss启动与运行过程的研究

JBoss启动与运行过程的研究
JBoss启动与运行过程的研究

目录

第1章 JBoss 介绍 (2)

1.1 JBoss简介 (2)

1.2 JBoss安装和启动 (2)

1.2.1 JBoss安装所需软件 (2)

1.2.2 JBoss启动 (2)

1.3 JMX控制台 (3)

1.4 服务器架构概述 (4)

1.4.1 主目录 (4)

1.4.2 服务器配置 (4)

1.4.3 JBoss配置文件 (5)

1.4.4 JMX 层次 (5)

1.4.5 JBoss主要模块 (6)

1.4.6 如何工作 (7)

1.5 JBoss服务 (7)

1.5.1 核心服务 (7)

1.5.2 日志服务 (8)

1.5.3 安全性服务 (9)

1.5.4 其他服务 (9)

第2章 JBoss启动步骤 (11)

2.1 启动过程 (12)

第3章 JBoss启动过程中需要调用配置文件及含义 (14)

3.1 jboss-service.xml (14)

3.2 .xml (24)

第4章 JBoss运行过程分析 (27)

4.1 执行启动脚本 (27)

4.2 JBoss启动的入口 (28)

4.3 处理命令行参数 (28)

4.4 加载并创建服务器实例 (29)

4.5 初始化服务器实例 (30)

4.6 启动服务器实例 (31)

4.6.1 创建并启动计时器 (31)

4.6.2创建MBeanServer实例 (31)

4.6.3创建并注册基础服务 (32)

4.6.4部署预配置的服务 (33)

4.6.5部署所有的部署单元 (34)

4.6.6启动生命维持线程 (37)

第5章 JBoss运行过程中输出信息及含义 (37)

5.1 boot.log (37)

5.2 server.log (54)

JBoss启动与运行过程的研究

第1章 JBoss 介绍

1.1 JBoss简介

JBoss是一个运行EJB的J2EE应用服务器。例如:数据库访问JDBC、交易(JTA/JTS)、消息机制(JTS)、命名机制(JNDI)和管理支持(JMX)。它是开放源代码的项目,遵循最新的J2EE规范。

EJB(enterprise javabean),他不是javabean简单的升级,也不是一种"产品",而是为开发和使用基于事务和分布对象应用的服务器端构件而定义的一种技术规约。包括实体bean,会话bean,消息驱动bean

1.2 JBoss安装和启动

1.2.1 JBoss安装所需软件

(1) 安装 SDK:

方法为:双击执行下载的 j2sdk-1_4_2_01-windows-i586.exe 文件。(2) 安装 JBOSS:

方法为:将下载的 jboss-4.0.0.zip 文件解压到任意一个目录。

1.2.2 JBoss启动

用户可以在JBoss主安装目录的bin目录中找到若干个脚本文件。请执行run 脚本(对于Windows,则运行run.bat;对于Linux、OS X、UNIX系统,则运行run.sh)。其中,部署和启动JBoss组件的具体日志信息能够在运行JBoss的控制台浏览到。如下消息表明,JBoss服务器成功运行。

11:13:41,390 INFO [Server] JBoss (MX MicroKernel) [4.2.0.GA (build: SVNTag=JBoss_4_2_0_GA date=200705111440)] Started in 1m:48s:47ms

1.3 JMX控制台

通过http://localhost:8080/jmx-console1,即JMX控制台应用,用户能够浏览到服务器活动视图。图1.3给出了示例界面。

图1-3 JMX管理控制台Web应用视图

上述界面给出了JBoss管理控制台,它提供了构成JBoss服务器的JMX MBean 原始视图。我们暂时可以不用理会控制台的任何内容,但是需要知道控制台能够提供运行中的JBoss应用服务器的大量信息。另外,通过它,用户能够修改、启动、停止JBoss组件。

比如,请找到service=JNDIView链接,然后单击。该特定MBean提供了如下服务内容,即能够浏览服务器中JNDI命名空间的结构信息。接下来,请在该MBean 显示页面底端找到list操作,然后单击invoke按钮。invoke操作将返回绑定到JNDI树中的当前名字列表,这对于获得EJB名字很有帮助,比如当EJB应用客户端不能够解析EJB名字时。

类似地,用户也可以看看其他的MBean及其列举出的操作,然后试着修改一些配置属性,看看会发生什么事情。有一点请注意,即如果服务器一旦重启,从

控制台所作的修改都将丢弃掉。因为重启JBoss时,系统将重新装载原始配置,因此用户可以大胆地尝试一切操作。

1.4 服务器架构概述

本节将深入服务器目录结构、主要配置文件的位置信息、日志文件、部署问题,等等。有助于理解JBoss服务架构。

1.4.1 主目录

jboss-4.0.2目录,该目录包含如下5个子目录:

bin:含有启动、停止以及其他系统相关脚本。

client:存储供Java客户应用或者外部Web容器使用的配置文件和JAR文件。用户可以使用所需要的具体存档,或者仅仅使用jbossall-client.jar。

docs:含有JBoss引用的XML DTD文件(当然,还包括JBoss具体配置文件)。同时,还存在JCA(Java Connetor Architecture,Java连接器架构)实例配置文件,供设置不同数据库的数据源使用(比如MySQL、Oracle、Postgres)。

lib:包含运行JBoss微内核所需的JAR文件。请注意,不要往该目录添加用户自身的任何JAR文件。

server:包含的各个子目录都是不同的服务器配置。

1.4.2 服务器配置

从根本上考虑,JBoss架构是由JMX MBean服务器、微内核、一套可插入式组件服务以及MBean构成的。这种架构使得,集成不同的配置变得更加简单,并且能够很灵活地满足用户的各自需求。用户不再需要一次性运行重量级的应用服务器。同时,用户可以删除不再需要使用的组件(这将从很大程度上减少服务器的启动时间),并且通过开发自己的MBean还能够集成其他服务到JBoss中。

开发者在server目录下能够找到若干服务器配置实例。server目录下存在3个服务器实例配置:all、default以及minimal,它们各自提供了不同的服务集合。很显然,如果启动JBoss服务器时没有指定其他配置,则将使用default配置。

各个配置的具体内容如下:

minimal:这是启动JBoss服务器所要求的最低配置。minimal配置将启动

日志服务、JNDI服务器以及URL部署扫描器,以找到待部署的(新)应用。对于

那些不需要使用任何其他J2EE技术,而只是使用自定义服务的场合而言,则这种

JMX/JBoss 配置最适合。它仅仅是服务器,而不包含Web容器、不提供EJB和JMS支持。

default:默认配置,它含有大部分J2EE应用所需的标准服务。但是,它

不含有JAXR服务、IIOP服务、或者其他任何群集服务。

all:提供了所有可用的服务。它包含RMI/IIOP和群集服务,default配

置中没有提供群集服务。

用户也可以添加自身的服务器配置。最佳做法是,拷贝最接近用户需求的

现有配置,然后修改其具体内容。比如,如果用户不需要使用消息服务,则只

需要拷贝default目录,并重新命名为myconfig,然后删除jms子目录。最后,

启动myconfig配置。

1.4.3 JBoss配置文件

JBoss的server目录可以包含任意数目的目录,每个表示一个不同的 JBoss配

置。

server/config-name/conf目录包含JBoss的配置文件。

jacorb.properties JBoss IIOP 配置

jbossmq-state.xml JBossMQ(JMS的实现)用户配置

jboss-service.xml 启动时运行的JBoss的服务的定义(class loader,JNDI,

deployer等)

log4j.xml Log4J的配置

login-config.xml JBoss安全配置(JBossSX)

standardjaws.xml JBoss的遗留CMP 1.1引擎的默认配置。包含对各种数据库的

JDBC-to-SQL的映射信息,默认CMP设置,日志配置等。

standardjbosscmp-jdbc.xml 除了被用于JBoss的CMP 2.0引擎之外,与standardjaws.xml

相同,

1.4.4 JMX 层次

JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。JBoss的模块

架构是建立在JMX底层上的,下图展现了JBoss主要组件和JMX的联系。

Figure 1-1 Overall JBoss Conceptual Mode l

JMX(Java Management Extensions)即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。其中,发布层还在等待未来的标准化。简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。

Figure 2-1 JMX层次模型

1.4.5 JBoss主要模块

主要的JBoss模块是在MeanServer上的可管理MBean。

(1) JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB对象的Stub和Skeleton类,第二是支持热部署。

(2) JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范.

(3) JBossTX 是由JTA/JTS支持的交易管理控制.

(4) 部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。

(5) JBossMQ使Java 消息规范(JMS)的实现。

(6) JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。

(7) JBossCX实现了部分JCA的功能。JCA制订了J2EE应用组件如何访问基于连接的资源。

(8) Web服务器支持Web容器和Servlet引擎。

1.4.6 如何工作

当JBoss被启动,它的第一步是创建一个MBean服务器的实例。一个基于管理机制的MBean组件通过在Mean Server中的注册而被插入JBoss中。JBoss实现了动态类装载 M-Let(management applet)服务,它是代理服务,M-let允许MBean 被注册到MBean服务器上。通过基于文本文件的配置文件中的配置,相应MBean 将被装载。

JMX MBean服务器实际上本身并没有实现很多功能。它的工作类似于一个MBean中联系的微核聚合组件,通过Mbeans取代JMX MBean 服务器来提供相应的功能,换而言之,真正起作用的是MBean。

1.5 JBoss服务

这里的目录路径都是基于server/default目录给出的。

1.5.1 核心服务

当JBoss服务器启动时,首先会启动conf/jboss-service.xml文件指定的核心服务。如果用户通过编辑器打开它,将会看到其包括了各种服务,其中包括日志、安全性、JNDI。

将如下JNDIView服务入口注释掉:

如果重启JBoss,则JNDIView服务将不再出现在管理控制的列表中。实际场合中,用户很少会修改该文件。虽然通过conf/jboss-service.xml文件能够添加其他MBean服务,但是更好的办法是,将单独的配置文件放置在deploy目录中,因为这将使得用户的服务具有热部署能力。

1.5.2 日志服务

Log4j是JBoss使用的日志功能包。通过conf/log4j.xml文件能够控制JBoss 的日志功能。该文件定义了一套Appender、指定了日志文件、具体消息Category 类型的存储、消息格式以及消息的过滤级别。默认时,JBoss会同时在控制台和日志文件(位于log/server.log文件中)中生成输出信息。

一共存在5个基本的日志级别:DEBUG、INFO、WARN、ERROR以及FATAL。其中,控制台的日志入口(threshold)为INFO,即用户通过控制台能够浏览到提示信息、警告信息、错误信息,但是调试信息查看不到。相比之下,JBoss并没有为server.log文件设置任何入口,因此所有生成的消息将记录到server.log文件中。如果JBoss运行过程中出现了错误,则通过控制台可能找不到用户有用的信息,因此建议通过server.log文件查看是否有调试信息可供解决问题所用。然而,请注意,通过调整日志入口能够在控制台查看到调试信息,但是这并没有保证所有的JBoss消息都将记录到server.log文件中。因此,用户还需要为单个的Category设置不同的日志级别。比如,log4j.xml给出了如下Category。

它将所有的JBoss相关类的日志级别限制到INFO,即同那些含有具体日志级

别的Category隔离开。如果将INFO更换为DEBUG,则将生成更详细的日志输出。

由于文件Appender设置为每日创建新的日志文件,因此JBoss不会每次启动服务器时创建新的日志文件,而且也不会总是将日志信息记录到单个文件中。当前的日志文件为cmp.log,更早的日志文件名是通过将具体日期添加到server而生成的。用户应该还注意到,log目录包含了Web容器生成的HTTP请求日志。

1.5.3 安全性服务

安全性域信息存储在login-config.xml文件中,其包含了许多安全性域定义。各个安全性域指定了许多JAAS3登陆模块,供安全性域认证使用。当用户需要在应用中使用安全性时,需要在JBoss特定部署描述符jboss.xml或jboss-web.xml中指定待使用的安全性域名。

1.5.4 其他服务

deploy目录放置的服务不是核心服务,但具有热部署能力。用户可以通过XML 描述符文件(*-service.xml)或JBoss服务存档(SAR)文件给出服务。SAR同时含有XML描述符和服务所要求的其他资源(比如,类、JAR库文件以及其他存档),而且SAR是以单个存档文件给出的。

(1) 通过default/deploy目录,用户能够发现下列文件和子目录,这里给出的内容使得用户能够从整体上把握JBoss应用服务器。

bsh-deployer:将BeanShell脚本部署成JBoss服务。

cache-invalidation-service.xml:允许借助于JMS,而实现对EJB缓存的控制。

client-deployer-service.xml:部署J2EE应用客户。

ear-deployer.xml:部署J2EE EAR应用。

ejb-deployer.xml:部署J2EE EJB应用。

hsqldb-ds.xml:设置嵌入式Hypersonic数据库服务,并将其作为默认数据源。

http-invoker.sar:通过RMI/HTTP方式访问到MBean和EJB。

jboss-aop.deployer:提供AspectManagerService,并部署JBoss AOP

应用。

jboss-hibernate.deployer:部署Hibernate存档(HAR文件)。

jboss-local-jdbc.rar和jboss-xa-jdbc.rar:集成JDBC驱动的JCA资源适配器,它们分别支持DataSource和XADataSource。但是,这并没有提供专有JCA 实现。

jboss-ws4ee.sar:提供J2EE Web服务支持。

jbossjca-service.xml:JBoss JCA实现,使得在JBoss中部署JCA资源适配器成为可能。

jbossweb-tomcat50-sar:含有嵌入式Tomcat服务的展开SAR文件。它为JBoss提供了标准的Web容器。

jms:将JMS相关的服务聚集在一起,并放置在jms目录中。

hsqldb-jdbc-state-service.xml:使用HSQLDB管理状态。

hsqldb-jdbc2-service.xml:使用嵌入式HSQL数据库实现缓存和持久化。它还包含了JMS实现的核心服务,即DestinationManager MBean。

jbossmq-destinations-service.xml:供JBoss测试套件使用的JMS Topic和Queue。

jbossmq-service.xml:JMS其他服务,包括拦截器配置。

jms-ds.xml:将JBoss消息实现作为默认JMS提供商。并且,它还提供JCA 配置信息,以供集成JBoss JCA和JMS资源适配器使用。

jms-ra.rar:资源适配器,供JCA处理JMS连接工厂使用。

jbossmq-httpil.sar:提供JMS调用层,从而实现HTTP方式使用JMS。

jvm-il-service.xml:配置本地JMS传输调用层,供本地JVM使用JMS。

uil2-service.xml:配置JMS版本2统一调用层。这是一种可靠的、自定义的、基于Socket的传输方式。推荐在不同JVM间使用它。

jmx-console.war:JMX控制台应用。前面讨论过。

jmx-invoker-server.xml:为远程访问JMX MBean服务器提供支持。

mail-ra.rar:为JavaMail提供资源适配器。

mail-service.xml:允许应用和服务在JBoss中使用JavaMail。请注意,邮件服务器相关信息必须由用户提供。

management:含有可更换管理服务的子目录。其中,包含有改进的Web 控制台。

monitoring-service.xml:配置警告监听器,比如控制台监听器、E_mail 监听器,等等。

properties-service.xml:设置JVM的全局系统属性(由System.getProperties返回)。

schedule-manager-service.xml和scheduler-service.xml:定时任务服务。

sqlexception-service.xml:为JDBC驱动提供标识一般性SQL异常。

uuid-key-generator.sar:生成唯一的、基于UUID的键。

(2) all配置提供了其他配置没有提供的其他服务,用户可以将这些服务集成到各自的服务器配置中。具体如下:

cluster-service.xml:群集服务,包括JGroups集成服务、HA-JNDI、有状态会话Bean复制、CMP2缓存有效性服务。

deploy-hasingleton-service.xml:HASingletonDeployer MBean。用于确保群集中只有单个节点在deploy-hasingleton目录部署了服务。

https://www.doczj.com/doc/da5389078.html,st/farm-service.xml:farm群集部署服务。用于确保它在所有其他服务部署之后才部署其本身。

ebxmlrr-service.xml:JAXR注册服务实现。

iiop-service.xml:实现对CORBA、IIOP的支持。

jbossha-httpsession.sar:遗留的HTTP会话复制服务。

remoting-service.xml:还处于试验中的下一代分离式Invoker框架。

snmp-adaptor.sar:将JMX通知转换成SNMP陷阱。

tc5-cluster-service.xml:用于新的HTTP复制服务的TressCache配置。第2章 JBoss启动步骤

当启动JBoss时,首当其冲的就是要完成的就是创建MBean服务器实例,即javax.management.MBeanServer。JBoss架构中的JMX MBean服务器担当了微内核的作用。所有其他受管MBean组件都是通过注册到该MBean服务器,从而插入到JBoss中的。这里的内核仅仅表明它是框架,而不是指实际功能。实际功能由

MBean提供,同时所有的主要JBoss组件都是通过MBean服务器相连在一起的受管MBean。

2.1 启动过程

JBoss 服务器启动过程大概是根据如下启动顺序完成启动任务的。

(1)run脚本使用org.jboss.Main.mian(String[])方法入口点触发引导顺

序。

(2)Main.main方法创建线程组“jboss”。然后,启动“jboss”线程中的

某线程。该线程调用Main.boot方法。

(3)Main.boot方法在处理Main.main的参数后,使用系统属性和参数指定

的其他属性创建org.jboss.system.server.ServlerLoader实例。

(4)ServlerLoader注册XML解析库、jboss-jmx.jar、concurrent.jar、其

他库及参数指定的类路径(classpath)。

(5)将传入当前线程上下文类装载器作为ServerLoader.load(ClassLoader)

方法的实参,从而能够创建Jboss服务器实例。其中,返回的服务器实

例实现了org.jboss.system.server.Server接口。创建服务器实例具体

包括如下步骤:

1)在启动过程中,使用注册于ServerLoader中的jar文件和目录的

URL,创建https://www.doczj.com/doc/da5389078.html,.URLClassLoader。该URLClassLoader使用传

入的ClassLoader作为其双亲类装载器,并将其本身作为线程的

上下文类装载器。

2)这里使用Server接口的实现类名由“jboss.server.type”属性

决定。其在默认情况下为org.jboss.system.server.ServerImpl。

3)步骤1创建的URLClassLoader将完成Server实现类的装载和实

例化(通过无参数构建器)。其后,恢复线程的上下文类装载器,

并将Server实例返回调用者。

(6)把传递给ServerLoader构建器的属性作为Server.init(Properties)方

法中Properties的实参,并初始化服务器。

(7)使用Server.start()方法启动服务器实例。

1)将上下文的类装载器设置为用于装载ServerImpl类的装载器。

2)使用MBeanServerFactory.createMBeanServer(Sring)方法创建

“jboss”域下的MBeanServer。

3)使用MBeanServer注册ServerImpl和ServerConfigImpl MBean。

4)初始化统一类装载器库,并包含可选patch目录及服务器配置文

件集合conf目录(如 server/default/conf)中的所有jar文件。

对于每个jar和目录,都会创建新的

org.jboss.mx.loading.UnifiedClassLoader,并在统一库中注

册。其中,JBoss会从创建的UnifiedClassLoader中选择一个作

为线程的上下文类装载器。因此,线程的上下文类装载器能够使

用到所有的UnifiedClassLoader。

5)创建org.jboss.system.ServiceController MBean。

ServiceController管理JBoss MBean服务的生命周期。

6)创建并启动org.jboss.deployment.MainDeployer。MainDeployer

管理部署单元的依赖性,并保证部署单元能够分发到正确的部署

器。

7)创建并启动org.jboss.deployment.JARDeployer。JARDeployer

处理简单的jar库的部分部署。

8)创建并启动org.jboss.deployment.SARDeployer。SARDeployer

处理JBoss MBean服务的部署。

9)调用MainDeployer,以完成当前服务器文件集合中

conf/jboss-service.xml定义的服务。

10)恢复线程的上下文类装载器。

Jboss服务器启动初期,仅仅是作为JMX MBean 服务器的容器。然后,装载jboss-service.xml Mbean 配置文件中定义的各种个性化服务。这里的jboss-service.xml文件位于从run命令行传入的特定配置集合(conf目录)中。由于Mbean定义了Jboss服务器实例的功能,因此理解核心Jboss Mbean 是如何开发的及如何使用显得很重要。

第3章 JBoss启动过程中需要调用配置文件及含义

3.1 jboss-service.xml

当JBoss服务器启动时,首先会启动conf/jboss-service.xml文件指定的核心服务。。如果用户通过编辑器打开它,将会看到其包括了各种服务,其中包括日志、安全性、JNDI等等。

引导lib目录下所有jar文件,

(1)JBoss Server Management Domain

★D:\jboss-4.2.0.GA\server\default\lib\jboss-management.jar code="org.jboss.management.j2ee.LocalJBossServerDomain"

(2)XMBean Persistence

★D:\jboss-4.2.0.GA\lib\jboss-system.jar

code="org.jboss.system.pm.AttributePersistenceService"

★default\conf\xmdesc\ AttributePersistenceService-xmbean.xml

(3)Thread Pool

★D:\jboss-4.2.0.GA\lib\jboss-common.jar

code="org.jboss.util.threadpool.BasicThreadPool"

(4) Log4j Initialization

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.logging.Log4jService"

★default\conf\jboss-log4j.xml

★default\conf\xmdesc\Log4jService-xmbean.xml

(5) JBoss RMI Classloader-only install when available

★D:\jboss-4.2.0.GA\lib\jboss-common.jar

code="org.jboss.util.property.jmx.SystemPropertyClassValue"

(6) Class Loading

★D:\jboss-4.2.0.GA\server\default\lib

code="org.jboss.web.WebService"

(7) JNDI(命名服务)

★D:\jboss-4.2.0.GA\server\default\lib\jnpserver.jar code="org.jnp.server.NamingBeanImpl"

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.naming.NamingService"

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.naming.JNDIView"

★default\conf\xmdesc\NamingBean-xmbean.xml

★default\conf\xmdesc\JNDIView-xmbean.xml

★default\conf\xmdesc\NamingService-xmbean.xml

(8) Security(安全服务)

★D:\jboss-4.2.0.GA\server\default\lib\jbosssx.jar

code="org.jboss.security.plugins.SecurityConfig"

code="org.jboss.security.auth.login.XMLLoginConfig"

code="org.jboss.security.plugins.JaasSecurityManagerService"

★default\conf\login-config.xml

(9) Transactions(事务处理)

★D:\jboss-4.2.0.GA\server\default\lib\jboss-transaction.jar code="org.jboss.tm.XidFactory"

★D:\jboss-4.2.0.GA\server\default\lib\jbossjta-integration.jar code="com.arjuna.ats.jbossatx.jta.TransactionManagerService"

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="https://www.doczj.com/doc/da5389078.html,ertx.server.ClientUserTransactionService"

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"

★default\conf\xmdesc\ClientUserTransaction-xmbean.xml

(10) Invokers to the JMX node

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.invocation.unified.server.UnifiedInvoker" ★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.invocation.jrmp.server.JRMPInvoker"

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.invocation.local.LocalInvoker"

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.invocation.pooled.server.PooledInvoker"

(11) Remoting services

★D:\jboss-4.2.0.GA\server\default\lib\jboss-remoting.jar code="https://www.doczj.com/doc/da5389078.html,workRegistry"

★D:\jboss-4.2.0.GA\server\default\lib\ jboss-remoting.jar code="org.jboss.remoting.transport.Connector"

(12) An MBean that is a registry for JDBC type-mapping metadata

★D:\jboss-4.2.0.GA\server\default\lib\jboss.jar

code="org.jboss.ejb.plugins.cmp.jdbc.metadata.MetaDataLibrary"s

(13) Deployment Scanning

★D:\jboss-4.2.0.GA\lib\jboss-system.jar

code="org.jboss.deployment.scanner.URLDeploymentScanner"

3.2 JBossNS-NamingService MBean

NamingService MBean提供了JNDI命名服务,它是J2EE技术组件普遍使用的关键服务。NamingService的配置属性如下:

● Port:用于NamingService的JNP协议监听端口。其默认值为1099,如果没有指定,则其值合RMI注册器的默认端口相同。

● RmiPort:RMI命名实现导出的RMI端口。如果没有指定,则为0,即可以使用任何可用端口。

● BindAddress:NamingService监听的具体地址。它能够用于存在多个主机地址的机器上,即为https://www.doczj.com/doc/da5389078.html,.ServerSocket提供监听地址。但只有其中一个地址接受客户请求。

● RmiBindAddress:NamingService监听RMI服务器部分的具体地址。它能够用于存在多个主机地址的机器上,即为https://www.doczj.com/doc/da5389078.html,.ServerSocket提供监听地址。但其中一个地址能够接受客户请求。如果开发者没有指定RmiBindAddress值,则RmiBindAddress默认情况下设置为RmiAddress值。

● Backlog:所允许连接请求的最大队列长度。如果队列已满且有连接请求时,该请求将被拒绝。

● ClientSocketFactory:可选的自定义java.rmi.server.RMIClientSoketFactory 实现的类名。如果没有指定,则使用默认值RMIClientSocketFactory。

● ServerSocketFactory:可选的自定义java.rmi.server.RMIServerSoketFactory 实现的类名。如果没有指定,则使用默认值RMIServerSocketFactory。

● JNPServerSocketFactory:可选的自定义https://www.doczj.com/doc/da5389078.html,.ServerSocketFactory实现的类名。它是ServerSocket的工厂,用于引导JBossNS Naming接口的下载。如果没有指定,则使用https://www.doczj.com/doc/da5389078.html,.ServerSocketFactory.getDafault()方法的返回值。

3.2.1 命名InitialContext工厂

当前,JBoss JNDI供应商支持3种不同的InitialContext工厂实现。其中,使用最多的工厂实现是org.jnp.interfaces.NamingContextFactory。包含的属性如下:

● java.naming.factory.initial(或Context.INITIAL_CONTEXT_FACTORY),环境属性名,用于指定InitialContext工厂。该属性值应该是创建InitialContext的工厂类的全限定类名。如果没有指定其值,则在抛出javax.naming.NointiialContextException异常。

2008-01-06 14:55:47,968 DEBUG [org.jnp.server.NamingBeanImpl]

key=java.naming.factory.initial,

value(https://www.doczj.com/doc/da5389078.html,ng.String)=org.jnp.interfaces.NamingContextFactory

● java.naming.provider.url(或Context.PROVIDER_URL),环境属性名,用于指定客户将使用JBoss JNDI服务器供应商的位置。NamingContextFactory类利用该位置信息可以知道其将连接到的JBossNS服务器。其值为URL字符串,格式为“jnp://host:port/[jndi_path]”。其中,该URL的“jnp:”部分是指使用的协议,即JBoss 使用的基于Socket/RMI的协议。URL的“jndi_path”部分是相对于根上下文的可选JNDI 名。比如:“apps”或“apps/tmp”。除host之外,其他部分都是可选的。由于默认port 值为1099,因此如下给出的实例都是等效的。

jnp://https://www.doczj.com/doc/da5389078.html,:1099/

https://www.doczj.com/doc/da5389078.html,:1099

https://www.doczj.com/doc/da5389078.html,

● java.naming.factory.url.pkgs(或Context.URL_PKG_PREFIXES):环境属性名,在URL上下文工厂中装入包前缀列表时,需要使用该属性名。该属性值应该是利用“.”隔开的前缀列表。对于JBossJNDI供应商而言,其值必须是org.jboss.naming:org.jnp.interfaces。为定位JBossJNDI供应商的jnp:和java:URL 上下文工厂,开发者必须使用该属性。

● jnp.socketFactory:https://www.doczj.com/doc/da5389078.html,.SocketFactory.TimedSocketFactory。TimedSocketFactory是SocketFactory的简单实现,即只支持连接和读超时。它们支持的两个属性如下:

jnp.timeout:以毫秒表示连接超时。默认值为0,即表示连接阻塞到JVM TCP/IP层超时为止。

jnp.sotimeout: 以毫秒表示已连接Socket的读操作超时。默认值为0,即表示读操作可能会阻塞。其中,传给新连接Socket的Socket.setSoTimeout方法的参数就是jnp.sotimeout取值。

2008-01-06 14:55:47,968 DEBUG [org.jnp.server.NamingBeanImpl] key=java.naming.factory.url.pkgs, value(https://www.doczj.com/doc/da5389078.html,ng.String)=org.jboss.naming:org.jnp.interfaces

3.2.2 其他命名MBean

除了NamingService MBean,即在JBoss中配置嵌入式JBossNS服务器,随JBoss发布的、与命名相关的MBean服务还有3个。分别是:ExternalContext、NamingAlias及JNDIView.

https://www.doczj.com/doc/da5389078.html,.jboss.naming.ExternalContext MBean

ExternalContext MBean,能够集成外部JNDI上下文到JBoss服务器的JNDI命名空间中。其中,这里的“外部”指运行JBoss服务器JVM内部的JBossNS命名服务之外的任何命名服务。开发者能够集成LDAP服务器、文件系统、DNS服务器等。甚至是那些上下文支持序列化的JNDI供应商。如果命名服务支持远程访问,这种集成性使得各种JNDI供应商能供远程客户使用。

为使用外部JNDI命名服务,开发者需要将ExternalContextMBean配置添加给jboss.jcml配置文件。ExternalContextMBean服务的可配置属性如下:

· JndiName:外部上下文绑定的JNDI名。

· RemoteAccess:boolean标志位,表明是否使用Serializable形式绑定外部InitialContext,从而允许远程客户创建外部InitialContext。当远程客户借助于JBoss JNDI InitialContext查找外部上下文时,使用传递给ExtemalContext MBean的环境属性,能够有效地创建外部InititalContext实例。

·CacheContext:标志位。如果为true,则只有在MBean启动时才创建外部Context,并将其存储成内存对象,直到MBean停止。如果为false,则每次查找时,都会使用MBean 属性和InitialContext类创建Context。当没有缓存客户查找到的Context时,客户应该调用Context的close()方法,以防止资源泄漏。

· InitialContext:使用InitialContext实现的全限定类名。其取值必须是如下之一:javax.naming.InitialContext、javax.naming.directory.InitialDirContext、javax.naming.ldap.InitialLdapContext。如果是InitialLdapContext,则将使用值为null 的Controls数组。默认值为javax.naming.InitialContext。

· Properties:为外部InitialContext设置jndi.properties。其取值可以是URL 字符串,也可以是为classpath资源名。

2.org.jboss.naming.NamingAlias MBean

使用服务,即NamingAlias MBean允许开发者以JNDI javax.naming.LinkRef形式创建从某JNDI名到另一个JNDI名的别称。对于每个别称,开发者需要向jboss.jcml配置文件添加NamingAlias MBean的配置属性。其中,NamingAlias服务的可配置属性如下。

· FromName,LinkRef绑定在JNDI中的位置信息。

·ToName,别称的to名字。LinkRef引用的目标名字。该名字或者为URL,或者为相对于InitialContext解析的名字。如果名字的首字母为“.”,则也可能为相对于该连接绑定到的上下文的名字。

操作系统的启动实验报告

操作系统实验报告 工程大学 计算机科学与技术学院

一.实验概述 1.实验名称:操作系统的启动 2.实验目的: 1)跟踪调试EOS在PC机上从加电复位到成功后启动的全过程,了解操作系统的启动过程; 2)查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。 3.实验类型:验证,设计 4.实验容: 1)准备实验,启动OS Lab,新建一个EOS Kernel项目; 2)调试EOS操作系统的启动过程 ①使用Bochs作为远程目标机 ②调试BIOS程序 ③调试软盘引导扇区程序 ④调试加载程序 ⑤调试核 ⑥查看EOS启动后的状态和行为 二.实验环境 操作系统:windows XP 编译器:Tevalaton OS Lab 语言:C++ 三.实验过程 1.设计思路和流程图: 2.实验过程:

1)在Console窗口中输入调试指令sreg,查看当前CPU中各个段寄存器的值,其中CS寄存器信息行中的“s=0xf000”表示CS寄存器的值为0xf000。 2)输入调试命令r,显示当前CPU中各个通用寄存器的值,“rip: 0x00000000:0000fff0”表示 IP 寄存器的值为 0xfff0。 3)输入调试命令 xp /1024b 0x0000,查看开始的 1024 个字节的物理存。在Console 中输出的这 1K 物理存的值都为 0,说明 BIOS 中断向量表还没有被加载到此处。 4)输入调试命令 xp /512b 0x7c00,查看软盘引导扇区应该被加载到的存位置。输出的存值都为 0,说明软盘引导扇区还没有被加载到此处。 可以验证 BIOS 第一条指令所在逻辑地址中的段地址CS寄存器值是一致的,偏移地址和 IP 寄存器的值是一致的。由于存还没有被使用,所以其中的值都为0。 5)输入调试命令 vb 0x0000:0x7c00,这样就在逻辑地址 0x0000:0x7c00(相当于物理地址 0x7c00)处添加了一个断点。输入调试命令 c 继续执行,在 0x7c00 处的断点中断。中断后会在 Console 窗口中输出下一个要执行的指令,即软盘引导扇区程序的第一条指令。 6)输入调试命令 sreg 验证 CS 寄存器(0x0000)的值。

操作系统作业二

1 填空题 1.设单CPU环境下,有三道作业,它们的提交时间及运行时间如下表: 若采用短作业优先调度策略,作业单道串行运行时的调度次序为 J1,J3,J2 ,平均周转时间= 8 。 2.进程间通信的类型有:基于内存通信、基于文件通信、基于网络通信 和基于报文传递通信。 3.在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,运行时间短作业将得 到优先调度;当各个作业要求运行的时间相同时,等待时间长得到优先调度。 4.有三个同时到达的作业J1,J2和J3,它们的执行时间分别是T1,T2和T3,且T1

C、多个进程竞争,资源出现了循环等待 D、多个进程竞争共享型设备 3.( C )不是分时系统的基本特征: A、同时性 B、独立性 C、实时性 D、交互性 4.进程所请求的一次打印输出结束后,将使进程状态从(B D) A、运行态变为就绪态 B、运行态变为等待态 C、就绪态变为运行态 D、等待态变为就绪态 5.一作业进入内存后,则所属该作业的进程初始时处于( B C)状态。 A、运行 B、等待 C、就绪 D、收容 6.运行时间最短的作业被优先调度,这种企业调度算法是(C ) A.优先级调度 B.响应比高者优先C.短作业优先D.先来先服务 7.产生死锁的主要原因是进程运行推进的顺序不合适(C ) A.系统资源不足和系统中的进程太多B.资源的独占性和系统中的进程太多 C.进程调度不当和资源的独占性D.资源分配不当和系统资源不足 8. B 是指从作业进入系统到作业完成所经过的时间间隔; D 是从作业进入后备队列起,到被调度程序选中时的时间间隔。 A:响应时间;B:周转时间;C:运行时间; D:等待时间;F:触发时间。 9.CPU的调度分为高级、中级和低级三种,其中低级调度是指 C 调度。 A:作业B:交换C:进程 10. 批处理系统的主要缺点是( B )。 的利用率不高 B.失去了交互性 C.不具备并行性 D.以上都不是 11. 引入多道程序的目的在于( B A)。 A.充分利用CPU,减少CPU等待时间 B.提高实时响应速度 C 有利于代码共享,减少主、辅存信息交换量充分利用存储器 12. 在分时系统中,时间片一定,(B ),响应时间越长。 A.内存越多 B.用户数越多 C.后备队列 D.用户数越少 13. 我们如果为每一个作业只建立一个进程,则为了照顾短作业用户,应采用 SJF B ;为照顾紧急作

WINDOWS 网络操作系统的发展史

WINDOWS 网络操作系统的发展史 2009-05-21 18:16 网络操作系统的发展史 Microsoft开发的Windows是目前世界上用户最多、并且兼容性最强的操作系统。最早的Windows操作系统从1985年就推出了。改进了微软以往的命令、代码系统Microsoft Dos。Microsoft Windows是彩色界面的操作系统。支持键鼠功能。默认的平台是由任务栏和桌面图标组成的。任务栏是显示正在运行的程序、“开始”菜单、时间、快速启动栏、输入法以及右下角的托盘图标组成。而桌面图标是进入程序的途径。默认的系统图标有“我的电脑”、“我的文档”、“回收站”,另外,还会显示出系统的自带的“IE浏览器”图标。运行Windows的程序主要操作都是由鼠标和键盘控制的。鼠标的左键单击默认是是选定命令,鼠标左键双击是运行命令。鼠标右键单击是弹出菜单。WIndows系统是“有声有色”的操作系统。《连线》杂志日前发表分析文章称,在过去的23年中,Windows操作系统经历了一个从无到有,从低级到高级的发展过程。总体趋势是功能越来越强大了,用户使用起来越来越方便了,但其发展进程并非是一帆风顺的,中间也曾多次出现曲折。应用最广泛的Windows操作系统在不断地发展,其发展进程充满了不确定性。Windows的成功与处理器速度的提高和内存容量的增加可谓“休戚与共”。微软依靠大量第三方软件让用户喜欢上了Windows。 1、Windows 1.0 Windows 1.0 微软第一款图形用户界面Windows 1.0的发布时间是1985年11月,比苹果Mac晚了近两年。由于微软与苹果间存在一些法律纠纷,Windows 1.0缺乏一些关键功能,例如重叠式窗口和回收站。用现在的眼光看,它的失败并不令人感到意外。Windows 1.0只是对MS-DOS的一个扩展,它本身并不是一款操作系统,但确实提供了有限的多任务能力,并支持鼠标。Microsoft Windows 1.0操作系统是微软公司在个人电脑

如果设置开机启动项

启动项哪些可以关闭 1、建议你下载金山清理专家,在他的启动项中有程序软件的图标,你可以很方便的将不需要开机启动的程序关闭(还可以随时打开),即方便又安全试试吧。 2、启动项过多也可造成开机慢,点击"开始"/运行/输入msconfig后回车/点击"启动"/只保留"ctfmon/杀毒软件/防火墙,"其它前面的勾都去掉./然后点击"应用"/按"确定"(如果查找到某一选项的名和路径单独关闭更好)。 3、重启电脑,启动到桌面时会出现一个对话框,在对话框中添加对勾,确定即可。 4、怎么去掉自启动项 开始/运行输入regedit回车打开注册表编辑器,依次展开 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]在右侧,看看有没有你要找的选项,和你要找选项的路径一致,如果有删除(备份,如果今后需要自启动再恢复备份),重启电脑即可。 进入系统慢(优化系统) 1、建议你下载Windows清理助手,查杀恶意软件和木马(下载网址:https://www.doczj.com/doc/da5389078.html,)。 2、每次启动Windows XP,蓝色的滚动条都要走上好多次,其实这里我们也可以把它的滚动时间减少,以加快启动速度。打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters,在右边找到EnablePrefetcher主键,把它的默认值3改为1,这样滚动条滚动的时间就会减少。 3、解决开关机慢和系统结束程序慢的问题。开始/运行输入regedit打开注册表编辑器找到[HKEY-CURRENT-USER\Control Panel\Desktop]键,将WaitToKillAppTimeout改为:1000,即关闭程序时仅等待1秒。另:程序出错和系统自动关闭停止响应的程序如何实现快速关闭。 1、将HungAppTimeout 值改为:200,表示程序出错时等待0.5秒。 2、将AutoEndTasks 值设为:1,让系统自动关闭停止响应的程序。建议你下载超级兔子,让她帮助你优化电脑的开关机速度,自己就不用进行上述设置了,超级兔子就帮助你做了。 4、右击“我的电脑”/属性/硬件/设备管理器/点击“IDE ATA/A TAPI”选项/双击“次要IDE通道”/高级设置/设备类型,将“自动检测”改为“无”,主要要IDE通道也做相同的设置。 5、启动项过多也可造成开机慢,点击"开始"--运行--输入msconfig后回车--点击"启动"--只保留"ctfmon\杀毒软件\防火墙,"其它前面的勾都去掉.--然后点击"应用"--点击"确定"。 6、用系统自带的系统还原,还原到你没有出现这次故障的时候修复(如果正常模式恢复失败,请开机按F8进入到安全模式中使用系统还原)。 按照下面的方法设置,可以对系统性能有明显的提升。

计算机启动过程

计算机启动过程 讲课教师:黄小龙 计算机启动过程总体分为两个过程,即硬件启动过程和操作系统启动过程。本课中操作系统我们仅选用Windows XP 的启动过程讲解。 一、硬件启动过程 ⑴加电 按下电源开关后,电源就开始向主板和其它设备供电,此时电压还不稳定, 主板上的控制芯片组会向CPU 发出并保持一个RESET(重置)信号,让CPU 初始化。当电源开始稳定供电后,芯片组便撤去RESET 信号(如果是按下Reset 按钮来重启,那么松开该按钮时芯片组就会撤去RESET 信号)。然后,CPU 马上就从地址FFFF0H 处开始执行指令(这是BIOS 的起始地址),但放在这里的只是一条跳转指令,跳到系统真正的BIOS 启动代码处,由BIOS 的代码进行下一步的POST 自检。 ⑵BIOS 进行post

POST就是加电自检,它是Power On Sel f Test的缩写。它是检查一些关键设备是否存在和能否正常工作,如内存和显卡等。如果发现错误,则通过喇叭发声来报告错误情况,此时的声音长短和次数代表了错误类型。 注:由于POST的检测过程在显示卡初始化之前,因此POST 自检过程发现的错误是无法在屏幕上显示出来的。 ⑶BIOS检测硬件的各种信息 BIOS进行加电自检后,就开始检测计算机上硬件设备的各种信息,如设备类型、工作频率、芯片组型号、出厂厂商等。这阶段的硬件检测顺序是:显示卡、CPU、内存、其它标准硬件设备(如硬盘、光驱、软驱、外设等)。 ⑷BIOS更新ESCD 按下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是系统BIOS用来与操作系统交换硬件配置信息的数据,这些数据被存放在CMOS之中。通常ESCD数据只在系统硬件配置发生改变后才会进行更新,因此不是每次启动都能看到"Update ESCD... Success"这样的信息。不过,某些主板的BIOS在保存ESCD数据时使用了与Windows 9x 不相同的数据格式,于是Windows 9x在每一次启动都会把ESCD 数据转换成自己的格式,导致BIOS每次重新启动时都认为是硬件配置发生变化,并重新改写ESCD数据,这就是为什么有的计算机在每次启动时都会显示"Update ESCD... Success"信息的原因。

操作系统的发展史及特点

操作系统的发展史及特点 1.CP/M系统 计算机语言百花争妍的七十年代,计算机本身正向微型化方向发展。1971年,Intel 公司成功地研制出了四位Intel 4004芯片,1973年,又研制成功八位Intel 8086芯片。微型机的诞生,已经指日可待。 七十年代中期,台式微机,工作站,超级微机,膝上机相继面世,“谁来指挥他们”,人们千呼万唤。 事实上,早在1972年,AMAA(美国微型机协会)就悄悄地为一个“指挥系统”作临产前的准备了,他们用PL/M程序设计语言为Intel 8086编写了纸带编辑程序ED。1973年,PL/M 的创始人Gary Kildall博士决定“挂帅亲征”,很快在DEC公司的主机TOPS-10上,培植成功一个管理程序和数据的“胚胎”。博士旗开得胜,感觉当然是“味道好极了!”,但Intel 公司及其它著名电脑公司却对此充耳不闻,这使“元帅”和“士兵”们很是光火,1974年,“胚胎”得以向全世界公布:版本号V1.3;大名:CP/M;全称:Control Program/Monitor (控制程序或监控程序)。 虽然CP/M V1.3 是为肩任“控制程序和数据”的“上帝”而来的,但“上帝一世”却颇受冷落,电脑业者依旧冷眼旁观。1975年,CP/M V1.4 继承“王位”,开始大造舆论,加之Kildall 博士创建了Digital Research(数字研究公司),为CP/M呐喊欢呼,CP/M陆续被各国微机厂商采用,围绕他的软件也爆炸般地得到了开发。CP/M变红发紫,神话般普及,被推崇为“标准八位机软件总线”,Kildall 博士更是声名远播。 CP/M其实就是第一个微机操作系统,享有指挥主机、内存、磁鼓、磁带、磁盘、打印机等硬设备的特权。通过控制总线上的程序和数据,操作系统有条不紊地执行着人们的指令,如同指挥一台晚会或乐队,高效率地合奏美妙的乐章。 繁荣的CP/M家族不断添丁。运行在Intel 8080芯片上的CP/M—80;运行在8088、8086芯片上的叫CP/M—86;而在Motorola(摩托罗拉)68000 上运行的CP/M叫做CP/M-68K。CP/M—80、CP/M—86、CP/M-68K等组成了庞大的CP/M家族。 单用户的CP/M—80操作系统,后来发展成多用户的MP/M—80,单用户的CP/M—86又发展成并发的CP/M—86和多用户MP/M— 86,它们成为家族的新生力量。 CP/M开创了软件的新纪元,称得上是计算机改朝换代的里程碑。 2.DOS系统 七十年代末期,CP/M后院起火,其微机操作系统霸主地位开始动摇。 1979年,IBM公司为开发16位微处理器Intel 8086,请微软公司(Microsoft)为IBM PC 设计一个磁盘操作系统,微软公司慷慨承诺,但当时手头仅有XENIX操作系统,XENIX操作系统要求处理器支持存贮管理和保护设备的功能,可PC机的CPU 8086/8088 均不具备此功能。微软公司急于满足PC机的要求,购买了由西雅图公司工程师Tim Paterson研制的、可在8088上运行的CP/M—86“无性系”——SCP—DOS操作系统的销售权,将SCP—DOS改称MS—DOS V1.0发表。为避“偷梁换柱”的嫌疑,微软公司又于1981年8月推出了支持内存为320KB 的MS-DOS 1.1版。由于蓝色巨人的推波助澜,操作系统软件市场几乎一夜之间呈现出一边倒的局面,CP/M地位岌岌乎可危。 随后,IBM 公司向微软公司购得MS-DOS使用权,将其更名为PC-DOS 1.0。MS-DOS又称PC-DOS,就是这个原因。 MS-DOS取得巨大成功的原因在于它的最初设计思想及其追求目标的正确和恰当,那就是为用户上机操作和应用软件开发提供良好的外部环境。首先使用户可以非常方便的使用几十个DOS命令,或以命令行方式直接键入或在DOS4.0以上版本下以DOS Shell菜单驱动,

操作系统实验-第二讲、操作系统的启动

操作系统 实验报告 哈尔滨工程大学 计算机科学与技术学院

第二讲操作系统的启动 一、实验概述 1. 实验名称 操作系统的启动 2. 实验目的 1)、跟踪调试eos在pc机上从加电复位到成功启动的全过程,了解操作系统的启动过程。 2)、查看eos启动后的状态和行为,理解操作系统启动后的工作方式。 3. 实验类型(验证、设计) 验证 4. 实验内容 1)、启动OS Lab。 2)、新建一个EOS Kernel 项目。 3)、在“项目管理器”窗口中打开boot 文件夹中的boot.asm 和loader.asm 两个汇编文件。boot.asm 是软盘引导扇区程序的源文件,loader.asm 是loader 程序的源文件。简单阅读一下这两个文件中的NASM 汇编代码和注释。 4)、按F7 生成项目。 5)、生成完成后,使用Windows 资源管理器打开项目文件夹中的Debug 文件夹。找到由boot.asm 生成的软盘引导扇区程序boot.bin 文件,该文件的大小一定为512 字节(与软盘引导扇区的大小一致)。找到由loader.asm 生成的loader 程序loader.bin 文件,记录下此文件的大小1566 字节,在下面的实验中会用到。找到由其它源文件生成的操作系统内核文件kernel.dll。 二、实验环境 进行实验使用的操作系统、编译器、语言及工具等。 操作系统:Windows XP 编译器:Tevalaton OS Lab 语言:C++

三、实验过程(每次实验不一定下面6条都写,根据实际情况定) *需要解决的问题以及解答 (1)、自己设计两个查看内存的调试命令,分别验证这两个用户可用区域的高地址端也是空白的。 答:命令为:xp /512b 0x7a00和cp /512v 0x9fe00。因为第一个用户区的高位地址截止到0x7c00,第二个用户区高位地址截止到0xA0000,命令表示显示从0x7a00和0x9fe00以后512b空间的所有字节码,即两个用户区的高位地址端,可以看到所有字节全为0,说明高地址端是空白的。如图一、图二所示。(2)、自己设计一个查看内存的调试命令,验证上位内存的高地址端已经被系统占用。 答:命令为:xp /512b 0xffe00。因为上位内存的高位地址截止到0x100000,命令表示显示从0xffe00以后的512b空间的所有字节码,即两个用户区的高位地址端。可以看到所有字节都有值,说明高地址端被占用。如图三所示。(3)、根据之前记录的loader.bin文件的大小,自己设计一个查看内存的调试命令,查看内存中loader程序结束位置的字节码,并与loader.lst文件中最后指令的字节码比较,验证loader程序被完全加载到了正确的位置。 答:命令为xp /8b 0x1616.程序的初始位置为0x1000,加上1566的十六进制61E-8b,答案即为1616.如图四、图五、图六、图七所示。 (4)、仔细比较实验指导10-5图和10-6图,尝试说明哪个是应用程序的进程,它和系统进程有什么区别,那个是应用程序的主线程,它和系统线程有什么区别? 答:进程列表中ID为31的进程是应用程序的进程,其优先级为8,包含1个线程,主线程ID为33,映像名称为a:\hello.exe。而ID为1的是系统进程,其优先级为24,包含有10个线程,其中的ID为2的线程是该进程的主线程,系统进程没有映像名称。主要区别为:应用程序的进程优先级较低。 线程列表中ID为33的线程是应用程序的线程,其优先级为8,处在阻塞状态,而ID为20~28的是系统进程,其优先级为24,其中ID为22的处于运行状态

开机启动项设置

开始--运行--输入msconfig 回车打开的对话框里 “一般”选项里选择:有选择启动,去掉“处理SYSTEM文件”,去掉“处理WIN文件”。 “启动”选项里先选择全部禁用,然后留下CTFMON,如果装有杀毒软件则留下杀毒软件启动项,其他可全关。 然后重起或者注销,会有提示,把对话框打上钩---确定 其他就别乱动了 开机启动项

【启动项目就是开机的时候系统会在前台或者后台运行的程序】 当Windows(操作系统)完成登录过程,进程表中出现了很多的进程!Windows在启动的时候,自动加载了很多程序。 许多程序的自启动,给我们带来了很多方便,这是不争的事实,但不是每个自启动的程序对我们都有用;更甚者,也许有病毒或木马在自启动行列! 其实Windows2000/XP中的自启动文件,除了从以前系统中遗留下来的Autoexec.bat文件中加载外,按照两个文件夹和9个核心注册表子键来自动加载程序的。 【启动项分解】 1)“启动”文件夹──最常见的自启动程序文件夹。 它位于系统分区的“documents and Settings-->User-->〔开始〕菜单-->程序”目录下。这时的User指的是登录的用户名。 2)“All Users”中的自启动程序文件夹──另一个常见的自启动程序文件夹。

它位于系统分区的“documents and Settings-->All User-->〔开始〕菜单-->程序”目录下。前面提到的“启动”文件夹运行的是登录用户的自启动程序,而“All Users”中启动的程序是在所有用户下都有效(不论你用什么用户登录)。 3)“Load”键值── 一个埋藏得较深的注册表键值。 位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\loa d〕主键下。 4)“Userinit”键值──用户相关 它则位于〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogo n\Userinit〕主键下,也是用于系统启动时加载程序的。一般情况下,其默认值为“userinit.exe”,由于该子键的值中可使用逗号分隔开多个程序,因此,在键值的数值中可加入其它程序。 5)“Explorer\Run”键值──与“load”和“Userinit”两个键值不同的是,“Explorer\Run”同时位于〔HK EY_CURRENT_USER〕和〔HKEY_LOCAL_MACHINE〕两个根键中。

操作系统的发展历程

操作系统的发展历程 操作系统有:1.DOS操作系统;2.Mac OS操作系统;3.Windows 系统;4.Unix系统;5.Linux系统;6.OS/2系统; 一、 DOS操作系统 DOS是Diskette Operating system的缩写,意思是磁盘操作系统。DOS是1981~1995年的个人电脑上使用的一种主要的操作系统。由于早期的DOS系统是由微软公司为IBM的个人(PC)电脑开发的,故而即称之为PC-DOS,又以其公司命名为MS-DOS,因此后来其他公司开发的与MS-DOS兼容的操作系统,也延用了这种称呼方式,如:DR-DOS、Novell-DOS ....,以及国人开发的汉字DOS(CC-DOS)等等。 MS-DOS发展,从早期1981年不支持硬盘分层目录的DOS1.0,到当时广泛流行的DOS3.3,再到非常成熟支持CD-ROM的DOS6.22,以及后来隐藏到Windows9X下的DOS7.X,前前后后已经经历了20年,至今仍然活跃在PC舞台上,扮演着重要的角色。 DOS是在直接内存下运行,程序设计员只能在1MB以下的存储器上操作。DOS容许使用的内存空间只有640KB(其他的348KB为ROM BIOS和其他卡所保留),在DOS下无法运行超过640KB的大程序。 DOS系统是字符式的操作系统,所有操作都通过键盘输入“命令行”来执行。微软公司推出它的Windows操作系统以后,由于

Windows操作系统的几乎所有操作都可以通过鼠标的点击来完成,不必再去记忆繁杂的命令,也省去了键盘输入“命令行”的操作。这种对用户友好的操作界面,使得Windows操作系统很快的就占据了PC 舞台上主角位置,而把DOS推倒了舞台的边缘。但是,为了一些特定的需要,Windows操作系统里保留了DOS命令形式,在需要时在系统的内存中拿出640K的内存,开辟出虚拟一个DOS运行的环境(“虚拟机”)来执行DOS命令。这种Windows操作系统里开辟的DOS运行环境,只不过是Windows操作系统里面的许多窗口中的一个窗口而已,它与Windows操作系统出现之前dos独占系统的全部资源的情况已大不相同。 “纯DOS”就是相对于这种情况而言的:不打开windows系统,只用软盘或其他媒体(如光盘、U盘等)启动机器,进入DOS系统,这时的DOS独享系统的全部资源,这时的环境状态就叫“纯DOS”状态。由于没有打开windows系统,所以与windows有关的一切软件、病毒、木马......,都不能起作用,不能控制你的任何资源,从而你可以在这种环境里,把那些你不想要的东东清理干净! 1981年,MS-DOS 1.0发行,作为IBM PC的操作系统进行捆绑发售,支持16k内存及160k的5寸软盘。在硬件昂贵,操作系统基本属于送硬件奉送的年代,谁也没能想到,微软公司竟会从这个不起眼的出处开始发迹。 1982年,支持双面磁盘。 1983年MS-DOS 2.0随IBM XT发布,扩展了命令,并开始支持5M硬

Windows启动过程详解

Windows启动过程详解 我们每天都在和Windows打交道,很多人可能每天都要面对多次W indows的启动过程,可是您知道在Windows的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启动分为几个步骤?在这些步骤中计算机中发生了什么事情?这些就是本文试图告诉您的。 本文的适用范围 随着技术的发展,我们能够见到的计算机硬件种类越来越多。以计算机上最重要的组件CPU来说,目前就有很多选择。当然,这里的选择并不是说AMD或者Intel这种产品品牌,而是指其内部的体系结构。目前常见的CPU体系结构主要基于复杂指令集(Complex I nstruction Set Computing,CISC)或者精简指令集(Reduced Ins truction Set Computing,RISC),我们常用的Intel的Pentium、C eleron系列以及AMD的Athlon、Sempron系列都是基于复杂指令集的,而这些基于复杂指令集的CPU还有32位和64位的寄存器数据带宽区别。关于这些指令集以及寄存器数据带宽之间的区别等内容比较繁杂,而且不是本文的重点,感兴趣的朋友可以自己在网上搜索相关内容。因为CPU种类的不同,在不同CPU的系统中运行的Wind ows的启动过程也有一些小的不同。本文将会以目前来说最普遍的,在x86架构的系统上安装的32位Windows XP Professional为例向

您介绍。 基本上,操作系统的引导过程是从计算机通电自检完成之后开始进行的,而这一过程又可以细分为预引导、引导、载入内核、初始化内核,以及登录这五个阶段。 在继续阅读之前,首先请注意图1,这是Windows XP的操作系统结构,其中包括了一些在后台工作的组件以及经常和我们打交道的程序。在了解Windows XP的启动过程之前,对系统结构有一个初步概念是很重要的。

计算机操作系统(第四版)课后习题答案第二章

第二章 1. 什么是前趋图?为什么要引入前趋图? 答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。 2. 画出下面四条诧句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a-b; S4=w:=c+1; 答:其前趋图为: 3. 为什么程序并发执行会产生间断性特征? 程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的进程之间,形成了相互制约的关系,从而也就使得进程在执行期间出现间断性。 4. 程序并发执行时为什么会失去封闭性和可再现性? 因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。而程序一旦失去了封闭性也会导致其再失去可再现性。 5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响? 为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,从而在操作系统中引入了进程概念。影响: 使程序的并发执行得以实行。 6. 试从动态性,并发性和独立性上比较进程和程序? a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体。 b. 并发性是进程的重要特征,同时也是OS的重要特征。引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身是不能并发执行的。 c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。而对于未建立任何进程的程序,都不能作为一个独立的单位来运行。 7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标志? a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操作系统所需的用于描述进程情况及控制进程运行所需的全部信息。因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。 b. 在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志。 11.试说明进程在三个基本状态之间转换的典型原因。 答:(1)就绪状态→执行状态:进程分配到CPU资源(2)执行状态→就绪状态:时间片用完(3)执行状态→阻塞状态:I/O请求(4)阻塞状态→就绪状态:I/O完成 12.为什么要引入挂起状态?该状态有哪些性质? 答:引入挂起状态处于五种不同的需要: 终端用户需要,父进程需要,操作系统需要,对换需要和负荷调节需要。处于挂起状态的进程不能接收处理机调度。10.在进行进程切换时,所要保存的处理机状态信息有哪些?答:进行进程切换时,所要保存的处理机状态信息有:(1)进程当前暂存信息(2)下一指令地址信息(3)进程状态信息(4)过程和系统调用参数及调用地址信息。13.在进行进程切换时,所要保存的处理机状态信息有哪些? 答:进行进程切换时,所要保存的处理机状态信息有: (1)进程当前暂存信息 (2)下一指令地址信息 (3)进程状态信息 (4)过程和系统调用参数及调用地址信息。 14.试说明引起进程创建的主要事件。答:引起进程创建的主要事件有:用户登录、作业调度、提供服务、应用请求。 15.试说明引起进程被撤销的主要事件。答:引起进程被撤销的主要事件有:正常结束、异常结束(越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O 故障)、外界干预(操作员或操作系统干预、父进程请求、父进程终止)。 16.在创建一个进程时所要完成的主要工作是什么? 答:(1)OS 发现请求创建新进程事件后,调用进程创建原语Creat();(2)申请空白PCB;(3)为新进程分配资源;(4)初始化进程控制块;(5)将新进程插入就绪队列. 17.在撤销一个进程时所要完成的主要工作是什么? 答:(1)根据被终止进程标识符,从PCB 集中检索出进程PCB,读出该进程状态。(2)若被终止进程处于执行状态,立即终止该进程的执行,臵调度标志真,指示该进程被终止后重新调度。(3)若该进程还有子进程,应将所

详细开机自启动策略

一、经典的启动——“启动”文件夹 单击“开始→程序”,你会发现一个“启动”菜单,这就是最经典的Windows启动位置,右击“启动”菜单选择“打开”即可将其打开,如所示,其中的程序和快捷方式都会在系统启动时自动运行。最常见的启动位置如下:当前用户: 所有用户: 二、有名的启动——注册表启动项 注册表是启动程序藏身之处最多的地方,主要有以下几项: 1.Run键 Run键是病毒最青睐的自启动之所,该键位置是[HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Run]和[HKEY_ LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run],其下的所有程序在每次启动登录时都会按顺序自动执行。 还有一个不被注意的Run键,位于注册表[HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\Explorer\Run],也要仔细查看。 2.RunOnce键 RunOnce位于[HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\RunOnce]和[HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\RunOnce]键,与Run不同的是,RunOnce下的程序仅会被自动执行一次。 3.RunServicesOnce键 RunServicesOnce键位于[HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\RunServicesOnce]和[HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]下,其中的程序会在系统加载时自动启动执行一次。 4.RunServices键 RunServices继RunServicesOnce之后启动的程序,位于注册表 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServi ces]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ RunServices]键。 5.RunOnceEx键 该键是Windows XP/2003特有的自启动注册表项,位于[HKEY_ CURRENT_USER\\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce Ex]。 6.load键 [HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Window s]下的load键值的程序也可以自启动。 7.Winlogon键 该键位于位于注册表[HKEY_CURRENT_USER\SOFTWARE\

操作系统发展史

CP/M系统 计算机语言百花争妍的七十年代,计算机本身正向微型化方向发展。1971年,Intel 公司成功地研制出了四位Intel 4004芯片,1973年,又研制成功八位Intel 8086芯片。微型机的诞生,已经指日可待。 七十年代中期,台式微机,工作站,超级微机,膝上机相继面世,“谁来指挥他们”,人们千呼万唤。 事实上,早在1972年,AMAA(美国微型机协会)就悄悄地为一个“指挥系统”作临产前的准备了,他们用PL/M程序设计语言为Intel 8086编写了纸带编辑程序ED。1973年,PL/M的创始人Gary Kildall博士决定“挂帅亲征”,很快在DEC公司的主机TOPS-10上,培植成功一个管理程序和数据的“胚胎”。博士旗开得胜,感觉当然是“味道好极了!”,但Intel 公司及其它著名电脑公司却对此充耳不闻,这使“元帅”和“士兵”们很是光火,1974年,“胚胎”得以向全世界公布:版本号V1.3;大名:CP/M;全称:Control Program/Monitor (控制程序或监控程序)。 虽然CP/M V1.3 是为肩任“控制程序和数据”的“上帝”而来的,但“上帝一世”却颇受冷落,电脑业者依旧冷眼旁观。1975年,CP/M V1.4 继承“王位”,开始大造舆论,加之Kildall 博士创建了Digital Research(数字研究公司),为CP/M呐喊欢呼,CP/M陆续被各国微机厂商采用,围绕他的软件也爆炸般地得到了开发。CP/M变红发紫,神话般普及,被推崇为“标准八位机软件总线”,Kildall 博士更是声名远播。 CP/M其实就是第一个微机操作系统,享有指挥主机、内存、磁鼓、磁带、磁盘、打印机等硬设备的特权。通过控制总线上的程序和数据,操作系统有条不紊地执行着人们的指令,如同指挥一台晚会或乐队,高效率地合奏美妙的乐章。 繁荣的CP/M家族不断添丁。运行在Intel 8080芯片上的CP/M—80;运行在8088、8086芯片上的叫CP/M—86;而在Motorola(摩托罗拉)68000 上运行的CP/M 叫做CP/M-68K。CP/M—80、CP/M—86、CP/M-68K等组成了庞大的CP/M家族。 单用户的CP/M—80操作系统,后来发展成多用户的MP/M—80,单用户的CP/M—86又发展成并发的CP/M—86和多用户MP/M— 86,它们成为家族的新生力量。 CP/M开创了软件的新纪元,称得上是计算机改朝换代的里程碑。 DOS系统 七十年代末期,CP/M后院起火,其微机操作系统霸主地位开始动摇。 1979年,IBM公司为开发16位微处理器Intel 8086,请微软公司(Microsoft)为IBM PC设计一个磁盘操作系统,微软公司慷慨承诺,但当时手头仅有XENIX 操作系统,XENIX操作系统要求处理器支持存贮管理和保护设备的功能,可PC

win7开机启动项设置-服务

下面我说的是WIN7的服务.... Adaptive Brightness 监视氛围光传感器,以检测氛围光的变化并调节显示器的亮度。如果此服务停止或被禁用,显示器亮度将不根据照明条件进行调节。该服务的默认运行方式是手动,如果你没有使用触摸屏一类的智能调节屏幕亮度的设备,该功能就可以放心禁用。 Application Experience 在应用程序启动时为应用程序处理应用程序兼容性缓存请求。该服务的默认运行方式是自动,建议手动。 Application Information 使用辅助管理权限便于交互式应用程序的运行。如果停止此服务,用户将无法使用辅助管理权限启动应用程序,而执行所需用户任务可能需要这些权限。该服务的默认运行方式是手动,不建议更改。 Application Layer Gateway Service 为Internet 连接共享提供第三方协议插件的支持

如果装有第三方防火墙且不需要用ICS方式共享上网,完全可以禁用掉。 Application Management 为通过组策略部署的软件处理安装、删除以及枚举请求。如果该服务被禁用,则用户将不能安装、删除或枚举通过组策略部署的软件。如果此服务被禁用,则直接依赖于它的所有服务都将无法启动。该服务默认的运行方式为手动,该功能主要适用于大型企业环境下的集中管理,因此家庭用户可以放心禁用该服务。 Ati External Event Utility 装了ATI显卡驱动的就会有这个进程,建议手动。 Background Intelligent Transfer Service 使用空闲网络带宽在后台传送文件。如果该服务被禁用,则依赖于 BITS 的任何应用程序(如 Windows Update 或 MSN Explorer)将无法自动下载程序和其他信息。这个服务的主要用途还是用于进行WindowsUpdate或者自动更新,如果是采用更新包来更新的话,完全可以禁用。 Base Filtering Engine

电脑启动过程详解

电脑从按完开关加电开始直到进入到系统桌面的整个过程详解本文以Windows2000/xp和Windows Vista/7两个内核做讲解 电脑从加电到进桌面可以分为两大部分: 无论是Windows2000/XP还是Windows Vista/7,在硬件自检方面都是想同的,不同的是在系统加截。 硬件部分: 在讲解前,我们先来了解几个概念: BIOS:即“Basic Input/Output System”(基本输入输出系统),它是一组被“固化”在计算机主板上的一块 ROM 中直接关联硬件的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制,它包括系统 BIOS(主板 BIOS).其它设备 BIOS(例如 IDE 控制器 BIOS、显卡 BIOS 等)其中系统 BIOS 占据了主导地位.计算机启动过程中各个 BIOS 的启动都是在它的控制下进行的。 CMOS:即“Complementary Metal-Oxide-Semiconductor”(互补金属氧化物半导体),它本是计算机系统内一种重要的芯片,保存了系统引导最基本的资料。 内存地址:我们知道,内存空间的最基本单位是位,8 位视为一个字节,即我们常用的单位 B,内存中的每一个字节都占有一个地址(地址是为了让 CPU 识别这些空间,是按照 16 进制表示的),而最早的 8086 处理器只能识别 1MB(2 的 20 次方 B)的空间,这 1MB 内存中低端(即最后面)的 640KB 就被称为基本内存,而剩下的内存(所有的)则是扩展内存。这 640KB 的空间分别由显存和各 BIOS 所得。 我们来看一下硬件部分的流程图:

相关主题
文本预览
相关文档 最新文档