Staf学习资料

Staf学习资料

ID:37512507

大小:213.50 KB

页数:51页

时间:2019-05-24

Staf学习资料_第1页
Staf学习资料_第2页
Staf学习资料_第3页
Staf学习资料_第4页
Staf学习资料_第5页
资源描述:

《Staf学习资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在STAF中有三个核心服务,它们分别是handle(句柄)、variable(变量)和queue(队列)服务。这些服务提供了最基本的公共功能,并跨越了所有的服务。同时也为我们提供了一个持续构建的基础。一点也不奇怪,这些服务展现了STAF中handles、variables和queuing的能力。       Handles用来识别并封装STAF环境中的应用程序的数据。当一个应用程序希望使用STAF时,它会通过调用一个注册的API以获得一个handle(句柄)。返回的handle会特别地指向注册的应用程序。一般来说,应用程序与handles之间是1对N(多)的映射关系。一个应用程序可

2、以有多个handle,但任意一个给定的handle只属于一个单个的应用程序。然而,STAF不支持特殊的“static”(静态)handles,而这些handles可在应用程序之间共享。每个STAF的handle都有一个与之关联的信息queue(队列)。这个队列允许应用程序接收来自于其他应用和服务的数据。它也构成了STAF中本地和面向网络的IPC(进程间通信)的基础。很多服务都是通过它的队列来向应用程序发送数据的。这些队列允许应用程序以事件驱动的方式工作,类似于许多窗口系统所使用的方法。       通过STAF的变量(服务),STAF能够提供数据管理的功能。STAF应用程序使用的这

3、些STAF变量的方法与编程语言使用变量的方法大致相同。在提交了一个STAF请求时,请求中的变量会被他们的值所替换。STAF变量(服务)有一个强大的功能是可以在运行的应用程序的范围之外对变量进行修改。这个功能提供了一个能力,就是可以动态地修改应用程序的特性。       例如,设计一个程序,用来向系统施加一定百分比的负载,而此程序可能允许我们通过一个环境变量或者一个命令行参数来设定这个百分比。在这种情况下,程序一旦开始运行,改变负载百分比的唯一方法就是停止程序,修改环境变量或命令行参数,并重启程序。而使用STAF变量则可以在不停止程序的情况下修改负载百分比的值。对程序所做的唯一修改也

4、仅仅是让程序周期性的重新评估STAF变量的值。这些STAF变量被保存在变量池中。每一个STAFhandle(句柄)都具有唯一的,且为对应的应用程序所特有的变量池。STAF也会提供一个全局变量池,一个给定的STAF系统上所有句柄公用的变量池。此公共性允许我们在全局变量池中设定默认值,然后按照各个句柄的访问顺序覆盖这些默认值。       除了handle(句柄),variable(变量)和queue(队列),STAF还提供其他几项服务。STAF通过semaphore(信号量)和resourcepool(资源池)服务提供同步功能。其中,信号量服务提供两种信号量的操作:mutualexc

5、lusion(mutex--同时共享排他性,即互斥)和事件信号量。与通常由操作系统提供的信号量相比,STAF信号量具有两个优点。一,可通过网络远程使用。二,更加可视化,这意味他们也更为简单,例如,要判断谁拥有一个mutex(互斥)信号量和谁正在等待一个event(事件)信号量。而资源池服务则为管理已命名的,如machines(机器)、useridentifiers(用户ID)和licenses(许可)等资源池,提供了一个管理手段。特别的是,它提供了对池内容进行管理,以及同步存取池中元素的特性。       STAF通过process(进程)服务来执行STAF系统上的进程启动、停止和

6、查询操作。它可以对进程的执行进行详细地控制,包括明确的环境变量、工作目录、输入/输出重定向,以及有效的用户ID。进程服务也能应用户的要求,在进程结束时发送通知。这些通知通过前面描述的队列功能发送。       STAF通过filesystem(文件系统)服务提供文件系统功能。目前,这个服务为文件的传送和文件内容的存取提供了理论依据。STAF的未来版本会把此服务的功能扩展到文件和目录的管理中,如目录的创建和枚举,以及文件或目录的删除。       通过log(日志)服务,STAF提供日志记录功能。在最基础的层上,此服务根据各个级别,如“FATAL”、“ERROR”、“WARING”以

7、及“DEBUG”,提供时间戳(time-stamped)类消息的日志记录。各种更高级别的功能都建立在这个基础之上,包括本地和集中式的日志记录、程序间的日志共享、动态的level-masking(级别遮盖),以及活跃态日志的维护。动态的level-masking有其特殊的意义。级别遮盖指用户能够判断日志记录的级别,以确定把哪种级别的记录保存在日志文件中。未包含在级别遮盖中的记录级别的信息会被丢弃。事实上这个特性是动态的,意味着我们可以在程序运行时,修改级别遮盖。例如,用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。