Java操作系统中虚拟设备的实现方法

文档序号:6556499阅读:196来源:国知局
专利名称:Java操作系统中虚拟设备的实现方法
技术领域
本发明涉及输入输出设备处理技术,特别是涉及一种Java操作系统中虚拟设备的实现方法。
背景技术
早期处理输入、输出设备采用脱机外围设备操作,使用一台外围计算机,它的功能是以最大速度从读卡机上读取信息并记录到输入磁盘上。然后,把包含有输入信息的输入磁盘人工移动到主处理机上。在多道程序环境下,可让作业从磁盘上读取各自的数据,运行的结果信息写入到输出磁盘上。最后,把输出磁盘移动到另一台外围计算机上,其任务是以最大速度读出信息并从打印机上输出。完成上述输入和输出任务的计算机叫外围计算机,因为它不进行计算,只实现把信息从一台外围设备传送另一台外围设备上。这种操作独立于主机处理,而不在主处理机的直接控制下进行,所以称作脱机外围设备操作。脱机外围设备操作把独占使用的设备转化为可共享的设备,在一定程度上提高了效率。但却带来了若干新的问题增加了外围计算机,不能充分发挥这些计算机的功效。
增加了操作员的手工操作,在主处理机手外围处理机之间要来回援输入输出卷,这种手工操作出错机会多,效率低。
不易实现优先级调度,不同批次中的作业无法搭配运行。
对于卡片输入输出机、行式打印机之类的设备采用静态分配方式是不利于提高系统效率的。首先,占有这些设备的作业不能有效地充分利用它们。一台设备在作业执行期间,往往只有一部分,甚至很少一部分时间在工作,其余时间均处于空闲状态。其次,这些设备分配给一个作业时后,再有申请这类设备的作业将被拒绝接受。例如,一个系统拥有两台卡片输入机,它就难于接受4个要求使用卡片输入机的作业同时执行,而占用卡片输入机的作业却又在占用的大部分时间里让它闲着。另外,这类设备传输而大大延长了作业的执行时间。

发明内容
本发明的目的在于提供一种Java操作系统中虚拟设备的实现方法。
本发明解决其技术问题采用的技术方案如下1)预输入程序把一批由输入设备输入的作业组织在一起形成作业流,由预输入程序为作业流中每个作业的建立一个作业信息表,并把这些作业信息表传送到输入井保存,以备作业执行时使用;2)输入井每个作业经过预输入程序处理后,生成一张作业信息表作业的基本信息。将这些作业信息表按按链接结构组织为队列,形成输入井。输入井中的作业可有四种状态输入状态 预输入程序启动了输入机正在把该作业的信息传输到输入井;收容状态 该作业的信息已经存放在输入井中,但尚未被选中执行;执行状态 作业已被选中并装入内存开始执行;完成状态 作业已执行结束,其执行结果在输出井中等待输出;3)井管理程序井管理程序包括井管理读程序和井管理写程序,当作业请求从输入设备上读文件信息时,就把任务转交给井管理读程序,从输入井读出信息供用户使用,当作业请求从输出设备上输出结果时,就把任务转交给井管理写程序,把产生的结果保存到输出井中,作业调度程序调度作业,当前运行作业调用井管理程序进行输入输出井的管理;4)输出井每个作业设置一张缓输出表,用来登记该作业运行后产生的结果文件,将这些作业信息表按链接结构组织为队列,形成输出井,用于提供给缓输出程序输出到输出设备上;5)缓输出程序缓输出程序负责查看输出井中是否有待输出的结果信息,若有,则启动输出设备把作业的结果文件输出到输出设备。
本发明的有益效果是系统在辅助存储器上开辟了输入井和输出井。井是用作缓冲的存储区域,采用井的技术能调节供求之间的矛盾,消除人工干预带来的损失。采用虚拟设备处理系统的输入输出,对系统来说,从井中存取信息可以缩短信息的传输时间,从而加快作业的执行。对用户来说,只要保证信息的正确存取就行,至于信息是从井中存取还从独占设备上存取无关紧要。由于磁盘是可共享的,因此从井中存取信息可以同时满足多个用户的读写要求,从而使每个用户都感到有供自己独立使用的输入、输出设备且速度与磁盘一样快。虚拟设备的引入一方面提高了系统响应速度,另一方面提高了并行处理的作业数。


附图是虚拟设备流程图。
具体实施例方式
在实施虚拟设备时,具体方式如下1)预输入程序把一批作业组织在一起形成作业流,由预输入程序为作业流中每个作业的建立一个作业信息表,并把这些作业信息表传送到输入井保存,以备作业执行时使用。
预输入程序在工作过程中读出和组织作业的信息,如作业名、优先数、处理机运行时间等,将获得的作业信息以及预输入表的位置登记入作业表。此后,依次读入作业的信息,在输入中井中寻找空闲块存放,把读入的信息以文件的形式登记到预输入表中,直到预输入结束。
2)输入井每个作业经过预输入程序处理后,生成一张作业信息表作业的基本信息。将这些作业信息表按按链接结构组织为队列,形成输入井。输入井中的作业可有四种状态输入状态 预输入程序启动了输入机正在把该作业的信息传输到输入井;收容状态 该作业的信息已经存放在输入井中,但尚未被选中执行;执行状态 作业已被选中并装入内存开始执行;完成状态 作业已执行结束,其执行结果在输出井中等待输出;井被划分成等长的物理块,用于存放一个或多个逻辑记录。采用两种方式存放作业的数据信息。
第一种方式是连接方式,输入的信息被组织成连接文件,文件的第一块信息的位置登记在预输入表中,以后各块用指针连起来,读出n块后,由连接指针就可找到第m+1块数据的位置。这种方式的优点是数据信息可以不连续存放,文件空间利用率高。
第二种是计算方式,假定从读卡机上读入信息并存放到磁放的井文件空间,每张卡片为80个字节,每个磁道可存放100个80字节的记录,若每个柱面有20个磁道,则一个柱面可以存放2000张卡片信息。如果把2000张卡片作为一叠存放在一个柱面上,于是输入数据在磁盘上的位置为第一张卡片信息是0号磁道的第1个记录,第二张卡片信息是0号第2个记录,第101张卡片信息是1号磁道的第1个记录,那么,第n张卡片信息被存放在磁道号=卡片号n/100记录号=(卡片号n)mod 100用卡片号n除以100的整数和余数部分分别为其存放的磁道号和记录号。
3)井管理程序井管理程序包括井管理读程序和井管理写程序。当作业请求从输入设备上读文件信息时,就把任务转交给井管理读程序,从输入井读出信息供用户使用。当作业请求从打印机上输出结果时,就把任务转交给井管理写程序,把产生的结果保存到输出井中。
当作业执行过程中要求启动某台设备进行输入或输出操作时,操作系统截获这个要求并调出井管理程序控制从相应输入井读取信息或将信息送至输出井内。例如,作业J执行中要求从它指定的设备上读入某文件信息时,井输入管理程序根据文件名查看其预输入表获得文件起始盘地址,可以算出每欠读请求所需的信息的存放位置。采用连接方式时,每次保留连接指针,就可将后继块的信息读入。当输入井中的信息被作业取出后,相应的井区应归还。通过预输入管理程序从输入井读入信息和通过设备管理从设备上输入信息,对用户而言是一样的。
井管理程序处理输出操作的过程与上述类似。用户作业的输出信息一律通过输出井缓冲存放,有在输出表中登记。缓输出表的格式与预输入表的格式类似,包括作业名、作业状态、文件名、设备类、数据起始位置、数据当前位置等项。在作业执行当中要求输出数据时,井输出管理程序根据有关信息查看输出表。如果表中没有这个文件名,则为第一次请求输出。文件的第一个信息块的物理位置被填入起始位置,每块信息写入井区前可用计算法计算出块号并将卡片数加1,或将后继块位置以连接方式写入信息块的连接字中,再写到输出井,并将下一次输出时接受输出信息的位置填入数据当前位置。如果不是第一次请求输出,则缓输出表中已有登记,只要从数据当前位置便可得到当前输出信息的井区。
4)输出井每个作业设置一张缓输出表,用来登记该作业运行后产生的结果文件。将这些作业信息表按链接结构组织为队列,形成输出井,用于提供给缓输出程序输出到输出设备上;5)缓输出程序缓输出程序缓输出程序负责查看输出井中是否有待输出的结果信息,若有,则启动输出设备把作业的结果文件输出当计算机有空闲时,Java操作系统调出缓输出程序进行缓输出工作,它查看缓输出表,将需要输这些文件时,根据需要组织作业和文件标题,以及对从输出井中读出的信息进行一定格式加工。当一个作业的文件信息输出完毕后,将它占用的井区回收以供其它作业使用。
实施例当用户提交了一批作业操作员键入预输入命令启动预输入程序工作。预输入程序查看作业表中是否有空登记项,若有空登记项则再检查输入井中是否有空闲空间,如果有空闲空间则可接纳新的作业进入输入井。启动输入机读出并分析作业的标识信息,把作业名,文件个数登记入作业表,且置成输入状态。接着依次读出作业的文件信息,寻找输入井中的空间存放这些信息,把它们组织成链接文件的形式登记到预输入表中。直到该作业信息全部输入,把作业状态修改成收容状态,将预输入表的位置填入作业表。当作业流中还有后继作业时,预输入程序继续工作,只要能接纳新作业,就按上述过程把作业信息存入输入井,直到输入井的空间已占满或作业表中无空登记项时就暂不能再接纳新作业。当不能接纳新作业或当前作业流中信息已全部进入输入井,则预输入程序工作结束,当需要时可再次启动预输入程序工作。当主存储器中可以装入作业时,就从输入井中选择处于收容状态的作业执行,被选中的作业其状态应改为执行状态。作业执行过程中要求启动输入机读文件时,系统并不实际地启动输入机,而是调出井管理读程序工作,根据作业名先找到该作业的预输入表,再根据文件名可从预输入表中得到文件存放的起始位置,沿着链接指针可依次读出存放在输入井中的文件信息。在这里,井管理读程序模拟从输入机读文件的工作。由于输入机把读出的信息传送给作业后就不再保留已读出的信息,所以,井管理读程序从输入井读出文件信息后也不必保留该信息。于是,当文件信息传送给作业后,应把文件占用输入井的存储空间归还,归还后的空间可以用来存放其他的文件。作业执行中要求启动打印机输出结果时,系统也不实际地启动打印机,而是调出井管理写程序工作。首先根据作业名找到缓输出表,同时查找输出井中的空闲空间,把结果信息组织成链接文件存入输出井,并在缓输出表中登记。作业执行结束后,把作业状态修改成完成状态。当处理器空闲时缓输出程序可以占用处理器,缓输出程序查看作业表,找出处于完成状态的作业,再查看相应的缓输出表得到结果文件的存放位置,读出文件信息并把它们转换成符合打印要求的格式,然后启动打印机将其打印输出。文件信息被打印输出后,文件占用输出井的存储空间应归还。一个作业结果文件均被输出后,应将其在作业表中除名,相应的登记项成为空登记项,可以用来登记新进入输入井的作业。
权利要求
1.一种Java操作系统中虚拟设备的实现方法,其特征在于1)预输入程序把一批由输入设备输入的作业组织在一起形成作业流,由预输入程序为作业流中每个作业的建立一个作业信息表,并把这些作业信息表传送到输入井保存,以备作业执行时使用;2)输入井每个作业经过预输入程序处理后,生成一张作业信息表作业的基本信息。将这些作业信息表按按链接结构组织为队列,形成输入井。输入井中的作业可有四种状态输入状态预输入程序启动了输入机正在把该作业的信息传输到输入井;收容状态该作业的信息已经存放在输入井中,但尚未被选中执行;执行状态作业已被选中并装入内存开始执行;完成状态作业已执行结束,其执行结果在输出井中等待输出;3)井管理程序井管理程序包括井管理读程序和井管理写程序,当作业请求从输入设备上读文件信息时,就把任务转交给井管理读程序,从输入井读出信息供用户使用,当作业请求从输出设备上输出结果时,就把任务转交给井管理写程序,把产生的结果保存到输出井中,作业调度程序调度作业,当前运行作业调用井管理程序进行输入输出井的管理;4)输出井每个作业设置一张缓输出表,用来登记该作业运行后产生的结果文件,将这些作业信息表按链接结构组织为队列,形成输出井,用于提供给缓输出程序输出到输出设备上;5)缓输出程序缓输出程序负责查看输出井中是否有待输出的结果信息,若有,则启动输出设备把作业的结果文件输出到输出设备。
全文摘要
本发明公开了一种应用于Java操作系统的虚拟设备的实现方法。在Java操作系统中,采用虚设备处理输入、输出设备,解决设备的独占冲突以及设备冗余问题,可以提高设备利用率并缩短单个程序的响应时间,这有利于减少加锁时系统的负载,又有利于方便用户的操作,从整体上提高了Java操作系统的运行速度,特别是在处理多道作业时,能有效增加处理作业数目,提高系统运行效率,本发明对嵌入式系统环境,尤其是面向嵌入式系统的Java操作系统,有重大意义。
文档编号G06F9/46GK1828540SQ20061005025
公开日2006年9月6日 申请日期2006年4月7日 优先权日2006年4月7日
发明者陈天洲, 戴红军, 黄彧 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1