Back to basics


I was reading a wonderful book Programming from Ground up by Jonathan. It reminds me old good days about assembly language on Dyna Microprocessor kits.  I thought about writing some points from that.

Let us start reading about the Computer Architecture:


Have you every thought when you type something on the keyboard how does computer display that on the Screen? I know I know we don’t need to bother about that but I believe anyone who is a programmer must know these concepts.

So if we will look at architecture of Computer there are 3 main components:

  • Hardware
  • Kernel
  • User Application

Let us go through each point one by one I will discuss the most important one at the end ;)

Hardware

Hardware includes everything that is physically available in the computer. For example Motherboard ,RAM, Processor, Keyboard, Mouse etc. Few of them require human interactions for example keyboard or mouse. But some of them for example microprocessor(most important IC(Integrated Circuits) on the motherboard ) need commands that will be executed by such kind of hardware. These command are written in Machine Language. I will explain about that later.

User Application

This represents any program written by User in any high level or low level language. For example if we take any editor that is used to write such blogs or for example music player on our computer where MJ rocks every time we play “Don’t Stop Till You Get Enough” :)

Kernel

As I said earlier and I know you are smart enough to identify that Kernel is the most important part we should discuss here. have you ever written any code so that your music player will interact with the underlying hardware driver and play sound for your favorite song? I have never done that. Then who is doing that for me? Have you ever thought what the hell is Operating System? If yes then you know the answer of my previous question and if No then let me tell you OS is doing that for us. That is the reason today Bill Gates is a big Man with big big pocket! OS has Kernel to interact with hardware. Each OS expose some kind of entry point or we should say functions to interact with the Kernel. User applications use that entrypoint and using kernel interact with the hardware. So when we press a key a scancode goes to kernel. Then kernel converts that to actual letterand then pass to the OS and then OS will display that in the desired application for example editor. kernel also handle security issues like handling the permission of memory or file access for a particular program.

I hope you enjoyed reading this stuff do leave a feedback on that.  I will be looking forward for any kind of suggestions.

In windows we have everything which is executable with an extension “exe”. But in Linux everything that is executable does not have any extension.

About these ads

About pawanspace

I am a Sun certified Java programmer with 5 years of experience in IT industry. In past 5 years I have worked in Investment Banking Domain and Telecommunication domain. I have also worked on Business Intelligence domain. My mainstay has been Java, J2EE technologies. I am Bachelor of Engineering degree holder in Electronics and communication from Nagpur University. Before that I have done diploma in Electronics and Communication. Currently I am Working as Technical Analyst with Fujitsu, Noida. I joined Fujitsu on 8th Feb 2010. Earlier In Fujitsu I worked on Business Process Management product development. Currently I am working on a web application similar to Facebook and other Social applications similar to that. Working as Technical Analyst with Fujitsu, Noida. Prior to that I had worked as Sr. Software Engineer with GlobalLogic, Noida, Accenture Services pvt. ltd., Bangalore for 1 and half year. and a US MNC EXalt Solutions for 9 months. I am also pursuing correspondence MBA in Information Technology from Symboisis. My mainstay has been Java, J2ee Technologies. These are the major technologies I've used: Java Spring Spring MVC Hibernate Struts Stripes Coherence XML Parsers Jsp/Servlets I have also worked on JavaScript language. I have used following JavaScript frameworks: YUI Extjs Unit testing has also been a major part of my experience and I have used following frameworks: Unitils DBUnit JMock Junit FIT Besides these, I've used Ajax, JSON, XML, Web Services and XML Parsers like SAX and STAX. I've worked largely with Oracle database. I have experience in PL/SQL, reporting tools like BIRT and IBPM tool for Business Process Management. I have used Tomcat, Weblogic, JBoss and Jetty as web/app servers. I have worked mostly on Eclipse IDE but I do have experience with Netbeans as well.
This entry was posted in Assembly Language, General. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s