Wednesday, March 2, 2016

First Slice of Life Post

On the bus ride to school I investigated using an awesome in-browser x86 emulator. It was exciting to be able to run computer operating systems in the Chrome browser on my phone, although the emulator did not like my phone screen. Whenever I tried to scroll to other parts of the page, it would instead move my mouse in the virtual machine. Disabling the mouse allowed me to zoom out, but then I could not do anything else. So I enabled it again when everything was on the screen. The other strange bug was that it would open up a non-functional keyboard and zoom in each time the screen was touched. Unfortunately, the challenge of using the emulator on my phone was not completed by the time we reached school.

After school, when I had logged into Blogger to begin creating this blog, I found myself staring blankly into the computer screen. Despite trying to focus on coming up with something interesting from my day to write about, I found that my thoughts kept coming back to how I could make the v86 emulator faster, or how I could adapt it to work on my phone. As I sat there with the parallel processors in my brain working on each of these tasks, I realized that many of the things that excite me during the school day are related to the new technology and science I have discovered, explored, or discussed with others. So, I have decided to blog about both the events and the technology that I think about during my day. I hope you will enjoy both components of my blog posts.



Bonus Tech Stuff: v86 - Virtual Machine in a Browser



Recently, I found an extremely interesting project which ran x86 emulation in a browser. In other words, it lets you run virtual computers in a browser window. I immediately was interested in the project and began messing with it. It is relatively new, and still has plenty of quirks, but I think it is very useful.

Advantages:
This x86 VM system of course has the main advantage of running in a web browser. It has support for emulated hard drives, floppy drives, and CDs. v86 has many example OS images set up, including Windows 98, Arch Linux, Kolibri OS, Buildroot Linux 2.6, Buildroot Linux 3.18, Windows 1.01, FreeDOS, OpenBSD, Solar OS, and Bootchess (a chess game). The one above is Buildroot Linux 3.18, which comes with a Lua interpreter. This system has support for all of the most common x86 instructions. It has Pentium-1 level instruction support overall.

Disadvantages:
The main disadvantage is, at least in my experience, the system caps out at about 30 MIPS (million instructions per second). This is incredibly slow, considering that my computer can reach 21.6 billion instructions per second on one core, or 43.2 billion instructions per second on both cores (most Intel systems are about equal to this). Most non-web-browser systems stay extremely close to the speed of the actual machine, so this is pretty slow in comparison. The networking does not appear to be functional. Also, some of the images won't load on certain networks. The graphics do not appear to be accelerated - meaning that all of the graphics are drawn on the CPU instead of the GPU. It does not yet have support for SIMD (single instruction multiple data, a technique for speeding up the processing of large arrays). The mouse does not line up, and the interface is totally non-functional on mobile.

Change:
However, do not think that all of these problems are going to be permanent. There have been 35 changes since the beginning of February, and this rate will probably go up if enough people become interested. There are five issues that have been opened in the last 7 days. This is good, because this means that there is planned upcoming changes. Most importantly, this is an open source project, so you can help to improve it on GitHub.

#slice2016

No comments:

Post a Comment