1 Distinguish among hardware, software and firmware. 2 Processor speeds have dou
ID: 3877813 • Letter: 1
Question
1 Distinguish among hardware, software and firmware.
2 Processor speeds have doubled roughly every 18 months. Has overall computer performance doubled at the same rate? Why or why not?
3 Why do systems contain several data stores of different size and speed? What is the motivation behind caching?
4 Briefly describe how a program written in a high-level language is prepared for execution.
5 Compare and contrast absolute loaders with relocating loaders. Give several motivations for the concept of relocatable loading.
Explanation / Answer
1)
a) Hardware is a physical arrangement of electronic parts which are brought together to perform some task(with some software in them). Hardware is something real that we can touch, see, fix. Few examples are Laptop,Smartphone, router etc.
b) Software is a stream of instructions which are coded logically to perform task with help of hardware. Software is loaded from storage (flash, disk, network, etc) into the computer's operating memory (RAM) on demand, and is designed to be easy to change. Software is completely virtual as we can only see its work done but we can touch it physically or see like a hardware. Few examples are MS Office, Adobe reader, Paint etc.
c) Firmware is special software that is designed for a specific piece of hardware.Firmware is a set of most basic instructions that can be passed to the hardware for its basic functioning.They're stored on ROM in a computer to prevent unauthorized alterations as once it is tampered, software and hardware cannot work togehter as it acts as an interface between them. Firmware is everywhere in our surroundings, Tv remote, laptop, smartphone, oven etc.
2) Yes, processor speed is alomost directly proportional to computer performance as if processor speed increases, the number of operations a computer can do per second increases which increases the throughput of the system thus improving the performace. But by power law, we cant keep on increasing the processor speed as power required for the chip exponentially increases thus causing chip meltdown. So all recent computers adapt multi processing and multi core architectures which allows parallel computing with decent processor power/speed, thus improving the computer performace overall.
3) Caching is one of the main reason why our systems/devices work in complete responsive manner. Caching is nothing but storing chuncks of frequently used data or small amount data that might be used in future. This is very important as CPU's are insanely faster when compared to hard drives in processing data(following instructions/fetcting or writing data). As slow working of hard drive causes stalling of CPU, which is consisered as inefficient. So, to bridge this gap, faster and faster memory access storage units are placed between CPU and secondary storage(hard drive) to make CPU working all the time. These faster storages are very very costly so there is generally a tradeoff with cost-performance. So optimial number(size) of faster storage units are placed in hierarchical manner to provide the best performance of the cost.
4) The program written in a high-level language is called source code/program which is written by a programmer in text-editor.Now this code undergoes few steps to finally execute in the system.
a) First the code goes through compiler phase where the source is converted into lexicons(individual tokens) to check the syntacticality and semantic quality of the code. Then the code is optimized and converted into low level language specific to machine so that machine can run the code. This machine level code is called object program or object code.
b) Next, a program called a linker is used to combine the object code with any prewritten code (programs) used from available libraries (e.g. the math library contains code for frequently used mathematical functions) to create executable code, code the computer can execute.
c) Next, a program called a loader is now used to load the executable code into main memory so that the program can be executed.
d) Finally the program will execute once execute option is called.
5)
a) An absolute loader is the simplest type of loading scheme that loads the file into memory at the location specified by the beginning portion (header) of the file, then it passes control to the program.In addition, the loader will need to know when to stop loading, so we need some kind of an end-of-file marker at the end of the loader input. When the loader stops, it should transfer control to the newly loaded program. This means that a starting address is also needed.
b) A relocatable loader, on the other hand, actually loads the program anywhere in memory (which alters the various addresses as required to ensure correct referencing).It accepts as input a sequence of segments, each in a special relocatable load format, and loads these segments into memory. The addresses into which segments are loaded are determined by the relocatable loader, not by the assembler or the programmer.This is obviously more efficient, but introduces a slight overhead in terms of a small delay whilst all the relative offsets are calculated. The relocating loader can only relocate code that has been produced by a linker capable of producing relative code.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.