US20090083630A1 - Computer system with tunneling - Google Patents
Computer system with tunneling Download PDFInfo
- Publication number
- US20090083630A1 US20090083630A1 US12/234,158 US23415808A US2009083630A1 US 20090083630 A1 US20090083630 A1 US 20090083630A1 US 23415808 A US23415808 A US 23415808A US 2009083630 A1 US2009083630 A1 US 2009083630A1
- Authority
- US
- United States
- Prior art keywords
- programmed
- display
- controller kernel
- application
- kernel
- Prior art date
- Legal status (The legal status 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 status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
Definitions
- the present invention relates to computer systems with a computer running multiple operating systems and more particularly to computer systems with a computer running multiple containerized (see DEFINITIONS section) operating systems to be respectively used by multiple terminals (see DEFINITIONS section).
- a computer such as a modified PC desktop type host computer, which controls and operates a plurality of terminals.
- mainframe computers dating back to at least the 1970s operated in this way. More recently, each terminal has been given its own operating system and/or instance of an operating system. These kind of systems are herein called multi-terminal systems.
- hypervisor it is conventional to use a hypervisor to run multiple operating systems on a single computer.
- a hypervisor (or virtual machine monitor) is a virtualization platform that allows multiple operating systems to run on a host computer at the same time.
- Some hypervisors take the form of software that runs directly on a given hardware platform as an operating system control program. With this kind of hypervisor, the guest operating system runs at the second level above the hardware.
- Other hypervisors take the form of software that runs within an operating system environment.
- Hypervisors have conventionally been used in multi-terminal systems where each terminal has a dedicated guest operating system on a single host computer.
- I/O devices communicate I/O data through the hypervisor to perform basic I/O operations (see DEFINITIONS section). More specifically: (i) data from the I/O devices is communicated through the hypervisor to the computing hardware of the host computer; and (ii) from the computing hardware (if any) is communicated through the hypervisor to the I/O devices. Because the hypervisor is a virtualization platform, this means that the I/O devices must be virtualized in the software of the hypervisor and/or the guest operating system so that the communication of I/O data through the hypervisor can take place.
- FIG. 1 shows prior art computer system 100 including: desktop PC 102 and four terminals 104 a, 104 b, 104 c and 104 d.
- Desktop PC 102 includes: video card 110 ; I/O ports 112 ; CPU 114 ; host operating system (“OS”) 116 ; virtualizing middleware 118 , four guest OS's (see DEFINITIONS section) 120 a, 120 b, 120 c, 120 d; and four guest applications 122 a, 122 b, 122 c and 122 d.
- Each terminal 104 includes: display 130 and keyboard-mouse-audio (“KMA”) devices 132 .
- Host OS may be any type of OS, such as Windows, Apple or POSIX (see DEFINITIONS section).
- host OS 116 runs at security level (see DEFINITIONS section) L 0 , which may be, for example in an x86 CPU architecture, Ring Zero. This means that host OS 116 exchanges instructions directly with CPU 116 in native form (see DEFINITIONS section).
- the guest OS's 120 a, 120 b, 120 c, 120 d are used to respectively control the four terminals 104 a, 104 b, 104 c, 104 d.
- the four guest OS's 120 a, 120 b, 120 c, 120 d are containerized virtual machines so that work by one user on one terminal does not affect or interfere with work by another user on another terminal. As shown in FIG. 1 , they can respectively run their own application(s) 122 a, 122 b, 122 c, 122 d in an independent manner.
- the four guest OS's are virtual machines, running at a security level 13 , which is above the OS security level (see DEFINITIONS section) L 0 .
- the guest OS's 120 a, 120 b, 120 c, 120 d would be running at Ring Three. This is an indirect form of communication with the CPU 114 .
- the instructions exchanged between the guest OS's and the CPU are virtualized by virtualizing middleware 118 , which may take the form of a hypervisor or virtual machine manager (“VMM”).
- VMM virtual machine manager
- some of the exchanged instructions relate to basic I/O operations.
- the exchanged instructions are virtualized by virtualizing middleware 118 , the instructions are taken out of their native form and put in a virtualized form. This virtualized form is generally a lot more code intensive than native form. This virtualization makes operations slower and more prone to error than similar exchanges between a host OS, running at the OS security level and the CPU.
- FIG. 8 shows prior art computer system 140 including: CPU 142 ; POSIX operating system (OS) 144 ; and Berkeley Software Distribution (BSD) application 148 .
- POSIX OS 144 includes a BSD socket (see DEFINITIONS section) 146 programmed to allow the BSD application 148 to run on the POSIX OS 144 .
- BSD Berkeley Software Distribution
- FIG. 9 shows a possible prior art computer system 150 including: CPU 152 ; Windows operating system (OS) 154 ; and LINUX application 148 .
- Windows OS 154 includes a LINUX API 156 programmed to allow the LINUX application 158 to run on the Windows OS 154 .
- This system 150 is denominated as “possible” prior art because it is a type of system that seems to be seldom, if ever, actually practiced. This may be due to difficulties in updating the LINUX API 156 to stay current with the underlying Windows OS 154 and/or overlying LINUX application 158 , and/or difficulties involving proprietary code issues.
- FIG. 10 shows prior art computer system 160 including: local computer 162 ; network 164 and POSIX application server computer 166 .
- Local computer 162 includes: CPU 168 ; network interface card (NIC) 170 ; Windows operating system 172 ; and XMing module 174 .
- POSIX application server computer 166 includes: CPU 178 ; network interface card (NIC) 186 ; POSIX operating system 180 ; and POSIX application 184 .
- POSIX OS 184 includes a POSIX socket 182 programmed to allow the POSIX application 184 to run on the POSIX OS 180 .
- System 160 overcomes the difficulties of running a POSIX (for example, LINUX) application by a user who is using a Windows operating system.
- POSIX for example, LINUX
- the remote POSIX application server computer 186 can run the POSIX application(s) because it has the appropriate POSIX OS and socket(s). Inputs to this remote POSIX application(s) and outputs from this remote POSIX application are respectively sent and received through NIC's 170 , 186 and network 164 .
- the special Windows manager module XMing 174 at local computer 162 incorporates data received from the remote POSIX application server computer 166 as a window in the Windows display generated by Windows OS 172 .
- One disadvantage is that the inputs and outputs of the POSIX application(s) must be packetized and de-packetized by NIC's 170 , 186 and sent through the switches of network 164 . This makes the running of the POSIX application effectively slower and less reliable from the perspective of the user of local computer 162 .
- FIG. 11 shows system 188 , which is a variation on system 160 .
- Computer system 188 includes: local computer 189 ; video output 190 ; CPU 191 ; POSIX host OS 192 ; virtualizing middleware 193 ; Windows guest OS 194 and POSIX application 196 .
- POSIX host OS 192 includes socket 197 for running POSIX application 196 right at the local computer 189 .
- the output data of the POSIX application is instead sent through virtual network module 198 (including virtual switches) and virtual NIC 199 included in the virtualizing middleware 193 .
- the present invention is directed to a computer system with a CPU, at least one guest operating system and a controller kernel.
- the controller kernel includes a socket for running an application on the controller kernel itself.
- the controller kernel also includes a video integration module so that video output data from the guest OS may be combined with video output data from the guest OS. In this way, a user of the guest OS can use an application by tunneling, and without the need to virtualize the video output data of the application running on the controller kernel in order to incorporate it with the video output data of the guest OS.
- controller kernel is written in a different form than the guest OS, such as when the controller kernel is in LINUX and the guest OS is in a Windows form because it allows a guest OS of one form (for example, Windows) to reliably, quickly, efficiently and robustly run applications written in another form (for example, LINUX).
- a guest OS of one form for example, Windows
- Some preferred embodiments of the present invention include multiple guest operating systems that exchange instructions in native form (see DEFINITIONS section) with the CPU under control of the controller kernel. Some preferred embodiments of the present invention include multiple, containerized (see DEFINITIONS section) guest operating systems so that the application(s) running on the controller kernel can be separately and independently run by the various guest OS's. Some preferred embodiments of the present invention include both multiple guest OS's and multiple terminals (see DEFINITIONS section) respectively run by the guest OS's. Some preferred embodiments of the present invention include software module(s) to help search for applications suitable to run on the controller kernel. Some preferred embodiments of the present invention include software module(s) to help filter which applications are permitted to be run on the controller kernel.
- a computer system includes processing hardware, a first guest operating system, a controller kernel, and a first application program.
- the controller kernel runs on the processing hardware, with the controller kernel being programmed to allow the first guest operating system to receive first native form video frame data from the processing hardware through the controller kernel, and with the controller kernel including a first socket.
- the first application program is programmed to generate first application display data when it runs.
- the first socket is programmed to run the first application program.
- the controller kernel is programmed to receive the first application display data and to incorporate the first application display data into the first native form video frame data.
- a computer includes processing hardware, a first OS memory portion, a controller memory portion, and a first application memory portion.
- the first OS memory portion is programmed with a first guest operating system.
- the controller memory portion is programmed with a controller kernel running on the processing hardware, with the controller kernel being programmed to allow the first guest operating system to receive first native form video frame data from the processing hardware through the controller kernel, and with the controller kernel including a first socket.
- the first application memory portion is programmed with a first application program programmed to generate first application display data when it runs.
- the first socket is programmed to run the first application program.
- the processing hardware is programmed to receive the first application display data and to incorporate the first application display data into the first native form video frame data.
- a process includes the following steps: (i) providing a computer system comprising processing hardware, a first guest operating system, a controller kernel, a first application program, with the controller kernel comprising a first socket; (ii) running the controller kernel on the processing hardware; (iii) running the first application program on the first socket; (iv) generating, by the first application program, first application display data; (v) sending the first application display data from the socket to the processing hardware; and (vi) incorporating, by the processing hardware, the first application display data into a first native form video frame data.
- FIG. 1 is a schematic of a prior art computer system
- FIG. 2 is a perspective external view of a first embodiment of a computer system according to the present invention.
- FIG. 3 is a schematic of the first embodiment computer system
- FIG. 4 is a more detailed schematic of a portion of the first embodiment computer system
- FIGS. 5A , 5 B, 5 C and 5 D are a flowchart of a first embodiment of a method according to the present invention.
- FIG. 6 is a of a second embodiment of a computer system according to the present invention.
- FIGS. 7A and 7B are a flowchart of a second embodiment of a method according to the present invention.
- FIG. 8 is a schematic of another prior art computer system
- FIG. 9 is a schematic of another prior art computer system.
- FIG. 10 is a schematic of another prior art computer system
- FIG. 11 is a schematic of another prior art computer system
- FIG. 12 is a of a third embodiment of a computer system according to the present invention.
- FIG. 13 is a of a fourth embodiment of a computer system according to the present invention.
- FIG. 2 shows computer system 200 according to the present invention, including desktop PC 202 and four terminals 204 a, 204 b, 204 c and 204 d.
- Desktop PC 202 could alternatively be any other type of computer now known or to be developed in the future, such as a laptop, a tablet, a mini computer, a mainframe computer, a super computer, a blade, etc.
- Terminals 204 each includes I/O devices in the form of a display, a keyboard, a mouse and an audio device.
- the display is the primary output device and may be any type of display now known or to be developed in the future, such as an LCD display or a CRT display.
- output devices could be present, such as printers, lights (LEDs) and/or vibrating output devices.
- the keyboard, mouse and audio speakers are the primary input devices, but they may include output capabilities as well.
- output devices of any type now known or to be developed in the future, such as drawing tablets, joysticks, footpads, eyetracking input devices, touchscreens, etc.
- each terminal 204 is connected to be in display data communication with desktop PC 202 by a standard parallel display connection, but may be connected by any appropriate data connection now known or to be developed in the future, such as a wireless connection.
- the input devices of terminal 204 are connected to desktop PC 202 by a USB connection. Alternatively, they may be connected by any means now known or to be developed in the future, such as PS2 connection or wireless connection.
- One or more USB hubs may be used between desktop PC 202 and the input devices of terminals 204 .
- Terminals 204 are preferably ultra thin terminals (see DEFINITIONS section). Alternatively, some or all terminals 204 could include a client computer with memory and processing capability. Terminals 204 may also include an I/O port for a portable memory, such as a USB port for a detachably attachable USB flash memory or jump drive.
- a portable memory such as a USB port for a detachably attachable USB flash memory or jump drive.
- FIG. 3 is a schematic of system 200 including desktop PC 202 ; terminals 204 ; video card 210 ; I/O ports 212 ; CPU 214 ; POSIX kernel 215 ; four guest OS's 220 a, 220 b, 220 c, 220 d; four guest applications 222 a, 222 b, 222 c, 222 d; four displays 230 a, 230 b, 230 c, 230 d; and four sets of KMA devices 232 a, 232 b, 232 c, 232 d.
- Video card 210 has at least four outputs to supply display data to the four display devices 230 a, 230 b, 230 c, 230 d. Although not shown, video card 210 may have at least one additional output for: (i) additional terminals; and/or (ii) use with the POSIX kernel and/or any host operating system that may be present.
- the video card may take the form of multiple video cards.
- the CPU may be any type of processing hardware, such as x86 architecture or other Windows type, Apple type, Sun type, etc.
- the hardware structure of the CPU will determine the native form for the instructions that it gives and receives. For this reason, the guest OS's 220 a, 220 b, 220 c, 220 d must be fully compatible with CPU 214 .
- the POSIX kernel is preferably a LINUX kernel because LINUX is open source and also because a LINUX kernel can be expanded to run LINUX applications.
- the kernel may be written in other formats to be compatible with the CPU such as Windows or BSD.
- the PC 202 preferably includes a software algorithm (not shown) that loads the POSIX kernel (Linux 2.6 preferably) onto an available motherboard EEPROM instead of the currently installed proprietary BIOS.
- the kernel along with several other helpful C based programs preferably run in 32 bit mode, as opposed to the current method of running the BIOS in 16 bit mode. These programs preferably include BusyBox, uClibc, and XII. The result is a greatly decreased boot time. All of this is preferably run in the cache memory of the CPU instead of normal DRAM. The reason for this is that DRAM is normally initialized by the BIOS and can't be used until it is initialized. The first program that runs is also written in C and it is what initializes and uses this CPU memory.
- the POSIX kernel 215 does not necessarily have any sockets or run any applications. It may only runs sub-modules that control multiple video, keyboard, mouse, and the audio devices for multiple, concurrent local connections. Current technology will allow only one user to use the system at a time using one set of keyboard, mice, and monitors. These modules have been modified to allow multiple inputs (keyboards and mice) and outputs (audio and video) devices to be used independently and concurrently.
- the terminals 204 are not remotely located, but, in some embodiments of the invention, they may be.
- the terminals are located on the same machine and the output goes directly via the system bus to the associated devices resulting in multi-user system with very little slow-down. It utilizes the excess CPU power that is available to control multiple sessions just like in a “thin client” environment. The difference is that in a “thin client” environment the output is converted to TCP-IP protocol and sent via a network connection. This conversion and packeteering of video results in slow screen redraws.
- This ability to run multiple “sessions” is currently available with Linux (XII) and Windows (RDP), on remote machines but the remote machines must have the necessary hardware and software necessary to locally control the keyboard, mouse, audio and video devices. Because everything is preferably loaded from the local EEPROM, boot up from power-on to login is approximately 6 seconds. This compares favorably to current Windows, MacIntosh, or Linux startup times of 30-50 seconds.
- the invention is able to take advantage of the scheduling components and modularity of Linux to use it as a supervisor for other operating systems to run concurrently. This can efficiently install one guest operating system (for example, a Windows guest OS) in conjunction with each set of keyboards, mice, and monitors.
- a Windows guest OS for example, a Windows guest OS
- FIGS. 7A and 7B are a flowchart showing exemplary process flow for the exchange of instructions between the guest OS's 220 and the CPU 214 through the POSIX kernel 215 according to the present invention.
- This flowchart will now be discussed in narrative terms, after which discussion, FIG. 3 will be further discussed.
- a modified Linux interrupt service code . . . /kernel/entry-v.s
- the idle loop . . . /kernel/process.c
- a modified Interrupt Descriptor Table this can control and tell if a system “session” is: (i) running; (ii) not running; or (iii) pre-empted.
- the kernel has priority for all actions, but since it is only providing low throughput I/O control and video rendering (video is mostly handled by the GPU on the video card), preemption by the host kernel is very low in proportion to time allowed for the “clients.”
- Video, ethernet, and audio devices are virtualized, off-the-shelf drivers.
- Raw I/O from these devices is sent through the modified Linux idle loop and Interrupt Descriptor Table to the “real” hardware in a prioritized fashion. This allows a number of segregated “sessions” to be run at near native speed.
- the guest OS's 220 are preferably Windows OS's, such as Windows XP or Windows Vista.
- Windows OS's such as Windows XP or Windows Vista.
- any type of guest OS now known or to be developed in the future may be used.
- Windows Vista has been found to run faster when run through the POSIX kernel according to the present invention.
- the guest OS's will be different from each other. For example, there may be a Windows XP OS, a Windows Vista OS, an Ubuntu LINUX OS and a BSD OS.
- Systems with multiple OS's may be preferred in embodiments of the present invention where there are not multiple terminals, but rather a single set of I/O devices connected to desktop PC 202 in the conventional way.
- a single user can switch between various operating systems at will, taking advantage of native applications 222 for a variety of operating systems on a single physical machine.
- FIG. 4 shows a more detailed schematic of POSIX kernel 215 including: critical portion 215 a; non-critical portion 215 b; interrupt descriptor table 250 ; idle loop 252 ; and POSIX socket 254 .
- Critical portion 215 a is critical because this is the portion that passes instructions in native form between CPU 214 and guest OS's 220 .
- critical portion 215 a takes the place of the virtualizing middleware of the prior art, with the important differences that: (i) the POSIX kernel passes instructions in native form, rather than translating them into virtualized or emulated form at intermediate portions of the exchange; and/or (ii) the POSIX kernel permits the guest OS's to run at an OS security level (for example, Ring Zero or Ring One), rather than a higher security level (see FIG. 3 at reference numeral LO). It is noted that applications running on top of the guest OS's will run at a higher security level (see FIG. 3 at reference numeral L 3 ), such as, for example, Ring Three. In other words, despite the presence of the kernel, guest OS's run at the security level that a host OS would normally run at in a conventional computer.
- OS security level for example, Ring Zero or Ring One
- the POSIX kernel accomplishes the exchange of native form instructions using interrupt descriptor table 250 and idle loop 252 .
- Interrupt descriptor table 250 receives requests for service from each of the guest OS's. At any given time it will return a positive service code to one of the guest OS's and it will return a negative service code to all the other guest OS's.
- the guest OS that receives back a positive return code will exchange instructions in native form with the CPU through idle loop 252 .
- the other guest OS's, receiving back a negative return code from interrupt descriptor table 250 will be pre-empted and will remain running until they get back a positive return code.
- the interrupt descriptor table cycles through all the guest OS's over a cycle time period, so that each guest OS can exchange instructions with the CPU in sequence over the course of a single cycle.
- the interrupt descriptor table could provide for other time division allocations between the various guest OS's.
- a user could provide user input to switch between guest OS's.
- This form of time division allocation is preferred in single terminal, multiple operating system embodiments. There may be still other methods of time division allocation, such as random allocation (probably not preferred) or allocation based on detected activity levels at the various terminals.
- Non-critical portion 215 b shows that the controller kernel may be extended beyond the bare functionality required to control the exchange of instructions between the guest OS's and the CPU.
- a POSIX socket may be added to allow POSIX applications to run on the kernel itself.
- the kernel is called a kernel herein, it may be extended to the point where it can be considered as a host operating system, but according to the present invention, these extensions should not interfere (that is virtualize or emulate) instructions being exchanged through the kernel in native form between the guest OS(es) and the CPU.
- FIGS. 5A to 5D show an embodiment of process flow for one cycle for the exchange of instructions in native form between guest OS's 220 and CPU 214 through a kernel including an interrupt descriptor table and an idle loop.
- the process includes: a first portion (steps S 302 , S 304 , S 306 , S 308 , S 310 , S 312 , S 314 , S 316 , S 318 ); a second portion (steps S 320 , S 322 , S 324 , S 326 , S 328 , S 330 , S 332 , S 334 , S 336 ); a third portion (steps S 338 , S 340 , S 342 , S 344 , S 346 , S 348 , S 350 , S 352 , S 354 ); and a fourth portion (steps S 356 , S 358 , S 360 , S 362 , S 364 , S 366 , S 368
- the cycle has four portions because four guest OS's (and no host OS's) are running—each portion allows the exchange of instructions between one of the four guest OS's and the CPU so that all four operating systems can run concurrently and so that multiple users can respectively use the multiple operating systems as if they had a dedicated computer instead of an ultra thin terminal.
- the entire cycle allows each OS to get a new video frame about every 30 microseconds (MS).
- MS microseconds
- each terminal display gets a about 30 frames per second (fps), which results in a smooth display.
- fps frames per second
- Above 30 frames per second there is little, if any, improvement in the appearance of the video, but below 30 fps, the display can begin to appear choppy and/or aesthetically irritating.
- the cycle time, in this four portion embodiment is preferably about 30 MS to maintain a good 30 fps frame rate in the displays, this means that each cycle portion is about 30/4 MS, which equals about 8 MS.
- FIG. 6 is a schematic of a second embodiment computer system 400 according to the present invention including: guest OS 402 a; guest OS 402 b; guest OS 402 c; guest OS 402 d; hardware control sub-modules 408 ; controller kernel 410 ; hard drive 414 ; hardware layer; and EEPROM 418 .
- Hardware control sub-modules 408 include the following sub-modules: network interface card (NIC) 434 ; keyboard 436 ; mouse 438 ; audio 440 ; video 442 , memory 444 and CPU 446 .
- Controller kernel 410 includes the following portions: kernel process module 448 ; kernel entry module 450 ; idle loop 452 ; interrupt service code 454 ; and interrupt descriptor table 456 .
- Hardware layer 416 includes the following portions: network interface card (NIC) 420 ; keyboard 422 ; mouse 424 ; audio 426 ; video 428 , memory 430 and CPU 432 .
- the operating systems are containerized.
- the presentation layer in this embodiment is Windows.
- the hardware control sub-modules 408 are direct access drivers and may additionally include other sub-modules, such as a video acceleration module.
- the EEPROM 418 is the normal location for BIOS, but in this embodiment of the present invention is loaded with the controller kernel 410 and X 11 . EEPROM 418 invokes the hard drive after the initial boot up. The control kernel is invoked from hard drive 414 during the original EEPROM 418 boot.
- each card preferably has its own MAC address and own IP address.
- FIGS. 7A and 7B show a more detailed embodiment of the process flow through an interrupt descriptor table and idle loop in a LINUX controller kernel according to the present invention.
- Figures &A and 7 B include LINUX control kernel level steps 502 ; Head 1 steps 504 and Head 2 steps 506 .
- FIG. 12 shows computer system 600 according to the present invention, including: CPU 614 ; POSIX controller kernel 615 ; guest OS 620 ; POSIX application A 658 ; POSIX application B 660 ; POSIX application C 662 ; and video output 691 .
- the POSIX controller kernel includes: video integration module 650 ; POSIX socket A 652 ; POSIX socket B 654 ; and POSIX socket C 656 .
- guest OS 620 is either in a non-POSIX form, or at least in a form that is a different variant of POSIX (for example, LINUX) than that of the controller kernel (which might be UNIX).
- the controller kernel 615 may be largely similar to the kernels of previous embodiments discussed above.
- the video integration module 650 (i) accepts video output data in native form guest OS 620 ; (ii) accepts video output data in native form from POSIX applications 658 , 600 , 662 (through their respective sockets 652 , 654 , 656 ); and (iii) combines and/or integrates this video data to form a single display in native form.
- the single display generated at item (iii) is then sent through the CPU 615 to video output 691 .
- the controller kernel may also communicate additional data in native form (such as I/O device related data) between guest OS 620 and POSIX applications 658 , 660 , 658 .
- the data (and especially the video data) is not packetized, put in emulated form, virtualized and/or communicated through a virtual switch.
- the guest operating system does not require a special windows manager, like XMing, and needs only to use its native windows manager in creating its video output data.
- This direct form of data communication through the kernel between a guest OS running on the kernel and other applications running directly on the kernel is tunneling according to the present invention.
- FIG. 13 shows computer system 700 according to the present invention including: CPU 714 ; video card 713 ; three terminal displays 730 a,b,c; LINUX controller kernel 715 ; three guest Windows OS's 720 a,b,c; LINUX application A 758 ; LINUX application B 760 ; and LINUX application C 762 .
- the kernel 715 includes: video integration module 750 ; LINUX application socket A 752 ; LINUX application socket B 754 ; LINUX application socket C 756 ; LINUX application filter module 770 ; and LINUX application search module 772 .
- Each guest OS 720 a,b,c includes: LINUX application filter module 774 a,b,c; and LINUX application search module 776 a,b,c.
- Video integration module 750 integrates video data in native form from each of the guest OS's 714 a,b,c and from any applicable LINUX applications 758 , 760 , 762 to form combined video output data to be displayed on the displays 730 a,b,c of the various terminals.
- Terminal 730 c shows such a combined display including: LINUX window A 780 ; Windows window A 782 ; an LINUX window B 784 .
- both the guest OS's 720 and the kernel 715 have search modules.
- the search module could be only in the guest OS's, only in the kernel, run as an application on top of the various guest OS's or run as an application on the kernel.
- the search modules are modules that help users of the guest OS's find desirable applications that can run on the kernel through tunneling. This can be especially advantageous when the kernel can run open source applications because these are numerous and can be hard to find without help.
- both the guest OS's 720 and the kernel 715 have filter modules.
- the filter module could be only in the guest OS's, only in the kernel, run as an application on top of the various guest OS's or run as an application on the kernel. Regardless of its location(s) in the system, the filter module can be used so that a system administrator or other interested party can prevent undesired applications from being run on and/or accessed through the kernel.
- the filter may be opt-out style (that is, in the form of a list of forbidden applications) or opt-in style (that is, in the form of a closed list of approved applications).
- the filter may alternatively or additionally provide password protection and/or metering for the applications run on the controller kernel.
- This filtering can be especially advantageous in a child's educational environment for many possible reasons: (i) help select best pedagogical tools for the child; (ii) help prevent minor from accessing harmful matter; (iii) prevent confusion and being overwhelmed by too many open source applications; (iv) allow selective access depending on the identity of the teacher or student; and (v) allow limited time, time period and/or bandwidth access for applications that are partially or wholly entertainment oriented.
- Present invention means at least some embodiments of the present invention; references to various feature(s) of the “present invention” throughout this document do not mean that all claimed embodiments or methods include the referenced feature(s).
- ordinals Unless otherwise noted, ordinals only serve to distinguish or identify (e.g., various members of a group); the mere use of ordinals implies neither a consecutive numerical limit nor a serial limitation.
- containerized code portions running at least substantially independently of each other.
- terminal/terminal hardware set a set of computer peripheral hardware that includes at least one input device that can be used by a human user to input data and at least one output device that outputs data to a human user in human user readable form.
- ultra thin terminal any terminal or terminal hardware set that has substantially no memory; generally ultra thin terminals will have no more processing capability than the amount of processing capability needed to run a video display, but this is not necessarily required.
- basic I/O operations operations related to receiving input from or delivering output to a human user; basic I/O operations relate to control of I/O devices including, but not limited to keyboards, mice, visual displays and/or printers.
- a guest OS may be considered as a guest OS regardless of whether: (i) a host OS exists in the computer system; (ii) the existence or non-existence of other OS's on the system; and/or (iii) whether the guest OS is contained within one or more subsuming OS's.
- security level a level of privileges and permissions for accessing or exchanging instructions with processing hardware; for example, some types of processing hardware define security levels as Ring Zero (level of greatest permissions and privilege), Ring One, Ring Two, and so on; not all security levels may be used in a given computer system.
- OS security level any security level defined in a given system that is consistent with normal operations of a typical operating system running directly on the processing hardware (and not as a virtual machine); for example, for an Intel/Windows type of processing hardware Ring Zero, Ring One and perhaps Ring Two would be considered as “OS security levels,” but Ring Three and higher would not.
- native form a form of instructions that can be operatively received by and/or is output from processing hardware directly and without any sort of translation or modification to form by software running on the hardware; generally speaking, different processing hardware types are characterized by different native forms.
- POSIX includes, but is not limited to, LINUX.
- processing hardware typically takes the form of a central processing unit, but it is not necessarily so limited; processing hardware is not limited to any specific type and/or manufacturer (for examples, Intel/Windows, Apple, Sun, Motorola); processing hardware may include multiple cores, and different cores may or may not be allocated to different guest operating systems and/or groups of operating systems.
- socket any socket and/or API now known or to be developed in the future, with out regard to: (i) whether the socket is considered to be included within and/or integral with its underlying OS.
- Kernel a kernel may take the form of an operating system.
- Operating system an operating system may take the form of a kernel.
- Computer system any computer system without regard to: (i) whether the constituent elements of the system are located within proximity to each other; and/or (ii) whether the constituent elements are located in the same housing.
- Exchange instructions includes: (i) two way exchanges of instructions flowing in both directions between two elements; and/or (ii) one way transmission of instructions flowing in a single direction from one element to another.
- Memory portion any portion of a memory structure or structures, including, but not necessarily limited to, hard drive space, flash drive, jump drive, solid state memory, cache memory, DRAM, RAM and/or ROM; memory portions are not limited to: (i) portions with consecutive physical addresses; (ii) portions with consecutive logical address; (iii) portions located within a single piece of hardware; (iv) portions located so that the entire portion is in the same locational proximity; and/or (v) portions located entirely on a single piece of hardware (for example, in a single DRAM).
- the selectivity may be implemented in many, various ways, such as regular cycling, user input directed, dynamically scheduled, random, etc.
- pre-empt includes, but is not limited to, delay, queue, interrupt, etc.
- steps in method steps or process claims need only be performed in the same time order as the order the steps are recited in the claim only to the extent that impossibility or extreme feasibility problems dictate that the recited step order (or portion of the recited step order) be used.
- This prohibition on inferring method step order merely from the order of step recitation in a claim applies even if the steps are labeled as (a), (b) and so on.
- This broad interpretation with respect to step order is to be used regardless of whether the alternative time ordering(s) of the claimed steps is particularly mentioned or discussed in this document.
Abstract
Description
- The present application claims priority to U.S. provisional patent application No. 60/973,923, filed on Sep. 20, 2007; all of the foregoing patent-related document(s) are hereby incorporated by reference herein in their respective entirety(ies).
- 1. Field of the Invention
- The present invention relates to computer systems with a computer running multiple operating systems and more particularly to computer systems with a computer running multiple containerized (see DEFINITIONS section) operating systems to be respectively used by multiple terminals (see DEFINITIONS section).
- 2. Description of the Related Art
- It is conventional to have a computer, such as a modified PC desktop type host computer, which controls and operates a plurality of terminals. In fact, mainframe computers dating back to at least the 1970s operated in this way. More recently, each terminal has been given its own operating system and/or instance of an operating system. These kind of systems are herein called multi-terminal systems.
- It is conventional to use a hypervisor to run multiple operating systems on a single computer. A hypervisor (or virtual machine monitor) is a virtualization platform that allows multiple operating systems to run on a host computer at the same time. Some hypervisors take the form of software that runs directly on a given hardware platform as an operating system control program. With this kind of hypervisor, the guest operating system runs at the second level above the hardware. Other hypervisors take the form of software that runs within an operating system environment.
- Hypervisors have conventionally been used in multi-terminal systems where each terminal has a dedicated guest operating system on a single host computer. In these conventional multi-terminal systems, I/O devices communicate I/O data through the hypervisor to perform basic I/O operations (see DEFINITIONS section). More specifically: (i) data from the I/O devices is communicated through the hypervisor to the computing hardware of the host computer; and (ii) from the computing hardware (if any) is communicated through the hypervisor to the I/O devices. Because the hypervisor is a virtualization platform, this means that the I/O devices must be virtualized in the software of the hypervisor and/or the guest operating system so that the communication of I/O data through the hypervisor can take place.
-
FIG. 1 shows priorart computer system 100 including: desktop PC 102 and fourterminals video card 110; I/O ports 112;CPU 114; host operating system (“OS”) 116; virtualizingmiddleware 118, four guest OS's (see DEFINITIONS section) 120 a, 120 b, 120 c, 120 d; and fourguest applications FIG. 1 , host OS 116 runs at security level (see DEFINITIONS section) L0, which may be, for example in an x86 CPU architecture, Ring Zero. This means that hostOS 116 exchanges instructions directly withCPU 116 in native form (see DEFINITIONS section). - The guest OS's 120 a, 120 b, 120 c, 120 d are used to respectively control the four
terminals displays keyboards mice FIG. 1 , they can respectively run their own application(s) 122 a, 122 b, 122 c, 122 d in an independent manner. - However, the four guest OS's are virtual machines, running at a security level 13, which is above the OS security level (see DEFINITIONS section) L0. For example, in an x86 architecture, the guest OS's 120 a, 120 b, 120 c, 120 d would be running at Ring Three. This is an indirect form of communication with the
CPU 114. Furthermore, the instructions exchanged between the guest OS's and the CPU are virtualized by virtualizingmiddleware 118, which may take the form of a hypervisor or virtual machine manager (“VMM”). For example, some of the exchanged instructions relate to basic I/O operations. When the exchanged instructions are virtualized by virtualizingmiddleware 118, the instructions are taken out of their native form and put in a virtualized form. This virtualized form is generally a lot more code intensive than native form. This virtualization makes operations slower and more prone to error than similar exchanges between a host OS, running at the OS security level and the CPU. - It is conventional to run one type of operating system, buts still use application(s) written for an operating system of a different type. Some conventional systems for doing that will now be discussed.
-
FIG. 8 shows priorart computer system 140 including:CPU 142; POSIX operating system (OS) 144; and Berkeley Software Distribution (BSD)application 148. POSIX OS 144 includes a BSD socket (see DEFINITIONS section) 146 programmed to allow the BSDapplication 148 to run on the POSIXOS 144. However, systems according to the architecture ofsystem 140 are not always easily achieved as will now be explained in connection withFIG. 9 . -
FIG. 9 shows a possible priorart computer system 150 including:CPU 152; Windows operating system (OS) 154; and LINUXapplication 148. Windows OS 154 includes a LINUXAPI 156 programmed to allow the LINUXapplication 158 to run on the Windows OS 154. Thissystem 150 is denominated as “possible” prior art because it is a type of system that seems to be seldom, if ever, actually practiced. This may be due to difficulties in updating the LINUXAPI 156 to stay current with the underlying Windows OS 154 and/or overlyingLINUX application 158, and/or difficulties involving proprietary code issues. -
FIG. 10 shows priorart computer system 160 including:local computer 162;network 164 and POSIXapplication server computer 166.Local computer 162 includes:CPU 168; network interface card (NIC) 170; Windowsoperating system 172; and XMing module 174. POSIXapplication server computer 166 includes:CPU 178; network interface card (NIC) 186;POSIX operating system 180; andPOSIX application 184. POSIX OS 184 includes aPOSIX socket 182 programmed to allow thePOSIX application 184 to run on the POSIX OS 180.System 160 overcomes the difficulties of running a POSIX (for example, LINUX) application by a user who is using a Windows operating system. The remote POSIXapplication server computer 186 can run the POSIX application(s) because it has the appropriate POSIX OS and socket(s). Inputs to this remote POSIX application(s) and outputs from this remote POSIX application are respectively sent and received through NIC's 170, 186 andnetwork 164. The special Windows manager module XMing 174 atlocal computer 162 incorporates data received from the remote POSIXapplication server computer 166 as a window in the Windows display generated by Windows OS 172. - One disadvantage is that the inputs and outputs of the POSIX application(s) must be packetized and de-packetized by NIC's 170, 186 and sent through the switches of
network 164. This makes the running of the POSIX application effectively slower and less reliable from the perspective of the user oflocal computer 162. -
FIG. 11 showssystem 188, which is a variation onsystem 160.Computer system 188 includes:local computer 189;video output 190;CPU 191; POSIX host OS 192; virtualizingmiddleware 193; Windows guest OS 194 andPOSIX application 196. POSIX host OS 192 includessocket 197 for runningPOSIX application 196 right at thelocal computer 189. Instead of sending POSIX application output data back toXMing 195 through actual NIC's and the switches of an actual network, the output data of the POSIX application is instead sent through virtual network module 198 (including virtual switches) andvirtual NIC 199 included in the virtualizingmiddleware 193. Once again, though this solution takes time both because of the de-packetizing/packetizing involved, and also because virtualization is a code-intensive process that causes relatively large instructions to be transmitted through the system to achieve the POSIX application effectively running on Windows operating system. It is also noted that other instructions (for example, I/O device related instructions) that must be exchanged between the Windows guest OS 194 andCPU 191 are also virtualized by the virtualizing middleware, which is a further disadvantage ofprior art system 188. - Other publications potentially of interest include: (i) US published patent application 2008/0092145 (“Sun”); (ii) US published patent application 2006/0267857 (“Zhang”); (iii) US patent application 2007/0174414 (“Song”); (iv) Applica PC Sharing Zero Client Network Computing Remote Workstation powered by Applica Inc. (see www.applica.com website, cached versions 31 Jul. 2007 and earlier); (v) US patent application 2003/0018892 (“Tello”); (vi) US patent application 2007/0097130 (“Margulis”); (vii) US patent application 2008/0168479 (“Purtell”); (viii) U.S. Pat. No. 5,903,752 (“Dingwall”); (ix) US patent application 2007/0028082 (“Lien”); (x) US patent application 2008/0077917 (“Chen”); (xi) US published patent application 2007/0078891 (“Lescouet”); (xii) US published patent application 2007/0204265 (“Oshins”); (xiii) US published patent application 2007/0057953 (“Green”); (ix) US patent application 2004/0073912 (“Meza”); (x) US patent application 2007/0043928 (“Panesar”); and/or (xi) US patent application 2007/0174410 (“Croft”).
- Description Of the Related Art Section Disclaimer: To the extent that specific publications are discussed above in this Description of the Related Art Section, these discussions should not be taken as an admission that the discussed publications (for example, published patents) are prior art for patent law purposes. For example, some or all of the discussed publications may not be sufficiently early in time, may not reflect subject matter developed early enough in time and/or may not be sufficiently enabling so as to amount to prior art for patent law purposes. To the extent that specific publications are discussed above in this Description of the Related Art Section, they are all hereby incorporated by reference into this document in their respective entirety(ies).
- The present invention is directed to a computer system with a CPU, at least one guest operating system and a controller kernel. The controller kernel includes a socket for running an application on the controller kernel itself. The controller kernel also includes a video integration module so that video output data from the guest OS may be combined with video output data from the guest OS. In this way, a user of the guest OS can use an application by tunneling, and without the need to virtualize the video output data of the application running on the controller kernel in order to incorporate it with the video output data of the guest OS. This is especially preferred when the controller kernel is written in a different form than the guest OS, such as when the controller kernel is in LINUX and the guest OS is in a Windows form because it allows a guest OS of one form (for example, Windows) to reliably, quickly, efficiently and robustly run applications written in another form (for example, LINUX).
- Some preferred embodiments of the present invention include multiple guest operating systems that exchange instructions in native form (see DEFINITIONS section) with the CPU under control of the controller kernel. Some preferred embodiments of the present invention include multiple, containerized (see DEFINITIONS section) guest operating systems so that the application(s) running on the controller kernel can be separately and independently run by the various guest OS's. Some preferred embodiments of the present invention include both multiple guest OS's and multiple terminals (see DEFINITIONS section) respectively run by the guest OS's. Some preferred embodiments of the present invention include software module(s) to help search for applications suitable to run on the controller kernel. Some preferred embodiments of the present invention include software module(s) to help filter which applications are permitted to be run on the controller kernel.
- Various embodiments of the present invention may exhibit one or more of the following objects, features and/or advantages:
- (1) reliably, quickly, efficiently and/or robustly run application(s) written in one form (for example, LINUX) to run in conjunction with an operating system of another form (for example, Windows);
- (2) run application(s) written in one form (for example, LINUX) to run in conjunction with an operating system of another form (for example, Windows) without virtualizing the application related data; and/or
- (3) run application(s) written in one form (for example, LINUX) to run in conjunction with an operating system of another form (for example, Windows) without packetizing the video output data of the application(s) and/or without sending it through a virtual switch.
- According to a first aspect of the present invention, a computer system includes processing hardware, a first guest operating system, a controller kernel, and a first application program. the controller kernel runs on the processing hardware, with the controller kernel being programmed to allow the first guest operating system to receive first native form video frame data from the processing hardware through the controller kernel, and with the controller kernel including a first socket. The first application program is programmed to generate first application display data when it runs. The first socket is programmed to run the first application program. The controller kernel is programmed to receive the first application display data and to incorporate the first application display data into the first native form video frame data.
- According to a further aspect of the present invention, a computer includes processing hardware, a first OS memory portion, a controller memory portion, and a first application memory portion. The first OS memory portion is programmed with a first guest operating system. The controller memory portion is programmed with a controller kernel running on the processing hardware, with the controller kernel being programmed to allow the first guest operating system to receive first native form video frame data from the processing hardware through the controller kernel, and with the controller kernel including a first socket. The first application memory portion is programmed with a first application program programmed to generate first application display data when it runs. The first socket is programmed to run the first application program. The processing hardware is programmed to receive the first application display data and to incorporate the first application display data into the first native form video frame data.
- According to a further aspect of the present invention, a process includes the following steps: (i) providing a computer system comprising processing hardware, a first guest operating system, a controller kernel, a first application program, with the controller kernel comprising a first socket; (ii) running the controller kernel on the processing hardware; (iii) running the first application program on the first socket; (iv) generating, by the first application program, first application display data; (v) sending the first application display data from the socket to the processing hardware; and (vi) incorporating, by the processing hardware, the first application display data into a first native form video frame data.
- The present invention will be more fully understood and appreciated by reading the following Detailed Description in conjunction with the accompanying drawings, in which:
-
FIG. 1 is a schematic of a prior art computer system; -
FIG. 2 is a perspective external view of a first embodiment of a computer system according to the present invention; -
FIG. 3 is a schematic of the first embodiment computer system; -
FIG. 4 is a more detailed schematic of a portion of the first embodiment computer system; -
FIGS. 5A , 5B, 5C and 5D are a flowchart of a first embodiment of a method according to the present invention; -
FIG. 6 is a of a second embodiment of a computer system according to the present invention; and -
FIGS. 7A and 7B are a flowchart of a second embodiment of a method according to the present invention; -
FIG. 8 is a schematic of another prior art computer system; -
FIG. 9 is a schematic of another prior art computer system; -
FIG. 10 is a schematic of another prior art computer system; -
FIG. 11 is a schematic of another prior art computer system; -
FIG. 12 is a of a third embodiment of a computer system according to the present invention; and -
FIG. 13 is a of a fourth embodiment of a computer system according to the present invention. -
FIG. 2 showscomputer system 200 according to the present invention, includingdesktop PC 202 and fourterminals Desktop PC 202 could alternatively be any other type of computer now known or to be developed in the future, such as a laptop, a tablet, a mini computer, a mainframe computer, a super computer, a blade, etc. Terminals 204 each includes I/O devices in the form of a display, a keyboard, a mouse and an audio device. The display is the primary output device and may be any type of display now known or to be developed in the future, such as an LCD display or a CRT display. Alternatively or additionally, other output devices could be present, such as printers, lights (LEDs) and/or vibrating output devices. The keyboard, mouse and audio speakers are the primary input devices, but they may include output capabilities as well. Alternatively or additionally, there may be other output devices of any type now known or to be developed in the future, such as drawing tablets, joysticks, footpads, eyetracking input devices, touchscreens, etc. - Preferably, the display of each terminal 204 is connected to be in display data communication with
desktop PC 202 by a standard parallel display connection, but may be connected by any appropriate data connection now known or to be developed in the future, such as a wireless connection. Preferably, the input devices of terminal 204 are connected todesktop PC 202 by a USB connection. Alternatively, they may be connected by any means now known or to be developed in the future, such as PS2 connection or wireless connection. One or more USB hubs may be used betweendesktop PC 202 and the input devices of terminals 204. - Terminals 204 are preferably ultra thin terminals (see DEFINITIONS section). Alternatively, some or all terminals 204 could include a client computer with memory and processing capability. Terminals 204 may also include an I/O port for a portable memory, such as a USB port for a detachably attachable USB flash memory or jump drive.
-
FIG. 3 is a schematic ofsystem 200 includingdesktop PC 202; terminals 204;video card 210; I/O ports 212;CPU 214;POSIX kernel 215; four guest OS's 220 a, 220 b, 220 c, 220 d; fourguest applications displays KMA devices -
Video card 210 has at least four outputs to supply display data to the fourdisplay devices video card 210 may have at least one additional output for: (i) additional terminals; and/or (ii) use with the POSIX kernel and/or any host operating system that may be present. The video card may take the form of multiple video cards. - The CPU may be any type of processing hardware, such as x86 architecture or other Windows type, Apple type, Sun type, etc. The hardware structure of the CPU will determine the native form for the instructions that it gives and receives. For this reason, the guest OS's 220 a, 220 b, 220 c, 220 d must be fully compatible with
CPU 214. Importantly, there is substantially no virtualizing middleware layer indesktop PC 202 to correct for any incompatibilities. - The POSIX kernel is preferably a LINUX kernel because LINUX is open source and also because a LINUX kernel can be expanded to run LINUX applications. Alternative, the kernel may be written in other formats to be compatible with the CPU such as Windows or BSD.
- The
PC 202 preferably includes a software algorithm (not shown) that loads the POSIX kernel (Linux 2.6 preferably) onto an available motherboard EEPROM instead of the currently installed proprietary BIOS. The kernel, along with several other helpful C based programs preferably run in 32 bit mode, as opposed to the current method of running the BIOS in 16 bit mode. These programs preferably include BusyBox, uClibc, and XII. The result is a greatly decreased boot time. All of this is preferably run in the cache memory of the CPU instead of normal DRAM. The reason for this is that DRAM is normally initialized by the BIOS and can't be used until it is initialized. The first program that runs is also written in C and it is what initializes and uses this CPU memory. - Once this is loaded, a larger module is called. This would typically be invoked from the hard drive. The
POSIX kernel 215 does not necessarily have any sockets or run any applications. It may only runs sub-modules that control multiple video, keyboard, mouse, and the audio devices for multiple, concurrent local connections. Current technology will allow only one user to use the system at a time using one set of keyboard, mice, and monitors. These modules have been modified to allow multiple inputs (keyboards and mice) and outputs (audio and video) devices to be used independently and concurrently. Preferably, the terminals 204 are not remotely located, but, in some embodiments of the invention, they may be. - Preferably, the terminals are located on the same machine and the output goes directly via the system bus to the associated devices resulting in multi-user system with very little slow-down. It utilizes the excess CPU power that is available to control multiple sessions just like in a “thin client” environment. The difference is that in a “thin client” environment the output is converted to TCP-IP protocol and sent via a network connection. This conversion and packeteering of video results in slow screen redraws. This ability to run multiple “sessions” is currently available with Linux (XII) and Windows (RDP), on remote machines but the remote machines must have the necessary hardware and software necessary to locally control the keyboard, mouse, audio and video devices. Because everything is preferably loaded from the local EEPROM, boot up from power-on to login is approximately 6 seconds. This compares favorably to current Windows, MacIntosh, or Linux startup times of 30-50 seconds.
- These modifications allow for a natural separation of the “sessions” to a great degree. Because of this, the invention is able to take advantage of the scheduling components and modularity of Linux to use it as a supervisor for other operating systems to run concurrently. This can efficiently install one guest operating system (for example, a Windows guest OS) in conjunction with each set of keyboards, mice, and monitors.
-
FIGS. 7A and 7B are a flowchart showing exemplary process flow for the exchange of instructions between the guest OS's 220 and theCPU 214 through thePOSIX kernel 215 according to the present invention. This flowchart will now be discussed in narrative terms, after which discussion,FIG. 3 will be further discussed. Using a modified Linux interrupt service code, . . . /kernel/entry-v.s, the idle loop, . . . /kernel/process.c, and a modified Interrupt Descriptor Table, this can control and tell if a system “session” is: (i) running; (ii) not running; or (iii) pre-empted. The kernel has priority for all actions, but since it is only providing low throughput I/O control and video rendering (video is mostly handled by the GPU on the video card), preemption by the host kernel is very low in proportion to time allowed for the “clients.” - Since the architecture is the same for both the host (Linux kernel) and the local “client” (x86-32 bit or 64 bit) operating system, there is little need for emulation of hardware and most instructions can be run directly on the applicable hardware. All CPU requests can be dynamically scheduled by the controller kernel and run in Ring Zero of the machine. If a protected call, privileged instruction, system trap, or page fault is presented that will not run properly or does not have permission to run in this unified system then it is moved to Ring Three. Ring Three is normally unused on an Intel system. All memory calls are directed to protected and pre-allocated memory locations. All hardware except video, ethernet, and audio devices is directly accessed by the “client” OS. Video, ethernet, and audio devices are virtualized, off-the-shelf drivers. Raw I/O from these devices is sent through the modified Linux idle loop and Interrupt Descriptor Table to the “real” hardware in a prioritized fashion. This allows a number of segregated “sessions” to be run at near native speed.
- This is done without hardware virtualization extension techniques as currently available with the Intel VT or AMD V/SVM CPU chips, hardware emulation (VMWARE, QEMU, Bochs, etc.), or hypervisors like Xen or KVM (these require modification of source code). Finally, products like Cooperative Linux and UserMode Linux work with Windows as the host and Linux as the “guest” because the guest in this case (Linux) can be modified to give up control of the hardware when Windows asks for it. Since Windows can't easily be modified this concept has not been realized in reverse, for example Linux as host and Windows as guest. This aspect of the present invention is the reverse of this in that Linux is the host and Windows is the guest.
- It may be difficult to modify the guest OS (for example, Windows) to give up control when the host (supervisor) asks for it, we can use /kernel/process.c (idle loop) and /kernel/entry-v.s (interrupt service) and the Interrupt Descriptor Table to trap privileged instructions and force the guest (Windows) to wait, until it is no longer preempted. In other words, we have modified the controller kernel (Linux) to put the requests of the guest (Windows) into the Linux idle loop if the guest is preempted. Since the host is not running applications, since it is only controlling I/O, the wait time during this preemption period is very short and it is not apparent to the user. Finally, when privileged instructions are trapped to Ring Three, the instructions are recompiled (sometimes on the fly) using QEMU recompilation code so that the next time this situation repeats itself, the trap is not needed.
- Now that the operation of POSIX kernel has been explained in detail, discussion will return to
FIG. 3 . The guest OS's 220 are preferably Windows OS's, such as Windows XP or Windows Vista. Alternatively, any type of guest OS now known or to be developed in the future may be used. In some embodiments of the invention, there will be but a single guest OS. For example, Windows Vista has been found to run faster when run through the POSIX kernel according to the present invention. In some embodiments of the invention, the guest OS's will be different from each other. For example, there may be a Windows XP OS, a Windows Vista OS, an Ubuntu LINUX OS and a BSD OS. Systems with multiple OS's may be preferred in embodiments of the present invention where there are not multiple terminals, but rather a single set of I/O devices connected todesktop PC 202 in the conventional way. In these single terminal embodiments, a single user can switch between various operating systems at will, taking advantage of native applications 222 for a variety of operating systems on a single physical machine. -
FIG. 4 shows a more detailed schematic ofPOSIX kernel 215 including:critical portion 215 a;non-critical portion 215 b; interrupt descriptor table 250;idle loop 252; andPOSIX socket 254.Critical portion 215 a is critical because this is the portion that passes instructions in native form betweenCPU 214 and guest OS's 220. In a sense,critical portion 215 a takes the place of the virtualizing middleware of the prior art, with the important differences that: (i) the POSIX kernel passes instructions in native form, rather than translating them into virtualized or emulated form at intermediate portions of the exchange; and/or (ii) the POSIX kernel permits the guest OS's to run at an OS security level (for example, Ring Zero or Ring One), rather than a higher security level (seeFIG. 3 at reference numeral LO). It is noted that applications running on top of the guest OS's will run at a higher security level (seeFIG. 3 at reference numeral L3), such as, for example, Ring Three. In other words, despite the presence of the kernel, guest OS's run at the security level that a host OS would normally run at in a conventional computer. - In this preferred embodiment of the present invention, the POSIX kernel accomplishes the exchange of native form instructions using interrupt descriptor table 250 and
idle loop 252. Interrupt descriptor table 250 receives requests for service from each of the guest OS's. At any given time it will return a positive service code to one of the guest OS's and it will return a negative service code to all the other guest OS's. The guest OS that receives back a positive return code will exchange instructions in native form with the CPU throughidle loop 252. The other guest OS's, receiving back a negative return code from interrupt descriptor table 250 will be pre-empted and will remain running until they get back a positive return code. - Preferably, and as shown in the flow chart of
FIGS. 5A to D, the interrupt descriptor table cycles through all the guest OS's over a cycle time period, so that each guest OS can exchange instructions with the CPU in sequence over the course of a single cycle. This is especially preferred in embodiments of the present invention having multiple terminals, so that different users at the different terminals under control of their respective guest OS's can work concurrently. Alternatively, the interrupt descriptor table could provide for other time division allocations between the various guest OS's. For example, a user could provide user input to switch between guest OS's. This form of time division allocation is preferred in single terminal, multiple operating system embodiments. There may be still other methods of time division allocation, such as random allocation (probably not preferred) or allocation based on detected activity levels at the various terminals. -
Non-critical portion 215 b shows that the controller kernel may be extended beyond the bare functionality required to control the exchange of instructions between the guest OS's and the CPU. For example, a POSIX socket may be added to allow POSIX applications to run on the kernel itself. Although the kernel is called a kernel herein, it may be extended to the point where it can be considered as a host operating system, but according to the present invention, these extensions should not interfere (that is virtualize or emulate) instructions being exchanged through the kernel in native form between the guest OS(es) and the CPU. -
FIGS. 5A to 5D show an embodiment of process flow for one cycle for the exchange of instructions in native form between guest OS's 220 andCPU 214 through a kernel including an interrupt descriptor table and an idle loop. The process includes: a first portion (steps S302, S304, S306, S308, S310, S312, S314, S316, S318); a second portion (steps S320, S322, S324, S326, S328, S330, S332, S334, S336); a third portion (steps S338, S340, S342, S344, S346, S348, S350, S352, S354); and a fourth portion (steps S356, S358, S360, S362, S364, S366, S368, S370, S372). - The cycle has four portions because four guest OS's (and no host OS's) are running—each portion allows the exchange of instructions between one of the four guest OS's and the CPU so that all four operating systems can run concurrently and so that multiple users can respectively use the multiple operating systems as if they had a dedicated computer instead of an ultra thin terminal.
- Preferably, the entire cycle allows each OS to get a new video frame about every 30 microseconds (MS). In this way, each terminal display gets a about 30 frames per second (fps), which results in a smooth display. Above 30 frames per second, there is little, if any, improvement in the appearance of the video, but below 30 fps, the display can begin to appear choppy and/or aesthetically irritating. Because the cycle time, in this four portion embodiment is preferably about 30 MS to maintain a good 30 fps frame rate in the displays, this means that each cycle portion is about 30/4 MS, which equals about 8 MS. With current CPUs, 8 MS out of 30 MS is sufficient to handle most common applications that would be run at the various guest OS's, such as word processing, educational software, retail kiosk software, etc. As CPU's get faster over time, due to improvements such as multiple cores, it will become practical to have a greater number of guest operating systems on a single desktop computer—perhaps as many as 40 OS's or more.
-
FIG. 6 is a schematic of a secondembodiment computer system 400 according to the present invention including:guest OS 402 a;guest OS 402 b;guest OS 402 c;guest OS 402 d;hardware control sub-modules 408;controller kernel 410;hard drive 414; hardware layer; and EEPROM 418.Hardware control sub-modules 408 include the following sub-modules: network interface card (NIC) 434;keyboard 436;mouse 438; audio 440;video 442,memory 444 andCPU 446.Controller kernel 410 includes the following portions:kernel process module 448;kernel entry module 450;idle loop 452; interruptservice code 454; and interrupt descriptor table 456.Hardware layer 416 includes the following portions: network interface card (NIC) 420;keyboard 422;mouse 424; audio 426;video 428,memory 430 andCPU 432. - As shown by the guest OS boxes 402, the operating systems are containerized. As shown schematically by
arrow 404, the presentation layer in this embodiment is Windows. As shown schematically byarrow 406, there are OS containers and virtual drivers for NIC, audio and video. Additionally, there may be additional modules, such as video acceleration modules. Thehardware control sub-modules 408 are direct access drivers and may additionally include other sub-modules, such as a video acceleration module. The EEPROM 418 is the normal location for BIOS, but in this embodiment of the present invention is loaded with thecontroller kernel 410 and X11. EEPROM 418 invokes the hard drive after the initial boot up. The control kernel is invoked fromhard drive 414 during the original EEPROM 418 boot. At theNIC portion 420, it is noted that each card preferably has its own MAC address and own IP address. -
FIGS. 7A and 7B , discussed above, show a more detailed embodiment of the process flow through an interrupt descriptor table and idle loop in a LINUX controller kernel according to the present invention. Figures &A and 7B include LINUX control kernel level steps 502;Head 1steps 504 andHead 2 steps 506. -
FIG. 12 showscomputer system 600 according to the present invention, including:CPU 614;POSIX controller kernel 615; guest OS 620; POSIX application A 658; POSIX application B 660;POSIX application C 662; andvideo output 691. The POSIX controller kernel includes:video integration module 650;POSIX socket A 652;POSIX socket B 654; andPOSIX socket C 656. In preferred embodiments of the invention, guest OS 620 is either in a non-POSIX form, or at least in a form that is a different variant of POSIX (for example, LINUX) than that of the controller kernel (which might be UNIX). - The
controller kernel 615 may be largely similar to the kernels of previous embodiments discussed above. The video integration module 650: (i) accepts video output data in native form guest OS 620; (ii) accepts video output data in native form fromPOSIX applications 658, 600, 662 (through theirrespective sockets CPU 615 tovideo output 691. - The controller kernel may also communicate additional data in native form (such as I/O device related data) between guest OS 620 and POSIX applications 658, 660, 658. Advantageously, the data (and especially the video data) is not packetized, put in emulated form, virtualized and/or communicated through a virtual switch. Also, the guest operating system does not require a special windows manager, like XMing, and needs only to use its native windows manager in creating its video output data. This direct form of data communication through the kernel between a guest OS running on the kernel and other applications running directly on the kernel is tunneling according to the present invention.
-
FIG. 13 showscomputer system 700 according to the present invention including:CPU 714;video card 713; threeterminal displays 730 a,b,c;LINUX controller kernel 715; three guest Windows OS's 720 a,b,c;LINUX application A 758;LINUX application B 760; andLINUX application C 762. Thekernel 715 includes:video integration module 750; LINUXapplication socket A 752; LINUXapplication socket B 754; LINUXapplication socket C 756; LINUXapplication filter module 770; and LINUXapplication search module 772. Eachguest OS 720 a,b,c includes: LINUXapplication filter module 774 a,b,c; and LINUXapplication search module 776 a,b,c. - In
system 700, the three containerized guest OS's are used to run three independent terminals.Video integration module 750 integrates video data in native form from each of the guest OS's 714 a,b,c and from anyapplicable LINUX applications displays 730 a,b,c of the various terminals.Terminal 730 c shows such a combined display including:LINUX window A 780;Windows window A 782; anLINUX window B 784. In this way, users of each terminal are in an independent and familiar computing environment created by their respective guest OS, but also have access to various LINUX applications as well through the tunneling of the present invention. - In
system 700, both the guest OS's 720 and thekernel 715 have search modules. Alternatively, the search module could be only in the guest OS's, only in the kernel, run as an application on top of the various guest OS's or run as an application on the kernel. Regardless of its location(s) in the system, the search modules are modules that help users of the guest OS's find desirable applications that can run on the kernel through tunneling. This can be especially advantageous when the kernel can run open source applications because these are numerous and can be hard to find without help. - In
system 700, both the guest OS's 720 and thekernel 715 have filter modules. Alternatively, the filter module could be only in the guest OS's, only in the kernel, run as an application on top of the various guest OS's or run as an application on the kernel. Regardless of its location(s) in the system, the filter module can be used so that a system administrator or other interested party can prevent undesired applications from being run on and/or accessed through the kernel. The filter may be opt-out style (that is, in the form of a list of forbidden applications) or opt-in style (that is, in the form of a closed list of approved applications). Instead of merely forbidding/approving the applications, the filter may alternatively or additionally provide password protection and/or metering for the applications run on the controller kernel. This filtering can be especially advantageous in a child's educational environment for many possible reasons: (i) help select best pedagogical tools for the child; (ii) help prevent minor from accessing harmful matter; (iii) prevent confusion and being overwhelmed by too many open source applications; (iv) allow selective access depending on the identity of the teacher or student; and (v) allow limited time, time period and/or bandwidth access for applications that are partially or wholly entertainment oriented. - The following definitions are provided to facilitate claim interpretation:
- Present invention: means at least some embodiments of the present invention; references to various feature(s) of the “present invention” throughout this document do not mean that all claimed embodiments or methods include the referenced feature(s).
- First, second, third, etc. (“ordinals”): Unless otherwise noted, ordinals only serve to distinguish or identify (e.g., various members of a group); the mere use of ordinals implies neither a consecutive numerical limit nor a serial limitation.
- receive/provide/send/input/output: unless otherwise explicitly specified, these words should not be taken to imply: (i) any particular degree of directness with respect to the relationship between their objects and subjects; and/or (ii) absence of intermediate components, actions and/or things interposed between their objects and subjects.
- containerized: code portions running at least substantially independently of each other.
- terminal/terminal hardware set: a set of computer peripheral hardware that includes at least one input device that can be used by a human user to input data and at least one output device that outputs data to a human user in human user readable form.
- ultra thin terminal: any terminal or terminal hardware set that has substantially no memory; generally ultra thin terminals will have no more processing capability than the amount of processing capability needed to run a video display, but this is not necessarily required.
- basic I/O operations: operations related to receiving input from or delivering output to a human user; basic I/O operations relate to control of I/O devices including, but not limited to keyboards, mice, visual displays and/or printers.
- guest OS: a guest OS may be considered as a guest OS regardless of whether: (i) a host OS exists in the computer system; (ii) the existence or non-existence of other OS's on the system; and/or (iii) whether the guest OS is contained within one or more subsuming OS's.
- security level: a level of privileges and permissions for accessing or exchanging instructions with processing hardware; for example, some types of processing hardware define security levels as Ring Zero (level of greatest permissions and privilege), Ring One, Ring Two, and so on; not all security levels may be used in a given computer system.
- OS security level: any security level defined in a given system that is consistent with normal operations of a typical operating system running directly on the processing hardware (and not as a virtual machine); for example, for an Intel/Windows type of processing hardware Ring Zero, Ring One and perhaps Ring Two would be considered as “OS security levels,” but Ring Three and higher would not.
- native form: a form of instructions that can be operatively received by and/or is output from processing hardware directly and without any sort of translation or modification to form by software running on the hardware; generally speaking, different processing hardware types are characterized by different native forms.
- POSIX: includes, but is not limited to, LINUX.
- processing hardware: typically takes the form of a central processing unit, but it is not necessarily so limited; processing hardware is not limited to any specific type and/or manufacturer (for examples, Intel/Windows, Apple, Sun, Motorola); processing hardware may include multiple cores, and different cores may or may not be allocated to different guest operating systems and/or groups of operating systems.
- socket: any socket and/or API now known or to be developed in the future, with out regard to: (i) whether the socket is considered to be included within and/or integral with its underlying OS.
- Kernel: a kernel may take the form of an operating system.
- Operating system: an operating system may take the form of a kernel.
- Computer system: any computer system without regard to: (i) whether the constituent elements of the system are located within proximity to each other; and/or (ii) whether the constituent elements are located in the same housing.
- Exchange instructions: includes: (i) two way exchanges of instructions flowing in both directions between two elements; and/or (ii) one way transmission of instructions flowing in a single direction from one element to another.
- Memory portion: any portion of a memory structure or structures, including, but not necessarily limited to, hard drive space, flash drive, jump drive, solid state memory, cache memory, DRAM, RAM and/or ROM; memory portions are not limited to: (i) portions with consecutive physical addresses; (ii) portions with consecutive logical address; (iii) portions located within a single piece of hardware; (iv) portions located so that the entire portion is in the same locational proximity; and/or (v) portions located entirely on a single piece of hardware (for example, in a single DRAM).
- cycle: any process that returns to its beginning and then repeats itself at least once in the same sequence.
- selectively allow: the selectivity may be implemented in many, various ways, such as regular cycling, user input directed, dynamically scheduled, random, etc.
- pre-empt: includes, but is not limited to, delay, queue, interrupt, etc.
- To the extent that the definitions provided above are consistent with ordinary, plain, and accustomed meanings (as generally shown by documents such as dictionaries and/or technical lexicons), the above definitions shall be considered supplemental in nature. To the extent that the definitions provided above are inconsistent with ordinary, plain, and accustomed meanings (as generally shown by documents such as dictionaries and/or technical lexicons), the above definitions shall control. If the definitions provided above are broader than the ordinary, plain, and accustomed meanings in some aspect, then the above definitions shall be considered to broaden the claim accordingly.
- To the extent that a patentee may act as its own lexicographer under applicable law, it is hereby further directed that all words appearing in the claims section, except for the above-defined words, shall take on their ordinary, plain, and accustomed meanings (as generally shown by documents such as dictionaries and/or technical lexicons), and shall not be considered to be specially defined in this specification. In the situation where a word or term used in the claims has more than one alternative ordinary, plain and accustomed meaning, the broadest definition that is consistent with technological feasibility and not directly inconsistent with the specification shall control.
- Unless otherwise explicitly provided in the claim language, steps in method steps or process claims need only be performed in the same time order as the order the steps are recited in the claim only to the extent that impossibility or extreme feasibility problems dictate that the recited step order (or portion of the recited step order) be used. This prohibition on inferring method step order merely from the order of step recitation in a claim applies even if the steps are labeled as (a), (b) and so on. This broad interpretation with respect to step order is to be used regardless of whether the alternative time ordering(s) of the claimed steps is particularly mentioned or discussed in this document.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/234,158 US20090083630A1 (en) | 2007-09-20 | 2008-09-19 | Computer system with tunneling |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97392307P | 2007-09-20 | 2007-09-20 | |
US12/234,158 US20090083630A1 (en) | 2007-09-20 | 2008-09-19 | Computer system with tunneling |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090083630A1 true US20090083630A1 (en) | 2009-03-26 |
Family
ID=40468785
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/234,158 Abandoned US20090083630A1 (en) | 2007-09-20 | 2008-09-19 | Computer system with tunneling |
US12/234,131 Abandoned US20090083829A1 (en) | 2007-09-20 | 2008-09-19 | Computer system |
US12/234,223 Expired - Fee Related US7882274B2 (en) | 2007-09-20 | 2008-09-19 | Computer system with multiple terminals |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/234,131 Abandoned US20090083829A1 (en) | 2007-09-20 | 2008-09-19 | Computer system |
US12/234,223 Expired - Fee Related US7882274B2 (en) | 2007-09-20 | 2008-09-19 | Computer system with multiple terminals |
Country Status (3)
Country | Link |
---|---|
US (3) | US20090083630A1 (en) |
CA (4) | CA2849484A1 (en) |
WO (3) | WO2009039384A2 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090083450A1 (en) * | 2007-09-20 | 2009-03-26 | C & S Operations, Inc. | Computer system with multiple terminals |
US20100100718A1 (en) * | 2008-10-20 | 2010-04-22 | Novell, Inc. | In-the-flow security services for guested virtual machines |
US20100115532A1 (en) * | 2008-11-05 | 2010-05-06 | C&S Operations, Inc. | Computer System with Controller Kernel and Remote Desktop |
US20120154413A1 (en) * | 2010-12-21 | 2012-06-21 | Dongwoo Kim | Mobile terminal and method of controlling a mode switching therein |
US20120157166A1 (en) * | 2010-12-21 | 2012-06-21 | Dongwoo Kim | Mobile terminal and method of managing information therein |
US8924986B2 (en) | 2011-09-01 | 2014-12-30 | American Megatrends, Inc. | Methods, devices and computer program products for confluence of multiple operating systems |
US20150346884A1 (en) * | 2008-10-09 | 2015-12-03 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US9378038B2 (en) | 2013-06-07 | 2016-06-28 | American Megatrends, Inc. | Methods, devices and computer readable storage devices for emulating a gyroscope in a guest operating system from a host operating system |
US9430182B2 (en) | 2014-03-06 | 2016-08-30 | American Megatrends, Inc. | Methods, systems and computer readable storage devices for presenting screen content |
US9858097B2 (en) | 2013-06-07 | 2018-01-02 | American Megatrends, Inc. | Methods, devices and computer readable storage devices for emulating rotation events in a guest operating system from a host operating system |
US9934168B2 (en) | 2013-10-29 | 2018-04-03 | Userful Corporation | Method and system of connecting and switching grouped input and output devices between computers |
US11287939B2 (en) | 2008-10-09 | 2022-03-29 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US11385758B2 (en) | 2008-10-09 | 2022-07-12 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8726294B2 (en) | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
US9047102B2 (en) * | 2010-10-01 | 2015-06-02 | Z124 | Instant remote rendering |
US8933949B2 (en) * | 2010-10-01 | 2015-01-13 | Z124 | User interaction across cross-environment applications through an extended graphics context |
US8966379B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Dynamic cross-environment application configuration/orientation in an active user environment |
US8819705B2 (en) | 2010-10-01 | 2014-08-26 | Z124 | User interaction support across cross-environment applications |
US7356539B2 (en) | 2005-04-04 | 2008-04-08 | Research In Motion Limited | Policy proxy |
WO2010048759A1 (en) * | 2008-10-31 | 2010-05-06 | Zhang Weiming | “one host with multiple workstations” computer system, its configuring method and usb hub box |
US9444894B2 (en) | 2009-04-15 | 2016-09-13 | Wyse Technology Llc | System and method for communicating events at a server to a remote device |
US9578113B2 (en) | 2009-04-15 | 2017-02-21 | Wyse Technology L.L.C. | Method and apparatus for transferring remote session data |
US9553953B2 (en) * | 2009-04-15 | 2017-01-24 | Dell Products L.P. | Method and apparatus for extending capabilities of a virtualization domain to support features available in a normal desktop application |
KR101532587B1 (en) * | 2009-05-13 | 2015-07-01 | 삼성전자주식회사 | Method for transferring data between a car and portable terminal, and interface device thereof |
US9367331B2 (en) | 2009-07-20 | 2016-06-14 | Google Technology Holdings LLC | Multi-environment operating system |
US9372711B2 (en) | 2009-07-20 | 2016-06-21 | Google Technology Holdings LLC | System and method for initiating a multi-environment operating system |
US9389877B2 (en) | 2009-07-20 | 2016-07-12 | Google Technology Holdings LLC | Multi-environment operating system |
US9348633B2 (en) | 2009-07-20 | 2016-05-24 | Google Technology Holdings LLC | Multi-environment operating system |
US8250612B2 (en) * | 2009-10-26 | 2012-08-21 | Lg Electronics Inc. | Digital broadcasting system and method of processing data in digital broadcasting system |
US9280362B2 (en) * | 2009-11-15 | 2016-03-08 | Hewlett-Packard Development Company, L.P. | System and apparatus for sharing a host computer |
US9104252B2 (en) * | 2010-02-12 | 2015-08-11 | Microsoft Technology Licensing, Llc | Assignment of control of peripherals of a computing device |
US9355282B2 (en) * | 2010-03-24 | 2016-05-31 | Red Hat, Inc. | Using multiple display servers to protect data |
EP2383955B1 (en) | 2010-04-29 | 2019-10-30 | BlackBerry Limited | Assignment and distribution of access credentials to mobile communication devices |
US8010993B1 (en) * | 2010-07-14 | 2011-08-30 | Domanicom Corp. | Devices, systems, and methods for enabling reconfiguration of services supported by a network of devices |
US20120084737A1 (en) | 2010-10-01 | 2012-04-05 | Flextronics Id, Llc | Gesture controls for multi-screen hierarchical applications |
CN103282875B (en) * | 2010-10-01 | 2017-04-12 | Flex Electronics ID Co.,Ltd. | Multi-operating system |
US8898443B2 (en) | 2010-10-01 | 2014-11-25 | Z124 | Multi-operating system |
JP2012084747A (en) * | 2010-10-13 | 2012-04-26 | National Institute Of Advanced Industrial & Technology | Crystal silicon solar cell manufacturing method |
US8761831B2 (en) | 2010-10-15 | 2014-06-24 | Z124 | Mirrored remote peripheral interface |
KR20120072134A (en) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | Apparatus and method for accelerating virtual desktop |
US9354900B2 (en) | 2011-04-28 | 2016-05-31 | Google Technology Holdings LLC | Method and apparatus for presenting a window in a system having two operating system environments |
US9182935B2 (en) | 2011-09-27 | 2015-11-10 | Z124 | Secondary single screen mode activation through menu option |
US8910158B2 (en) | 2011-12-14 | 2014-12-09 | Intel Corporation | Virtualizing interrupt priority and delivery |
US20130298140A1 (en) * | 2012-05-02 | 2013-11-07 | Motorola Mobility, Inc. | Method and Apparatus for Displaying Data from a Plurality of Concurrent Operating System Environments |
US9417753B2 (en) | 2012-05-02 | 2016-08-16 | Google Technology Holdings LLC | Method and apparatus for providing contextual information between operating system environments |
US9342325B2 (en) | 2012-05-17 | 2016-05-17 | Google Technology Holdings LLC | Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device |
WO2014041395A1 (en) * | 2012-09-12 | 2014-03-20 | Freescale Semiconductor, Inc. | System-on-chip device, method of peripheral access and integrated circuit |
WO2014080248A1 (en) | 2012-11-23 | 2014-05-30 | Freescale Semiconductor, Inc. | System on chip |
US9781120B2 (en) | 2013-07-18 | 2017-10-03 | Nxp Usa, Inc. | System on chip and method therefor |
US9690719B2 (en) | 2014-09-11 | 2017-06-27 | Nxp Usa, Inc. | Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof |
KR102273021B1 (en) * | 2015-02-27 | 2021-07-06 | 삼성전자주식회사 | Method and apparatus for communicating with a peripheral device by operating a plurality of operating system |
US10216529B1 (en) * | 2015-11-19 | 2019-02-26 | Virtuozzo International Gmbh | Method and system for sharing driver pages |
CN106203082A (en) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | The system and method efficiently isolating kernel module based on virtualization hardware characteristic |
KR102447434B1 (en) * | 2018-01-10 | 2022-09-27 | 삼성전자주식회사 | Electronic apparatus and control method thereof |
US10713181B1 (en) * | 2019-02-21 | 2020-07-14 | Virtuozzo International Gmbh | Method and system for sharing driver pages |
WO2023280691A1 (en) * | 2021-07-06 | 2023-01-12 | Sony Group Corporation | A virtual server, medical system, computer program and method |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432900A (en) * | 1992-06-19 | 1995-07-11 | Intel Corporation | Integrated graphics and video computer display system |
US20010016879A1 (en) * | 1997-09-12 | 2001-08-23 | Hitachi, Ltd. | Multi OS configuration method and computer system |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US20030151885A1 (en) * | 2002-02-13 | 2003-08-14 | Ben Chang | Control system for peripheral devices of a high-density server |
US20030221087A1 (en) * | 2002-03-20 | 2003-11-27 | Seiko Epson Corporation | Information processing system |
US20040002052A1 (en) * | 2001-10-23 | 2004-01-01 | Hendry Lawrence B. | Systems and methods for rapid evaluation and design of molecules for predicted biological activity |
US20060005190A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Systems and methods for implementing an operating system in a virtual machine environment |
US6993620B2 (en) * | 2003-06-13 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | User resource sharing through the USB interface |
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US20060218309A1 (en) * | 2005-03-24 | 2006-09-28 | Jenn-Shoou Young | Device for upgrading a firmware of a display apparatus |
US7117481B1 (en) * | 2002-11-06 | 2006-10-03 | Vmware, Inc. | Composite lock for computer systems with multiple domains |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US20070074174A1 (en) * | 2005-09-23 | 2007-03-29 | Thornton Barry W | Utility Computing System Having Co-located Computer Systems for Provision of Computing Resources |
US7209994B1 (en) * | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US20070288228A1 (en) * | 2006-06-08 | 2007-12-13 | Microsoft Corporation | Partial virtualization on computing device |
US7457878B1 (en) * | 2004-11-04 | 2008-11-25 | Sun Microsystems, Inc. | Low-latency ultra-thin-client infrastructure |
US7831926B2 (en) * | 2000-06-12 | 2010-11-09 | Softview Llc | Scalable display of internet content on mobile devices |
US7930454B2 (en) * | 2005-04-08 | 2011-04-19 | Achim Rausenberger | Thin-client terminal and client/server-system having such a terminal |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4155119A (en) * | 1977-09-21 | 1979-05-15 | Sperry Rand Corporation | Method for providing virtual addressing for externally specified addressed input/output operations |
US5038281A (en) * | 1986-09-19 | 1991-08-06 | International Business Machines Corporation | Acceleration of system interrupts between operating systems in guest-host relationship |
US5410709A (en) * | 1992-12-17 | 1995-04-25 | Bull Hn Information System Inc. | Mechanism for rerouting and dispatching interrupts in a hybrid system environment |
US5903752A (en) * | 1994-10-13 | 1999-05-11 | Intel Corporation | Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5694150A (en) * | 1995-09-21 | 1997-12-02 | Elo Touchsystems, Inc. | Multiuser/multi pointing device graphical user interface system |
JPH1173294A (en) * | 1997-08-25 | 1999-03-16 | Internatl Business Mach Corp <Ibm> | Pointing device and method therefor |
US6269409B1 (en) * | 1997-09-02 | 2001-07-31 | Lsi Logic Corporation | Method and apparatus for concurrent execution of operating systems |
US6448956B1 (en) * | 1997-10-31 | 2002-09-10 | Eastman Kodak Company | Systems and methods for direct image manipulation |
IL123186A0 (en) | 1998-02-04 | 1998-09-24 | Haviv Uri | Network computer |
US6247109B1 (en) * | 1998-06-10 | 2001-06-12 | Compaq Computer Corp. | Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space |
JP4541476B2 (en) * | 1999-02-19 | 2010-09-08 | キヤノン株式会社 | Multi-image display system and multi-image display method |
US7158140B1 (en) * | 1999-03-15 | 2007-01-02 | Ati International Srl | Method and apparatus for rendering an image in a video graphics adapter |
KR100322467B1 (en) * | 1999-03-26 | 2002-02-07 | 윤종용 | multiuser computer system and remote control method thereof |
US20040226041A1 (en) * | 2000-02-18 | 2004-11-11 | Xsides Corporation | System and method for parallel data display of multiple executing environments |
US6684343B1 (en) * | 2000-04-29 | 2004-01-27 | Hewlett-Packard Development Company, Lp. | Managing operations of a computer system having a plurality of partitions |
EP1162536A1 (en) | 2000-06-09 | 2001-12-12 | Hitachi, Ltd. | Multiple operating system control method |
WO2002019272A1 (en) * | 2000-09-01 | 2002-03-07 | Togethersoft Corporation | Methods and systems for animating a workflow and a project plan |
AU2002258358A1 (en) * | 2000-10-27 | 2002-09-04 | Softconnex Technologies | Automatic embedded host configuration system and method |
JP4055359B2 (en) * | 2000-12-14 | 2008-03-05 | 松下電器産業株式会社 | Multi display system |
US20030014476A1 (en) * | 2001-01-03 | 2003-01-16 | Peterson David Allen | Thin client computer operating system |
US6957435B2 (en) * | 2001-04-19 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for allocating processor resources in a logically partitioned computer system |
US20030018892A1 (en) * | 2001-07-19 | 2003-01-23 | Jose Tello | Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer |
US7158972B2 (en) * | 2001-12-11 | 2007-01-02 | Sun Microsystems, Inc. | Methods and apparatus for managing multiple user systems |
US20030115443A1 (en) | 2001-12-18 | 2003-06-19 | Cepulis Darren J. | Multi-O/S system and pre-O/S boot technique for partitioning resources and loading multiple operating systems thereon |
US7065496B2 (en) * | 2002-02-13 | 2006-06-20 | Tangoe, Inc. | System for managing equipment, services and service provider agreements |
US7161557B2 (en) * | 2002-04-08 | 2007-01-09 | Clearcube Technology, Inc. | Selectively updating a display in a multi-display system |
US7030836B2 (en) * | 2002-10-22 | 2006-04-18 | Thinsoft, Inc. | System and method for configuring a multi-user computer system |
DE60323811D1 (en) | 2003-04-09 | 2008-11-13 | Jaluna S A | operating systems |
US8776050B2 (en) * | 2003-08-20 | 2014-07-08 | Oracle International Corporation | Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes |
KR20070005917A (en) * | 2003-09-30 | 2007-01-10 | 쟈루나 에스에이 | Operating systems |
JP4137757B2 (en) * | 2003-10-01 | 2008-08-20 | 株式会社日立製作所 | Network converter and information processing system |
US7458029B2 (en) * | 2004-01-15 | 2008-11-25 | Microsoft Corporation | System and process for controlling a shared display given inputs from multiple users using multiple input modalities |
KR100630104B1 (en) | 2004-02-10 | 2006-09-27 | 삼성전자주식회사 | System for providing multiple window environment in mobile computing system and method thereof |
KR100586309B1 (en) * | 2004-02-23 | 2006-06-07 | 엔컴퓨팅 주식회사 | network terminal working by downloadable Operating System and method thereof |
US20060069828A1 (en) * | 2004-06-30 | 2006-03-30 | Goldsmith Michael A | Sharing a physical device among multiple clients |
US7640543B2 (en) * | 2004-06-30 | 2009-12-29 | Intel Corporation | Memory isolation and virtualization among virtual machines |
US7424601B2 (en) * | 2004-07-07 | 2008-09-09 | Yongyong Xu | Methods and systems for running multiple operating systems in a single mobile device |
US20060053215A1 (en) * | 2004-09-07 | 2006-03-09 | Metamachinix, Inc. | Systems and methods for providing users with access to computer resources |
KR100636177B1 (en) * | 2004-09-20 | 2006-10-19 | 삼성전자주식회사 | Method and system for managing output of policy based extensible markup language document |
US7552801B2 (en) * | 2004-09-27 | 2009-06-30 | Electronics Micro Systems, Inc. | Elevator systems having display systems with pluralities of sequentially connected monitor units |
US20060080514A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Managing shared memory |
US8407347B2 (en) * | 2004-11-19 | 2013-03-26 | Xiao Qian Zhang | Method of operating multiple input and output devices through a single computer |
JP2006146758A (en) * | 2004-11-24 | 2006-06-08 | Matsushita Electric Ind Co Ltd | Computer system |
US7793288B2 (en) * | 2004-12-09 | 2010-09-07 | International Business Machines Corporation | Automatic resource management of a guest operating system using information in data set indicating minimum system requirement |
US7581229B2 (en) * | 2005-03-11 | 2009-08-25 | Microsoft Corporation | Systems and methods for supporting device access from multiple operating systems |
KR100666603B1 (en) * | 2005-03-24 | 2007-01-09 | 삼성전자주식회사 | A multi display driving circuit and method of operating the same |
ES2381007T3 (en) * | 2005-06-10 | 2012-05-22 | Partec Cluster Competence Center Gmbh | Method and data communication system with virtual ports |
TW200705273A (en) * | 2005-07-26 | 2007-02-01 | Mitac Technology Corp | Method instantly initializing and executing a computer program by using a high-speed data access memory to load kernel program of operating system |
US8174617B2 (en) * | 2005-08-05 | 2012-05-08 | Samsung Electronics Co., Ltd. | Apparatus for providing multiple screens and method of dynamically configuring multiple screens |
US8347063B2 (en) * | 2005-08-19 | 2013-01-01 | Intel Corporation | Method and system for device address translation for virtualization |
US7463268B2 (en) * | 2005-09-15 | 2008-12-09 | Microsoft Corporation | Providing 3D graphics across partitions of computing device |
US7447806B2 (en) * | 2005-09-22 | 2008-11-04 | International Business Machines Corporation | Method and apparatus for centralization configuration of data processing systems |
US7899864B2 (en) * | 2005-11-01 | 2011-03-01 | Microsoft Corporation | Multi-user terminal services accelerator |
US8271548B2 (en) * | 2005-11-28 | 2012-09-18 | Commvault Systems, Inc. | Systems and methods for using metadata to enhance storage operations |
US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7788665B2 (en) * | 2006-02-28 | 2010-08-31 | Microsoft Corporation | Migrating a virtual machine that owns a resource such as a hardware device |
US7950020B2 (en) * | 2006-03-16 | 2011-05-24 | Ntt Docomo, Inc. | Secure operating system switching |
US20080046724A1 (en) * | 2006-07-25 | 2008-02-21 | General Dynamics C4 System, Inc. | Method for governing interaction between code within a code base |
US9176765B2 (en) * | 2006-09-25 | 2015-11-03 | Lenovo (Beijing) Limited | Virtual machine system and a method for sharing a graphics card amongst virtual machines |
US7786996B2 (en) * | 2006-10-24 | 2010-08-31 | Sony Corporation | System and method for object oriented hardware including cross-point switch interconnecting modules with I/O |
US8065687B2 (en) * | 2007-01-05 | 2011-11-22 | Moka5, Inc. | Bypass virtualization |
WO2009039384A2 (en) * | 2007-09-20 | 2009-03-26 | C & S Operations, Inc. | Computer system with multiple terminals |
US8370856B2 (en) * | 2008-11-05 | 2013-02-05 | Fh Innovations, Ltd | Computer system with controller kernel and remote desktop |
-
2008
- 2008-09-19 WO PCT/US2008/077034 patent/WO2009039384A2/en active Application Filing
- 2008-09-19 CA CA2849484A patent/CA2849484A1/en not_active Abandoned
- 2008-09-19 US US12/234,158 patent/US20090083630A1/en not_active Abandoned
- 2008-09-19 CA CA2699565A patent/CA2699565C/en not_active Expired - Fee Related
- 2008-09-19 US US12/234,131 patent/US20090083829A1/en not_active Abandoned
- 2008-09-19 US US12/234,223 patent/US7882274B2/en not_active Expired - Fee Related
- 2008-09-19 WO PCT/US2008/077024 patent/WO2009039376A2/en active Application Filing
- 2008-09-19 CA CA2699564A patent/CA2699564C/en not_active Expired - Fee Related
- 2008-09-19 CA CA2699562A patent/CA2699562A1/en not_active Abandoned
- 2008-09-19 WO PCT/US2008/077022 patent/WO2009039375A2/en active Application Filing
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432900A (en) * | 1992-06-19 | 1995-07-11 | Intel Corporation | Integrated graphics and video computer display system |
US20010016879A1 (en) * | 1997-09-12 | 2001-08-23 | Hitachi, Ltd. | Multi OS configuration method and computer system |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US7831926B2 (en) * | 2000-06-12 | 2010-11-09 | Softview Llc | Scalable display of internet content on mobile devices |
US7844889B2 (en) * | 2000-06-12 | 2010-11-30 | Softview Llc | Resolution independent display of internet content |
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
US20040002052A1 (en) * | 2001-10-23 | 2004-01-01 | Hendry Lawrence B. | Systems and methods for rapid evaluation and design of molecules for predicted biological activity |
US20030151885A1 (en) * | 2002-02-13 | 2003-08-14 | Ben Chang | Control system for peripheral devices of a high-density server |
US20030221087A1 (en) * | 2002-03-20 | 2003-11-27 | Seiko Epson Corporation | Information processing system |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US7117481B1 (en) * | 2002-11-06 | 2006-10-03 | Vmware, Inc. | Composite lock for computer systems with multiple domains |
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US6993620B2 (en) * | 2003-06-13 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | User resource sharing through the USB interface |
US7209994B1 (en) * | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US20060005190A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Systems and methods for implementing an operating system in a virtual machine environment |
US7457878B1 (en) * | 2004-11-04 | 2008-11-25 | Sun Microsystems, Inc. | Low-latency ultra-thin-client infrastructure |
US20060218309A1 (en) * | 2005-03-24 | 2006-09-28 | Jenn-Shoou Young | Device for upgrading a firmware of a display apparatus |
US7930454B2 (en) * | 2005-04-08 | 2011-04-19 | Achim Rausenberger | Thin-client terminal and client/server-system having such a terminal |
US20070074174A1 (en) * | 2005-09-23 | 2007-03-29 | Thornton Barry W | Utility Computing System Having Co-located Computer Systems for Provision of Computing Resources |
US20070288228A1 (en) * | 2006-06-08 | 2007-12-13 | Microsoft Corporation | Partial virtualization on computing device |
Non-Patent Citations (1)
Title |
---|
Nikos Drakos, POSIX Access Control Lists on Linux, Apr 4, 2003, University of Leeds. * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882274B2 (en) * | 2007-09-20 | 2011-02-01 | Virtual Desktop Technologies, Inc. | Computer system with multiple terminals |
US20090083450A1 (en) * | 2007-09-20 | 2009-03-26 | C & S Operations, Inc. | Computer system with multiple terminals |
US11287939B2 (en) | 2008-10-09 | 2022-03-29 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US11662873B2 (en) | 2008-10-09 | 2023-05-30 | Aristocrat Technologies Australia Pty. Limited | Gaming system and gaming system processor module |
US11385758B2 (en) | 2008-10-09 | 2022-07-12 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US10592060B2 (en) * | 2008-10-09 | 2020-03-17 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US11281350B2 (en) | 2008-10-09 | 2022-03-22 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US20150346884A1 (en) * | 2008-10-09 | 2015-12-03 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US11249612B2 (en) | 2008-10-09 | 2022-02-15 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US20100100718A1 (en) * | 2008-10-20 | 2010-04-22 | Novell, Inc. | In-the-flow security services for guested virtual machines |
US20100115125A1 (en) * | 2008-11-05 | 2010-05-06 | C&S Operations, Inc. | Computer System with True Video Signals |
US20100115532A1 (en) * | 2008-11-05 | 2010-05-06 | C&S Operations, Inc. | Computer System with Controller Kernel and Remote Desktop |
US8370856B2 (en) | 2008-11-05 | 2013-02-05 | Fh Innovations, Ltd | Computer system with controller kernel and remote desktop |
US8375138B2 (en) | 2008-11-05 | 2013-02-12 | Fh Innovations, Ltd | Computer system with true video signals |
US8925103B2 (en) * | 2010-12-21 | 2014-12-30 | Lg Electronics Inc. | Mobile terminal supporting dual operating systems and an authentication method thereof |
US8856950B2 (en) * | 2010-12-21 | 2014-10-07 | Lg Electronics Inc. | Mobile terminal and method of managing information therein including first operating system acting in first mode and second operating system acting in second mode |
US20120157166A1 (en) * | 2010-12-21 | 2012-06-21 | Dongwoo Kim | Mobile terminal and method of managing information therein |
US20120154413A1 (en) * | 2010-12-21 | 2012-06-21 | Dongwoo Kim | Mobile terminal and method of controlling a mode switching therein |
US8924986B2 (en) | 2011-09-01 | 2014-12-30 | American Megatrends, Inc. | Methods, devices and computer program products for confluence of multiple operating systems |
US9858097B2 (en) | 2013-06-07 | 2018-01-02 | American Megatrends, Inc. | Methods, devices and computer readable storage devices for emulating rotation events in a guest operating system from a host operating system |
US9378038B2 (en) | 2013-06-07 | 2016-06-28 | American Megatrends, Inc. | Methods, devices and computer readable storage devices for emulating a gyroscope in a guest operating system from a host operating system |
US9934168B2 (en) | 2013-10-29 | 2018-04-03 | Userful Corporation | Method and system of connecting and switching grouped input and output devices between computers |
US9430182B2 (en) | 2014-03-06 | 2016-08-30 | American Megatrends, Inc. | Methods, systems and computer readable storage devices for presenting screen content |
Also Published As
Publication number | Publication date |
---|---|
US20090083829A1 (en) | 2009-03-26 |
WO2009039384A2 (en) | 2009-03-26 |
CA2699562A1 (en) | 2009-03-26 |
WO2009039376A3 (en) | 2009-05-22 |
CA2699565A1 (en) | 2009-03-26 |
WO2009039384A3 (en) | 2009-05-14 |
CA2699564A1 (en) | 2009-03-26 |
WO2009039375A3 (en) | 2009-07-02 |
US7882274B2 (en) | 2011-02-01 |
CA2699564C (en) | 2014-07-08 |
US20090083450A1 (en) | 2009-03-26 |
WO2009039376A2 (en) | 2009-03-26 |
CA2849484A1 (en) | 2009-03-26 |
CA2699565C (en) | 2014-07-15 |
WO2009039375A2 (en) | 2009-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090083630A1 (en) | Computer system with tunneling | |
JP6329484B2 (en) | Deliver a single end-user experience from multiple servers to clients | |
US8776090B2 (en) | Method and system for network abstraction and virtualization for a single operating system (OS) | |
US8271976B2 (en) | Systems and methods for initializing multiple virtual processors within a single virtual machine | |
CA2876380C (en) | Systems and methods of secure domain isolation | |
Desai et al. | Hypervisor: A survey on concepts and taxonomy | |
US9389888B2 (en) | Virtualization system with a remote proxy in a virtualization layer domain | |
Perez et al. | Virtualization and hardware-based security | |
US20120331032A1 (en) | Remote Presentation Session Connectionless Oriented Channel Broker | |
US20120054740A1 (en) | Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments | |
US20180157519A1 (en) | Consolidation of idle virtual machines | |
Armand et al. | A practical look at micro-kernels and virtual machine monitors | |
US8813252B2 (en) | Request based license mode selection | |
Xu et al. | The study and evaluation of ARM-based mobile virtualization | |
US9959842B2 (en) | On-screen display at thin client | |
US20120079393A1 (en) | Adaptable License Platform for Remote Sessions | |
DiGiglio et al. | High performance, open standard virtualization with NFV and SDN | |
US10564918B2 (en) | Techniques of remotely providing user input to thin client | |
Lakshmi | System Virtualization in the Multi-core Era-a QoS Perspective | |
Chai et al. | TEEI-A Mobile Security Infrastructure for TEE Integration | |
US11010475B1 (en) | Secure computer with multiple operating systems | |
Liu et al. | KMRE: An Efficient and Compatible Runtime to Execute Android Application on Linux System | |
Lee et al. | F-VT: A Friendly Virtualization Framework | |
US10652339B2 (en) | Wireless thin clients | |
Nider | A comparison of virtualization technologies for use in cloud data centers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: C&S OPERATIONS, INC., NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PETERSON, DAVID A;REEL/FRAME:021562/0696 Effective date: 20080919 |
|
AS | Assignment |
Owner name: VIRTUAL DESKTOP TECHNOLOGIES, INC., NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:C&S OPERATIONS, INC.;REEL/FRAME:023190/0545 Effective date: 20090901 |
|
AS | Assignment |
Owner name: FH INNOVATIONS, LTD, ONTARIO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VIRTUAL DESKTOP TECHNOLOGIES, INC.;REEL/FRAME:028299/0984 Effective date: 20120522 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |