Bochs

Bochs (pronounced "box") is a portable IA-32 and x86-64 IBM PC compatible emulator and debugger mostly written in C++ and distributed as free software under the GNU Lesser General Public License. It supports emulation of the processor(s) (including protected mode), memory, disks, display, Ethernet, BIOS and common hardware peripherals of PCs.

Bochs
Bochs 2.4.6 with its "wx" graphical interface (wx display library) on Debian 7 Linux
Original author(s)Kevin Lawton[1][2]
Developer(s)Community based; owned by Mandriva
Initial release1994 (1994)[3]
Stable release
2.6.11 / 5 January 2020 (2020-01-05)
Repository
Written inC++
Operating systemWindows, Linux, BSD (FreeBSD, NetBSD, OpenBSD, Darwin), OS/2, BeOS, MorphOS, AmigaOS, Android[4]
PlatformIA-32, x64
Available inEnglish
TypeEmulator
LicenseGNU Lesser General Public License
Websitebochs.sourceforge.net

Many guest operating systems can be run using the emulator including DOS, several versions of Microsoft Windows, BSDs, Linux, Xenix and Rhapsody (precursor of Mac OS X). Bochs runs on many host operating systems, including Android, Linux, macOS, PlayStation 2, Windows, and Windows Mobile.

Bochs is mostly used for operating system development (when an emulated operating system crashes, it does not crash the host operating system, so the emulated OS can be debugged) and to run other guest operating systems inside already running host operating systems. It can also be used to run older software—such as PC games—which will not run on non-compatible, or too fast computers.

History

Bochs started as a program with a commercial license, at the price of US$25, for use as-is. If a user needed to link it to other software, that user would have to negotiate a special license. That changed on 22 March 2000, when Mandrakesoft (now Mandriva) bought Bochs from lead developer Kevin Lawton and released it for Linux under the GNU Lesser General Public License.[1]

Use

Bochs emulates the hardware needed by PC operating systems, including hard drives, CD drives, and floppy drives. It doesn't utilize any host CPU virtualization features, therefore is slower than most virtualization, rather than emulation software. It provides additional security by completely isolating the guest OS from the hardware. Bochs also has extensive debugging features. It is widely used for OS development, as it removes the need for constant system restarts (to test code).

BFE, described as a "Graphical Debugger Interface for the Bochs PC Emulator", is a graphical interface for the debugger within the Bochs PC emulator that makes it possible to debug software step-by-step at the instruction and register level, much like Borland's Turbo Debugger.[5]

Emulated hardware

ClassDevice
Video cardCirrus Logic CL-GD5430 ISA
Cirrus Logic CL-GD5446 PCI
3dfx Interactive Voodoo Banshee / Voodoo3
Sound cardSound Blaster 16 card (ISA, no Plug & Play), Basic Sound Device
Ethernet network cardNE2000 (ISA/PCI) Ethernet or Intel(R) 82540EM Gigabit Ethernet adapter (PCI)[6]
ChipsetIntel 440FX PCI. Intel 440BX PCI. Host-to-PCI bridge (PMC/DBX), PCI-to-ISA bridge, PCI IDE controller (PIIX3) are available. For PCI cards there are 5 PCI slots.
USBRoot hub and the devices mouse (optional), tablet, keypad (default), disk.
SMPCan simulate up to 8 CPUs.
Enhanced BIOS or SeaBIOSElTorito, EDD v3.0, basic APM, PCIBIOS features, PCI interrupt routing table. 32-bit init for ACPI, SMM and SMP.
gollark: Or Great Information Transfer.
gollark: Git stands for GIT Is Tremendous.
gollark: The stages of git clone are: Receive a "pack" file of all the objects in the repo database Create an index file for the received pack Check out the head revision (for a non-bare repo, obviously)"Resolving deltas" is the message shown for the second stage, indexing the pack file ("git index-pack").Pack files do not have the actual object IDs in them, only the object content. So to determine what the object IDs are, git has to do a decompress+SHA1 of each object in the pack to produce the object ID, which is then written into the index file.An object in a pack file may be stored as a delta i.e. a sequence of changes to make to some other object. In this case, git needs to retrieve the base object, apply the commands and SHA1 the result. The base object itself might have to be derived by applying a sequence of delta commands. (Even though in the case of a clone, the base object will have been encountered already, there is a limit to how many manufactured objects are cached in memory).In summary, the "resolving deltas" stage involves decompressing and checksumming the entire repo database, which not surprisingly takes quite a long time. Presumably decompressing and calculating SHA1s actually takes more time than applying the delta commands.In the case of a subsequent fetch, the received pack file may contain references (as delta object bases) to other objects that the receiving git is expected to already have. In this case, the receiving git actually rewrites the received pack file to include any such referenced objects, so that any stored pack file is self-sufficient. This might be where the message "resolving deltas" originated.
gollark: UPDATE: this is wrong.
gollark: > Git uses delta encoding to store some of the objects in packfiles. However, you don't want to have to play back every single change ever on a given file in order to get the current version, so Git also has occasional snapshots of the file contents stored as well. "Resolving deltas" is the step that deals with making sure all of that stays consistent.

References

  1. Gael Duval (March 23, 2000). "MandrakeSoft buys Bochs for Linux and commits it to Open Source". Retrieved September 21, 2011.
  2. Thinking inside and outside the Bochs with Kevin Lawton, By Ken Hess, August 25, 2011, ZDNet
  3. Bochs was written by Kevin Lawton starting in 1994., 1.1. What is Bochs?, Chapter 1. Introduction to Bochs, Bochs User Manual
  4. "Features". bochs.sourceforge.net. Retrieved 20 October 2016.
  5. "BFE : about". SourceForge. Retrieved 27 December 2016.
  6. "Bochs User Manual - Features". Retrieved 2016-04-06.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.