WO2009125027A1 - Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros - Google Patents

Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros Download PDF

Info

Publication number
WO2009125027A1
WO2009125027A1 PCT/ES2008/000235 ES2008000235W WO2009125027A1 WO 2009125027 A1 WO2009125027 A1 WO 2009125027A1 ES 2008000235 W ES2008000235 W ES 2008000235W WO 2009125027 A1 WO2009125027 A1 WO 2009125027A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
data
storage system
application server
embedded
Prior art date
Application number
PCT/ES2008/000235
Other languages
English (en)
French (fr)
Inventor
Javier CAÑIS ROBLES
Javier Alfonso Cortes Sainz
Ahmet Altay
Original Assignee
Microelectronica Española S.A.U.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microelectronica Española S.A.U. filed Critical Microelectronica Española S.A.U.
Priority to PCT/ES2008/000235 priority Critical patent/WO2009125027A1/es
Priority to EP08761482A priority patent/EP2270693A1/en
Publication of WO2009125027A1 publication Critical patent/WO2009125027A1/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD

Definitions

  • This application generally refers to the operation of non-volatile flash memory systems, and, more specifically, to a procedure and a system for accessing a storage system with multiple file systems.
  • Non-volatile memory products that are currently being used, in particular in the form of small form factor cards, which use flash EEPROM cells (read-only memory that can be programmed and erased electrically), (from English Electr ⁇ cally Erasable and Programmable Read OnIy Memory) formed on one or more integrated circuit devices.
  • flash EEPROM cells read-only memory that can be programmed and erased electrically
  • Some of the commercially available card formats include CompactFlash (CF) cards, MultiMedia cards (MMC), and secure digital (SD) cards (Secure Digital cards).
  • Other commercially available card formats include Smart Cards, Subscriber Identity Module (SIM) cards, and Removable Subscriber Identity Module (R-UIM) cards. ).
  • Central computers include personal computers, calendar computers, personal digital assistants (PDAs), various data communication devices, digital cameras, cell phones, portable audio players, car sound systems , and similar types of equipment.
  • a removable card includes a controller to direct the operation of the memory in the card. In this way, control of the memory can be achieved by means of software or hardware on a controller in the card.
  • this type of memory may alternatively be embedded within various types of application server (host) systems. In both removable and embedded applications, application server (host) data can be stored in the memory according to a storage scheme implemented by means of a memory control software.
  • the memory control software can interface with an application server (host) file system, which, in turn, can interface with a memory file manager that provides an application programming interface (in English, Application Programming Interfacé) (API) to applications that access the memory.
  • Application server (host) file systems can support a set of read and write commands to access storage systems connected to the application (host) server, they can be optimized for resource constraints for server characteristics.
  • applications (host) and may include advanced features such as multi-process support.
  • Some non-volatile memory cards contain an embedded processor that can generate data to store within the memory on the card.
  • the embedded processor or the application server (host) can recover the data generated by the embedded processor.
  • the embedded processor can also access the data stored by the application server (host) in the memory.
  • the embedded processor shares the memory with the application server (host), and uses an additional independent file system, which has an interface with the memory control software, to manage its storage and data recovery . Synchronization between the application server (host) and memory card file systems is necessary when operating an application server (host) file system and a processor file system embedded in parallel with one another. to control shared access to a memory within a non-volatile memory card.
  • a procedure for managing data access to an indexed storage system by means of a storage system index.
  • An access request is received from within the storage system, where the access request is associated with a file. It is determined if the access request is a write request that requires an update of the storage system index. If the access request is a write request that requires an update of the storage system index, a data write command and the corresponding write data are transmitted to an application server (host). A logical block address write command and at least part of the data is received from the application server (host). A part of the data is written to the storage system in accordance with the logical block address write command. A storage system index update command is received from the application server (host).
  • the storage system index is updated according to the update command of the received storage system index. If the access request is a write request, which includes data, does not require an update of the storage system index, the data is written to the file with an embedded file system. If the access request is a read request, the data is read from the file with the embedded file system.
  • the storage system includes a memory, an embedded file system, and a memory controller that receives read and write requests from an application server (host) and from the embedded file system and writes data in the memory and reads data from memory.
  • the storage system also includes a manager that receives an access request from within the storage system, where the access request is associated with a file, and determines if the access request is a write request that requires an update of the storage system index, a write request that does not require a update of the storage system index, or a read request. If the access request is a write request that requires an update of the storage system index, the manager transmits a data write and data command to an application server (host). If the access request is a write request that does not require an update of the storage system index, the manager writes the data to the file with the embedded file system. If the access request is a read request, the manager reads the data from the file with the embedded file system.
  • a manager that receives an access request from within the storage system, where the access request is associated with a file, and determines if the access request is a write request that requires an update of the storage system index, a write request that does not require a update of the storage system index, or a read request. If the access request is
  • an access request associated with a file is received from within the storage system. It is determined if the access request is a write request. If the access request is a write request, in which the write request contains data, an open file command and an extended file command are transmitted to an application server (host). An update command of the storage system index is received from the application server (host), in which the update command of the storage system index contains information about the extended file. The storage system index is updated according to the update command of the received storage system index. A close file command is transmitted to the application server (host), and the embedded file system opens the file, writes the data to be stored and closes the file. It is determined if the access request is a read request. If the access request is a read request, the file is opened with an embedded file system, the data of the open file is read using the embedded file system, and the file is closed using the embedded file system.
  • the storage system includes a memory, an embedded file system, and a memory controller that receives requests from an application server (host) and from a storage system. embedded files and writes data in memory and reads data from memory.
  • the storage system also includes a manager that receives an access request from within the storage system, where the access request is associated with a file, and determines if the access request is a write request, where the request for Writing contains data. If the access request is a write request, the manager transmits an open file command to an application server (host), transmits an extended file command to the application server (host), and transmits a download command of the Cache memory from the storage system index to the application server (host).
  • the manager can also open the file with the embedded file system, write data with the embedded file system, close the file with the embedded file system, and transmit a command to close the file to the application server (host), in where the writing of the data in the file using the embedded file system does not change the file size.
  • the manager also determines if access is a read request. If the access request is a read request, the manager opens the file with the embedded file system, reads data from the file with the embedded file system, and closes the file with the embedded file system.
  • Figure 1 is a diagram illustrating a system for accessing a storage system using two parallel file systems.
  • Figure 2 shows example steps for the processing of a write request received by the mass storage manager of Figure 1.
  • Figure 3 shows example steps for the processing of a write operation using the application server (host) file system of Figure 1.
  • Figure 4 shows example steps for using an embedded file system to perform read and write operations with the help of an application server (host) file system.
  • host application server
  • Figure 5 shows example steps for the processing of a write operation using the application server (host) file system of Figure 1.
  • an application server (host) file system over an application (host) server provides the Application Programming Interface (API) necessary to perform all the required operations, such as opening a file, Ia reading data from a file, writing data to a file, and closing a file.
  • API Application Programming Interface
  • An example of an API of a file system is the Win32 File Input / Output API, provided by Microsoft Corporation. The Win32 API supports a variety of reading and writing functions for reading and writing a file on a storage system.
  • Some storage systems such as removable nonvolatile memory cards, contain an embedded processor.
  • the embedded processor can perform a variety of operations, such as performing calculations or executing software programs or subroutines in response to requests from the application server (host) in communication with the storage system.
  • the embedded processor can also execute subroutines, or programs without any request from the application server (host) or control by the application server (host).
  • An example of such a program is a subroutine to keep data stored in a non-volatile memory.
  • Applications that are running on an embedded processor can also generate data that can be stored within the non-volatile memory card, and can access the data stored on a non-volatile memory card. These applications can access this storage through a file system that is running within the embedded processor operating system.
  • the data storage space accessible by the applications that are running on the embedded processor is logically or physically separated from the data storage space that is accessible by the application server (host).
  • a physically separate data storage space may require the implementation of two or more physical memory arrays within the storage system.
  • a logically separated data storage space can use two or more data partitions within a common memory.
  • the application server (host) file system and the embedded processor file system function independently of each other, and coordination between the two file systems may not be required.
  • Application server (host) applications or embedded processor applications can read, write and modify shared data. Therefore, in said system, two file systems, an application server (host) file system, and an embedded file system, can provide access to the same data space. The operations of both file systems must be coordinated in order to maintain the integrity of the shared data and the storage system.
  • FIG. 1 is a diagram illustrating a system 100 for accessing a storage system using two parallel file systems.
  • the system 100 comprises a storage system 150 and an application server (host) 110.
  • the storage system and the application server (host) can be implemented in hardware, software, or a combination of hardware and software.
  • the storage system 150 includes a plurality of embedded applications 152 and an embedded operating system 160 that are running on a processor in the storage system 150, a memory controller 180, and a memory 170.
  • the data contained in storage system 150, memory 170 is stored, and memory 170 is organized by means of an index of storage system 172.
  • the volume file system used by memory 170 is a FAT12 system, FAT16, or FAT32
  • storage system index 172 includes a file allocation table (FAT).
  • the storage system index 172 also includes additional information required to operate and maintain the storage system 140. This information can be stored outside the file allocation table, and includes information such as directory information. , file size, creation and update dates of files, file and directory names, and file and directory attributes. Other embodiments may use other volume file system formats and their corresponding storage system indexes.
  • the embedded operating system 160 includes a mass storage manager 162 and an embedded file system 164. Embedded applications 152 can write and read data in memory 170 by sending a request, such as a function call, to the Mass storage manager 162.
  • Mass storage manager 162 receives requests from an embedded application 152 to write or read data in memory 170, and can generate requests at the file level of the embedded file system 164. Requests at the level of files can be in the form of function calls to functions supported by the application programming interface (API) of the embedded file system 164, or they can be commands transmitted through a hardware interface between the mass storage manager 162 and the system of embedded files 164.
  • the embedded file system 164 can accept commands at the file level, and can generate commands from Logical block addresses (LBA) sent to memory controller 180 to access memory 170.
  • LBA Logical block addresses
  • the memory controller 180 can receive memory access requests in the form of logical block address commands, and can perform the translation of the logical block addresses to physical block addresses, wherein the physical block address is the physical address of The storage location within memory 170 to where they are written or from where the data is read. Once the translation has been completed, the memory controller 180 uses the physical block address to make a read or write access to the memory 170.
  • the mass storage manager 162 can be implemented in hardware, in firmware, in software, or in any combination thereof, configured to implement the functionality of a mass storage manager, such as the functionality described in the embodiments of Figures 1 , 2 and 4, and in the accompanying text.
  • the mass storage manager 162 is implemented using a processor within the storage system 150 configured with instructions executable by a processor.
  • the instructions executable by a processor can be stored in a random access memory (RAM) (in English, Random Access Memory) within the storage system 150, or in a non-volatile memory, such as a read-only memory (ROM) (from English, Read OnIy Memory), an EEPROM (Read-only memory that can be erased and programmed electrically) (from English, Electrically Erasable and Programmable Read OnIy Memory), an E-flash ⁇ embedded flash), or memory 170 inside storage system 150.
  • RAM random access memory
  • ROM read-only memory
  • EEPROM Read-only memory that can be erased and programmed electrically
  • E-flash ⁇ embedded flash E-flash ⁇ embedded flash
  • the storage system 150 may be a solid state disk drive, or a magnetic disk drive, which is sometimes referred to as a hard disk drive.
  • the storage system 150 may be a nonvolatile memory such as a small form factor card.
  • the application server (host) 110 and the storage system 150 are contained within the same physical housing, and the storage system 150 is not removable from the system 100.
  • the storage system 150 is a removable media, such as a small form factor non-volatile memory card, and can be connected to system 100 and removed from it 100. Hardware, firmware, software, or any combination can be used thereof to implement the functionality of the memory controller 180.
  • the memory controller 180 is implemented using a processor within the storage system 150 configured with instructions executable by a processor.
  • the instructions executable by a processor can be stored in a random access memory (RAM) within the storage system 150, or in a non-volatile memory, such as a read-only memory (ROM), EEPROM (Read-only memory which it can be erased and programmed electrically), E-flash (embedded flash), or the memory 170 within the storage system 150.
  • the memory controller 180 can receive requests to access a memory 170.
  • the memory controller 180 receives commands to read data from or to write data in a memory 170, in which the memory is addressed using logical block address (LBA) commands.
  • LBA logical block address
  • the memory controller 180 can receive commands from the application server (host) on the USB communication interface 104, or from the embedded file system 164.
  • the memory controller 180 can translate the address of the logic block in the command to an address physical in memory 170 where they are to be stored or from where the data is to be read.
  • the memory controller 180 then uses the physical block address and the rest of the command to access the memory 170.
  • the specific functional requirements of the memory controller 180 can be defined by the type of memory 170 accessed.
  • the storage system 150 may be in communication with the application server (host) 110 over one or more communication interfaces 102, 104.
  • two communication interfaces are used to transmit commands and data between the application server ( host) 110 and the storage system 150.
  • a first communications interface between the storage system 150 and the application server (host) 110 is an ISO 7816 102 interface
  • the second communications interface between storage system 150 and application server (host) 110 is a universal serial bus (USB) interface (in English, Universal Serial Bus) 104.
  • USB universal serial bus
  • the communication interface is a USB interface
  • the storage system 150 and the application server (host) 110 can exchange commands and data using protocols of the USB mass storage class (MSC) (English, USB Mass Storage Class), USB Ethernet Emulation Model (EEM) USB (USB Ethernet Emulation Model), or USB Integrated Circuit Card (ICCD) device (English Integrated Circuit Card Dev ⁇ ce), or any combination of same.
  • MSC USB mass storage class
  • EEM USB Ethernet Emulation Model
  • ICCD USB Integrated Circuit Card
  • an application server (host) 110 includes a plurality of application server (host) applications 130, an application server (host) agent 120, and an application server (host) operating system 140 that they are running on a processor in the application server (host) 110.
  • the operating system of the application server (host) 140 includes an application server (host) file system 144.
  • Embedded applications 152 can write and read data in memory 170 by sending a request at the file level, such as a call to a function, to the application server (host) file system 144.
  • the application server (host) file system 144 receives requests at the file level from an application server application (host) 130 to write or read data in the memory 170 of the storage system 150, and generates logical block address commands (LBA) transmitted to the memory controller 180 on the USB communication interface 104.
  • the memory controller 180 can receive the logic block address command, performs the translation of the logical block address to physical address, and makes a access of reading or writing to memory 170 using the physical address and command received.
  • the application server (host) agent 120 can communicate with the storage system 150 by means of the transmission and reception of commands and data through an application programming interface ISO 7816 142, which, in turn, communicates with the embedded operating system 160 of the storage system 150 through an ISO 7816 102 interface.
  • the mass storage manager 162 can also transmit commands and data to the application server (host) agent 120.
  • the manager mass storage 162 uses Ia ISO 7816 102 interface for communicating with the application server (host) 110, and specifically, with the application server agent (host) 120.
  • the mass storage manager 162 and the embedded operating system 160 may communicating with the application server agent (host) 120 over a USB interface 104.
  • the commands and data can be exchanged using the protocols of the USB mass storage class (MSC) of the USB Ethernet Emulation Model (EEM), or the USB integrated circuit card device (ICCD), or any combination thereof.
  • the application server file system can be exchanged using the protocols of the USB mass storage class (MSC) of the USB Ethernet Emulation Model (EEM), or the USB integrated
  • the application server (host) 144 and the embedded file system 164 can each write and read data in memory 170 in the storage system 170.
  • the application server (host) file system 144 can write and read its own data, and the embedded file system 164 can also write and read its own data.
  • Memory 170 may also store shared data that can be accessed by both the application server (host) 144 file system and the embedded file system 164.
  • the application server (host) file system 144 can write data that is readable by the embedded file system 164, and the embedded file system 164 can also overwrite and modify that data.
  • the embedded file system 164 can write data that is readable by the application server (host) file system 144, and the application server (host) file system 144 can also overwrite and modify the data. .
  • While the sharing of data in memory 170 may be advantageous for application server (host) applications 130 and for embedded applications 152 that are running in system 100, operating an application server file system (host) 144 in parallel with an embedded file system 164 presents synchronization issues that must be addressed in order to ensure proper operation of system 100.
  • the two cache copies 146, 166 of the index of storage system 172 used by the application server (host) file system 144 and the embedded file system 164, respectively, may not always reflect precisely the contents of the storage system 150. If the storage system indexes stored in cache 146, 166 are not kept up to date, a write operation using obsolete information from a storage system index stored in cache can corrupt the contents of memory 170 in storage system 150.
  • the storage system index (SSI) 172 acts as an index for the data stored in the storage system 150. Additionally, the storage system index 172 may also include directory information, file sizes, creation and update dates of the files, file and directory names, and file and directory attributes, and other information required to operate and maintain a storage system 150.
  • the storage system index information 172 is used to match read or write operations at the file level with read or write operations of logical block addresses. When data is written to the memory 170 in the storage system 150, the storage system index 172 can be updated with the location of the new data. Writing a new file, deleting a file, adding data to an existing file, or overwriting an existing file with a new larger file, are all examples of file write operations that will require an update of the index of storage system 172.
  • Hard SSI Operations These operations can be referred to as “Hard SSI Operations".
  • the storage system index 172 does not require updating after a read operation, because the location of the stored data has not been changed.
  • write instead the storage system index 172 will not require an update if it is overwritten a file with a file of the same size, because the location of the stored data has not changed.
  • Soft SSI Operations These operations can be referred to as “Soft SSI Operations.”
  • a file system may store a cache copy of the system index of storage 172.
  • the copy that is cached is updated.
  • the actual index of the storage system 172 may not be updated each time the index of the storage system being cached is updated, in order to improve performance. Instead, the storage system index 172 can be updated after two or more write operations have been completed.
  • maintaining a cached copy is an efficient means of improving the operation of the system. In contrast to this, system 100 contains two copies in cache
  • a cached storage system index 146 is used by the application server (host) file system 144, and the embedded cached storage system index 166 is used by the embedded file system 164. If a write operation using the application server (host) file system 144 requires that its cache storage system index 146 be updated, the system index Storage cached in embedded cache 166 is obsolete. If the storage system index embedded cache 166 is not updated, a subsequent write operation using the embedded file system 164 will corrupt the contents of the storage system 150. Similarly, if a write operation using the Embedded file system 164 requires that its storage system index stored in cache 166 be updated, the storage system index stored in application server (host) 146 is obsolete. If the storage system index stored in application server (host) 146 is not updated, a subsequent write operation using the application server (host) file system will corrupt the contents of the storage system 150.
  • Synchronization of the storage system index stored in application server cache (host) 146 and the storage system index stored in cache cache 166 is important to prevent corruption of the storage system 150.
  • the stored storage system index Cached server file system of applications (host) 146 may not be directly accessible to an application server (host) application 130 or to the application server (host) processor, which can prevent synchronization by direct copying of the information of the storage system index between the cached storage system index of the application server (host) file system 146 and the embedded cached storage system index 166. Synchronization of the storage system indexes Cached by copying the data to and from the storage system index 172 is inefficient.
  • updating the storage system index embedded cache 166 by first copying the cache storage system index of the application server (host) file system 146 to the storage system index 172, and then copying the storage system index 172 to the storage system index embedded cache 166, it consumes time. If this synchronization process is performed once by write access to the storage system, the data bandwidth of the storage system 150 can be greatly reduced. In one embodiment, the need for synchronization operations can be reduced through the use of the application server (host) file system 144 to perform certain file operations (such as writing a new file, data annexation to an existing file, or the overwrite of an existing file with a new larger file) for the embedded file system 164.
  • the embedded file system 164 does not perform file operations that may require a change of the stored storage system index in embedded cache 166. Instead, the mass storage manager 162 receives these requests from the embedded application 152, and determines that processing the request would require a change in the index of the storage system stored in embedded cache 166. The storage manager mass storage 162 then transmits the request, including associated commands and data, to the apl server agent ication (host) 120 in the application server (host) 110. In one embodiment, the request is transmitted over the communication interface ISO 7816 102. The agent application server (host) 120 receives the request, and transmits the request, perhaps in the form of a call to a file-level function, to the application server (host) file system 144.
  • the file server system of applications (host) 144 processes the request as if the request originated within the application server (host) 110, such as from an application server application (host) 130.
  • the application server file system (host) 144 receives the file-level request, and generates one or more logical block address (LBA) commands for transmission to the memory controller 180 on the USB communication interface 104.
  • the memory controller 180 accesses the memory 170 of according to the logical block address commands.
  • the mass storage manager 162 can also determine that processing the request from the embedded application 152 would not require a change in the index of the storage system stored in embedded cache 166. This may occur if the request is a read operation, or a write operation that does not change the size or location of a file, such as a "write in place" operation. In this case, the mass storage manager 162 can then generate a file-level request from the embedded file system 164.
  • the embedded file system 164 can accept the order at the file level, and generate logical block address commands ( LBA) used by memory controller 180 to access memory 170.
  • LBA logical block address commands
  • FIG. 2 shows example steps 200 for processing a write request received by the mass storage manager 162 of Figure 1.
  • the control begins in step 202, where the mass storage manager 162 receives a read request or write from an embedded application 152 in communication with the operating system 160.
  • the request is evaluated in order to determine if it is a file reading operation. If the request is a file reading operation, then the request and the data will follow the data path Soft SSI Operation "192 shown in Figure 1.
  • the reading operation can be processed by the embedded file system 164 because Ia operation should not trigger or require a change in the storage system index stored in embedded cache memory 164.
  • Control passes from step 204 to step 222, where the storage system index 172 is updated with information from the storage system index stored in the application server (host) cache 146.
  • the mass storage manager 162 transmits a request to the application server (host) 110 to copy information from the storage system index stored in the application server cache (host) 146 to the storage system index 172.
  • the copy operation can be referred to as "download"
  • the request can be transmitted to the application server (host) on the communication interface ISO 7816 102, and be received by the interface ISO 142, and be passed to the application server (host) agent 120.
  • the application server (host) agent 120 then issues an order to the system application server (host) files 110 for copying information from the storage system index stored in the application server (host) cache 146 to the storage system index 172.
  • the control proceeds to step 222, in which the index of storage system stored in embedded cache 166 can be updated with Ia information from the storage system index 172.
  • the combination of steps 220 and 222 causes the cache storage system index of the embedded file system 166 to be synchronized with the storage system index stored in cache of the application server (host) file system 146.
  • step 224 in which the mass storage manager 162 reads the data from memory 170 by issuing a read command to the embedded file system 164.
  • the command and the data are arguments for a function that has been called supported by the API of the embedded filesystem 164.
  • the embedded filesystem 164 can use the read order at the file level to generate address commands from logical block (LBA), which are transmitted to memory controller 180.
  • LBA logical block
  • the control then returns to step 202, where the 200 steps await another request for writing or reading.
  • step 204 the request is evaluated again to determine if the write request is to write a new file, to append data to an existing file, or to overwrite an existing file with a File of a different size. If this is not the case, then the write operation can be processed by the embedded file system 164, because the operation should not trigger or require a change in the index of the storage system stored in the embedded cache 164. Thus, the request and the data will follow the data path Operation SSI Blanda "shown in Figure 1. The control proceeds to step 220, then to step 222, where it is updated in storage system index stored in embedded cache as described above.
  • step 224 the mass storage manager 162 writes the data from the memory 170 by means of issuing a write order to the embedded file system 164.
  • the order and the data are arguments for a function that has been called supported by the API of the embedded file system 164.
  • the embedded file system 164 can use the file-level write order to generate address commands from logical block (LBA), which is transmitted along with the data to memory controller 180.
  • LBA logical block
  • memory controller 180 uses the LBA commands and data to write to memory 170.
  • the control then returns to step 202 , where steps 200 await another request for writing or reading.
  • step 206 if the write request is to write a new file, to append data to an existing file, or to overwrite an existing file with a file of a different size, then the operation can be processed by the file system of the application server (host) 144, because the operation would trigger or require a change in the index of storage system stored in embedded cache 164 if performed with the embedded file system 164. In this way, the request and the data will follow the SSI Dura "190 Operation data path shown in Figure 1.
  • the mass storage manager 162 transmits a request to the application server (host) 110 to write to memory 170 using the file system of the application server (host) 144.
  • the request includes The write order, and the corresponding data, the request can be transmitted to the application server (host) on the communication interface ISO 7816 102, and can be received by the ISO 142 interface, and be passed to the application server agent (host) 120.
  • the application server (host) agent 120 then issues an order to the application server (host) file system 110 to write the data in memory 170.
  • the application server (host) file system 144 processes the request as if the request originated within the application server (host) 110, such as from an application of the application server (host) 130.
  • the file system from the application server (host) 144 receives the file-level request, and generates one or more logical block address (LBA) commands and data to be transmitted to the memory controller 180 on the USB communications interface 104.
  • LBA logical block address
  • step 210 memory controller 180 receives the commands from the application server (host).
  • step 212 memory controller 180 writes in memory 170 according to the logic block address commands.
  • the application server (host) file system 144 should update its cached storage system index 146 as a result of the write request from the application server (host) agent 120.
  • the application server (host) you can download the cached storage system index from the application server (host) 146 for the storage system 150, in order to update the storage system index 172.
  • step 214 the controller of memory 180 can receive and execute one or more commands to update the storage system index 172, where the commands include updated information from the cached storage system index of the server.
  • applications (host) 146 The control then returns to step 202, where steps 200 await another write or read request.
  • a file is opened or will be opened before it is accessed with a read or write order.
  • an order to open the file can be transmitted to the application server (host), if the file was not already open .
  • the embedded file system can be used to open the file before the read or write operation of step 224.
  • a file can also be closed by means of the appropriate file system at the end of a read or write operation. write, before the control returns to step 202. Alternatively, a file can be left open if the mass storage manager 162 determines that additional read or write operations are pending.
  • Figure 3 shows example steps 300 to process a write operation using the application server (host) file system 144 of Figure 1.
  • the steps 300 can be used by an application server (host) application 130.
  • Steps 300 can also be used by the application server (host) agent 120, for example, in response to a write request transmitted from the mass storage manager 162.
  • a request is received to perform a write or read operation.
  • the request can be generated by means of a functionality within an application 130, and can be received by a component within the application 130.
  • the request can also be received by the application server (host) agent 120 of the application manager Mass storage 162 in the storage system 150.
  • the control proceeds to step 304, where the file is opened by means of the application server (host) file system.
  • the application server (host) file system writes data or reads data to or from the file.
  • the application server (host) file system 144 receives the file-level request from the application 130 or from the application server (host) agent 120, and generates one or more logical block address (LBA) commands and data for transmission to memory controller 180 over The USB communication interface 104.
  • LBA logical block address
  • the memory controller 180 receives the commands from the application server (host) 110. If the request is a write operation, the memory controller 180 also receives data. Memory controller 180 then writes or reads from memory 170 according to the logic block address commands. If the request is a read operation, the memory controller 180 returns the data to the application server (host) on the USB communication interface 104. The control then goes to step 308, in which the file is closed by means of the application server (host) file system. Thus, the inspection of steps 300 reveals that the index of the file system storage system in the application server (host) cache 146 should not need to be synchronized with the index of the storage system stored in the cache cache 166.
  • the application server (host) storage system 110 can use its own index of cached storage system 146 without the risk of becoming obsolete, because the embedded file system 164 does not perform any I / O operation of file that could make obsolete the cached copy of the application server (host) 146 of the storage system index 172. Instead, the mass storage manager 162 delegates all write requests that would trigger or that would require an update of a storage system index cached 166 to the application server (host) file system 100. This eliminates The need for synchronization when the write and read operations are performed using only the application server (host) file system 110, improving the operation of these operations.
  • an application server (host) file system must have a minimum required functionality. Specifically, an application server (host) agent or an application server (host) application must be able to order the application server (host) file system to 1) open or create a file, 2) close a file. file, 3) write a file, 4) read a file, and 5) copy the storage system index cached from the application server (host) and the file information associated with a system storage system index of storage.
  • the Win32 API is able to implement all the required functions.
  • the application server (host) file system can open or create a file using the CreateFile function: HANDLE WINAPI CreateFile (_jn LPCTSTR IpFileName, _in DWORD dwDesiredAccess, in DWORD dwShareMode, in_opt
  • HANDLE hTemplateFile The application server (host) file system can close a file using the CloseHandle function: BOOL WINAPI CloseHandle (__ ⁇ n HANDLE hObject);
  • the application server (host) file system can write to a file using the Wr ⁇ teFile function: BOOL WINAPI WriteFile (_in HANDLE hFile, __in LPCVOID, IpBuffer, __in DWORD nNumberOfBytesToWrite, _out_opt LPDWORD
  • the application server (host) file system can read from a file using the ReadFile function: BOOL WINAPI ReadFile (_in HANDLE hFile, _out LPVOID IpBuffer, _in
  • All the information associated with a file can be copied from the storage system index stored in the application server (host) 146 to the storage system index 172 in the storage system.
  • storage 150 by means of a call to the FlushFileBuffers function, and then closing the file using the CloseHandle function: BOOL WINAPI FlushFileBuffers (_in HANDLE hFile); BOOL WINAPI CloseHandle (_in HANDLE hObject);
  • steps 200 of Figure 2 and steps 300 of Figure 3 can be implemented with a variety of application server (host) file systems and system environments operational
  • steps 200 and steps 300 can be implemented in hardware, in software, or in a combination of hardware and software.
  • the need for synchronization between an application server (host) file system and an embedded file system can be reduced by using the application server (host) file system 144 to perform certain write operations on behalf of the embedded file system 164.
  • the mass storage manager 162 receives a request from an embedded application 152 for a write operation that writes to a new file, which attaches data to a file existing, or that overwrites an existing file with a file of a different size, then the request, including the data to be written, is transmitted to the application server (host) 110, where it is processed by the file system of application server (host) 144 as if the request had originated from the application server (host) 110.
  • the application server (host) file system can perform file I / O operations without the risk that its storage system index stored in cache 146 was previously rendered obsolete by means of an operation performed by the embedded file system 164. In this way, the need for synchronization is reduced.
  • the embedded cache storage system index 166 can be updated from the storage system index 172 before writing or reading data to or from the memory 170 using the embedded file system 164.
  • the inspection of the Steps 200 reveals that this synchronization operation only occurs once per read or write request using the embedded file system 164.
  • the relative overhead associated with this synchronization operation can be reduced.
  • steps 200 to process application requests 152 and to route requests and data to the application server (host) 144 file system or to the file system Embedded 164 to process they are relatively simple. In this way, the hardware or software requirements for the mass storage manager 162 to implement steps 200 may be comparatively smaller than in other embodiments.
  • the mass storage manager 162 routes a write request to the application server (host) file system, the corresponding write request data is transmitted from the storage system 150 to the server computer 110 on an ISO 7816 communication interface 102, then from the application server (host) 100 to the storage system 150 on a USB communication interface 104, before they are written in the memory.
  • the data may be vulnerable to inspection and copied while they are being transmitted between the application server (host) 110 and the storage system 150.
  • the data transmission is protected between the application server (host) 110 and the storage system 150 through the establishment of a secure channel for the transmission of data on one or both communication interfaces 102, 104. establishes a secure channel through a key exchange between application server (host) 110 and storage system 150.
  • Application server (host) 110 and storage system 150 exchange or make available to each other the values of public key.
  • the application server (host) 110 and the storage system 150 each use the received key to calculate a private key, using an agreed algorithm.
  • the application server (host) 110 and the storage system 150 use the calculated private keys to encrypt data before transmitting it on the data communication channel, and decrypting the data after receiving it on the data communication channel.
  • the secure channel may consist of a single communications session, and a new secure channel can be established for each of the required sessions.
  • Any number of procedures can be used to establish a secure channel to avoid interception and attacks on data exchanged between data the application server (host) 110 and the storage system 150. However, one or more of these procedures may require additional hardware or software, and may have an impact on the operation of system 100.
  • Other embodiments may eliminate the need to transmit writing data of the embedded application 152 to and from the application server (host) 110 in order to complete certain write operations, possibly at the expense of a more complex hardware or software implementation of the data manager. Mass storage 162. In one embodiment, the need for synchronization operations for two file systems can also be reduced.
  • the mass storage manager 162 can use the application server (host) file system 144 to allocate space of file for a write operation instead of actually performing the entire write operation on behalf of the embedded file system 164.
  • the application server (host) file system 144 assigns the required file type, the embedded file system 164 can perform the write operation on its own.
  • the implementation of the mass storage manager 162 of this embodiment is more complex, but the transmission of write data to and from the application server (host) 110 for certain write operations is avoided.
  • the need for synchronization operations can be reduced by means of the use of the application server (host) file system 144 to perform certain file operations (such as the extension of a file or the creation of a file new empty) for the embedded file system 164.
  • the embedded file system 164 does not perform file operations that may require a change in the storage system index stored in embedded cache 166, such as allocating new space or additional space for a file.
  • the embedded file system 164 depends on the application server (host) 144 file system to perform these operations on its behalf. Once the application server (host) file system 144 allocates the required file space, the embedded file system 164 can write to the allocated file space, an operation that does not trigger or does not require a change in the embedded cache storage system index 166. Thus, the cache stored storage system index of the application server (host) file system 146, and the storage system index 172, may not become obsolete due to the file I / O operations of the embedded file system 164. This may reduce or eliminate The need to update the cache storage system index of the application server (host) file system 146 before a file I / O operation using the application server (host) file system 144.
  • the index of embedded cached storage system 166 must be updated after the application server (host) file system 144 creates or expands a file for the embedded file system 164.
  • the embedded file system 164 can perform one or more write operations to a file before the file needs to be expanded again, reducing this way the number of synchronization operations required.
  • the mass storage manager 162 will receive file I / O requests from the embedded application 162, and can determine whether the file I / O operation will require an update of the storage system index 172. If an update is required, the mass storage manager 162 will process the request with the help of the application server (host) 110 and the application server (host) file system 144. If an update is not required, the mass storage manager 162 will process the request through the embedded file system 164, and the application server (host) file system 144 will not be used.
  • FIG. 4 shows example steps 400 for using an embedded file system 164 to perform read and write operations with the help of an application server (host) file system.
  • the control begins in step 402, where the mass storage manager 162 receives a request from the application 152 to open a file for a read or write operation.
  • a file can be accessed for three reasons: 1) a read-only operation, 2) a write-only operation or 3) a combination of writes and readings in a file.
  • step 404 the type of access request is evaluated. If the request is for a read-only operation, the control proceeds to step 406, in which the embedded file system 164 updates its storage system index cache 166, including directory information, of the storage system index 172 of the storage system 150.
  • the storage system index 172 contains the index to date of the contents of the storage system 150. If the storage system index cached from the application server ( host) 146 contains the most current index, then the information of the cached storage system index of the application server (host) 146 must be used to update the storage system index 172, before the update of the embedded cache of the storage system index 166.
  • the control proceeds to step 408, in which The embedded file system 164 performs the data reading operation from the storage system 150. Since the operation is a data reading operation, the control proceeds to step 410 and then to step 412, in which the storage manager Massive 162 determines if the data reading operation is over.
  • step 408 the control returns to step 408 again to perform an additional reading using the embedded file system. By returning the control to step 408, the overhead associated with opening and closing a file a second time for the operation of additional reading from the same file is avoided. If the read operation is completed and there are no pending requests to read more data from the file, then the control passes from step 412, to step 414 in which the embedded file system 162 closes the file, then through the step 416, and finally for the completion of steps 400.
  • step 402 If the request in step 402 is for a write operation, or a combination of read and write operations, the control passes from step 404 to step 420, in which the mass storage manager 162 directs to the file system of application server (host) 144 to open the file, or to create a new file if the file does not exist in the storage system 150. This is done by the mass storage manager 162 by sending a request to the server agent from applications (host) 120 through the ISO 7816 communications interface
  • the application server (host) agent 120 then directs the application server (host) file system 144 to open the file.
  • the control proceeds to step 422, in which the application server (host) file system 144 expands the size of the open file.
  • This is carried out by means of the mass storage manager 162 by sending a request to the application server agent (host) 120 through the communication interface ISO 7816 102.
  • the size of the extension can be a fixed number of octets, such as a megabyte, which can accommodate one or more write operations.
  • the file size can be expanded by the number of octets needed to accommodate the file after a write operation has been completed or after all write operations have been completed.
  • the size of the extension is the difference in size between the existing and new (or modified) file after one or all of the writing operations. For example, if an existing file is two megabytes, and the request received is to write a four megabyte file, then the size of the extension is two megabytes.
  • the extension of the file in step 420 triggers the index of the cached storage system of the application server (host) 146 so that it is updated with the information about the expanded file, including its storage location and its new size.
  • the file system of the application server (host) 144 has the order to download or copy the updated information from the cached storage system index of the application server (host) 146 to the storage system index 172 in the storage system 150. This is carried out by the mass storage manager 162 by sending a request to the application server agent (host) 120 through the communication interface ISO 7816 102.
  • the application server (host) file system 144 can transmit commands and data to memory controller 180 through the communications interface USB 104.
  • the memory controller receives the commands and data, and updates the storage system index 172 using the commands and data.
  • step 406 in which the embedded file system 164 updates its cache of the storage system index 166, including directory information, of the storage system index 172 of the storage system 150.
  • the embedded cache of the storage system index 166 contains updated information about the resized file in step 422.
  • the embedded file system 164 then opens the file, and in step 408, the embedded file system 164 performs the read operation or write data to the file.
  • the read or write data operation in step 408 does not trigger an update of the storage system index stored in embedded cache 166, because the operation does not increase the file size. If there is not enough space available, the writing fails, and the file will be expanded again in step 422 before an attempt is made to write again. Therefore, the caching system index of the application server (host) 146 does not become obsolete by a write operation using the embedded file system 164 in step 408.
  • step 426 the algorithm checks whether enough file space was allocated for the write operation. If this has not been the case, then the control proceeds to step 422, in which the application server (host) file system 144 is used to extend the file again.
  • step 424 the updated storage system index information, including the directory information, from the application server (host) cache of the storage system index 146 is received from the application server (host) 110, and is used to update the storage system index 172 of the storage system 150. This information is then used to update the embedded cache of the storage system index 166.
  • the control is then passed to steps 406, followed by step 408 , in which the embedded file system 164 updates the embedded cache of the storage system index 166 and attempts to complete the operation of writing.
  • step 412 the mass storage manager 162 determines whether the read / write data operation is finished. If the mass storage manager 162 has received an additional request to write data or to read data to or from the same file, the control returns to step 408 to perform an additional read / write operation using the embedded file system 164. The return the control to step 408 avoids the overhead associated with opening and closing a file a second time for the additional read or write operation from or to the same file. If the last operation is finished and if there are no pending read or write requests for the same file, then the control passes from step 412, through step 414, in which the file is closed by the embedded file system .
  • step 416 the application server (host) file system truncates the file to remove any extra space that was allocated to the file when the file was expanded in step 422, but that remained unused after the write operation of step 408. This is carried out by the mass storage manager 162 by sending a request to the application server (host) agent 120 through the ISO 7816 communication interface 102.
  • Truncating the file in step 418 triggers or requires updating the storage system index stored in application server (host) cache 146 with information about the truncated file, including its storage location and its new size.
  • the application server (host) file system 144 has been ordered to download or copy the updated information from the storage system index stored in the application server cache (host) 146 to the storage system index 172 in the storage system. This is carried out by the mass storage manager 162 by sending a request to the application server agent (host) 120 through the ISO 7816 communication interface 102.
  • the application server (host) file system 144 can transmit commands and data to the memory controller 180 through the USB communication interface 104.
  • the memory controller receives the commands and data, and updates the storage system index 172 using the commands and data. After this update, steps 400 are finished.
  • the file extension algorithm are possible.
  • the extension of the file in step 422 uses information about the size of the file that will result once the pending write operation is completed, and extends the file so that there is always at least one sufficient file space. to complete the pending file write operation.
  • control proceeds from step 408 to step 412, and then to step 426 if there is a subsequent request for pending file access. If there is another pending request for file access, in step 426, the file can be extended again if the pending request is a file write request and if there is not at least enough file space to complete the next write operation in file.
  • a mass storage manager 162 can receive a request to write a file, in which the operation requires the use of the embedded file system 164.
  • the manager Mass storage 162 can use the application server (host) file system 144 to expand the file before writing, and truncate the file to the correct size after writing.
  • the mass storage manager 162 may use the embedded file system 164 to actually transfer the data to memory 170. Therefore, unlike the first embodiment, write data is not transmitted to and from the application server (host ) 110 before being stored in memory 170.
  • the mass storage manager 162 can ensure that the application server (host) file system 144 performs all the operations that would require an update to the storage system index 172. Therefore, the storage system index stored in application server (host) cache 146 is not at risk of becoming obsolete due to an E operation / S of file using the embedded file system 164.
  • the storage system index stored in cache cache 166 can be updated from the storage system index 172 before the data is written or read to or from the storage system 150
  • the inspection of steps 400 reveals that this synchronization operation occurs only once when a read-only operation is requested, and only once per file extension event when a write operation is required.
  • the size of the predetermined file extension increased, the required number of file extension events can be reduced.
  • an application server (host) file system must have a minimum required functionality. Specifically, the mass storage manager 162 must be able to direct the application server (host) file system to 1) open or create a file, 2) close a file, 3) expand a file, 4) truncate a file, and 5) copy the storage system index stored in the application server cache (host) and the associated file information to a storage system storage system index. As previously discussed, mass storage manager 162 can transmit commands to the application server (host) agent 120, which in turn can send commands, perhaps in the form of function calls, to the server file system of applications (host) 144.
  • the Win32 API is able to implement all the required functions.
  • the application server (host) file system can open or create a file, close a file, and copy the storage system index stored in the application server (host) cache and the information file associated with an index of storage system storage system.
  • the application server (host) file system can also expand or truncate a file by first setting a file pointer associated with an open file. using the SetFilePointer function, then setting the location pointed by the file pointer as the end of the open file using the function
  • DWORD WINAPI SetFilePointer (_in HANDLE hFile, _in LONG IDistanceToMove, inout_opt PLONG IpDistanceToMoveHigh, in DWORD dwMoveMethod);
  • Figure 5 shows example steps 500 to process a write operation using the application server (host) file system 144 of Figure 1.
  • the steps 500 can be used by an application server (host) application 130.
  • Steps 500 can also be used by the application server (host) agent 120, for example, in response to a write request transmitted from the mass storage manager 162.
  • a request is received to perform a write operation or a read operation.
  • the request can be generated by the functionality within an application 130, and can be received by a component within the application 130.
  • the request can also be received by the application server agent (host) 120 from the application manager.
  • Both the application server (host) agent 120 and the application 130 can send commands and data to the application server (host) file system 144 through the server operating system.
  • step 504 the application server (host) file system opens the file.
  • step 506 the application server (host) file system writes data or reads data to or from the file.
  • the application server (host) file system 144 receives the file-level request from the application 130 or the application server (host) agent 120, and generates one or more logical block address (LBA) commands and data for transmission to the memory controller 180 on the USB communication interface 104.
  • the memory controller 180 receives the commands from the application server (host) 110. If the request is a write operation, the memory controller 180 It also receives data. The memory controller 180 then writes or reads the memory 170 according to the block address commands logical.
  • LBA logical block address
  • the memory controller 180 returns the data to the application server (host) on the USB communication interface 104.
  • the control then proceeds to step 508, in which the server file system applications (host) close the file.
  • the inspection of steps 500 reveals that the file system storage system index in application server (host) 146 would not need to be synchronized with the storage system index stored in cache cache 166.
  • the Application server (host) file system 110 can use its index of cached storage system 146 without the risk of becoming obsolete, because embedded file system 164 does not perform any of the E / O operations. S file that could make the cached copy of the application server (host) 146 of the storage system index 172 obsolete.
  • the mass storage manager 162 delegates all operations, such as the extension and file trunking, which would trigger or that would require an update to a storage system index cached 166 to the file system application server (host) 100. This eliminates the need for synchronization when writing and reading operations are performed using the application server (host) file system 110, improving the operation of these operations.
  • SIM cards and R-UIM cards are used in cell phones that operate in Global System Communications networks for Mobile Communications (GSM) and Multiple Division Code Access (CDMA) networks, respectively.
  • GSM Global System Communications networks for Mobile Communications
  • CDMA Multiple Division Code Access
  • SIM and R-UIM cards store limited amounts of information, such as encryption keys, subscriber identification values, and telephone contact list.
  • non-volatile memory storage density has increased, more non-volatile memory may be contained within a memory card. storage such as a SIM card.
  • Additional storage can be used for a variety of advanced cell phone services, such as annexing objects in Multimedia Messaging Services (MMS), MP3 audio files, high resolution image files, and video files, as well as providing Full personal information management (PIM) functionality (in English, personal information managemenf), such as email contact lists and calendars.
  • Some of the additional storage capacity is used by applications that are running on the application server (host), such as a cell phone, a personal digital assistant (PDA), or any device that is in communication with the SIM card. high capacity.
  • the additional storage capacity is also used by applications that are running on a processor embedded with the high capacity SlM card. In a high capacity SIM card, at least some data is stored in a shared memory space that is accessible both by the processor embedded within the SIM card, and by the application server (host).
  • an application server (host) processor can access flash memory storage within a high capacity SIM card without having to update its cached storage system index with the contents of the storage system index stored in embedded cache.
  • a mass storage manager such as the mass storage manager 162 of Figure 1, can be used to receive requests from an embedded application 152, and to determine whether the requested operation would require an update of the storage system index 172.
  • the mass storage manager 162 routes the request to the application server file system (host) 144 if the request will change the mass storage index 172, and route the request to the embedded file system 164 if the request will change the storage system index 172.
  • the application server file system ( host) 144 is used to write a new file, to delete a file, to append data to an existing file, or to overwrite an existing file with a new larger file.
  • the embedded file system 164 is only used for read operations, and for operations to overwrite data with new data, which is sometimes referred to as "write instead.”
  • the write data is transmitted outside the storage system 150 to the application server (host) 110 as part of an order to File level
  • the writing data is transmitted from the application server (host) 110 to the high capacity SIM card 150 as part of a plurality of logical block address commands generated by the application server (host) file system 144.
  • the writing data exists and re-enters the high capacity SIM card 150 before being written in flash memory 170.
  • the file system Embedded first updates its storage system index cache, then performs readings without the help of the application server (host) file system, as described in steps 200 of Figure 2, and steps 400 of Ia figure 4.
  • the mass storage manager 162 partitions the request from the application 152 as necessary, to use the functionality of the application server (host) file system 144 if the extension and truncation of files are required, and otherwise, they use the embedded file system 164 for real read and write operations.
  • an embedded file system 164 may depend on a server file system of applications (host) 144 to open or create a new file, expand the file in preparation for writing new data, and to truncate and close the file after a write operation has been completed.
  • the file system Embedded 164 can be used to perform the actual writing of data in the file.
  • the mass storage manager 162 coordinates the operation of the application server (host) file system 144 and the embedded file system 164 in order to complete the request. Allowing an application server (host) file system
  • a potential deficiency associated with operating two file systems in parallel is the synchronization of the storage system indexes stored in cache stored within each file system, and the storage system index stored in the storage system itself. Without synchronization, a memory 170 can be corrupted by means of a write operation using an obsolete cache copy of the storage system index. On the other hand, synchronization operations can decrease the data output flow due to the need to copy the storage system index information between the storage system 150 and the cache copy of the storage system index stored within Each file system.
  • the embodiments allow the application server (host) file system to use its cached storage system index without the risk of becoming obsolete, because the embedded file system does not perform any of the file I / O operations that they could make the application server (host) cache copy of the storage system index obsolete. This eliminates the need for synchronization when reading and writing operations are performed using the application server (host) file system, improving the operation of these operations. In order to do this, the application server (host) file system performs many operations on behalf of the embedded file system.
  • the operations that trigger or that require a change in a storage system index are made by the application server (host) file system 144, on behalf of the embedded file system 164.
  • the application server (host) file system 144 is used to perform all memory write operations 170, either initiated by means of an application server application (host) 130 or by means of a embedded application 152, which would trigger or that would require a change in storage system index 172.
  • application server (host) file system 144 processes write requests from embedded applications 152 through the application server agent (host) 120 as if requests were originated within the application server (host).
  • the storage system index stored in the application server (host) cache 146 does not have the risk of becoming obsolete by means of an operation by the embedded file system 164.
  • the storage system Embedded files 164 is used to write data in memory 170 for the embedded application 152, and the application server (host) file system 144 is only used to extend the file size to allow the writing of new data in the file .
  • the application server (host) 144 file system also truncates the file to eliminate unused file space at the end of a write operation.
  • the embedded file system 164 must synchronize its storage system index stored in cache 166 with the storage system index stored in the application server (host) 146. The overhead of this operation synchronization can be reduced (in relation to the amount of written data) by means of the selection of a file extension size that is sufficient to accommodate most or all the data that the embedded file system will write while the file is open.
  • the embedded file system 164 When the embedded file system 164 is used to read data, the embedded file system 164 must synchronize its cached storage system index 166 with the cached storage system index of the application server (host) 146 before to open the file The overload of this synchronization operation can be reduced (in relation to the amount of data read) by means of Ia reading more data from the file each time it is opened.
  • the application server (host) file system 144 is favored, and thus can have a comparatively better performance, because the caching system index of the application server file system ( host) 146 cannot become obsolete due to file I / O operations using embedded file system 164.
  • embedded file system 164 could be favored instead of the application server file system. (host) 144, by using the embedded file system 164 to perform all operations that would modify the storage system index 172, and requiring that the application server (host) file system 144 synchronize its index of Cached storage system 146 before performing a file I / O operation. The choice of which file system to favor depends on the operating requirements of the system.
  • the application server (host) file system 144 could be favored.
  • the embedded file system 164 could be favored.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Con el fin de que una aplicación embebida escriba datos en un sistema de almacenamiento embebido accesible con sistemas de servidor de aplicaciones (host) y de ficheros embebidos, un gestor de almacenamiento embebido recibe una petición de escritura de datos de fichero. El gestor determina si la petición cambiará un índice del contenido del sistema de almacenamiento. De ser así, se usa el sistema de ficheros de servidor de aplicaciones (host) para escribir en el fichero. De manera alternativa, se abre el fichero y se amplía con el sistema de ficheros de servidor de aplicaciones (host). Se abre entonces el fichero y se escribe en el mismo por medio del sistema de ficheros embebido. El fichero es truncado por medio del sistema de ficheros de servidor de aplicaciones (host), y se cierra por medio de ambos sistemas de ficheros. De no ser así, se abre el fichero, se escribe y se cierra por medio del sistema de ficheros embebido. Con el fin de que una aplicación embebida lea datos desde un sistema de ficheros embebido, se actualiza el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros embebido, después se abre el fichero, se lee y se cierra por medio del sistema de ficheros embebido.

Description

PROCEDIMIENTO PARA ACCEDER A UN SISTEMA DE ALMACENAMIENTO CON MÚLTIPLES SISTEMAS DE FICHEROS
CAMPO TÉCNICO
Esta solicitud se refiere por Io general al funcionamiento de sistemas de memoria flash no volátiles, y, de manera más específica, a un procedimiento y a un sistema para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros. ANTECEDENTES
Existen muchos productos de memoria no volátil comercialmente satisfactorios que se están usando en Ia actualidad, en particular en forma de tarjetas de factor de forma pequeño, que emplean células EEPROM flash (Memoria de sólo lectura que se puede programar y borrar eléctricamente), (del inglés Electrícally Erasable and Programmable Read OnIy Memory) formadas sobre uno o más dispositivos de circuito integrado. Algunos de los formatos de tarjeta comercialmente disponibles incluyen tarjetas CompactFlash (CF), tarjetas MultiMedia (MMC), y tarjetas digitales seguras (SD) (del inglés Secure Digital cards). Otros formatos de tarjetas comercialmente disponibles incluyen las Tarjetas Inteligentes, tarjetas de Módulo de Identidad de Abonado (del inglés Subscríber Identity Module) (SIM), y tarjetas de Módulo de Identidad de Abonado Extraíbles (del inglés Removable User Identity Module) (R-UIM). Los ordenadores centrales incluyen a los ordenadores personales, ordenadores de agenda, asistentes digitales personales (PDA) (del inglés Personal Digital Assistant), varios dispositivos de comunicación de datos, cámaras digitales, teléfonos celulares, reproductores portátiles de audio, sistemas de sonido para automóviles, y tipos similares de equipamiento. En algunos sistemas, una tarjeta extraíble incluye un controlador para dirigir el funcionamiento de Ia memoria en Ia tarjeta. De esta forma, se puede conseguir el control de Ia memoria por medio de software o de hardware sobre un controlador en Ia tarjeta. Además de una implementación de tarjeta de memoria, este tipo de memoria puede estar embebida de manera alternativa dentro de varios tipos de sistemas de servidor de aplicaciones (host). Tanto en aplicaciones extraíbles como en aplicaciones embebidas, los datos de servidor de aplicaciones (host) se pueden almacenar en Ia memoria de acuerdo con un esquema de almacenamiento implementado por medio de un software de control de Ia memoria.
El software de control de Ia memoria puede hacer de interfaz con un sistema de ficheros de servidor de aplicaciones (host), que, a su vez, puede hacer de ¡nterfaz con un gestor de ficheros de memoria que proporcione una interfaz de programación de aplicaciones (del inglés, Application Programming Interfacé) (API) a aplicaciones que accedan a Ia memoria. Los sistemas de ficheros de servidor de aplicaciones (host) pueden soportar un conjunto de comandoes de lectura y escritura para acceder a sistemas de almacenamiento conectados al servidor de aplicaciones (host), se pueden optimizar para las limitaciones de recursos para las características del servidor de aplicaciones (host), y pueden incluir características avanzadas tales como soporte multi- proceso.
Algunas tarjetas de memoria no volátil contienen un procesador embebido que puede generar datos para almacenar dentro de Ia memoria en Ia tarjeta. El procesador embebido o el servidor de aplicaciones (host) pueden recuperar los datos generados por el procesador embebido. De manera similar, el procesador embebido también puede acceder a los datos almacenados por el servidor de aplicaciones (host) en Ia memoria. En estas situaciones, el procesador embebido comparte Ia memoria con el servidor de aplicaciones (host), y utiliza un sistema de ficheros independiente adicional, que tienen una interfaz con el software de control de Ia memoria, para gestionar su almacenamiento y su recuperación de datos. La sincronización entre el servidor de aplicaciones (host) y los sistemas de ficheros de tarjeta de memoria es necesaria cuando se hacen funcionar un sistema de ficheros de servidor de aplicaciones (host) y un sistema de ficheros de procesador embebido en paralelo uno con el otro para controlar el acceso compartido a una memoria dentro de una tarjeta de memoria no volátil. SUMARIO Con el fin de tratar estas cuestiones, existe una necesidad para mejorar el acceso coordinado a un sistema de almacenamiento por medio de dos sistemas de ficheros independientes. De manera específica, existe una necesidad de mejorar el acceso coordinado a una memoria dentro de una tarjeta de memoria no volátil compartida por un servidor de aplicaciones (del inglés, "host") y un procesador embebido o embebido dentro de Ia tarjeta. Se diseñan varias realizaciones para tratar estas necesidades, ejemplos de las cuales se proporcionan en este documento.
De esta manera, de acuerdo con un aspecto de Ia invención, se proporciona un procedimiento para Ia gestión del acceso a datos a un sistema de almacenamiento indexado por medio de un índice de sistema de almacenamiento. Se recibe una petición de acceso desde dentro del sistema de almacenamiento, donde Ia petición de acceso está asociada con un fichero. Se determina si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento. Si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento, se transmiten un comando de escritura de datos y los correspondientes datos de escritura a un servidor de aplicaciones (host). Un comando de escritura de dirección de bloque lógico y al menos una parte de los datos son recibidos desde el servidor de aplicaciones (host). Una parte de los datos se escriben en el sistema de almacenamiento de acuerdo con el comando de escritura de dirección de bloque lógico. Se recibe desde el servidor de aplicaciones (host) un comando de actualización del índice de sistema de almacenamiento. El índice de sistema de almacenamiento se actualiza de acuerdo con el comando de actualización del índice de sistema de almacenamiento recibida. Si Ia petición de acceso es una petición de escritura, que incluya datos, no requiere una actualización del índice de sistema de almacenamiento, los datos se escriben en el fichero con un sistema de ficheros embebido. Si Ia petición de acceso es una petición de lectura, los datos se leen desde el fichero con el sistema de ficheros embebido. En otro aspecto de Ia invención, existe un sistema de almacenamiento indexado por medio de un índice de sistema de almacenamiento. El sistema de almacenamiento incluye una memoria, un sistema de ficheros embebido, y un controlador de memoria que recibe las peticiones de lectura y escritura desde un servidor de aplicaciones (host) y desde el sistema de ficheros embebido y escribe datos en Ia memoria y lee datos desde Ia memoria. El sistema de almacenamiento incluye también un gestor que recibe una petición de acceso desde dentro del sistema de almacenamiento, donde Ia petición de acceso está asociada con un fichero, y determina si Ia petición de acceso es una petición de escritura que requiera de una actualización del índice de sistema de almacenamiento, una petición de escritura que no requiera de una actualización del índice de sistema de almacenamiento, o una petición de lectura. Si Ia petición de acceso es una petición de escritura que requiriese de una actualización del índice de sistema de almacenamiento, el gestor transmite un comando de escritura de datos y los datos a un servidor de aplicaciones (host). Si Ia petición de acceso es una petición de escritura que no requiriese de una actualización del índice de sistema de almacenamiento, el gestor escribe los datos en el fichero con el sistema de ficheros embebido. Si Ia petición de acceso es una petición de lectura, el gestor lee los datos del fichero con el sistema de ficheros embebido. De acuerdo con otro aspecto de Ia invención, existe un procedimiento de gestionar el acceso de datos a un sistema de almacenamiento ¡ndexado por un índice de sistema de almacenamiento. Se recibe desde dentro del sistema de almacenamiento una petición de acceso asociada con un fichero. Se determina si Ia petición de acceso es una petición de escritura. Si Ia petición de acceso es una petición de escritura, en Ia que Ia petición de escritura contiene datos, se transmiten un comando de fichero abierto y un comando de fichero ampliado a un servidor de aplicaciones (host). Se recibe un comando de actualización del índice del sistema de almacenamiento desde el servidor de aplicaciones (host), en Ia que el comando de actualización del índice de sistema de almacenamiento contiene información acerca del fichero ampliado. Se actualiza el índice de sistema de almacenamiento de acuerdo con el comando de actualización del índice del sistema de almacenamiento recibida. Se transmite un comando de cerrar fichero al servidor de aplicaciones (host), y el sistema de ficheros embebido abre el fichero, escribe los datos que van a ser almacenados y cierra el fichero. Se determina si Ia petición de acceso es una petición de lectura. Si Ia petición de acceso es una petición de lectura, se abre el fichero con un sistema de ficheros embebido, se leen los datos del fichero abierto usando el sistema de ficheros embebido, y se cierra el fichero usando el sistema de ficheros embebido.
En otro aspecto adicional de Ia invención, existe un sistema de almacenamiento indexado por medio de un índice de sistema de almacenamiento. El sistema de almacenamiento incluye una memoria, un sistema de ficheros embebido, y un controlador de memoria que recibe las peticiones desde un servidor de aplicaciones (host) y desde un sistema de ficheros embebido y escribe datos en Ia memoria y lee datos desde Ia memoria. El sistema de almacenamiento incluye también un gestor que recibe una petición de acceso desde dentro del sistema de almacenamiento, en donde Ia petición de acceso está asociada con un fichero, y determina si Ia petición de acceso es una petición de escritura, donde Ia petición de escritura contiene datos. Si Ia petición de acceso es una petición de escritura, el gestor transmite un comando de fichero abierto a un servidor de aplicaciones (host), transmite un comando de fichero ampliado al servidor de aplicaciones (host), y transmite un comando de descarga de Ia memoria cache del índice de sistema de almacenamiento al servidor de aplicaciones (host). El gestor también puede abrir el fichero con el sistema de ficheros embebido, escribe datos con el sistema de ficheros embebido, cierra el fichero con el sistema de ficheros embebido, y transmite un comando de cerrar el fichero al servidor de aplicaciones (host), en donde Ia escritura de los datos en el fichero usando el sistema de ficheros embebido no cambia el tamaño del fichero. El gestor determina también si el acceso es una petición de lectura. Si Ia petición de acceso es una petición de lectura, el gestor abre el fichero con el sistema de ficheros embebido, lee datos del fichero con el sistema de ficheros embebido, y cierra el fichero con el sistema de ficheros embebido. Otros procedimientos y sistemas, y otras características y ventajas de los mismos serán, o comenzarán a ser, aparentes para alguien que sea experto en Ia técnica al examinar las siguientes figuras y Ia siguiente descripción detallada. Se desea que el alcance de Ia invención incluya los procedimientos anteriores y todos los mencionados procedimientos y sistemas adicionales, y las características y las ventajas de los mismos. BREVE DESCRIPCIÓN DE LOS DIBUJOS
Los componentes de las figuras no están necesariamente a escala, en lugar de esto, se pone el énfasis en Ia ilustración de los varios aspectos de las mismas. Además, en las figuras, idénticos números de referencia designan a partes correspondientes en todas las diferentes vistas.
La figura 1 es un diagrama que ilustra un sistema para acceder a un sistema de almacenamiento utilizando dos sistemas de ficheros en paralelo.
La figura 2 muestra pasos de ejemplo para el procesado de una petición de escritura recibida por el gestor de almacenamiento masivo de Ia figura 1. La figura 3 muestras pasos de ejemplo para el procesado de una operación de escritura usando el sistema de ficheros de servidor de aplicaciones (host) de Ia figura 1.
La figura 4 muestras pasos de ejemplo para el uso de un sistema de ficheros embebido para realizar operaciones de lectura y de escritura con ayuda de un sistema de ficheros de servidor de aplicaciones (host).
La figura 5 muestra pasos de ejemplo para el procesado de una operación de escritura usando el sistema de ficheros de servidor de aplicaciones (host) de Ia figura 1. DESCRIPCIÓN DETALLADA DE LAS REALIZACIONES ACTUALMENTE PREFERIDAS
Las aplicaciones en un sistema de ejemplo pueden necesitar escribir datos en un sistema de almacenamiento, y leer datos de un sistema de almacenamiento. En muchos casos, un sistema de ficheros de servidor de aplicaciones (host) sobre un servidor de aplicaciones (host) proporciona Ia Interfaz de Programación de Aplicaciones (API) necesaria para realizar todas las operaciones requeridas, tales como Ia apertura de un fichero, Ia lectura de los datos de un fichero, la escritura de datos en un fichero, y el cierre de un fichero. Un ejemplo de una API de un sistema de ficheros es Ia API de Entrada / Salida de ficheros Win32, proporcionada por a Corporación Microsoft. La API Win32 soporta una variedad de funciones de lectura y de escritura para Ia lectura y Ia escritura de un fichero sobre un sistema de almacenamiento.
Algunos sistemas de almacenamiento, tales como las tarjetas de memoria no volátil extraíbles, contienen un procesador embebido. El procesador embebido puede realizar una variedad de operaciones, tales como el realizar cálculos o ejecutar programas de software o subrutinas en respuesta a peticiones provenientes del servidor de aplicaciones (host) en comunicación con el sistema de almacenamiento. El procesador embebido también puede ejecutar subrutinas, o programas sin ninguna petición proveniente del servidor de aplicaciones (host) o control por parte del servidor de aplicaciones (host). Un ejemplo de dicho programa es una subrutina para mantener los datos almacenados en una memoria no volátil.
Las aplicaciones que se estén ejecutando sobre un procesador embebido también pueden generar datos que se pueden almacenar dentro de Ia tarjeta de memoria no volátil, y pueden acceder a los datos almacenados en una tarjeta de memoria no volátil. Estas aplicaciones pueden acceder a este almacenamiento a través de un sistema de ficheros que se esté ejecutando dentro del sistema operativo del procesador embebido.
En algunos sistemas, el espacio de almacenamiento de datos accesible por las aplicaciones que se están ejecutando sobre el procesador embebido está separado de manera lógica o de manera física del espacio de almacenamiento de datos que es accesible por el servidor de aplicaciones (host). Un espacio de almacenamiento de datos físicamente separado puede requerir de Ia implementación de dos o de más matrices físicas de memoria dentro del sistema de almacenamiento. Un espacio de almacenamiento de datos separado de manera lógica puede utilizar dos o más particiones de datos dentro de una memoria común. En estos sistemas, el sistema de ficheros de servidor de aplicaciones (host) y el sistema de ficheros de procesador embebido funcionan de manera independiente uno del otro, y puede que no se requiera Ia coordinación entre los dos sistemas de ficheros. Sin embargo, para algunas aplicaciones, puede que sea deseable para el servidor de aplicaciones (host) y para el procesador embebido compartir el acceso a los mismos datos. En esta situación, los datos compartidos se almacenan en Ia misma memoria física o en Ia misma partición lógica dentro del sistema de almacenamiento. Las aplicaciones de servidor de aplicaciones (host) o las aplicaciones de procesador embebido pueden leer, escribir y modificar los datos compartidos. Por Io tanto, en dicho sistema, dos sistemas de ficheros, un sistema de ficheros de servidor de aplicaciones (host), y un sistema de ficheros embebido, pueden proporcionar acceso al mismo espacio de datos. Las operaciones de ambos sistemas de ficheros deben estar coordinadas con el fin de mantener Ia integridad de los datos compartidos y del sistema de almacenamiento.
Existen varias arquitecturas que se pueden utilizar en un sistema en el que dos sistemas de ficheros compartan el acceso a un sistema de almacenamiento común. La figura 1 es un diagrama que ilustra un sistema 100 para acceder a un sistema de almacenamiento utilizando dos sistemas de ficheros en paralelo. El sistema 100 comprende un sistema de almacenamiento 150 y un servidor de aplicaciones (host) 110. El sistema de almacenamiento y el servidor de aplicaciones (host) se pueden ¡mplementar en hardware, en software, o en una combinación de hardware y de software. En una realización, el sistema de almacenamiento 150 incluye una pluralidad de aplicaciones embebidas 152 y un sistema operativo embebido 160 que se están ejecutando sobre un procesador en el sistema de almacenamiento 150, un controlador de memoria 180, y una memoria 170. Los datos contenidos en el sistema de almacenamiento 150 se almacenan en Ia memoria 170, y Ia memoria 170 está organizada por medio de un índice de sistema de almacenamiento 172. En una realización, el sistema de ficheros de volumen usado por Ia memoria 170 es un sistema FAT12, FAT16, o FAT32, y el índice de sistema de almacenamiento 172 incluye una tabla de asignación de ficheros (del inglés File Allocation Table) (FAT). En esta realización, el índice de sistema de almacenamiento 172 incluye también información adicional requerida para hacer funcionar y para mantener el sistema de almacenamiento 140. Esta información se puede almacenar fuera de Ia tabla de asignación de ficheros, e incluye información tal como información de directorios, tamaño de los ficheros, fechas de creación y de actualización de ficheros, nombres de ficheros y de directorios, y atributos de ficheros y de directorios. Otras realizaciones pueden utilizar otros formatos de sistema de ficheros de volumen y sus correspondientes índices de sistema de almacenamiento. El sistema operativo embebido 160 incluye un gestor de almacenamiento masivo 162 y un sistema de ficheros embebido 164. Las aplicaciones embebidas 152 pueden escribir y pueden leer datos en Ia memoria 170 mediante el envío de una petición, tal como una llamada a una función, al gestor de almacenamiento masivo 162. El gestor de almacenamiento masivo 162 recibe peticiones desde una aplicación embebida 152 para escribir o para leer datos en Ia memoria 170, y puede generar peticiones a nivel de fichero del sistema de ficheros embebido 164. Las peticiones a nivel de fichero pueden ser en forma de llamadas a funciones a funciones soportadas por Ia interfaz de programación de aplicaciones (API) del sistema de ficheros embebido 164, o pueden ser comandos transmitidos a través de una interfaz hardware entre el gestor de almacenamiento masivo 162 y el sistema de ficheros embebido 164. El sistema de ficheros embebido 164 puede aceptar comandos a nivel de fichero, y puede generar comandos de direcciones de bloque lógico (del inglés, Logical Block Addresses) (LBA) enviadas al controlador de memoria 180 para acceder a Ia memoria 170. El controlador de memoria 180 puede recibir peticiones de acceso a memoria en forma de comandos de dirección de bloque lógico, y puede realizar Ia traducción de las direcciones de bloque lógico a direcciones de bloque físico, en donde Ia dirección de bloque físico es Ia dirección física de Ia localizacíón de almacenamiento dentro de Ia memoria 170 a donde se escriben o desde donde se leen los datos. Una vez que se ha completado Ia traducción, el controlador de memoria 180 utiliza Ia dirección de bloque físico para realizar un acceso de lectura o de escritura a Ia memoria 170.
El gestor de almacenamiento masivo 162 se puede ímplementar en hardware, en firmware, en software, o en cualquier combinación de los mismos, configurado para Ímplementar Ia funcionalidad de un gestor de almacenamiento masivo, tal como Ia funcionalidad descrita en las realizaciones de las figuras 1 , 2 y 4, y en el texto que se acompaña. En una realización, el gestor de almacenamiento masivo 162 se implementa utilizando un procesador dentro del sistema de almacenamiento 150 configurado con instrucciones ejecutables por un procesador. Las instrucciones ejecutables por un procesador se pueden almacenar en una memoria de acceso aleatorio (RAM) (del inglés, Random Access Memory) dentro del sistema de almacenamiento 150, o en una memoria no volátil, tal como una memoria de sólo lectura (ROM) (del inglés, Read OnIy Memory), una EEPROM (Memoria de sólo lectura que se puede borrar y programar eléctricamente) (del inglés, Electrically Erasable and Programmable Read OnIy Memory), una E-flash {flash embebida), o Ia memoria 170 dentro del sistema de almacenamiento 150.
En una realización, el sistema de almacenamiento 150 puede ser una unidad de disco de estado sólido, o una unidad de disco magnético, a Ia que a veces se hace referencia como una unidad de disco duro. En otra realización, el sistema de almacenamiento 150 puede ser una memoria no volátil tal como una tarjeta de factor de forma (del inglés, form factor) pequeño. En una realización, el servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150 están contenidos dentro de Ia misma carcasa física, y el sistema de almacenamiento 150 no es extraíble del sistema 100. En otra realización, el sistema de almacenamiento 150 es un medio extraíble, tal como una tarjeta de memoria no volátil de factor de forma pequeño, y se puede conectar al sistema 100 y extraer del mismo 100. Se puede utilizar hardware, firmware, software, o cualquier combinación de los mismos para implementar Ia funcionalidad del controlador de memoria 180. En una realización, el controlador de memoria 180 se implementa utilizando un procesador dentro del sistema de almacenamiento 150 configurado con instrucciones ejecutables por un procesador. Las instrucciones ejecutables por un procesador pueden ser almacenadas en una memoria de acceso aleatorio (RAM) dentro del sistema de almacenamiento 150, o en una memoria no volátil, tal como una memoria de sólo lectura (ROM), EEPROM (Memoria de sólo lectura que se puede borrar y programar eléctricamente), E-flash (flash embebida), o Ia memoria 170 dentro del sistema de almacenamiento 150. El controlador de memoria 180 puede recibir peticiones para acceder á una memoria 170. En una realización, el controlador de memoria 180 recibe comandos para leer datos desde o para escribir datos en una memoria 170, en el que Ia memoria es direccionada utilizando comandos de direcciones de bloque lógico (LBA) (del inglés, logical block address). El controlador de memoria 180 puede recibir comandos del servidor de aplicaciones (host) sobre Ia interfaz de comunicaciones USB 104, o desde el sistema de ficheros embebido 164. El controlador de memoria 180 puede traducir Ia dirección del bloque lógico en el comando a una dirección física en la memoria 170 donde se vayan a almacenar o desde donde se vayan a leer los datos. El controlador de memoria 180 utiliza entonces Ia dirección de bloque físico y el resto del comando para acceder a Ia memoria 170. Los requisitos específicos funcionales del controlador de memoria 180 pueden ser definidos por el tipo de memoria 170 a Ia que se accede.
El sistema de almacenamiento 150 puede estar en comunicación con el servidor de aplicaciones (host) 110 sobre una o más interfaces de comunicaciones 102, 104. En una realización, se utilizan dos interfaces de comunicaciones para transmitir comandos y datos entre el servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150. En una realización que utilice dos interfaces de comunicaciones, una primera interfaz de comunicaciones entre el sistema de almacenamiento 150 y el servidor de aplicaciones (host) 110 es una interfaz ISO 7816 102, y Ia segunda interfaz de comunicaciones entre el sistema de almacenamiento 150 y el servidor de aplicaciones (host) 110 es una interfaz bus serie universal (USB) (del inglés, Universal Serial Bus) 104. En otra realización, existe una interfaz de comunicaciones 104 entre el sistema de almacenamiento y el servidor de aplicaciones (host). En esta realización, la interfaz de comunicaciones es una interfaz USB, y el sistema de almacenamiento 150 y el servidor de aplicaciones (host) 110 pueden intercambiar comandos y datos usando protocolos de Ia clase de almacenamiento masivo (MSC) USB (del inglés, USB Mass Storage Class), del Modelo de Emulación Ethernet (EEM) USB (del inglés USB Ethernet Emulation Model), o del dispositivo de tarjeta de circuito integrado (ICCD) USB (del inglés USB Integrated Circuit Card Devíce), o cualquier combinación de los mismos.
En una realización, un servidor de aplicaciones (host) 110 incluye una pluralidad de aplicaciones de servidor de aplicaciones (host) 130, un agente de servidor de aplicaciones (host) 120, y un sistema operativo de servidor de aplicaciones (host) 140 que se están ejecutando sobre un procesador en el servidor de aplicaciones (host) 110. El sistema operativo del servidor de aplicaciones (host) 140 incluye un sistema de ficheros de servidor de aplicaciones (host) 144. Las aplicaciones embebidas 152 pueden escribir y leer datos en Ia memoria 170 mediante el envío de una petición a nivel de archivo, tal como una llamada a una función, al sistema de ficheros de servidor de aplicaciones (host) 144. El sistema de ficheros de servidor de aplicaciones (host) 144 recibe peticiones a nivel de fichero desde una aplicación de servidor de aplicaciones (host) 130 para escribir o para leer datos en Ia memoria 170 del sistema de almacenamiento 150, y genera comandos de dirección de bloque lógico (LBA) transmitidos al controlador de memoria 180 sobre Ia interfaz de comunicaciones USB 104. El controlador de memoria 180 puede recibir el comando de dirección de bloque lógico, realiza Ia traducción de Ia dirección de bloque lógico a dirección física, y realiza un acceso de lectura o de escritura a Ia memoria 170 utilizando Ia dirección física y el comando recibidos.
El agente de servidor de aplicaciones (host) 120 puede comunicar con el sistema de almacenamiento 150 por medio de Ia transmisión y de Ia recepción de comandos y de datos a través de una interfaz de programación de aplicaciones ISO 7816 142, que a su vez, comunica con el sistema operativo embebido 160 del sistema de almacenamiento 150 a través de una interfaz ISO 7816 102. El gestor de almacenamiento masivo 162 también puede transmitir comandos y datos al agente de servidor de aplicaciones (host) 120. En una realización, el gestor de almacenamiento masivo 162 utiliza Ia interfaz ISO 7816 102 para comunicar con el servidor de aplicaciones (host) 110, y de manera específica, con el agente de servidor de aplicaciones (host) 120. En otra realización, el gestor de almacenamiento masivo 162 y el sistema operativo embebido 160 puede comunicar con el agente de servidor de aplicaciones (host) 120 sobre una interfaz USB 104. En esta realización, se pueden intercambiar los comandos y los datos usando los protocolos de Ia clase de almacenamiento masivo USB (MSC), del Modelo de Emulación Ethernet USB (EEM), o del dispositivo de tarjeta de circuito integrado USB (ICCD), o cualquier combinación de los mismos. En esta arquitectura, el sistema de ficheros de servidor de aplicaciones
(host) 144 y el sistema de ficheros embebido 164 pueden cada uno de ellos escribir y leer datos en Ia memoria 170 en el sistema de almacenamiento 170. Por ejemplo, el sistema de ficheros de servidor de aplicaciones (host) 144 puede escribir y leer sus propios datos, y el sistema de ficheros embebido 164 también puede escribir y leer sus propios datos. La memoria 170 también puede almacenar datos compartidos a los que puede acceder tanto el sistema de ficheros de servidor de aplicaciones (host) 144 como el sistema de ficheros embebido 164. Por ejemplo, el sistema de ficheros de servidor de aplicaciones (host) 144 puede escribir datos que sean legibles por el sistema de ficheros embebido 164, y el sistema de ficheros embebido 164 también puede sobrescribir y modificar esos datos. De manera similar, el sistema de ficheros embebido 164 puede escribir datos que sean legibles por el sistema de ficheros de servidor de aplicaciones (host) 144, y el sistema de ficheros de servidor de aplicaciones (host) 144 también puede sobrescribir y modificar los datos.
Mientras que Ia compartición de datos en Ia memoria 170 puede ser ventajoso para las aplicaciones de servidor de aplicaciones (host) 130 y para las aplicaciones embebidas 152 que se estén ejecutando en el sistema 100, el hacer funcionar un sistema de ficheros de servidor de aplicaciones (host) 144 en paralelo con un sistema de ficheros embebido 164 presenta cuestiones de sincronización que se deben abordar con el fin de asegurar un funcionamiento correcto del sistema 100. De manera específica, las dos copias en memoria cache 146, 166, del índice de sistema de almacenamiento 172 usado por el sistema de ficheros de servidor de aplicaciones (host) 144 y el sistema de ficheros embebido 164, respectivamente, no siempre pueden reflejar de manera precisa el contenido del sistema de almacenamiento 150. Si los índices de sistema de almacenamiento almacenados en cache 146, 166 no se conservan hasta Ia fecha, una operación de escritura que utilice información obsoleta proveniente de un índice de sistema de almacenamiento almacenado en cache puede corromper el contenido de Ia memoria 170 en el sistema de almacenamiento 150.
El índice de sistema de almacenamiento (SSI) 172 actúa como un índice para los datos almacenados en el sistema de almacenamiento 150. De manera adicional, el índice de sistema de almacenamiento 172 también puede incluir información de directorios, de tamaños de los ficheros, de fechas de creación y de actualización de los ficheros, nombres de ficheros y de directorios, y atributos de ficheros y de directorios, y otra información requerida para hacer funcionar y mantener un sistema de almacenamiento 150. La información del índice de sistema de almacenamiento 172 se utiliza para hacer corresponder operaciones de lectura o de escritura a nivel de fichero con operaciones de lectura o de escritura de direcciones de bloques lógicos. Cuando se escriben datos en Ia memoria 170 en el sistema de almacenamiento 150, el índice de sistema de almacenamiento 172 se puede actualizar con Ia localización de los nuevos datos. El escribir un fichero nuevo, el borrar un fichero, el añadir datos a un fichero existente, o el sobrescribir un fichero existente con un nuevo fichero más grande, son todos ellos ejemplos de operaciones de escritura de fichero que requerirán de una actualización del índice de sistema de almacenamiento 172. Se puede hacer referencia a estas operaciones como "Operaciones SSI Duras". En contraste con esto, el índice de sistema de almacenamiento 172 no requiere Ia actualización después de una operación de lectura, porque Ia localización de los datos almacenados no se ha cambiado. De manera similar, si un sistema de almacenamiento soporta Ia sobre-escritura de datos con nuevos datos, a Io que se hace referencia a veces como "escribir en lugar", el índice de sistema de almacenamiento 172 no requerirá de una actualización si se sobrescribe un fichero con un fichero del mismo tamaño, porque Ia localización de los datos almacenados no ha cambiado. Se puede hacer referencia a estas operaciones como "Operaciones SSI Blandas."
Con el fin de mejorar el funcionamiento del sistema 100, un sistema de ficheros puede almacenar una copia en cache del índice de sistema de almacenamiento 172. Cuando un sistema de ficheros realiza una operación de escritura, se actualiza Ia copia que está en cache. El índice real del sistema de almacenamiento 172 puede no ser actualizado cada vez que se actualiza el índice del sistema de almacenamiento que esté en cache, con el fin de mejorar el funcionamiento. En lugar de esto, el índice de sistema de almacenamiento 172 puede actualizarse después de que se hayan completado dos o más operaciones de escritura. Cuando un sistema contiene solamente una copia en cache de un índice de sistema de almacenamiento 172, el mantener una copia en cache es un medio eficiente para mejorar el funcionamiento del sistema. En contraste con esto, el sistema 100 contiene dos copias en cache
146, 166 de un índice de un sistema de almacenamiento 172. Un índice de sistema de almacenamiento almacenado en cache 146 es utilizado por el sistema de ficheros de servidor de aplicaciones (host) 144, y el índice de sistema de almacenamiento almacenado en cache embebido 166 es utilizado por el sistema de ficheros embebido 164. Si una operación de escritura que esté utilizando el sistema de ficheros de servidor de aplicaciones (host) 144 requiere que su índice de sistema de almacenamiento almacenado en cache 146 sea actualizado, el índice de sistema de almacenamiento almacenado en cache embebido 166 está obsoleto. Si el índice de sistema de almacenamiento almacenado en cache embebido 166 no se actualiza, una posterior operación de escritura que use el sistema de ficheros embebido 164 corromperá el contenido del sistema de almacenamiento 150. De manera similar, si una operación de escritura que use el sistema de ficheros embebido 164 requiere que su índice de sistema de almacenamiento almacenado en cache 166 sea actualizado, el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 es obsoleto. Si el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 no está actualizado, una posterior operación de escritura que use el sistema de ficheros de servidor de aplicaciones (host) corromperá el contenido del sistema de almacenamiento 150.
La sincronización del índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 y del índice de sistema de almacenamiento almacenado en cache embebido 166 es importante para evitar Ia corrupción del sistema de almacenamiento 150. El índice de sistema de almacenamiento almacenado en cache del sistema de ficheros de servidor de aplicaciones (host) 146 puede que no sea directamente accesible para una aplicación de servidor de aplicaciones (host) 130 o para el procesador de servidor de aplicaciones (host), Io que puede evitar Ia sincronización por medio de Ia copia directa de Ia información del índice de sistema de almacenamiento entre el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros de servidor de aplicaciones (host) 146 y el índice de sistema de almacenamiento almacenado en cache embebido 166. La sincronización de los índices del sistema de almacenamiento almacenados en cache por medio de Ia copia de los datos a y desde el índice de sistema de almacenamiento 172 es ineficiente. Por ejemplo, Ia actualización del índice de sistema de almacenamiento almacenado en cache embebido 166 por medio de primero copiar el índice de sistema de almacenamiento en cache del sistema de ficheros de servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172, y después copiando el índice de sistema de almacenamiento 172 al índice de sistema de almacenamiento almacenado en cache embebido 166, consume tiempo. Si este proceso de sincronización se realiza una vez por acceso de escritura al sistema de almacenamiento, el ancho de banda de los datos del sistema de almacenamiento 150 puede verse reducido en gran medida. En una realización, se puede reducir la necesidad de operaciones de sincronización por medio de Ia utilización del sistema de ficheros de servidor de aplicaciones (host) 144 para realizar ciertas operaciones de fichero (tales como Ia escritura de un nuevo fichero, Ia anexión de datos a un fichero existente, o Ia sobrescritura de un fichero existente con un nuevo fichero más grande) para el sistema de ficheros embebido 164. El sistema de ficheros embebido 164 no realiza operaciones de fichero que puedan requerir un cambio del índice de sistema de almacenamiento almacenado en cache embebido 166. En lugar de esto, el gestor de almacenamiento masivo 162 recibe estas peticiones desde Ia aplicación embebida 152, y determina que el procesar Ia petición requeriría un cambio del índice de sistema de almacenamiento almacenado en cache embebido 166. El gestor de almacenamiento masivo 162 transmite después Ia petición, incluyendo comandos y datos asociados, al agente de servidor de aplicaciones (host) 120 en el servidor de aplicaciones (host) 110. En una realización, Ia petición se transmite sobre Ia interfaz de comunicaciones ISO 7816 102. El agente de servidor de aplicaciones (host) 120 recibe Ia petición, y transmite la petición, quizá en forma de una llamada a una función a nivel de fichero, al sistema de ficheros de servidor de aplicaciones (host) 144. El sistema de ficheros de servidor de aplicaciones (host) 144 procesa Ia petición como si Ia petición se hubiese originado dentro del servidor de aplicaciones (host) 110, tal como desde una aplicación de servidor de aplicaciones (host) 130. El sistema de ficheros de servidor de aplicaciones (host) 144 recibe Ia petición a nivel de fichero, y genera uno o más comandos de dirección de bloque lógico (LBA) para su transmisión al controlador de memoria 180 sobre Ia interfaz de comunicaciones USB 104. El controlador de memoria 180 accede a Ia memoria 170 de acuerdo con los comandos de dirección de bloque lógico.
El gestor de almacenamiento masivo 162 también puede determinar que el procesar Ia petición proveniente de Ia aplicación embebida 152 no requeriría un cambio del índice de sistema de almacenamiento almacenado en cache embebido 166. Esto puede ocurrir si Ia petición es una operación de lectura, o una operación de escritura que no cambie el tamaño o Ia localización de un fichero, tal como una operación "escribir en el lugar". En este caso, el gestor de almacenamiento masivo 162 puede generar después una petición a nivel de fichero del sistema de ficheros embebido 164. El sistema de ficheros embebido 164 puede aceptar la orden a nivel de fichero, y generar comandos de dirección de bloque lógico (LBA) usadas por el controlador de memoria 180 para acceder a Ia memoria 170.
La figura 2 muestras pasos de ejemplo 200 para el procesado de una petición de escritura recibida por el gestor de almacenamiento masivo 162 de Ia figura 1. El control comienza en el paso 202, donde el gestor de de almacenamiento masivo 162 recibe una petición de lectura o de escritura proveniente de una aplicación embebida 152 en comunicación con el sistema operativo 160. En el paso 204, se evalúa Ia petición con el fin de determinar si es una operación de lectura de ficheros. Si Ia petición es una operación de lectura de ficheros, entonces Ia petición y los datos seguirán el camino de datos Operación SSI Blanda" 192 mostrado en Ia figura 1. La operación de lectura se puede procesar por parte del sistema de ficheros embebido 164 porque Ia operación no debería disparar o requerir un cambio en el índice de sistema de almacenamiento almacenado en memoria cache embebido 164. El control pasa desde el paso 204 al paso 222, donde el índice de sistema de almacenamiento 172 se actualiza con información proveniente del índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146. Con el fin de completar esta actualización, el gestor de almacenamiento masivo 162 transmite una petición al servidor de aplicaciones (host) 110 para copiar información desde el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172. Se puede hacer referencia a Ia operación de copia como "descargar" Ia información en cache al índice de sistema de almacenamiento 172 en el sistema de almacenamiento 150. La petición se puede transmitir al servidor de aplicaciones (host) sobre Ia interfaz de comunicaciones ISO 7816 102, y ser recibida por Ia interfaz ISO 142, y ser pasada al agente de servidor de aplicaciones (host) 120. El agente de servidor de aplicaciones (host) 120 emite entonces una orden al sistema de ficheros de servidor de aplicaciones (host) 110 para copiar información desde el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172. Una vez que se haya actualizado el índice de sistema de almacenamiento 172 con Ia información proveniente del índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146, el control pasa al paso 222, en el que el índice de sistema de almacenamiento almacenado en cache embebido 166 se puede actualizar con Ia información proveniente del índice de sistema de almacenamiento 172. Efectivamente, Ia combinación de los pasos 220 y 222 provoca que el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros embebido 166 pase a estar sincronizado con el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros de servidor de aplicaciones (host) 146.
El control pasa desde el paso 222 al paso 224, en el que el gestor de almacenamiento masivo 162 lee los datos de Ia memoria 170 mediante Ia emisión de un comando de lectura al sistema de ficheros embebido 164. En una realización, el comando y los datos son argumentos para una función a Ia que se ha llamado soportada por Ia API del sistema de ficheros embebido 164. En el paso 226, el sistema de ficheros embebido 164 puede utilizar Ia orden de lectura a nivel de fichero para generar comandos de dirección de bloque lógico (LBA), que se transmiten al controlador de memoria 180. En el paso 228, el controlador de memoria 180 usa los comandos LBA para leer Ia memoria 170, y los datos leídos se devuelven a Ia aplicación 152 a través del sistema de ficheros embebido 164 y el gestor de almacenamiento masivo 162. El control vuelve después al paso 202, donde los pasos 200 esperan otra petición de escritura o lectura.
Si Ia petición no es una operación de lectura de ficheros, entonces Ia petición es una operación de escritura de fichero. El control pasa desde el paso 204 al paso 206, en el que se evalúa Ia petición de nuevo para determinar si Ia petición de escritura es para escribir un fichero nuevo, para anexar datos a un fichero existente, o para sobrescribir un fichero existente con un fichero de un tamaño diferente. Si no es así, entonces Ia operación de escritura puede ser procesada por el sistema de ficheros embebido 164, porque el funcionamiento no debería disparar o requerir un cambio en el índice de sistema de almacenamiento almacenado en cache embebido 164. De esta forma, Ia petición y los datos seguirán el camino de datos Operación SSI Blanda" mostrado en Ia figura 1. El control pasa al paso 220, después al paso 222, donde se actualiza en índice de sistema de almacenamiento almacenado en cache embebido como se ha descrito con anterioridad.
El control pasa del paso 222 al paso 224, donde el gestor de almacenamiento masivo 162 escribe los datos provenientes de Ia memoria 170 por medio de Ia emisión de una orden de escritura al sistema de ficheros embebido 164. En una realización, Ia orden y los datos son argumentos para una función a Ia que se ha llamado soportada por Ia API del sistema de ficheros embebido 164. En el paso 226, el sistema de ficheros embebido 164 puede utilizar Ia orden de escritura a nivel de fichero para generar comandos de dirección de bloque lógico (LBA), que se transmiten junto con los datos al controlador de memoria 180. En el paso 228, el controlador de memoria 180 usa los comandos LBA y los datos para escribir en la memoria 170. El control retorna entonces al paso 202, donde los pasos 200 esperan otra petición de escritura o de lectura.
Volviendo al paso 206, si Ia petición de escritura es para escribir un fichero nuevo, para anexar datos a un fichero existente, o para sobrescribir un fichero existente con un fichero de un tamaño diferente, entonces Ia operación puede ser procesada por el sistema de ficheros del servidor de aplicaciones (host) 144, porque Ia operación dispararía o requeriría un cambio en el índice de sistema de almacenamiento almacenado en cache embebido 164 si se realizase con el sistema de ficheros embebido 164. De esta manera, la petición y los datos seguirán el camino de datos Operación SSI Dura" 190 mostrado en Ia figura 1. Con el fin de completar esta actualización, en el paso 208, el gestor de almacenamiento masivo 162 transmite una petición al servidor de aplicaciones (host) 110 para realizar una escritura en Ia memoria 170 usando el sistema de ficheros del servidor de aplicaciones (host) 144. La petición incluye Ia orden de escritura, y los correspondientes datos. La petición se puede transmitir al servidor de aplicaciones (host) sobre Ia interfaz de comunicaciones ISO 7816 102, y se puede recibir por Ia interfaz ISO 142, y ser pasados al agente de servidor de aplicaciones (host) 120. El agente de servidor de aplicaciones (host) . 120 emite entonces una orden al sistema de ficheros de servidor de aplicaciones (host) 110 para escribir los datos en Ia memoria 170. El sistema de ficheros de servidor de aplicaciones (host) 144 procesa Ia petición como si la petición se hubiese originado dentro del servidor de aplicaciones (host) 110, tal como desde una aplicación del servidor de aplicaciones (host) 130. El sistema de ficheros del servidor de aplicaciones (host) 144 recibe la petición a nivel de fichero, y genera uno o más comandos de dirección de bloque lógico (LBA) y datos para transmitirlos al controlador de memoria 180 sobre Ia interfaz de comunicaciones USB 104. En el paso 210, el controlador de memoria 180 recibe los comandos desde el servidor de aplicaciones (host). En el paso 212, el controlador de memoria 180 escribe en Ia memoria 170 de acuerdo con los comandos de dirección de bloque lógico. El sistema de ficheros de servidor de aplicaciones (host) 144 debería actualizar su índice de sistema de almacenamiento almacenado en cache 146 como resultado de Ia petición de escritura proveniente del agente de servidor de aplicaciones (host) 120. El servidor de aplicaciones (host) puede descargar el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 para el sistema de almacenamiento 150, con el fin de actualizar el índice de sistema de almacenamiento 172. De hacerse así, en el paso 214, el controlador de memoria 180 puede recibir y ejecutar uno o más comandos para actualizar el índice de sistema de almacenamiento 172, en donde las comandos incluyen información actualizada proveniente del índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146. El control vuelve después al paso 202, donde los pasos 200 esperan otra petición de escritura o lectura.
Aunque no se muestra en los pasos de ejemplo 200, se abre un fichero o se abrirá antes de que se acceda al mismo con una orden de lectura o de escritura. Por ejemplo, antes de que Ia orden de escritura en el fichero se transmita al servidor de aplicaciones (host) en el paso 208, se puede transmitir una orden de abrir fichero al servidor de aplicaciones (host), si el fichero no estuviese ya abierto. De manera similar, el sistema de ficheros embebido se puede utilizar para abrir el fichero antes de Ia operación de lectura o de escritura del paso 224. También se puede cerrar un fichero por medio del sistema de ficheros apropiado al finalizar una operación de lectura o de escritura, antes de que el control vuelva al paso 202. De manera alternativa, se puede dejar un fichero abierto si el gestor de almacenamiento masivo 162 determina que hay pendientes operaciones adicionales de lectura o de escritura.
La figura 3 muestra pasos de ejemplo 300 para procesar una operación de escritura usando el sistema de ficheros de servidor de aplicaciones (host) 144 de Ia figura 1. Los pasos 300 se pueden utilizar por parte de una aplicación de servidor de aplicaciones (host) 130. Los pasos 300 también se pueden utilizar por el agente de servidor de aplicaciones (host) 120, por ejemplo, en respuesta a una petición de escritura transmitida desde el gestor de almacenamiento masivo 162.
En el paso 302, se recibe una petición para realizar una operación de escritura o de lectura. La petición puede estar generada por medio de una funcionalidad dentro de una aplicación 130, y se puede ser recibida por un componente dentro de Ia aplicación 130. La petición también puede ser recibida por el agente de servidor de aplicaciones (host) 120 del gestor de almacenamiento masivo 162 en el sistema de almacenamiento 150. El control pasa al paso 304, donde se abre el fichero por medio del sistema de ficheros de servidor de aplicaciones (host). En el paso 306, el sistema de ficheros de servidor de aplicaciones (host) escribe datos o lee datos a o desde el fichero. El sistema de ficheros de servidor de aplicaciones (host) 144 recibe Ia petición a nivel de fichero desde Ia aplicación 130 o desde el agente de servidor de aplicaciones (host) 120, y genera uno o más comandos de dirección de bloque lógico (LBA) y datos para su transmisión al controlador de memoria 180 sobre Ia interfaz de comunicaciones USB 104. El controlador de memoria 180 recibe los comandos desde el servidor de aplicaciones (host) 110. Si Ia petición es una operación de escritura, el controlador de memoria 180 recibe también datos. El controlador de memoria 180 escribe o lee entonces de la memoria 170 de acuerdo con los comandos de dirección de bloque lógico. Si Ia petición es una operación de lectura, el controlador de memoria 180 devuelve los datos al servidor de aplicaciones (host) sobre Ia interfaz de comunicaciones USB 104. El control pasa entonces al paso 308, en el que se cierra el fichero por medio del sistema de ficheros de servidor de aplicaciones (host). De esta manera, Ia inspección de los pasos 300 revela que el índice de sistema de almacenamiento de sistema de ficheros en cache de servidor de aplicaciones (host) 146 no debería necesitar estar sincronizado con el índice de sistema de almacenamiento almacenado en cache embebido 166. El sistema de almacenamiento de servidor de aplicaciones (host) 110 puede utilizar su propio índice de sistema de almacenamiento almacenado en cache 146 sin el riesgo de que se quede obsoleto, porque el sistema de ficheros embebido 164 no realiza ninguna operación de E/S de fichero que pudiese poner obsoleto Ia copia en cache del servidor de aplicaciones (host) 146 del índice de sistema de almacenamiento 172. En lugar de esto, el gestor de almacenamiento masivo 162 delega todas las peticiones de escritura que dispararían o que requerirían una actualización de un índice de sistema de almacenamiento almacenado en cache 166 al sistema de ficheros de servidor de aplicaciones (host) 100. Esto elimina Ia necesidad de sincronización cuando las operaciones de escritura y de lectura son realizadas usando solamente el sistema de ficheros de servidor de aplicaciones (host) 110, mejorando el funcionamiento de estas operaciones.
Con el fin de implementar los pasos 200 de Ia figura 2 y los pasos 300 de Ia figura 3, un sistema de ficheros de servidor de aplicaciones (host) debe tener una funcionalidad mínima requerida. De manera específica, un agente de servidor de aplicaciones (host) o una aplicación de servidor de aplicaciones (host) deben poder ordenar al sistema de ficheros de servidor de aplicaciones (host) para 1) abrir o crear un fichero, 2) cerrar un fichero, 3) escribir un fichero, 4) leer un fichero, y 5) copiar el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) y Ia información de fichero asociada a un índice de sistema de almacenamiento de sistema de almacenamiento.
La API Win32 es capaz de implementar todas las funciones requeridas. El sistema de ficheros de servidor de aplicaciones (host) puede abrir o crear un fichero usando Ia función CreateFile: HANDLE WINAPI CreateFile( _jn LPCTSTR IpFileName, _in DWORD dwDesiredAccess, in DWORD dwShareMode, in_opt
LPSECURITY_ATTRIBUTES IpSecurityAttributes, __in DWORD dwCreationDisposition, in DWORD dwFlagsAndAttributes, in_opt
HANDLE hTemplateFile ); El sistema de ficheros de servidor de aplicaciones (host) puede cerrar un fichero usando Ia función CloseHandle: BOOL WINAPI CloseHandle( __¡n HANDLE hObject );
El sistema de ficheros de servidor de aplicaciones (host) puede escribir en un fichero usando Ia función WríteFile: BOOL WINAPI WriteFile(_in HANDLE hFile, __in LPCVOID, IpBuffer, __in DWORD nNumberOfBytesToWrite, _out_opt LPDWORD
IpNumberOfBytesWritten, inout_opt LPOVERLAPPED IpOverlapped);
El sistema de ficheros de servidor de aplicaciones (host) puede leer de un fichero usando Ia función ReadFile: BOOL WINAPI ReadFile( _in HANDLE hFile, _out LPVOID IpBuffer, _in
DWORD nNumberOfBytesToRead, out_opt LPDWORD
IpNumberOfBytesRead, inout_opt LPOVERLAPPED IpOverlapped);
Toda Ia información asociada con un fichero, incluyendo Ia información de directorio de tamaño de fichero, puede ser copiada desde el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172 en el sistema de almacenamiento 150 por medio de una llamada a Ia función FlushFileBuffers, y después cerrando el fichero usando Ia función CloseHandle: BOOL WINAPI FlushFileBuffers(_in HANDLE hFile); BOOL WINAPI CloseHandle(_in HANDLE hObject );
La API de otros sistemas de ficheros de servidor de aplicaciones (host), de manera típica proporciona funcionalidad equivalente a las funciones mostradas para Ia API Win32. De esta manera, los pasos 200 de Ia figura 2 y los pasos 300 de Ia figura 3 se pueden implementar con una variedad de sistemas de ficheros de servidor de aplicaciones (host) y entornos de sistemas operativos. Además, los pasos 200 y los pasos 300 se pueden implementar en hardware, en software, o en una combinación de hardware y de software.
De esta manera, en una realización, Ia necesidad de sincronización entre un sistema de ficheros de servidor de aplicaciones (host) y un sistema de ficheros embebido se puede reducir mediante la utilización del sistema de ficheros de servidor de aplicaciones (host) 144 para realizar ciertas operaciones de escritura en nombre del sistema de ficheros embebido 164. De manera específica, si el gestor de almacenamiento masivo 162 recibe una petición desde una aplicación embebida 152 para una operación de escritura que escriba en un fichero nuevo, que anexe datos a un fichero existente, o que sobrescriba un fichero existente con un fichero de un tamaño diferente, entonces Ia petición, incluyendo los datos que se vayan a escribir, se transmite al servidor de aplicaciones (host) 110, donde se procesa por parte del sistema de ficheros de servidor de aplicaciones (host) 144 como si Ia petición hubiese sido originada en el servidor de aplicaciones (host) 110. Mediante Ia utilización del servidor de aplicaciones (host) 110 para realizar todas las operaciones de escritura que dispararían una actualización de un índice de sistema de almacenamiento almacenado en cache 146, el sistema de ficheros de servidor de aplicaciones (host) puede realizar operaciones de E/S de fichero sin el riesgo de que su índice de sistema de almacenamiento almacenado en cache 146 fuese previamente dado como obsoleto por medio de una operación realizada por el sistema de ficheros embebido 164. De esta manera, se reduce Ia necesidad de sincronización. El índice de sistema de almacenamiento almacenado en cache embebido 166 se puede actualizar a partir del índice de sistema de almacenamiento 172 antes de escribir o de leer datos a o desde Ia memoria 170 usando el sistema de ficheros embebido 164. Sin embargo, la inspección de los pasos 200 revela que esta operación de sincronización solamente ocurre una vez por petición de lectura o escritura usando el sistema de ficheros embebido 164. Además, si se escriben o se leen más datos para cada una de las aplicaciones por cada una de las peticiones de aplicación 152, se puede reducir Ia sobrecarga relativa asociada con esta operación de sincronización.
En esta realización, los pasos 200 para procesar las peticiones de aplicación 152 y para encaminar las peticiones y los datos al sistema de ficheros de servidor de aplicaciones (host) 144 o al sistema de ficheros embebido 164 para procesar, son relativamente sencillos. De esta manera, los requisitos hardware o software para el gestor de almacenamiento masivo 162 para implementar los pasos 200 pueden ser comparativamente más pequeños que en otras realizaciones. Sin embargo, en esta realización, si el gestor de almacenamiento masivo 162 encamina una petición de escritura al sistema de ficheros de servidor de aplicaciones (host), los correspondientes datos de petición de escritura se transmiten desde el sistema de almacenamiento 150 al ordenador servidor 110 sobre una interfaz de comunicaciones ISO 7816 102, después desde el servidor de aplicaciones (host) 100 al sistema de almacenamiento 150 sobre una interfaz de comunicaciones USB 104, antes de que sean escritos en Ia memoria. Además, los datos pueden ser vulnerables a inspección y a copiado mientras estén siendo transmitidos entre el servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150.
En una realización, Ia transmisión de datos esté protegida entre el servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150 por medio del establecimiento de un canal seguro para Ia transmisión de datos sobre una o ambas interfaces de comunicaciones 102, 104. Se establece un canal seguro a través de un intercambio de clave entre el servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150. El servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150 intercambian o hacen disponibles uno al otro los valores de clave pública. El servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150 usan cada uno de ellos Ia clave recibida para calcular una clave privada, usando un algoritmo acordado. El servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150 usan las claves privadas calculadas para encriptar datos antes de transmitirlos sobre el canal de comunicaciones de datos, y desencriptar los datos después de recibirlos sobre el canal de comunicaciones de datos. El canal seguro puede estar formado por una única sesión de comunicaciones, y se puede establecer un nuevo canal seguro para cada una de las sesiones requeridas. Se puede utilizar cualquier número de procedimientos para establecer un canal seguro para evitar Ia interceptación y los ataques a los datos intercambiados entre data el servidor de aplicaciones (host) 110 y el sistema de almacenamiento 150. Sin embargo, uno o más de estos procedimientos pueden requerir de hardware o de software adicionales, y pueden tener impacto en el funcionamiento del sistema 100. Otras realizaciones pueden eliminar Ia necesidad de transmitir datos de escritura de Ia aplicación embebida 152 a y desde el servidor de aplicaciones (host) 110 con el fin de completar ciertas operaciones de escritura, a costa posiblemente de una implementación hardware o software más compleja del gestor de almacenamiento masivo 162. En una realización, también se puede reducir Ia necesidad de operaciones de sincronización para dos sistemas de ficheros. Sin embargo, en lugar de encaminar toda Ia petición de escritura y los datos asociados a y desde el servidor de aplicaciones (host) 110, el gestor de almacenamiento masivo 162 puede utilizar el sistema de ficheros de servidor de aplicaciones (host) 144 para asignar espacio de fichero para una operación de escritura en lugar de realmente realizar Ia operación de escritura al completo en nombre del sistema de ficheros embebido 164. Una vez que el sistema de fichero de servidor de aplicaciones (host) 144 asigna el especio de fichero requerido, el sistema de ficheros embebido 164 puede realizar por sí solo Ia operación de escritura. Como se detalla más adelante, Ia implementación del gestor de almacenamiento masivo 162 de esta realización es más complejo, pero se evita Ia transmisión de los datos de escritura a y desde el servidor de aplicaciones (host) 110 para ciertas operaciones de escritura. En esta realización, se puede reducir Ia necesidad de operaciones de sincronización por medio de Ia utilización del sistema de ficheros de servidor de aplicaciones (host) 144 para realizar ciertas operaciones de fichero (tales como Ia ampliación de un fichero o Ia creación de un fichero nuevo vacío) para el sistema de ficheros embebido 164. El sistema de ficheros embebido 164 no realiza operaciones de fichero que puedan requerir un cambio del índice de sistema de almacenamiento almacenado en cache embebido 166, tal como el asignar nuevo espacio o espacio adicional para un fichero.
En lugar de esto, el sistema de ficheros embebido 164 depende del sistema de ficheros de servidor de aplicaciones (host) 144 para realizar estas operaciones en su nombre. Una vez que el sistema de ficheros de servidor de aplicaciones (host) 144 asigna el espacio de fichero requerido, el sistema de ficheros embebido 164 puede realizar una escritura en el espacio de fichero asignado, una operación que no dispara o que no requiere un cambio en el índice de sistema de almacenamiento almacenado en cache embebido 166. De esta forma, el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros de servidor de aplicaciones (host) 146, y el índice de sistema de almacenamiento 172, pueden no pasar a estar obsoletos debido a las operaciones de E/S de fichero del sistema de ficheros embebido 164. Esto puede reducir o eliminar Ia necesidad de actualizar el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros de servidor de aplicaciones (host) 146 antes de una operación de E/S de fichero que use el sistema de ficheros de servidor de aplicaciones (host) 144.
El índice de sistema de almacenamiento almacenado en cache embebido 166 se debe actualizar después de que el sistema de ficheros de servidor de aplicaciones (host) 144 cree o amplíe un fichero para el sistema de ficheros embebido 164. Sin embargo, por medio de Ia utilización del sistema de ficheros de servidor de aplicaciones (host) 144 para ampliar un fichero en una cantidad predeterminada, el sistema de ficheros embebido 164 puede realizar una o más operaciones de escritura a un fichero antes de que el fichero necesite ampliarse de nuevo, reduciendo de esta manera el número de operaciones de sincronización requeridas.
El gestor de almacenamiento masivo 162 recibirá peticiones de E/S de fichero desde Ia aplicación embebida 162, y puede determinar si Ia operación de E/S de fichero requerirá de una actualización del índice de sistema de almacenamiento 172. Si se requiere una actualización, el gestor de almacenamiento masivo 162 procesará Ia petición con Ia ayuda del servidor de aplicaciones (host) 110 y del sistema de ficheros de servidor de aplicaciones (host) 144. Si no se requiere una actualización, el gestor de almacenamiento masivo 162 procesará Ia petición a través del sistema de ficheros embebido 164, y no se utilizará el sistema de ficheros de servidor de aplicaciones (host) 144.
La figura 4 muestra pasos de ejemplo 400 para usar un sistema de ficheros embebido 164 para realizar operaciones de lectura y de escritura con Ia ayuda de un sistema de ficheros de servidor de aplicaciones (host). El control comienza en el paso 402, donde el gestor de almacenamiento masivo 162 recibe una petición desde Ia aplicación 152 para abrir un fichero para una operación de lectura o de escritura. Se puede acceder a un fichero por tres razones: 1) una operación de sólo lectura, 2) una operación de sólo escritura ó 3) una combinación de escrituras y lecturas en un fichero. De esta manera, en el paso 404, se evalúa el tipo de petición de acceso. Si Ia petición es para una operación de sólo lectura, el control pasa al paso 406, en el que el sistema de ficheros embebido 164 actualiza su cache de índice de sistema de almacenamiento 166, incluyendo información de directorio, del índice de sistema de almacenamiento 172 del sistema de almacenamiento 150. En este paso, se supone que el índice de sistema de almacenamiento 172 contiene el índice hasta Ia fecha de los contenidos del sistema de almacenamiento 150. Si el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 contiene el índice más actual, entonces se debe usar Ia información del índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 para actualizar el índice de sistema de almacenamiento 172, antes de que tenga lugar Ia actualización del cache embebido del índice de sistema de almacenamiento 166. Cuando se ha completado Ia actualización, el control pasa al paso 408, en el que el sistema de ficheros embebido 164 realiza Ia operación de lectura de datos desde el sistema de almacenamiento 150. Como Ia operación es una operación de lectura de datos, el control pasa al paso 410 y después al paso 412, en el que el gestor de almacenamiento masivo 162 determina si se ha acabado Ia operación de lectura de datos. Si el gestor de almacenamiento masivo 162 ha recibido una petición adicional para leer más datos desde el mismo fichero, el control vuelve de nuevo al paso 408 para realizar una lectura adicional utilizando el sistema de ficheros embebido. Mediante Ia devolución del control al paso 408 se evita Ia sobrecarga asociada con Ia apertura y el cierre de un fichero una segunda vez para Ia operación de lectura adicional desde el mismo fichero. Si Ia operación de lectura está finalizada y no hay peticiones pendientes para leer más datos desde el fichero, entonces el control pasa desde el paso 412, al paso 414 en el que el sistema de ficheros embebido 162 cierra el fichero, después a través del paso 416, y finalmente para Ia finalización de los pasos 400.
Si Ia petición en el paso 402 es para una operación de escritura, o una combinación de operaciones de lectura y escritura, el control pasa desde el paso 404 al paso 420, en el que el gestor de almacenamiento masivo 162 dirige al sistema de ficheros de servidor de aplicaciones (host) 144 para abrir el fichero, o para crear un nuevo fichero si el fichero no existe en el sistema de almacenamiento 150. Esto se lleva a cabo por parte del gestor de almacenamiento masivo 162 enviando una petición al agente de servidor de aplicaciones (host) 120 a través de Ia interfaz de comunicaciones ISO 7816
102. El agente de servidor de aplicaciones (host) 120 dirige entonces al sistema de ficheros de servidor de aplicaciones (host) 144 para abrir el fichero.
El control pasa al paso 422, en el que el sistema de ficheros de servidor de aplicaciones (host) 144 amplía el tamaño del fichero abierto. Esto se lleva a cabo por medio del gestor de almacenamiento masivo 162 enviando una petición al agente de servidor de aplicaciones (host) 120 a través de Ia interfaz de comunicaciones ISO 7816 102. El tamaño de Ia ampliación puede ser un número fijo de octetos, tal como un megabyte, que pueda acomodar una o más operaciones de escritura. De manera alternativa, el tamaño de fichero se puede ampliar en el número de octetos necesario para acomodar el fichero después de que se haya completado una operación de escritura o después de que se hayan completado todas las operaciones de escritura. En este caso, el tamaño de Ia ampliación es Ia diferencia en tamaño entre el fichero existente y nuevo (o modificado) después de una o de todas las operaciones de escritura. Por ejemplo, si un fichero existente es de dos megabytes, y Ia petición recibida es para escribir un fichero de cuatro megabytes, entonces el tamaño de Ia ampliación es de dos megabytes.
La ampliación del fichero en el paso 420 dispara el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 para que se actualice con Ia información acerca del fichero ampliado, incluyendo su localización de almacenamiento y su nuevo tamaño. El sistema de ficheros del servidor de aplicaciones (host) 144 tiene Ia orden de descargar o de copiar Ia información actualizada desde el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172 en el sistema de almacenamiento 150. Esto se lleva a cabo por parte del gestor de almacenamiento masivo 162 enviando una petición al agente de servidor de aplicaciones (host) 120 a través de Ia interfaz de comunicación ISO 7816 102. En respuesta a las peticiones para descargar o para copiar Ia información actualizada desde el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172 en el sistema de almacenamiento, el sistema de ficheros de servidor de aplicaciones (host) 144 puede transmitir comandos y datos al controlador de memoria 180 a través de Ia interfaz de comunicaciones USB 104. En el paso 424, el controlador de memoria recibe las comandos y los datos, y actualiza el índice de sistema de almacenamiento 172 usando las comandos y los datos.
El control pasa al paso 406, en el que el sistema de ficheros embebido 164 actualiza su cache del índice de sistema de almacenamiento 166, incluyendo información de directorios, del índice de sistema de almacenamiento 172 del sistema de almacenamiento 150. Después de este paso, el cache embebido del índice de sistema de almacenamiento 166 contiene información actualizada acerca del fichero redimensionado en el paso 422. El sistema de ficheros embebido 164 abre entonces el fichero, y en el paso 408, el sistema de ficheros embebido 164 realiza Ia operación de lectura o escritura de datos en el fichero. La operación de lectura o escritura de datos en el paso 408 no dispara una actualización del índice de sistema de almacenamiento almacenado en cache embebido 166, porque el funcionamiento no aumenta el tamaño del fichero. Si no hay suficiente espacio disponible, Ia escritura falla, y el fichero será ampliado de nuevo en el paso 422 antes de que se intente escribir de nuevo. Por Io tanto, el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 no se hace que pase a ser obsoleto por una operación de escritura usando el sistema de ficheros embebido 164 en el paso 408.
Si Ia operación completada es una operación de escritura, entonces el control pasa desde el paso 410 al paso 426, en el que el algoritmo comprueba si se asignó suficiente espacio de fichero para Ia operación de escritura. En caso de que no haya sido así, entonces el control pasa al paso 422, en el que el sistema de ficheros de servidor de aplicaciones (host) 144 se usa para ampliar de nuevo el fichero. En el paso 424, Ia información de índice de sistema de almacenamiento actualizada, incluyendo Ia información de directorios, desde el cache del servidor de aplicaciones (host) del índice de sistema de almacenamiento 146 es recibida desde el servidor de aplicaciones (host) 110, y se usa para actualizar el índice de sistema de almacenamiento 172 del sistema de almacenamiento 150. Esta información se usa después para actualizar el cache embebido del índice de sistema de almacenamiento 166. El control pasa después a los pasos 406, seguido por el paso 408, en el que el sistema de ficheros embebido 164 actualiza el cache embebido del índice de sistema de almacenamiento 166 e intenta completar Ia operación de escritura.
Si hubiese suficiente espacio de fichero para Ia operación de escritura, el control pasa al paso 412, en el que el gestor de almacenamiento masivo 162 determina si está acabada Ia operación de lectura / escritura de datos. Si el gestor de almacenamiento masivo 162 ha recibido una petición adicional para escribir datos o para leer datos a o desde el mismo fichero, el control vuelve al paso 408 para realizar una operación adicional de lectura / escritura utilizando el sistema de ficheros embebido 164. El devolver el control al paso 408 evita Ia sobrecarga asociada con Ia apertura y el cierre de un fichero una segunda vez para Ia operación de lectura o escritura adicionales desde o al mismo fichero. Si Ia última operación está acabada y si no hay pendientes peticiones de lectura o de escritura para el mismo fichero, entonces el control pasa desde el paso 412, a través del paso 414, en el que el fichero es cerrado por el sistema de ficheros embebido. El control pasa entonces al paso 416, y después al paso 418, porque Ia petición recibida en el paso 402 no fue una petición de fichero de sólo lectura. En el paso 418, el sistema de ficheros de servidor de aplicaciones (host) trunca el fichero para eliminar cualquier espacio extra que estuviese asignado al fichero cuando el fichero se amplió en el paso 422, pero que permaneció sin usarse después de Ia operación de escritura del paso 408. Esto se lleva a cabo por el gestor de almacenamiento masivo 162 enviando una petición al agente de servidor de aplicaciones (host) 120 a través de Ia interfaz de comunicaciones ISO 7816 102.
El truncado del fichero en el paso 418 dispara o requiere Ia actualización del índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 con información acerca del fichero truncado, incluyendo su localización de almacenamiento y su nuevo tamaño. Al sistema de ficheros de servidor de aplicaciones (host) 144 se Ie ha ordenado para que descargue o para que copie Ia información actualizada desde el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172 en el sistema de almacenamiento. Esto se lleva a cabo por el gestor de almacenamiento masivo 162 enviando una petición al agente de servidor de aplicaciones (host) 120 a través de Ia interfaz de comunicaciones ISO 7816 102. En respuesta a las peticiones de descargar o de copiar Ia información actualizada desde el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 al índice de sistema de almacenamiento 172 en el sistema de almacenamiento, el sistema de ficheros de servidor de aplicaciones (host) 144 puede transmitir comandos y datos al controlador de memoria 180 a través de Ia interfaz de comunicaciones USB 104. En el paso 428, el controlador de memoria recibe los comandos y los datos, y actualiza el índice de sistema de almacenamiento 172 usando los comandos y los datos. Después de esta actualización, se acaban los pasos 400. Son posibles otras realizaciones del algoritmo de ampliación de ficheros. En una realización, Ia ampliación del fichero en el paso 422 utiliza información acerca del tamaño del fichero que dará como resultado una vez que se complete Ia operación de escritura pendiente, y amplía el fichero de forma que siempre haya al menos un espacio de fichero suficiente para completar Ia operación de escritura de fichero pendiente. En esta realización, el control pasa del paso 408 al paso 412, y después al paso 426 si existe una petición posterior de acceso a fichero pendiente. Si existe otra petición pendiente de acceso a fichero, en el paso 426, el fichero se puede ampliar de nuevo si la petición pendiente es una petición de escritura en fichero y si no hay al menos espacio suficiente en fichero para completar Ia siguiente operación de escritura en fichero.
Mediante Ia utilización de los pasos 400 de Ia figura 4, un gestor de almacenamiento masivo 162 puede recibir una petición para escribir un fichero, en el que Ia operación requiere el uso del sistema de ficheros embebido 164. En respuesta a esta petición, el gestor de almacenamiento masivo 162 puede utilizar eí sistema de ficheros de servidor de aplicaciones (host) 144 para ampliar el fichero antes de Ia escritura, y truncar el fichero al tamaño correcto después de Ia escritura. El gestor de almacenamiento masivo 162 puede utilizar el sistema de ficheros embebido 164 para transferir realmente los datos a Ia memoria 170. Por Io tanto, a diferencia de Ia primera realización, no se transmiten los datos de escritura a y desde el servidor de aplicaciones (host) 110 antes de su almacenamiento en Ia memoria 170.
Por medio de Ia división de las tareas asociadas con Ia petición de Ia aplicación, el gestor de almacenamiento masivo 162 puede asegurar que el sistema de ficheros de servidor de aplicaciones (host) 144 realiza todas las operaciones que requeriría una actualización al índice de sistema de almacenamiento 172. Por Io tanto, el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 no se encuentra en riesgo de comenzar a estar obsoleto debido a una operación de E/S de fichero utilizando el sistema de ficheros embebido 164. El índice de sistema de almacenamiento almacenado en cache embebido 166 se puede actualizar desde el índice de sistema de almacenamiento 172 antes de que los datos sean escritos o leídos a o desde el sistema de almacenamiento 150. Sin embargo, Ia inspección de los pasos 400 revela que esta operación de sincronización ocurre solamente una vez cuando se solicita una operación de sólo lectura, y solamente una vez por evento de ampliación de fichero cuando se requiere una operación de escritura. Además, si el tamaño de Ia ampliación de fichero predeterminada aumentó, el número requerido de eventos de ampliación de ficheros se puede disminuir. Con el fin de implementar los pasos 400 de Ia figura 4, un sistema de ficheros de servidor de aplicaciones (host) debe tener una funcionalidad mínima requerida. De manera específica, el gestor de almacenamiento masivo 162 debe ser capaz de dirigir el sistema de ficheros de servidor de aplicaciones (host) para 1) abrir o crear un fichero, 2) cerrar un fichero, 3) ampliar un fichero, 4) truncar un fichero, y 5) copiar el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) y Ia información asociada de fichero a un índice de sistema de almacenamiento de sistema de almacenamiento. Como ya se ha tratado con anterioridad, el gestor de almacenamiento masivo 162 puede transmitir comandoes al agente de servidor de aplicaciones (host) 120, que a su vez puede enviar comandoes, quizá en forma de llamadas a funciones, al sistema de ficheros de servidor de aplicaciones (host) 144.
La API Win32 es capaz de implementar todas las funciones requeridas. Como se ha tratado con anterioridad, el sistema de ficheros de servidor de aplicaciones (host) puede abrir o crear un fichero, cerrar un fichero, y copiar el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) y Ia información asociada de fichero a un índice de sistema de almacenamiento de sistema de almacenamiento. El sistema de ficheros de servidor de aplicaciones (host) también puede ampliar o truncar un fichero por medio de primero fijar un puntero de fichero asociado con un fichero abierto usando Ia función SetFilePointer, después fijando Ia localización apuntada por el puntero de fichero como el final del fichero abierto usando Ia función
SetEndOfFile.
DWORD WINAPI SetFilePointer(_in HANDLE hFile, _in LONG IDistanceToMove, inout_opt PLONG IpDistanceToMoveHigh, in DWORD dwMoveMethod);
BOOL WINAPI SetEndOfFile(_in HANDLE hFile);
La figura 5 muestra pasos de ejemplo 500 para procesar una operación de escritura usando el sistema de ficheros de servidor de aplicaciones (host) 144 de Ia figura 1. Los pasos 500 se pueden utilizar por parte de una aplicación de servidor de aplicaciones (host) 130. Los pasos 500 se pueden utilizar también por parte del agente de servidor de aplicaciones (host) 120, por ejemplo, en respuesta a una petición de escritura transmitida desde el gestor de almacenamiento masivo 162. En el paso 502, se recibe una petición para realizar una operación de escritura o una operación de lectura. La petición puede estar generada por parte de Ia funcionalidad dentro de una aplicación 130, y puede ser recibida por un componente dentro de Ia aplicación 130. La petición también puede ser recibida por el agente de servidor de aplicaciones (host) 120 desde el gestor de almacenamiento masivo 162 en el sistema de almacenamiento 150. Tanto el agente de servidor de aplicaciones (host) 120 como Ia aplicación 130 pueden enviar comandos y datos al sistema de ficheros de servidor de aplicaciones (host) 144 a través del sistema operativo de servidor de aplicaciones (host) 140. El control pasa al paso 504, en el que el sistema de ficheros de servidor de aplicaciones (host) abre el fichero. En el paso 506, el sistema de ficheros de servidor de aplicaciones (host) escribe datos o lee datos a o desde el fichero. El sistema de ficheros de servidor de aplicaciones (host) 144 recibe Ia petición a nivel de fichero desde Ia aplicación 130 o el agente de servidor de aplicaciones (host) 120, y genera uno o más comandos de dirección de bloque lógico (LBA) y datos para su transmisión al controlador de memoria 180 sobre Ia ¡nterfaz de comunicaciones USB 104. El controlador de memoria 180 recibe los comandos desde el servidor de aplicaciones (host) 110. Si Ia petición es una operación de escritura, el controlador de memoria 180 recibe también datos. El controlador de memoria 180 escribe o lee después Ia memoria 170 de acuerdo con los comandos de dirección de bloque lógico. Si Ia petición es una operación de lectura, el controlador de memoria 180 devuelve los datos al servidor de aplicaciones (host) sobre Ia interfaz de comunicaciones USB 104. El control pasa entonces al paso 508, en el que el sistema de ficheros de servidor de aplicaciones (host) cierra el fichero. De esta manera, Ia inspección de los pasos 500 revela que el índice de sistema de almacenamiento de sistema de fichero en cache de servidor de aplicaciones (host) 146 no necesitaría estar sincronizado con el índice de sistema de almacenamiento almacenado en cache embebido 166. El sistema de ficheros de servidor de aplicaciones (host) 110 puede utilizar su índice de sistema de almacenamiento almacenado en cache 146 sin el riesgo de que se éste se quedé obsoleto, porque el sistema de ficheros embebido 164 no realiza ninguna de las operaciones de E/S de fichero que podría hacer que quedase obsoleta Ia copia en cache del servidor de aplicaciones (host) 146 del índice de sistema de almacenamiento 172. En lugar de esto, el gestor de almacenamiento masivo 162 delega todas las operaciones, tales como Ia ampliación y el trunco de ficheros, que dispararían o que requerirían de una actualización a un índice de sistema de almacenamiento almacenado en cache 166 al sistema de ficheros de servidor de aplicaciones (host) 100. Esto elimina Ia necesidad de sincronización cuando se realicen operaciones de escritura y de lectura usando el sistema de ficheros de servidor de aplicaciones (host) 110, mejorando el funcionamiento de estas operaciones.
Los procedimientos y los sistemas descritos en este documento se pueden implementar dentro de una variedad de arquitecturas de almacenamiento. Un ejemplo de una memoria compartida entre un sistema de ficheros de servidor de aplicaciones (host) y un sistema de ficheros embebido es una tarjeta SIM de alta capacidad, tal como Ia SIM 5000™, un dispositivo de memoria de SanDisk Corporation de Milpitas, California. Se utilizan tarjetas SIM y tarjetas R-UIM en teléfonos celulares que funcionan en redes de comunicaciones de Sistemas Globales para Comunicaciones Móviles (GSM) y redes de Acceso Múltiple por División de Código (CDMA), respectivamente. En estas aplicaciones, las tarjetas SIM y R-UIM almacenan cantidades limitadas de información, tal como claves de encriptado, valores de identificación de abonado, y lista de contactos telefónicos. Sin embargo, a medida que ha aumentado Ia densidad de almacenamiento de memoria no volátil, más memoria no volátil puede estar contenida dentro de una tarjeta de almacenamiento tal como una tarjeta SIM. El almacenamiento adicional se puede utilizar para una variedad de servicios de telefonía celular avanzada, tales como anexado de objetos en Servicios de Mensajería Multimedia (MMS), ficheros de audio MP3, ficheros de imagen de alta resolución, y ficheros de vídeo, así como proporcionar funcionalidad de gestión de información personal (PIM) completa (del inglés, personal information managemenf), tal como listas de contactos de correo electrónico y calendarios. Alguna de Ia capacidad de almacenamiento adicional es utilizada por aplicaciones que se están ejecutando en el servidor de aplicaciones (host), tal como un teléfono celular, un asistente digital personal (PDA), o cualquier dispositivo que esté en comunicación con Ia tarjeta SIM de alta capacidad. La capacidad de almacenamiento adicional también es utilizada por aplicaciones que se estén ejecutando sobre un procesador embebido con Ia tarjeta SlM de alta capacidad. En una tarjeta SIM de alta capacidad, al menos algunos datos se almacenan en un espacio de memoria compartido que es accesible tanto por el procesador embebido dentro de Ia tarjeta SIM, como por el servidor de aplicaciones (host).
De esta manera, en un sistema que esté utilizando una tarjeta SIM de alta capacidad, existe una necesidad de coordinar el acceso al almacenamiento en memoria flash dentro de una tarjeta SIM de alta capacidad por parte del sistema de ficheros de servidor de aplicaciones (host) y del sistema de ficheros embebido. Utilizando las realizaciones, un procesador de servidor de aplicaciones (host) puede acceder al almacenamiento en memoria flash dentro de una tarjeta SIM de alta capacidad sin tener que actualizar su índice de sistema de almacenamiento almacenado en cache con el contenido del índice de sistema de almacenamiento almacenado en cache embebido. De esta manera, el funcionamiento del acceso al sistema de ficheros de servidor de aplicaciones (host) es similar a sistemas en los que el acceso no esté compartido con un procesador embebido. Un gestor de almacenamiento masivo, tal como el gestor de almacenamiento masivo 162 de Ia figura 1 , se puede utilizar para recibir peticiones provenientes de una aplicación embebida 152, y para determinar si Ia operación solicitada requeriría una actualización del índice de sistema de almacenamiento 172. En una realización, el gestor de almacenamiento masivo 162 encamina Ia petición al sistema de ficheros de servidor de aplicaciones (host) 144 si Ia petición cambiará el índice de almacenamiento masivo 172, y encamina Ia petición al sistema de ficheros embebido 164 si Ia petición cambiará el índice de sistema de almacenamiento 172. De esta manera, el sistema de ficheros de servidor de aplicaciones (host) 144 se utiliza para escribir un nuevo fichero, para borrar un fichero, para anexar datos a un fichero existente, o para sobrescribir un fichero existente con un nuevo fichero más grande. El sistema de ficheros embebido 164 solamente se utiliza para operaciones de lectura, y para operaciones de sobrescribir datos con nuevos datos, a Io que a veces se hace referencia como "escribir en lugar". En esta realización, si el sistema de ficheros de servidor de aplicaciones (host) 144 se utiliza para completar Ia petición, los datos de escritura se transmiten fuera del sistema de almacenamiento 150 al servidor de aplicaciones (host) 110 como parte de una orden a nivel de fichero. Los datos de escritura se transmiten desde el servidor de aplicaciones (host) 110 a Ia tarjeta SIM de alta capacidad 150 como parte de una pluralidad de comandos de dirección de bloque lógico generadas por el sistema de ficheros de servidor de aplicaciones (host) 144. De esta manera, los datos de escritura existen y vuelven a entrar en Ia tarjeta SIM de alta capacidad 150 antes de ser escritos en memoria flash 170. Con el fin de que una aplicación embebida lea desde el almacenamiento en memoria flash, el sistema de ficheros embebido actualiza en primer lugar su cache del índice de sistema de almacenamiento, después realiza lecturas sin Ia ayuda del sistema de ficheros de servidor de aplicaciones (host), como se describe en los pasos 200 de Ia figura 2, y los pasos 400 de Ia figura 4.
En otra realización, el gestor de almacenamiento masivo 162 particiona Ia petición proveniente de Ia aplicación 152 según sea necesario, para utilizar Ia funcionalidad del sistema de ficheros de servidor de aplicaciones (host) 144 si se requieren Ia ampliación y el truncado de ficheros, y en caso contrario usan el sistema de ficheros embebido 164 para operaciones de lectura y escritura reales. Con el fin de escribir datos en un nuevo fichero, Ia anexión en un fichero existente, o Ia escritura en un fichero existente en el que el tamaño del fichero resultante cambiará, un sistema de ficheros embebido 164 puede depender de un sistema de ficheros de servidor de aplicaciones (host) 144 para abrir o para crear un nuevo fichero, ampliar el fichero en preparación para Ia escritura de nuevos datos, y para truncar y cerrar el fichero después de que se haya completado una operación de escritura. El sistema de ficheros embebido 164 se puede utilizar para realizar Ia escritura real de datos en el fichero. El gestor de almacenamiento masivo 162 coordina el funcionamiento del sistema de ficheros de servidor de aplicaciones (host) 144 y el sistema de ficheros embebido 164 con el fin de completar Ia petición. El permitir que un sistema de ficheros de servidor de aplicaciones (host)
110 y un sistema de ficheros embebido 164 compartan el mismo espacio de almacenamiento de datos permite que aplicaciones de servidor de aplicaciones (host) 130 y aplicaciones embebidas 152 compartan los mismos datos según se necesite. Una ¡neficiencia potencial asociada con hacer funcionar dos sistemas de ficheros en paralelo es Ia sincronización de los índices de sistema de almacenamiento almacenados en cache almacenados dentro de cada sistema de ficheros, y el índice de sistema de almacenamiento almacenado en el propio sistema de almacenamiento. Sin sincronización, una memoria 170 se puede corromper por medio de una operación de escritura utilizando una copia en cache obsoleta del índice de sistema de almacenamiento. Por otra parte, las operaciones de sincronización pueden disminuir el caudal de salida de datos debido a Ia necesidad de copiar Ia información de índice de sistema de almacenamiento entre el sistema de almacenamiento 150 y Ia copia en cache del índice de sistema de almacenamiento almacenado dentro de cada sistema de ficheros.
Las realizaciones permiten al sistema de ficheros de servidor de aplicaciones (host) utilizar su índice de sistema de almacenamiento almacenado en cache sin el riesgo de quedar obsoleto, porque el sistema de ficheros embebido no realiza ninguna de las operaciones de E/S de ficheros que podrían hacer que quedase obsoleta Ia copia en cache de servidor de aplicaciones (host) del índice de sistema de almacenamiento. Esto elimina Ia necesidad de sincronización cuando se realizan operaciones de lectura y de escritura usando el sistema de ficheros de servidor de aplicaciones (host), mejorando el funcionamiento de estas operaciones. Con el fin de hacer esto, el sistema de ficheros de servidor de aplicaciones (host) realiza muchas operaciones en nombre del sistema de ficheros embebido. Dependiendo de Ia realización, las operaciones que disparen o que requieran un cambio en un índice de sistema de almacenamiento, tal como las operaciones de escritura en ficheros, de creación de ficheros, de borrado de ficheros, de ampliación de ficheros y las operaciones de truncado de ficheros, son realizadas por el sistema de ficheros de servidor de aplicaciones (host) 144, en nombre del sistema de ficheros embebido 164.
En una realización, el sistema de ficheros de servidor de aplicaciones (host) 144 se usa para realizar todas las operaciones de escritura en memoria 170, ya sea iniciadas por medio de una aplicación de servidor de aplicaciones (host) 130 o por medio de una aplicación embebida 152, que dispararía o que requeriría un cambio en el índice de sistema de almacenamiento 172. De esta forma, el sistema de ficheros de servidor de aplicaciones (host) 144 procesa las peticiones de escritura provenientes de las aplicaciones embebidas 152 a través del agente de servidor de aplicaciones (host) 120 como si las peticiones fuesen originadas dentro del servidor de aplicaciones (host). Al hacerlo así, el índice de sistema de almacenamiento almacenado en cache de servidor de aplicaciones (host) 146 no tiene el riesgo de convertirse en obsoleto por medio de una operación por parte del sistema de ficheros embebido 164. En otra realización, el sistema de ficheros embebido 164 se utiliza para escribir datos en Ia memoria 170 para Ia aplicación embebida 152, y el sistema de ficheros de servidor de aplicaciones (host) 144 solamente se usa para ampliar el tamaño del fichero para permitir Ia escritura de nuevos datos en el fichero. El sistema de ficheros de servidor de aplicaciones (host) 144 también trunca el fichero para eliminar espacio de fichero sin usarse al finalizar una operación de escritura. Después de Ia operación de ampliación, el sistema de ficheros embebido 164 debe sincronizar su índice de sistema de almacenamiento almacenado en cache 166 con el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146. La sobrecarga de esta operación de sincronización se puede reducir (con relación a Ia cantidad de datos escritos) por medio de Ia selección de un tamaño de extensión de fichero que sea suficiente para acomodar Ia mayoría o todos los datos que el sistema de ficheros embebido vaya a escribir mientras el fichero esté abierto. Cuando se utiliza el sistema de ficheros embebido 164 para leer datos, el sistema de ficheros embebido 164 debe sincronizar su índice de sistema de almacenamiento almacenado en cache 166 con el índice de sistema de almacenamiento almacenado en cache del servidor de aplicaciones (host) 146 antes de abrir el fichero. La sobrecarga de esta operación de sincronización se puede reducir (con relación a Ia cantidad de datos leídos) por medio de Ia lectura de más datos provenientes del fichero cada vez que éste se abre.
En una realización, el sistema de ficheros de servidor de aplicaciones (host) 144 se ve favorecido, y de esta manera puede tener comparativamente un mejor funcionamiento, porque el índice de sistema de almacenamiento almacenado en cache del sistema de ficheros de servidor de aplicaciones (host) 146 no puede pasar a ser obsoleto debido a las operaciones de E/S de fichero utilizando el sistema de ficheros embebido 164. En otra realización, el sistema de ficheros embebido 164 podría verse favorecido en lugar del sistema de ficheros de servidor de aplicaciones (host) 144, por medio de Ia utilización del sistema de ficheros embebido 164 para realizar todas las operaciones que modificarían el índice de sistema de almacenamiento 172, y requiriendo que el sistema de ficheros de servidor de aplicaciones (host) 144 sincronice su índice de sistema de almacenamiento almacenado en cache 146 antes de realizar una operación de E/S de fichero. La elección de cuál sistema de ficheros favorecer depende de los requisitos de funcionamiento del sistema. Por ejemplo, si el funcionamiento de E/S de fichero de los datos que el servidor de aplicaciones (host) esté almacenando es más importante, el sistema de ficheros de servidor de aplicaciones (host) 144 podría verse favorecido. Por otra parte, si el funcionamiento de E/S de fichero de los datos que las aplicaciones embebidas 152 están almacenando es más importante, entonces el sistema de ficheros embebido 164 podría verse favorecido.
Aunque Ia invención se ha descrito con respecto a varias realizaciones de sistema y de procedimiento, se entenderá que Ia invención es merecedora de protección dentro del alcance completo de las reivindicaciones anejas.

Claims

REIVINDICACIONES
1. Un procedimiento para Ia gestión del acceso a datos para un sistema de almacenamiento que sea accesible por un sistema de ficheros embebido y que esté indexado por medio de un índice de sistema de almacenamiento, que comprende:
Ia recepción de una petición de acceso proveniente de dentro del sistema de almacenamiento, en el que Ia petición de acceso está asociada con un fichero; Ia determinación de si Ia petición de acceso es una petición de escritura que requiere una actualización del índice de sistema de almacenamiento; si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento, en el que Ia petición de escritura comprende datos:
Ia transmisión de una orden de escritura de datos y los datos a un servidor de aplicaciones; Ia recepción de una orden de escritura de dirección de bloque lógico y al menos una parte de los datos provenientes del servidor de aplicaciones;
Ia escritura de Ia parte de los datos en el sistema de almacenamiento de acuerdo con Ia orden de escritura de dirección de bloque lógico;
Ia recepción de la orden de actualización del índice de sistema de almacenamiento proveniente del servidor de aplicaciones; y
Ia actualización del índice de sistema de almacenamiento de acuerdo con Ia orden de actualización del índice de sistema de almacenamiento recibida; y si Ia petición de acceso es una petición de escritura que no requiere de una actualización del índice de sistema de almacenamiento, en el que Ia petición de escritura comprende datos:
Ia escritura de datos en el fichero con el sistema de ficheros embebido.
2. El procedimiento de Ia reivindicación 1 , comprendiendo de manera adicional:
Ia determinación de si Ia petición de acceso es una petición de lectura, y, de ser así:
Ia lectura de los datos del fichero con el sistema de ficheros embebido.
3. El procedimiento de Ia reivindicación 1 , en el que el índice de sistema de almacenamiento comprende una Tabla de Asignación de Ficheros.
4. El procedimiento de Ia reivindicación 1 , en el que el sistema de almacenamiento es una tarjeta de medios extraíble que comprende una memoria no volátil.
5. El procedimiento de Ia reivindicación 1 , en el que Ia determinación de si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento comprende Ia determinación de si Ia petición de escritura de datos es una petición para escribir un nuevo fichero en el sistema de almacenamiento.
6. EI procedimiento de Ia reivindicación 1 , en el que Ia determinación de si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento comprende Ia determinación de si Ia petición de escritura de datos es una petición para sustituir un fichero existente con un nuevo fichero, en el que el tamaño del nuevo fichero es mayor que el tamaño del fichero existente.
7. El procedimiento de Ia reivindicación 1 , en el que Ia determinación de si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento comprende Ia determinación de si Ia petición de escritura de datos es una petición para anexar datos a un fichero existente.
8. El procedimiento de Ia reivindicación 1 , en el que Ia orden de escritura de datos y los datos para su escritura son transmitidos sobre una primera interfaz, y Ia orden de dirección de bloque lógico y Ia orden de índice de sistema de almacenamiento son recibidas sobre una segunda interfaz.
9. El procedimiento de Ia reivindicación 3, en el que Ia primera interfaz es una interfaz ISO 7816, y Ia segunda interfaz es una interfaz de Bus Serie Universal.
10. El procedimiento de Ia reivindicación 8, en el que Ia primera interfaz es una interfaz segura.
11. El procedimiento de Ia reivindicación 8, en el que Ia segunda interfaz es una interfaz segura.
12. El procedimiento de Ia reivindicación 1 , en el que Ia transmisión de una orden de escritura de datos y los datos a un servidor de aplicaciones comprende:
Ia transmisión de una orden de abrir fichero al servidor de aplicaciones; y Ia transmisión de una orden de escritura de datos y los datos al servidor de aplicaciones.
13. El procedimiento de Ia reivindicación 12, comprendiendo de manera adicional Ia transmisión de una orden a un servidor de aplicaciones para cerrar el fichero.
14. El procedimiento de Ia reivindicación 1 , en el que Ia escritura de datos en el fichero con el sistema de ficheros embebido comprende:
Ia apertura del fichero con un sistema de ficheros embebido; Ia escritura de datos en el fichero con el sistema de ficheros embebido; y el cierre del fichero con el sistema de ficheros embebido.
15. El procedimiento de Ia reivindicación 1 , en el que Ia lectura de datos del fichero con el sistema de ficheros embebido comprende: Ia apertura del fichero con un sistema de ficheros embebido; Ia lectura de datos del fichero con el sistema de ficheros embebido; y el cierre del fichero con el sistema de ficheros embebido.
16. Un sistema de almacenamiento indexado por medio de un índice de sistema de almacenamiento, que comprende: una memoria; un sistema de ficheros embebido; un controlador de memoria, configurado para recibir peticiones de lectura y de escritura desde un servidor de aplicaciones y desde el sistema de ficheros embebido y Ia escritura de datos y Ia lectura de datos a y desde Ia memoria; y un gestor, configurado para: recibir una petición de acceso desde dentro del sistema de almacenamiento, en el que Ia petición de acceso está asociada con un fichero, determinar si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento, una petición de escritura que no requiera de una actualización del índice de sistema de almacenamiento, o una petición de lectura, si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento, en el que Ia petición de escritura comprende datos: transmitir una orden de escritura de datos y los datos a un servidor de aplicaciones, y si Ia petición de acceso es una petición de escritura que no requiere de una actualización del índice de sistema de almacenamiento, en el que Ia petición de escritura comprende datos: escribir los datos en el fichero con el sistema de ficheros embebido.
17. El sistema de Ia reivindicación 16, en el que el gestor está configurado además para leer datos desde el fichero con el sistema de ficheros embebido, si Ia petición de acceso es una petición de lectura.
18. El sistema de Ia reivindicación 16, en el que el índice de sistema de almacenamiento comprende una Tabla de Asignación de Ficheros.
19. El sistema de Ia reivindicación 16, en el que el sistema de almacenamiento es una tarjeta de medios extraíble que comprende una memoria no volátil.
20. El sistema de Ia reivindicación 16, en el que Ia determinación de si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento, comprende Ia determinación de si Ia petición de escritura de datos es una petición para escribir un fichero nuevo en el sistema de almacenamiento.
21. El sistema de Ia reivindicación 16, en el que Ia determinación de si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento comprende Ia determinación de si Ia petición de escritura de datos es una petición para sustituir un fichero existente con un nuevo fichero, en el que el tamaño del nuevo fichero es mayor que el tamaño del fichero existente.
22. El sistema de Ia reivindicación 16, en el que Ia determinación de si Ia petición de acceso es una petición de escritura que requiere de una actualización del índice de sistema de almacenamiento comprende Ia determinación de si Ia petición de escritura de datos es una petición para anexar datos a un fichero existente.
23. El sistema de Ia reivindicación 16, en el que Ia orden de escritura de datos y los datos que se vayan a escribir se transmiten sobre una primera interfaz, y Ia orden de dirección de bloque lógico y Ia orden de índice de sistema de almacenamiento son recibidas sobre una segunda interfaz.
24. El sistema de Ia reivindicación 23, en el que Ia primera interfaz es una interfaz ISO 7816, y Ia segunda interfaz es una interfaz de Bus Serie Universal.
25. El sistema de Ia reivindicación 23, en el que Ia primera interfaz es una interfaz segura.
26. El sistema de Ia reivindicación 23, en el que Ia segunda interfaz es una interfaz segura.
27. El sistema de Ia reivindicación 16, en el que Ia transmisión de una orden de escritura de datos y los datos a un servidor de aplicaciones comprende:
Ia transmisión de una orden de abrir fichero al servidor de aplicaciones; y
Ia transmisión de una orden de escritura de datos y datos al servidor de aplicaciones.
28. El sistema de Ia reivindicación 27, en el que el gestor está configurado además para transmitir una orden a un servidor de aplicaciones para cerrar el fichero.
29. El sistema de Ia reivindicación 16, en el que Ia escritura de datos en el fichero con el sistema de ficheros embebido comprende: Ia apertura del fichero con un sistema de ficheros embebido;
Ia escritura de datos en el fichero con el sistema de ficheros embebido; y el cierre del fichero con el sistema de ficheros embebido.
30. El sistema de Ia reivindicación 16, en el que Ia lectura de datos del fichero con el sistema de ficheros embebido comprende:
Ia apertura del fichero con un sistema de ficheros embebido; Ia lectura de datos del fichero con el sistema de ficheros embebido; y el cierre del fichero con el sistema de ficheros embebido.
31. Un procedimiento de gestión del acceso a los datos para un sistema de almacenamiento indexado por medio de un índice de sistema de almacenamiento, comprendiendo: Ia recepción de una petición de acceso desde dentro del sistema de almacenamiento, en el que Ia petición de acceso está asociada con un fichero;
Ia determinación de si la petición de acceso es una petición de escritura; si Ia petición de acceso es una petición de escritura, en Ia que Ia petición de escritura comprende datos: transmitir una orden de abrir fichero a un servidor de aplicaciones; transmitir una orden de ampliar fichero al servidor de aplicaciones; recibir una orden de actualizar el índice de sistema de almacenamiento desde el servidor de aplicaciones, en el que Ia orden de actualizar el índice de sistema de almacenamiento comprende información acerca del fichero ampliado; actualizar el índice de sistema de almacenamiento de acuerdo con Ia orden de actualizar el índice de sistema de almacenamiento recibida; transmitir una orden de cerrar fichero al servidor de aplicaciones; abrir el fichero con el sistema de ficheros embebido, escribir datos con un sistema de ficheros embebido; y cerrar el fichero con el sistema de ficheros embebido.
32. El procedimiento de Ia reivindicación 31, comprendiendo de manera adicional:
Ia determinación de si Ia petición de acceso es una petición de lectura, y de ser así: abrir el fichero con un sistema de ficheros embebido; leer los datos del fichero con el sistema de ficheros embebido; y cerrar el fichero con el sistema de ficheros embebido.
33. El procedimiento de la reivindicación 31 , en el que el índice de sistema de almacenamiento comprende una Tabla de Asignación de Ficheros.
34. El procedimiento de Ia reivindicación 31 , en el que el sistema de almacenamiento es una tarjeta de medios extraíble que comprende una memoria no volátil.
35. El procedimiento de Ia reivindicación 31 , en el que Ia orden de ampliación de fichero amplía el fichero en un número predeterminado de octetos.
36. El procedimiento de Ia reivindicación 31 , en el que la orden de abrir fichero, Ia orden de cerrar fichero, y Ia orden de ampliar fichero son transmitidas sobre una primera interfaz, y Ia orden de dirección de bloque lógico y Ia orden de índice de sistema de almacenamiento son recibidas sobre una segunda interfaz.
37. El procedimiento de Ia reivindicación 36, en el que la primera interfaz es una interfaz ISO 7816, y Ia segunda interfaz es una interfaz de Bus Serie Universal.
38. El procedimiento de Ia reivindicación 36, en el que Ia primera interfaz es una interfaz segura.
39. El procedimiento de Ia reivindicación 36, en el que Ia segunda interfaz es una interfaz segura.
40. Un sistema de almacenamiento indexado por medio de un índice de sistema de almacenamiento, que comprende: una memoria; un sistema de ficheros embebido; un controlador de memoria, configurado para recibir peticiones desde un servidor de aplicaciones y desde un sistema de ficheros embebido y para escribir datos y para leer datos a y desde Ia memoria; un gestor, configurado para: recibir una petición de acceso desde dentro del sistema de almacenamiento, en el que Ia petición de acceso está asociada con un fichero; determinar si Ia petición de acceso es una petición de escritura, en el que Ia petición de escritura comprende datos; en respuesta a determinar que Ia petición de acceso es una petición de escritura: transmitir una orden de abrir fichero a un servidor de aplicaciones, transmitir una orden de ampliar fichero al servidor de aplicaciones, transmitir una orden de descarga del índice de sistema de almacenamiento al servidor de aplicaciones, abrir el fichero con el sistema de ficheros embebido, escribir datos con el sistema de ficheros embebido, cerrar el fichero con el sistema de ficheros embebido, y transmitir una orden de cerrar fichero al servidor de aplicaciones, en Ia que Ia escritura de los datos en el fichero con el sistema de ficheros embebido no cambia un tamaño del fichero.
41. El sistema de Ia reivindicación 40, en el que el gestor está configurado de manera adicional para determinar que Ia petición de acceso es una petición de lectura, y de ser así: abrir el fichero con el sistema de ficheros embebido; leer datos del fichero con el sistema de ficheros embebido; y cerrar el fichero con el sistema de ficheros embebido, en respuesta.
42. El sistema de Ia reivindicación 40, en el que el gestor está configurado de manera adicional para transmitir una orden de truncar fichero al servidor de aplicaciones , en el que Ia orden de truncar fichero comprende un valor de tamaño indicativo de un número de octetos suficientes para almacenar el fichero después de completar Ia petición de escritura de datos.
43. El sistema de Ia reivindicación 42, en el que el gestor está configurado de manera adicional para: transmitir una orden de descarga del índice de sistema de almacenamiento al servidor de aplicaciones después de que Ia orden de truncar fichero sea transmitida al servidor de aplicaciones; recibir una orden de actualización de índice de sistema de almacenamiento desde el servidor de aplicaciones, en el que Ia orden de actualización de índice de sistema de almacenamiento comprende información acerca del fichero truncado; y actualizar el índice de sistema de almacenamiento de acuerdo con Ia orden de actualización de índice de sistema de almacenamiento.
PCT/ES2008/000235 2008-04-11 2008-04-11 Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros WO2009125027A1 (es)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/ES2008/000235 WO2009125027A1 (es) 2008-04-11 2008-04-11 Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros
EP08761482A EP2270693A1 (en) 2008-04-11 2008-04-11 Method for accessing a storage system with multiple file systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2008/000235 WO2009125027A1 (es) 2008-04-11 2008-04-11 Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros

Publications (1)

Publication Number Publication Date
WO2009125027A1 true WO2009125027A1 (es) 2009-10-15

Family

ID=39967960

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2008/000235 WO2009125027A1 (es) 2008-04-11 2008-04-11 Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros

Country Status (2)

Country Link
EP (1) EP2270693A1 (es)
WO (1) WO2009125027A1 (es)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521289A (zh) * 2011-11-29 2012-06-27 华为技术有限公司 一种文件同步方法、装置及系统
WO2017107414A1 (zh) * 2015-12-25 2017-06-29 百度在线网络技术(北京)有限公司 文件操作方法和装置
US10402313B2 (en) 2008-04-11 2019-09-03 Sandisk Technologies Llc Method and system for accessing a storage system with multiple file systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US20070038835A1 (en) * 2005-08-10 2007-02-15 Vimicro Corporation Device for transmitting data and method for the same
US20070143571A1 (en) * 2005-12-21 2007-06-21 Sinclair Alan W Dual mode access for non-volatile storage devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US20070038835A1 (en) * 2005-08-10 2007-02-15 Vimicro Corporation Device for transmitting data and method for the same
US20070143571A1 (en) * 2005-12-21 2007-06-21 Sinclair Alan W Dual mode access for non-volatile storage devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GAL E ET AL: "A TRANSACTIONAL FLASH FILE SYSTEM FOR MICROCONTROLLERS", PROCEEDINGS OF THE USENIX ANNUAL TECHNICAL CONFERENCE, XX, XX, 10 April 2005 (2005-04-10), pages 89 - 104, XP009068250 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402313B2 (en) 2008-04-11 2019-09-03 Sandisk Technologies Llc Method and system for accessing a storage system with multiple file systems
CN102521289A (zh) * 2011-11-29 2012-06-27 华为技术有限公司 一种文件同步方法、装置及系统
WO2017107414A1 (zh) * 2015-12-25 2017-06-29 百度在线网络技术(北京)有限公司 文件操作方法和装置
KR20170123336A (ko) * 2015-12-25 2017-11-07 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 파일 조작 방법 및 장치
KR101994021B1 (ko) 2015-12-25 2019-06-27 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 파일 조작 방법 및 장치
US11003625B2 (en) 2015-12-25 2021-05-11 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for operating on file

Also Published As

Publication number Publication date
EP2270693A1 (en) 2011-01-05

Similar Documents

Publication Publication Date Title
US10402313B2 (en) Method and system for accessing a storage system with multiple file systems
KR101002978B1 (ko) 플래시 메모리 관리 시스템 및 방법
US7433994B2 (en) On-device data compression to increase speed and capacity of flash memory-based mass storage devices
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
US20100228906A1 (en) Managing Data in a Non-Volatile Memory System
JP4807683B2 (ja) データ記憶装置
US10671522B2 (en) Memory controller and memory system including the same
KR20080055734A (ko) 메모리 디바이스
KR20120063829A (ko) 비휘발성 메모리 장치의 데이터 처리 방법
CA2738733A1 (en) System and method of providing multiple virtual machines with shared access to non-volatile solid-state memory using rdma
US20150277786A1 (en) Method, device, and program for managing a flash memory for mass storage
US20200089619A1 (en) Data storage device and method of deleting namespace thereof
WO2014038223A1 (en) Information processing device
WO2006063270A1 (en) Utilizing paging to support dynamic code updates
US11726906B2 (en) Memory device and non-transitory computer readable recording medium
US20230342294A1 (en) Memory device and non-transitory computer readable recording medium
EP1998270A1 (en) External storage device
WO2009125027A1 (es) Procedimiento para acceder a un sistema de almacenamiento con múltiples sistemas de ficheros
US11775424B2 (en) Memory system and information processing system
EP2245527B1 (en) Integration of secure data transfer applications for generic io devices
KR20080033649A (ko) 머지 빈도를 줄일 수 있는 플래쉬 메모리 시스템 및 그관리 방법
CN112181285A (zh) 存储器系统及其操作方法
US7681009B2 (en) Dynamically updateable and moveable memory zones
US20080059706A1 (en) Storage apparatus, storage system and control method for storage apparatus
WO2009150259A1 (es) Procedimiento para el acceso a un sistema de almacenamiento con múltiples sistemas de fichero

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08761482

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2008761482

Country of ref document: EP