与其他系统接口设计书(操作系统接口设计)

网友投稿 214 2022-12-26


本篇文章给大家谈谈与其他系统接口设计书,以及操作系统接口设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享与其他系统接口设计书的知识,其中也会对操作系统接口设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求操作系统接口:Windows命令接口 设计(C++编的) 谢谢

基于XML的配置文件访问接口设计和实现(1)
目录
摘要
配置文件结构
XmlConfigReader类的实现
XmlConfigReader类的使用
摘要
在进行程序开发过程中,经常要将一些程序设置/使用的信息储存起来.由于这些信息和程序的设置/使用相关,与程序有相当的独立性,所以不可能硬编码到程序中.在这个时候我们选择使用基于Xml的配置文件进行存储.Microsoft的.NET Framework提供了一系列的基于.Config文件的读取的类,如System.Configuration 命名空间提供的AppSettings等类.但是此命名空间提供的类只能对配置文件进行读取,不能进行设置.所以在这里,我们实现自己的一个基于Xml的配置文件的类XmlConfigReader/XmlConfigWriter.
配置文件的结构
为了达到与原有的,系统自带的(.Config)配置文件的兼容性,我们选择使用类似.Config 文件的结构.示例如下:
<?xml version="1.0" encoding="utf-8" ?
<configuration
<appSettings
<add key="TimeOut" value="5000"/
<add key="UserName" value="client7" /
<add key="FileServerPort" value="8050" /
<add key="SpliteCharsForCMD" value=":"/
<add key="SpliteCharsForItem" value=";"/
<add key="SpliteCharsForSubItem" value=","/
</appSettings
<SockBaseSettings
<addd key="ServerIP" value="localhost"/
</SockBaseSettings
</configuration
所有的要设置的信息都放在Configuration节点的子节点(如appSettings/SockBaseSettings)的子节点中,这种结构有助于将不同的设置的信息进行归类/统一.结构和系统的.Config结构基本类似.这样就可以很方便的将此自定义的结构转为.Config文件.
XmlConfigReader类的实现
现在文件的基本结构已完成了,现在就开始编码,完成XmlConfigReader.
由于配置文件是以文件的形式放在硬盘上面的,所以这个XmlConfigReader类在解析Xml文件前得得到文件的路径.
public class XmlConfigReader
{
private string _filepath;
public XmlConfigReader(string filepath){
_filepath = Path.GetFullPath(filepath).ToUpper();
}
}
好,现在可以得到文件路径了.然后就是对配置文件进行解析了.在这里,我们选用.NET Framework提供的System.Xml命名空间中的轻量级的XmlTextReader来对配置文件进行解析.对应的XmlConfigReader中的函数定义如下:
public string Process(string sectionName,string key){
bool inConfiguration = false;
bool inSection = false;
string values;
XmlTextReader reader = new XmlTextReader(_filepath);
while( reader.Read()){
if( reader.IsStartElement()){
if( reader.Prefix == String.Empty)
{
if( reader.LocalName == "configuration")
{
inConfiguration = true;
}
else if( inConfiguration == true){
if( reader.LocalName == sectionName){
inSection = true;
}
else if( inSection reader.LocalName == "add"){
if( reader.GetAttribute("key") == null || reader.GetAttribute("value") == null)
{
throw new Exception(sectionName + " key or value is null");
}
if( reader.GetAttribute("key") == key){
values = reader.GetAttribute("value");
break;
}
}
}
}
}
}
reader.Close();
return values;
}
通过XmlTextReader的Read()函数对Xml文件中的节点进行遍历.同时先判断是否属于configuration节点中,再判断是否属于相应的sectionName中.只有在这两部分同时成立的时候才判断是否是相应的Key.如果是,得到其Value,并返回.
XmlConfigReader类的使用
好了,现在通过XmlConfigReader可以对配置文件进行读取了,这里我们看看实际使用的代码:
public class TestXmlConfigReader{
public void GetValues(){
XmlConfigReader reader = new XmlConfigReader(@"AppConfig.xml");
String Temp;
// Get appSettings username value
Temp = reader.Process("appSettings",”UserName");
// Get SockBaseSettings ServerIP value
Temp = Reader.Process(“SockBaseSettings”,”ServerIP”);
}
}
总结
通过XmlConfigReader类,我们可以很方便的自定义我们自己的配置文件.
基于XML的配置文件访问接口设计和实现(2)
目录
摘要
XmlConfigWriter类的实现
XmlConfigWriter类的使用
摘要
在进行程序开发过程中,经常要将一些程序设置/使用的信息储存起来.由于这些信息和程序的设置/使用相关,与程序有相当的独立性,所以不可能硬编码到程序中.在这个时候我们选择使用基于Xml的配置文件进行存储.Microsoft的.NET Framework提供了一系列的基于.Config文件的读取的类,如System.Configuration 命名空间提供的AppSettings等类.但是此命名空间提供的类只能对配置文件进行读取,不能进行设置.所以在这里,我们实现自己的一个基于Xml的配置文件的类XmlConfigReader/XmlConfigWriter.
XmlConfigWriter类的实现
由于要对配置文件进行写入,而且可能写入的次数比较多.所以这里我们不使用轻便的XmlTextWriter,使用XmlDocument.XmlDocument可以在内存中修改所有的Xml的节点,只有等到显式的调用Save函数的时候才会保存Xml文件.在有大量修改的时候,性能要好一些.
同样的,先实现XmlConfigWriter的构造函数
public class XmlConfigWriter
{
private string _filepath;
private XmlDocument doc ;
public XmlConfigWriter(string filepath)
{
_filepath = Path.GetFullPath(filepath);
doc =new XmlDocument();
doc.Load(_filepath);
}
}
通过构造函数,将配置文件的路径传进去,同时调用XmlDocument的Load方法,将此文件加载到内存中.
这里我们使用的是XmlDocument类.它实现 W3C 文档对象模型 (DOM) 级别 1 核心 (Level 1 Core) 和核心 DOM 级别 2 (Core DOM Level 2)。DOM 是 XML 文档的内存中(缓存)树状表示形式,允许对该文档的导航和编辑.通过XmlDocument,我们就可以很方便的在内存中直接操作节点.
.对配置文件的写入,不外忽三种,一种就是新插入一个节点,一种就是对现有节点的修改,最后一个就是删除现有的节点.我们首先从插入开始入手.代码如下:
private XmlNode CreateXmlNode(string localname){
return doc.CreateNode(XmlNodeType.Element,localname,"");
}
private XmlAttribute CreateXmlAttribute(string localname){
return doc.CreateAttribute("",localname,"");
}
public void AddSection(string section){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+section);
if(secNode != null){
return;
}
doc.DocumentElement.AppendChild(CreateNode(section));
}
public void AddKey(string section,string key,string value){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+section);
if( doc.SelectSingleNode("/configuration/" + section + "/add[@key=\"" + key + "\"]") != null)
{
return;
}
XmlNode chi = CreateXmlNode("add");
XmlAttribute att = CreateXmlAttribute("key");
att.Value = key;
chi.Attributes.Append(att);
att = CreateXmlAttribute("value");
att.Value = value;
chi.Attributes.Append(att);
secNode.AppendChild(chi);
}
对于配置文件的插入,有两种情况,一个就是插入一个新的Section节点(即appSettings/SockBaseSettings这样的节点),一个就是在当前的Section节点下面插入一个新的add节点.在上面的代码中,对于插入节点的操作,都是首先通过doc的SelectSingleNode函数来判断是否已存在此同名节点,如果存在,则直接return,避免创建同名的节点.但是,由于在最终使用的add节点是分属于不同的Section节点的,所以只是判断在同一个Section节点下面的此节点不能同名.
如果不存在同名的节点,就通过secNode.AppentChild函数将此新建的(通过CreateXmlNode函数)节点加入到doc对象中.同时,对于add节点,通过CreateXmlAttribute函数及XmNode.Attributes.Appent函数将其key / value属性加入到此节点中.这样,插入操作就完成了.
接着我们来完成删除操作.删除操作直接通过XmlDocument的SelectSingleNode得到目标节点的父节点,再通过XmlNode.RemoveChild操作将其删除.代码如下:
public void DeleteSection(string section){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+section);
doc.DocumentElement.RemoveChild(secNode);
}
public void DeleteKey(string section,string key){
XmlNode secNode = doc.SelectSingleNode("/configuration/" + section + "/add[@key=\"" + key + "\"]");
if(secNode != null)
{
secNode.ParentNode.RemoveChild(secNode);
}
}
现在开始修改操作.对于修改操作,思路是这样的,首先通过XmlDocument的SelectSingleNode搜索,看是否有满足条件的节点.如果没有,直接return,如果存在,则分两情况.对于add节点,只是直接修改其value属性.对于Section节点,则是通过遍历把其下所有的子节点(add节点)得到,再把此Section节点删除,再生成一个新的节点(这个新的节点的Name就为要设置的值),再把得到的所有子节点再赋给这个新的节点.代码如下:
public void ModifySection(string oldSection,string newSection){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+oldSection);
XmlNodeList list = secNode.ChildNodes;
doc.DocumentElement.RemoveChild(secNode);
secNode = doc.CreateNode(XmlNodeType.Element,newSection,"");
foreach( XmlNode i in list){
secNode.AppendChild(i);
}
doc.DocumentElement.AppendChild(secNode);
}
public void ModifyKey(string section,string key,string value){
XmlNode secNode = doc.SelectSingleNode("/configuration/" + section + "/add[@key=\"" + key + "\"]");
if(secNode != null)
{
secNode.Attributes["value"].Value = value;
}
}
好了,插入,修改,删除操作到现在基本完成了,但是现在还只是在内存中进行操作,还不是对实际的文件进行操作.这个时候,我们就还得通过XmlDocument.Save函数把内存中修改好的Xml文件写入到文件中去.代码如下:
public void Save(){
doc.Save(_filepath);
}
public void Save(string filepath)
{
doc.Save(filepath);
}
XmlConfigWriter类的使用
使用方法很简单.先产生一个XmlConfigWriter对象,通过构造函数把配置文件传进去,再通过Add/Modify/Delete等函数进行操作.代码如下:
XmlConfigWriter Writer = new XmlConfigWriter(@”appconfig.xml”);
Writer.AddSection(“appSettings”);
Writer.AddKey(“appSettings”,”ServerIP”,”localhost”);
Writer.ModifyKey(“appSettings”,”ServerIP”,”127.0.0.1”);
Writer.ModifySection(“appSettings”,”SockBaseSettings”);
Writer.DeleteKey(“SockBaseSettings”,”ServerIP”);
Writer.DeleteSection(“SockBaseSettings”);
Writer.Save();
总结
通过编写XmlConfigWriter,我们学会使用XmlDocument的使用.
基于XML的配置文件访问接口设计和实现(3)
目录
摘要
增加缓存支持
增加配置文件监视
增加ConfigurationSettings类
摘要
前面的两篇中,我们实现了XmlConfigReader和XmlConfigWriter的基本功能.由于XmlConfigReader的实现方式是每请求一次,就去解析配置文件一次,性能很低下.同时,为了更方便使用,我们增加一个ConfigurationSettings类,用来调用XmlConfigReader和XmlConfigWriter,使之用起来和System.Configuration中的类使用方式一样.
增加缓存支持
由于XmlConfigReader的实现方式是请求一次,解析配置文件一次,而且配置文件的信息在程序运行的时会大量使用,这样子显然效率太低.因此,这里就要使用到缓存.
缓存,其实就相当于一个静态的变量,在整个程序运行时是唯一的,通过这样的一个变量,把信息存储到这个变量里面,在程序的其它地方就可以直接得到这个信息了.从而避免了频繁的解析配置文件.这里,我们选择使用Hashtable做为缓存变量.
在MSDN中,我们可以查到System.Configuration命名空间中的AppSettings类返回的是一个NameValueCollection(Key/Value键值对).为了方便使用,我们将配置文件解析后的信息也存成NameValueCollection这样的集合.
这样定义好了后,对于Hashtable中的Key设置为Section节点的名字(appSettings/SockBaseSettings),其Value值即为此节点的所有子节点的NameValueCollection类的对象.
修改代码.给XmlConfigReader增加一个静态Hashtable变量,并修改相关函数.把得到的信息直接以NameValueCollection的形式存入到此Hashtable中.
private static Hashtable confTypes = new Hashtable();
private string rootname;
public void Process(){
XmlTextReader reader = new XmlTextReader(_filepath);
while( reader.Read()){
if( reader.IsStartElement()){
#region Analyze the files
if( reader.Prefix == String.Empty)
{
if( reader.LocalName == "configuration")
{
inConfiguration = true;
}
else if( inConfiguration == true){
if(reader.LocalName == "add")
{
if( reader.GetAttribute("key") == null || reader.GetAttribute("value") == null)
{
throw new Exception(rootname + " key or value is null");
}
AddKey(tables,reader.GetAttribute("key"),reader.GetAttribute("value"));
}
else
{
rootname = reader.LocalName;
}
}
}
#endregion
}
else if ( reader.LocalName == "configuration"){
inConfiguration = false;
}
}
reader.Close();
}
private void AddKey(string key,string value){
NameValueCollection collection ;
if(confTypes.ContainsKey( rootname )){
collection = (NameValueCollection) confTypes [rootname];
}
else{
lock(confTypes.SyncRoot){
collection = new NameValueCollection();
confTypes.Add( rootname,collection);
}
}
collection.Add(key,value);
}
上面代码中,我们修改了Process函数.把原来的直接return结果的地方改成调用AddKey函数.通过一个类成员 rootname临时储存当前的SectionName,通过AddKey把得到的Key/Value加入到Hashtable中.
现在这样修改后,就不能直接通过Process得到我们想到得到的Key的Value了.所以我们再写一个函数,
public NameValueCollection GetCollection(string SectionName){
if( confTypes.ContainsKey(SectionName)){
return (NameValueCollection)confTypes[SectionName];
}
else{
throw new Exception(confName + " is not found in XmlConfiguration files");
}
}
这里,我们直接通过SectionName得到此节点所有的子节点的NameValueCollection集合.这样,我们就可以得到我们想要的值了.
增加配置文件监视
上面的代码实现了配置文件的缓存.大大提高了灵活性.但是存在一个问题,就是,如果配置文件修改了,这个缓存不会自动更新.
要解决这个问题,我们得使用FileSystemWatcher这个类,用来订阅文件修改消息,进而更新缓存.由于在第一次解析前就要把此配置文件加入到监视文件表中,所以我们修改XmlConfigReader,增加一个静态的FileSystemWatcher,用来保存监视文件的对象,增加一个静态的Bool值表明是否修改过.再修改构造函数,使配置文件在一开始就加入到监视列表中.代码如下:
Private static FileSystemWatcher watch = new FileSystemWatcher();
Private static bool isModify = true;
public XmlConfigReader(string filepath){
_filepath = Path.GetFullPath(filepath).ToUpper();
watch.IncludeSubdirectories = false;
watch.Path = Path.GetDirectoryName(filepath);
watch.NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
watch.Filter = Path.GetFileName(filepath);
watch.Changed += new FileSystemEventHandler(Change_Even);
watch.EnableRaisingEvents = true;
}
由于是通过事件机制实现文件修改通知的,所以我们还要实现Chane_Even这个函数,通过这个函数修改isModify的值.
private void Change_Even(object sender, FileSystemEventArgs e){
isModify = true;
}
这样子,对于配置文件的监视的代码就完成了,现在就是修改我们的GetCollection代码的时候了.
修改后的代码如下:
public NameValueCollection GetCollection(string SectionName){
if( isModify ){
lock(confTypes.SyncRoot){
confTypes.Clear();
Process();
}
isModify = false;
}
if( confTypes.ContainsKey(SectionName)){
return (NameValueCollection)confTypes[SectionName];
}
else{
throw new Exception(confName + " is not found in XmlConfiguration files");
}
}
到现在,整个XmlConfigReader的代码已完成了,可以实现对文件的监视,从而动态修改缓存中的值.
增加ConfigurationSettings类
为了便于使用,我们增加了一个ConfigurationSettings的类,使用他的用法和System.Configuration命名空间中的类的用法一样.代码定义如下:
public class ConfigurationSettings : XmlConfigWriter
{
private static string _filepath = @"AppConfig.xml";
public static string DefaultFilePath
private static XmlConfigReader reader;
{
get{return _filepath;}
set{_filepath = Path.GetFullPath(value);}
}
public static NameValueCollection AppSettings
{
get{
if( reader == null){
reader = new XmlConfigReader(DefaultFilePath);
}
return reader.GetCollection("appSettings");
}
}
public static NameValueCollection GetConfig(string sectionName){
get{
if( reader == null){
reader = new XmlConfigReader(DefaultFilePath);
}
return reader.GetCollection(sectionName);
}
}

系统接口设计的原则(续)

昨天写到系统接口设计最重要与其他系统接口设计书的原则是与其他系统接口设计书

很开心与其他系统接口设计书的是大家选了黎叔和Richardson的方案与其他系统接口设计书,因为这个方案是最 简单直观 的,并且满足了数据在两个系统的一致性。

还是举昨天的例子,数据在客户系统是这样的:

到我们系统也会生成一样的数据:

我们系统为了生成这条数据,还需要生成一些基础数据:

这个方案的唯一问题是一个正常的SR(一装一卸)被分成了两个SR,一个是提货SR,一个是卸货SR,和我们之前对SR的认知十分不同,除了心里有些小担心之外,暂时也想不出这样会有什么问题。

抛开这个问题,我想用三个词来评价这个解决方案:

嵌入式硬件系统接口电路设计的内容简介

《嵌入式硬件系统接口电路设计》语言简洁,层次分明,每个实例都有具体的设计思路、硬件设计过程、设计小结,为读者提供了完整的嵌入式系统硬件接口电路设计全过程。同时,《嵌入式硬件系统接口电路设计》可为读者提供多媒体电子课件和一些扩展资料,《嵌入式硬件系统接口电路设计》可供从事嵌入式系统硬件接口技术与产品开发的技术人员学习使用,也可作为电信工程、电气工程、自动化等相关专业本科生、研究生及老师的参考书。

简述tdcs的技术特点,以及与其他系统的接口有哪些

一、 Linux的主要特点 1.符合POSIX 1003.1标准POSIX 1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运 行Unix程序。考虑到Unix具有丰富的应用程序,当今绝大多数操作系统都把满足POSIX 1003.1标准作为实现 目标,Linux也不例外,它完全支持POSIX 1003.1标准。另外,为了使Unix System V和bsd上的程序能直接在 Linux上运行, Linux还增加了部分System V和bsd的系统接口,使Linux成为一个完善的Unix程序开发系统。 CT6itug
CT6itug
2.支持多用户访问和多任务编程Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。另外, Linux还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求. CT6itug
CT6itug
3.采用页式存储管理 页式存储管理使Linux能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。 CT6itug
CT6itug
4.支持动态链接用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接方式--即在装配阶段就已将 用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储 空间的情况。Linux 支持动态链接方式,当运行时才进行库链接,如果所需要的库已被其它进程装入内存, 则不必再装入,否则才从硬盘中将库调入。这样能保证内存中的库程序代码是唯一的。 CT6itug
CT6itug
5.支持多种文件系统 Linux能支持多种文件系统。目前支持的文件系统有:ext2、ext、XIAFS、ISOFS、hpfs、msdos、Umsdos、 PROC、nfs、SYSV、MINIX、SMB、UFS、ncp、VFAT、affs。Linux最常用的文件系统是ext2,它的文件名长度可 达255字符,并且还有许多特有的功能,使它比常规的Unix文件系统更加安全。 CT6itug
CT6itug
6.支持TCP/IP、SLIP和PPP在Linux中,用户可以使用所有的网络服务,如网络文件系统、远程登录等。SLIP和PPP能支持串行线上的 TCP/IP协议的使用,这意味着用户可用一个高速Modem通过电话线连入Internet网中。 CT6itug
CT6itug
除了上述基本特征外,Linux还具有其独有的特色: CT6itug
CT6itug
1.支持硬盘的动态Cache 这一功能与ms dos中的Smartdrive相似。所不同的是,Linux能动态调整所用的 Cache存储器的大小,以适合当前存储器的使用情况,当某一时刻没有更多的存储空间可用时,Cache将被减少, 以增加空闲的存储空间,一旦存储空间不再紧张,Cache的大小又将增加。2.支持不同格式的可执行文件 Linux具有多种模拟器,这使它能运行不同格式的目标文件。其中,dos和 ms Windows正在开发之中,iBCS2模拟器能运行SCO Unix的目标程序。(iBCS2 模拟器不是Linux标准核心的 一部分,但可从ftp.informatik.hu berlin.de:/pub/os/linux下载) CT6itug
CT6itug
二、 Linux的主要构成 CT6itug
CT6itug
Linux采用页式存储管理机制,每个页面的大小随处理机芯片而异。例如,intel 386处理机页面大小 可为4KB和2MB两种,而Alpha处理机页面大小可为8KB、16KB、32KB和64KB。页面大小的选择对地址变换算 法和页表结构会有一定的影响,如Alpha的虚地址和物理地址的有效长度随页面尺寸的变化而变化,这种变 化必将在地址变换和页表项中有所反映。在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,为了建立虚拟空间和物理空 间之间的映射,每个进程还保留一张页表,用于将本进程空间中的虚地址变换成物理地址。页表还对物理页 的访问权限作出了规定,定义了哪些页可读写,哪些页是只读页,在进行虚实变换时,Linux将根据页表中规 定的访问权限来判定进程对物理地址的访问是否合法,从而达到存储保护的目的。 Linux存储空间分配遵循的是不到有实际需要的时候决不分配物理空间的原则。当一个程序加载执行时, Linux只为它分配了虚空间,只有访问某一虚地址而发生了缺页中断时,才为它分配物理空间,这样就可能 出现某些程序运行完成后,其中的一些页从来就没有装进过内存。这种存储分配策略带来的好处是显而易见的,因为它最大限度地利用了物理存储器。尽管Linux对物理存储器资源的使用十分谨慎,但还是经常出现物理存储器资源短缺的情况。Linux有一 个名为kswapd的守护进程专门负责页面的换出,当系统中的空闲页面小于一定的数目时,kswapd将按照一定的淘 汰算法选出某些页面,或者直接丢弃(页面未作修改),或者将其写回硬盘(页面已被修改)。这种换出方式不 同于较旧版本Unix的换出方式,它是将一个进程的所有页全部写回硬盘。相比之下,Linux的效率更高。 CT6itug
CT6itug
2.进程管理在Linux中,进程是资源分配的基镜ノ唬 凶试炊际且越 涛 韵罄唇 蟹峙涞摹?在一个进程的生 命期内,它会用到许多系统资源,会用cpu运行其指令,用存储器存储其指令和数据,它也会打开和使用文件 系统中的文件,直接或间接用到系统中的物理设备,因此,Linux设计了一系列的数据结构,它们能准确地描 述进程的状态和其资源使用情况,以便能公平有效地使用系统资源。Linux的调度算法能确保不出现某些进程 过度占用系统资源而导致另一些进程无休止地等待的情况。 CT6itug
CT6itug
进程的创建是一个十分复杂的过程,通常的做法需为子进程重新分配物理空间,并把父进程空间的内容全 盘复制到子进程空间中,其开销非常大。为了降低进程创建的开销,Linux采用了Copy on write技术,即不 拷贝父进程的空间,而是拷贝父进程的页表,使父进程和子进程共享物理空间,并将这个共享空间的访问权限 置为只读。当父进程和子进程的某一方进行写操作时,Linux检测到一个非法操作,这时才将要写的页进行复制 。这一做法免除了只读页的复制,从而降低了开销。Linux目前尚未提供用户级线程,但提供了核心级线程,核心线程的创建是在进程创建的基础上稍做修改, 使创建的子进程与父进程共享虚存空间。从这一意义上讲,核心线程更像一个共享进程组。CT6itug
CT6itug
3.文件系统Linux最重要的特征之一就是支持多个不同的文件系统,前面我们已经看到,Linux目前支持的文件系统 多达十余种,随着时间的推移,这一数目还在不断增加。在Linux中,一个分离的文件系统不是通过设备标识 (如驱动器号或驱动器名)来访问,而是 把它合到一个单一的目录树结构中,通过目录来访问,这一点与Unix十分相似。Linux用 安装命令将一个新的文件系统安装到系统单一目录树的某一目录下,一旦安装成功,该目录下的所有内容将 被新安装的文件系统所覆盖,当文件系统被卸下后,安装目录下的文件将会被重新恢复。CT6itug
CT6itug
Linux最初的文件系统是Minix。该文件系统对文件限制过多,并且性能低下,如文件名长度不能超过14 个字符、文件大小不能超过64MB。为了解决这些问题,Linux的开发者们设计了一个Linux专用的文件系统ext。 ext对文件的要求放松了许多,但在性能上并没有大的改观,于是就有了后面的ext2文件系统。ext2文件系统 是一个非常成功的文件系统,它无论是对文件的限制还是在性能方面都大大优于ext文件系统,所以,ext2自 从推出就一直是Linux最常用的文件系统。为了支持多种文件系统,Linux用一个被称为虚拟文件系统(VFS)的接口层将真正的文件系统同操作系统及 系统服务分离开。VFS掩盖了不同文件系统之间的差异,使所有文件系统在操作系统和用户程序看来都是等同的。VFS允许用户同时透明地安装多个不同的文件系统。 CT6itug
CT6itug
4.进程间通信Linux提供了多种进程间的通信机制,其中,信号和管道是最基本的两种。除此以外,Linux也提供 System V的进程间通信机制,包括消息队列、信号灯及共享内存。为了支持不同机器之间的进程通信, Linux还引入了bsd的Socket机制。 CT6itug
CT6itug
三、 Linux的不足及发展趋势Linux从出现到现今只经历了短短七年的时间,但其发展速度是惊人的,这与它的开放性和优良的性能 是密不可分的。不过我们应该看到,作为一个由学生开发的系统,Linux还有许多先天不足,它的设计思想 过多地受到传统操作系统的约束,没有体现出当今操作系统的发展潮流,具体表现在以下几个方面: CT6itug
CT6itug
不是一个微内核操作系统;是一个分布式操作系统;不是一个安全的操作系统;没有用户线程;不支持实时处理; CT6itug
CT6itug
代码是用C而不是C++这样的现代程序设计语言编写的。尽管Linux有这样和那样的不足,但其发展潜力不容低估,其发展的动力就是遍布全球、为数众多的 Linux热心者。今后Linux将会朝着完善功能、提高效率的方向发展,包括允许用户创建线程、增加实时处 理功能、开发适合多处理机体系结构的版本。我们相信,Linux、Unix及NT三足鼎立的时代将为期不远。 Linux主要由存储管理、进程管理、文件系统、进程间通信等几部分组成,在许多算法及实现策略上, Linux借鉴了Unix的成功经验,但也不乏自己的特色。 CT6itug
CT6itug
1.存储管理 作为一个操作系统,Linux几乎满足当今Unix操作系统的所有要求,因此,它具有Unix操作系统的基本特征。

需求分析与系统设计的图书目录

译者序
前言
第1章 软件过程
1.1 软件开发的本质
1.1.1 软件开发的不变事实
1.1.2 软件开发的“意外事件”
1.1.3 开发还是集成
复习小测验1.1
1.2 系统规划
1.2.1 SWOT方法
1.2.2 VCM方法
1.2.3 BPR方法
1.2.4 ISA方法
复习小测验1.2
1.3 三级管理系统
1.3.1 事务处理系统
1.3.2 分析处理系统
1.3.3 知识处理系统
复习小测验1.3
1.4 软件开发生命周期
1.4.1 开发方法
1.4.2 生命周期的阶段
1.4.3 跨越生命周期的活动
复习小测验1.4
1.5 开发模型与方法
1.5.1 螺旋模型
1.5.2 IBM Rational统一过程
1.5.3 模型驱动的体系结构
1.5.4 敏捷软件开发
1.5.5 面向方面的软件开发
复习小测验1.5
1.6 实例研究的问题陈述
1.6.1 大学注册
1.6.2 音像商店
1.6.3 关系管理
1.6.4 电话销售
1.6.5 广告支出
1.6.6 时间记录
1.6.7 货币兑换
小结
关键术语
选择题
问题
复习小测验答案
选择题答案
奇数编号问题的答案
第2章 需求确定
2.1 从业务过程到解决方案构想
2.1.1 过程层次建模
2.1.2 业务过程建模
2.1.3 解决方案构想
复习小测验2.1
2.2 需求引导
2.2.1 系统需求
2.2.2 需求引导的传统方法
2.2.3 需求引导的现代方法
复习小测验2.2
2.3 需求协商与确认
2.3.1 超出范围的需求
2.3.2 需求依赖矩阵
2.3.3 需求风险和优先级
复习小测验2.3
2.4 需求管理
2.4.1 需求标识与分类
2.4.2 需求层次
2.4.3 变更管理
2.4.4 需求可跟踪性
复习小测验2.4
2.5 需求业务模型
2.5.1 系统范围模型
2.5.2 业务用例模型
2.5.3 业务词汇表
2.5.4 业务类模型
复习小测验2.5
2.6 需求文档
2.6.1 文档模板
2.6.2 项目准备
2.6.3 系统服务
2.6.4 系统约束
2.6.5 项目的其他问题
2.6.6 附录
复习小测验2.6
小结
关键术语
选择题
问题
练习:广告支出
练习:时间记录
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:AE
第3章 可视化建模基础
3.1 用例视图
3.1.1 参与者
3.1.2 用例
3.1.3 用例图
3.1.4 用例文档化
复习小测验3.1
3.2 活动视图
3.2.1 动作
3.2.2 活动图
复习小测验3.2
3.3 结构视图
3.3.1 类
3.3.2 属性
3.3.3 关联
3.3.4 聚合
3.3.5 泛化
3.3.6 类图
复习小测验3.3
3.4 交互视图
3.4.1 顺序图
3.4.2 通信图
3.4.3 类方法
复习小测验3.4
3.5 状态机视图
3.5.1 状态和转换
3.5.2 状态机图
复习小测验3.5
3.6 实现视图
3.6.1 子系统和包
3.6.2 构件和构件图
3.6.3 节点和部署图
复习小测验3.6
小结
关键术语
选择题
问题
练习
练习:音像商店
复习小测验答案
选择题答案
奇数编号问题的答案
奇数编号练习的解决方案
奇数编号练习的解决方案:音像商店
第4章 需求规格说明
4.1 体系结构优先权
4.1.1 模型-视图-控制器
4.1.2 J2EE的核心体系结构
4.1.3 表示-控制器-bean-中介者-实体-资源
复习小测验4.1
4.2 状态规格说明
4.2.1 类建模
4.2.2 关联建模
4.2.3 聚合及复合关系建模
4.2.4 泛化关系建模
4.2.5 接口建模
4.2.6 对象建模
复习小测验4.2
4.3 行为规格说明
4.3.1 用例建模
4.3.2 活动建模
4.3.3 交互建模
4.3.4 操作建模
复习小测验4.3
4.4 状态变化规格说明
4.4.1 对象状态建模
复习小测验4.4
小结
关键术语
选择题
问题
练习:音像商店
练习:关系管理
练习:大学注册
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:大学注册
第5章 从分析到设计
5.1 高级类建模
5.1.1 扩展机制
5.1.2 可见性与封装
5.1.3 导出信息
5.1.4 限定关联
5.1.5 关联类与具体化类
复习小测验5.1
5.2 高级泛化与继承建模
5.2.1 泛化和可替换性
5.2.2 继承与封装
5.2.3 接口继承
5.2.4 实现继承
复习小测验5.2
5.3 高级聚合与委托建模
5.3.1 给聚合增加更多的语义
5.3.2 作为泛化的可选方案的聚合
5.3.3 聚合与整体构件-一些仅供
思考的材料
复习小测验5.3
5.4 高级交互建模
5.4.1 生命线和消息
5.4.2 片段
5.4.3 交互使用
复习小测验5.4
小结
关键术语
选择题
问题
练习
练习:时间记录
练习:广告支出
复习小测验答案
选择题答案
奇数编号问题的答案
奇数编号练习的解决方案
练习的解决方案:时间记录
第6章 系统体系结构与程序设计
6.1 分布式物理体系结构
6.1.1 对等体系结构
6.1.2 分层体系结构
6.1.3 数据库为中心的体系结构
复习小测验6.1
6.2 多层逻辑体系结构
6.2.1 体系结构的复杂性
6.2.2 体系结构模式
复习小测验6.2
6.3 体系结构建模
6.3.1 包
6.3.2 构件
6.3.3 结点
复习小测验6.3
6.4 程序设计与复用原则
6.4.1 类的内聚与耦合
6.4.2 复用策略
复习小测验6.4
6.5 协作建模
6.5.1 协作
6.5.2 复合结构
6.5.3 从用例到复合协作
6.5.4 从协作到交互
6.5.5 从交互到复合结构
复习小测验6.5
小结
关键术语
选择题
问题
练习:音像商店
练习:广告支出
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:广告支出
第7章 图形用户界面设计
7.1 GUI设计原则
7.1.1 从GUI原型到实现
7.1.2 良好GUI设计指南
复习小测验7.1
7.2 桌面GUI设计
7.2.1 主窗口
7.2.2 辅窗口
7.2.3 菜单和工具栏
7.2.4 按钮及其他控件
复习小测验7.2
7.3 WebGUI设计
7.3.1 Web应用系统的使能技术
7.3.2 内容设计
7.3.3 导航设计
7.3.4 利用GUI框架支持Web设计
复习小测验7.3
7.4 GUI导航建模
7.4.1 用户体验故事情节
7.4.2 UX元素建模
7.4.3 行为性UX协作
7.4.4 结构性UX协作
复习小测验7.4
小结
关键术语
选择题
问题
练习:关系管理
练习:电话销售
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:关系管理
第8章 持久性与数据库设计
8.1 业务对象和持久性
8.1.1 数据库管理系统
8.1.2 数据模型的层次
8.1.3 集成应用系统与数据库建模
8.1.4 对象-数据库映射基础
复习小测验8.1
8.2 关系数据库模型
8.2.1 列.域和规则
8.2.2 表
8.2.3 引用完整性
8.2.4 触发器
8.2.5 存储过程
8.2.6 视图
8.2.7 范式
复习小测验8.2
8.3 对象-关系映射
8.3.1 映射实体类
8.3.2 映射关联
8.3.3 映射聚合
8.3.4 映射泛化
复习小测验8.3
8.4 管理持久对象的模式
8.4.1 检索持久对象
8.4.2 装载持久对象
8.4.3 释放持久对象
复习小测验8.4
8.5 设计数据库访问和事务
8.5.1 SQL程序设计的层次
8.5.2 设计业务事务
复习小测验8.5
小结
关键术语
选择题
问题
练习:关系管理
练习:电话销售
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:关系管理
第9章 质量与变更管理
9.1 质量管理
9.1.1 质量保证
9.1.2 质量控制
复习小测验9.1
9.2 变更管理
9.2.1 工具与管理变更请求
9.2.2 可追踪性
复习小测验9.2
小结
关键术语
选择题
问题
复习小测验答案
选择题答案
奇数编号问题的答案
第10章 复习巩固指南
10.1 用例建模
10.1.1 参与者
10.1.2 用例
10.1.3 用例图
10.1.4 编写用例文档
10.2 活动建模
10.2.1 动作
10.2.2 活动图
10.3 类建模
10.3.1 类
10.3.2 属性
10.3.3 关联
10.3.4 聚合
10.3.5 泛化
10.3.6 类图
10.4 交互建模
10.4.1 顺序图
10.4.2 通信图
10.5 状态机建模
10.5.1 状态和转换
10.5.2 状态机图
10.6 实现模型
10.6.1 子系统
10.6.2 包
10.6.3 构件
10.6.4 注释
10.7 对象协作设计
10.7.1 用例设计规格说明
10.7.2 用户界面原型
10.7.3 顺序图
10.7.4 设计层类图
10.8 窗口导航设计
10.8.1 用户体验元素
10.8.2 行为性UX协作
10.8.3 结构性UX协作
10.9 数据库设计
10.9.1 对象-关系映射
10.9.2 引用完整性设计
小结
练习:在线购物
附录A对象技术基础
参考文献
……

关于与其他系统接口设计书和操作系统接口设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 与其他系统接口设计书的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于操作系统接口设计、与其他系统接口设计书的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 限制子类访问的方法分析
下一篇:在线接口测试工具搭建(接口测试需要的工具)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~