Working Principle behind Web Operating Systems? - operating-system

I have one query on which I would like to get your valuable feedback. Nowadays I hear a lot about Web Operating Systems. Like, Google is working on Chrome OS, but I am not sure how OS principles will work with a Web Operating System. I mean, Web OS's will come in picture once the Internet is connected, but for booting up system and other related task we would need an OS and I think a Web OS won't be useful there.
I would really appreciate if someone can point me to useful resources or explain me about the working principle behind a Web Operating System?

I'll start with the obvious: http://en.wikipedia.org/wiki/Web_operating_system

Related

Implementation of USB device driver on my own OS based in Linux

I’m on process of developing my own Operating System based in Linux.
This week we’re aiming to implement very simple USB device driver , which is quite hard to get basic algorithm .
However commonly it’s hard to find out some sources aside from commercial linux system.
And I want to get some advice about this .
Plus, I do all these stuffs on Ubuntu , using QEMU emulator.
I’ve done simple file system and hard disk device driver so far.
Help me out how to implement USB device driver with very sime ideas.
Thank you !! :)
Implementing USB is quite the task. First you must have a working PCI(e) enumerator or other form of finding the USB controller. You then must find out which of the four most common controller types it happens to be. Each controller type is completely different from the previous and must contain its own driver. You also need a standard USB interface that is independent of the controller type.
Taking on the USB is quite the task, but in my opinion a very interesting and enjoyable task. Enjoyable enough, that I even wrote a book about how to do it. It explains how to find the controller(s) via the PCI(e) bus, how to setup this bus, how to detect the type of USB controller--UHCI, OHCI, EHCI, or xHCI--and how to send and receive data packets to/from attached devices. This book was written exactly for the purpose of those of us creating our own operating systems and adding USB support to them. The fact that you are basing your OS on Linux should not matter since the book does not rely upon any existing OS to accomplish this task, other than the example programs relying on memory allocation, which is easily modified for your developing platform.
Might I say that if you do take on this task, it will be a difficult task, but it will be an enjoyable task. In my opinion, the USB is the most enjoyable part of this hobby of ours.

How exactly does a program talk to a device driver?

So I'm confused on how exactly we as the programmers talk to devices on the computer. Now I'm not talking the big ideas. I know that there are device drivers that sit atop the hardware so that different programs can use there features.
But in general who exactly talks to the drivers? Is the programmer writing the application responsible for calling a function on the driver? Or does the programmer call a function through the operating system which then handles the call to the driver? As you can see I'm really just confused about the nitty gritty of how the driver, OS and your application fit together.
The application doesn't call the driver directly - that would violate the entire idea of user mode and kernel separation. Instead the OS exposes the relevant ABI to the user mode programs, enabling the applications to call the exposed functionality (with respect to the predefined restrictions that should be documented).

Hardware for Operating System development

I am heavily interested in Operating System theory and design and have decided I would like to play with developing an OS. I have a background in x86 assembly and have looked into ARM also. I would like a development board to develop the OS for. Has anyone had experience with OS development and/or can suggest some hardware to use?
One board I am considering is the LPC1769 LPCXpresso board.
I am aware I could use a VM, but I would like to use actual hardware.
Well.. I personally started off with an RTOS called freertos (http://www.freertos.org/). This is an open source RTOS and is very minimalistic. It is also supported across a ton of platforms and is well written and maintaned. I ran it on a PIC32 microcontroller kit. However I would recommend you try something like Arduino boards which are more suited for beginners.
Happy learning!
Old thread, you have found your way by now, but I would definitely recommend the FreeRTOS + LPCXpresso 1769 combination.

mainframe practice on Mac machine

Is there a way to use mainframe on Mac machine. I want to practice mainframes(COBOL, JCL, DB2) on MAC or windows, preferably MAC.
I have never tried, but Hercules is a mainframe emulator that should run on OSX. The main problem though with any kind of mainframe emulation is getting the software you want. Very few (if any) of the software that runs on modern mainframe is licensed to run on emulators.
If you provide a bit more background as to what you are trying to achieve, then someone should be able to come up with a more helpful answer. That is, are you trying to understand the architecture, learn assembler, work with IMS or CICS, etc?
I would recommend using Topaz on AWS by Compuware (https://compuware.com/topaz-on-aws/). The mainframe IDE runs in a browser so it doesn't matter what operating system you use. Plus, it works great and has tons of useful, modern features. But if you need a free emulator, you can use tn3270x (https://www.brown.edu/cis/tn3270/).
You should look for a service that let's you connect to a minframe from the internet with a 3270 emulator that would run on your PC or Mac. Maybe some colleges would offer that.
You can register for Master the Mainframe contest organized by IBM, to get free access to genuine IBM Mainframes.
Click here and Register for Learning System.
Read these lines in link's description.
Master the Mainframe is a fun way to learn, earn digital badges and
experience hands-on mainframe technology with no prior knowledge
required!
Master the Mainframe’s Learning System is open to anyone year-round
for technology training and earning IBM digital badges.
Yearly, the IBM Z Academic Initiative sponsors a Master the Mainframe
global contest where academic students can learn while vying to win
prizes. New challenges are posted each September.
I've been using Vista TN3270 terminal on my PC for a month and it's quite interesting and useful.

Is it possible to create an OS that can run all application?

Just a thought, if we have to make our application cross-platform, then is it possible to create a cross-application OS?
No.
Lets say you do go and invest - a monumental amount of - effort in building you're Uber-OS (that will run Mac apps, Linux apps, Unix apps, Android apps, i-phone apps, Nokia apps, Symbian apps, SAP apps, Windows Apps etc).
Then there's nothing stopping someone writing a new OS that you don't support.
P.S. And there are hundreds (if not thousands) of different hand held devices out there for scanning products, weights and mesures etc many of which have their own flavour of OS.
Technically yes as long as you limit the scope of all to all applications that run on major OSes.
It is theoretically possible to create an OS that could handle applications run on the 4-5 most common OSes but the amount of work involved would be monumental.
Every time a new feature was added to any of the OSes, you'd need to add it to your OS too - So as well as being almost impossible to build, you'd need a large enough dev team to stay ahead of 4-5 of the largest dev teams/groups in the world.
No but with virtualization you could have a single computer that can run any application.
First there is the practical impossibility of successfully following the evolution of an indefinite number of operating systems. Do we take embedded OS into account? How about one-shot OS for specific applications? How about proprietary OS with no access to documentation?
Then there is also the - very difficult, if not impossible - problem of merging the various paradigms used in the wild. Ideally you would want OS services like the clipboard, or networking or ... or ... to work in a uniform way and allow applications to cooperate as if targeted to the same OS.
(Let's not even think about the various hardware-dependent applications.)
After all this, you should also consider what the application development for your own OS would be like...
I wonder if this is a good case for Gödel's incompleteness theorems :-)
PS: That said, there are quite a few projects attempting to bridge the various OS gaps:
http://en.wikipedia.org/wiki/List_of_computer_system_emulators
http://en.wikipedia.org/wiki/List_of_emulators#Operating_System_emulators
What you can do is use virtual machines, such as VMWare's software, and emulate several operating systems on the same physical machine.
What do you define by an operating system that can run all applications?
Applications are mostly written in a higher level language and then translated into binary code that differs between machine architectures (like Intel and PowerPC) and operating systems (like Windows or Unix-based systems).
Java for example is only cross-platform because not the language itself is cross-platform (any high level language is), but because there exist Java virtual machines for different architectures and operating systems that abstract the heterogeneity of the underlying system.
It is definitely not theoretically impossible (nothing is except for some mathematical problems), but can you imagine what one would have to do in order to make such a thing work? You can basically run Linux programs in Windows with CygWin, you can also run Windows programs in Linux with Wine. All of those try to create a small operating system (e.g. the Windows core) into your other OS (e.g. Linux). This is probably not what you want.
To summarize, I can't imagine anyone really trying to do that. With all the money in the world, seriously. Better invest in writing native apps for the operating systems you want to support.