The Origin Of It All
Introduction
You must be asking yourself things like "Why do programs behave like they do?" or "Why do I have to go down this route for it to work?"
The answer is surprisingly simple: Because we're all following the instructions of the next manufacturer in line
What do I mean by that?
- Hardware manufacturers go by the specifications of the CPU manufacturers
- Operating system manufacturers (Windows / Mac / Linux) build their systems around the hardware instructions (the CPU can do instruction X and so you'll need to do Y to get the result you want)
- Applications follow the instructions and restrictions imposed by the operating system
- The user does the same thing as well
So to sum it up -> Everything goes according to the rules of the parent system and if you won't adhere to them, you can expect issue to arise
- Operating systems must adhere to rules applied by the BIOS / UEFI to boot and operate
- Applications must adhere to rules applied by the OS
- Users need to adhere to rules applied by Apps if they want their experience to go as planned by the developer -> Notice that they are not obliged to adhere to the rules of the app because the responsiblity lies within the App developers
This is the whole point in Information Security
Conclusion
Because at the end of the day everything revolves around the hardware, You could say that everything is basically data that is stored on a storage device.
- Your operating system? -> Data
- Your application? -> Data
- Your pictures? Data
Everything is data that gets loaded into your RAM when needed and the CPU interperts it according to the data structure that the operating system is using
So you're asking yourself "If everything is data at the end of the day, why can't I use the exact same app on another operating system?", Well that's because they use differently structured data so X can mean Y in another platform
IE: In windows executable apps start with specific bits of information and has to end in the right extension (.txt, .json. exe) while in Linux it's based only on their specific bits of information that tells it it's an executable (And yes, they use different bits of data to represent each other)