<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3105598028949200277</id><updated>2024-08-29T01:51:57.454+05:30</updated><category term="Computer"/><title type='text'>Computer Systems And Concepts..</title><subtitle type='html'>Here u all can get the information related to the Computer Fundamentals &amp;amp; Concepts...&#xa;&#xa;U can also Ask Queries &amp;amp; Questions... U Want..&#xa;&#xa;Related to IT &amp;amp; Concepts..</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><blogger:adultContent>true</blogger:adultContent><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-7208997105932516733</id><published>2015-08-23T01:09:00.001+05:30</published><updated>2015-08-23T01:10:01.556+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computer"/><title type='text'>What is the difference between Shallow copy and Deep copy? Which is default?</title><content type='html'>&lt;p dir=&quot;ltr&quot;&gt;When you do a shallow copy, all the fields of the source object is copied to target object as it is. That means, if there is a dynamically created field in the source object, shallow copy will copy the same pointer to target object. So you will have two objects with fields that are pointing to same memory location which is not what you usually want.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;In case of deep copy, instead of copying the pointer, the object itself is copied to target. In this case if you modify the target object, it will not affect the source. By default copy constructors and assignment operators do shallow copy. To make it as deep copy, you need to create a custom copy constructor and override assignment operator.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/7208997105932516733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2015/08/what-is-difference-between-shallow-copy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7208997105932516733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7208997105932516733'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2015/08/what-is-difference-between-shallow-copy.html' title='What is the difference between Shallow copy and Deep copy? Which is default?'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-5191238995592110258</id><published>2013-03-11T21:25:00.001+05:30</published><updated>2013-03-11T21:25:50.195+05:30</updated><title type='text'>RISC PIPELINE</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;In the&amp;nbsp;&lt;/span&gt;history of computer hardware&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;, some early&amp;nbsp;&lt;/span&gt;reduced instruction set computer&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;&lt;/span&gt;central processing units&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;(RISC CPUs) used a very similar architectural solution, now called a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;classic RISC pipeline&lt;/span&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;Those CPUs were:&amp;nbsp;&lt;/span&gt;MIPS&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;,&amp;nbsp;&lt;/span&gt;SPARC&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;, Motorola&amp;nbsp;&lt;/span&gt;88000&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;, and later&amp;nbsp;&lt;/span&gt;DLX&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The main common concept of each design was a five-stage execution&amp;nbsp;instruction pipeline. During operation, each pipeline stage would work on one instruction at a time.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Each of these stages consisted of an initial set of&amp;nbsp;flip-flops, and combinational logic which operated on the outputs of those flops.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;The_classic_five_stage_RISC_pipeline&quot;&gt;The classic five stage RISC pipeline&lt;/span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Instruction_fetch&quot;&gt;Instruction fetch&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAIhRvuBRyOzaCvBQoUmgJqH0vs26kbFO0kukluinDaD2fAsCWF2CTpUYcylnKQ3rgViUwqESdeOxprA54YV2SpZSOg0OtjeK1cgI4oUU0JI2pMPd1nGazXafuNMT4h1rW2IheZod11Go/s1600/800px-Fivestagespipeline.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;92&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAIhRvuBRyOzaCvBQoUmgJqH0vs26kbFO0kukluinDaD2fAsCWF2CTpUYcylnKQ3rgViUwqESdeOxprA54YV2SpZSOg0OtjeK1cgI4oUU0JI2pMPd1nGazXafuNMT4h1rW2IheZod11Go/s320/800px-Fivestagespipeline.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Decode&quot;&gt;Decode&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Execute&quot;&gt;Execute&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Register-Register Operation (Single cycle latency): Add, subtract, compare, and logical operations. During the execute stage, the two arguments were fed to a simple&amp;nbsp;ALU, which generated the result by the end of the execute stage.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Memory Reference (Two cycle latency). All loads from memory. During the execute stage, the ALU added the two arguments (a register and a constant offset) to produce a virtual address by the end of the cycle.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Multi Cycle Instructions (Many cycle latency). Integer multiply and divide and all&amp;nbsp;floating-point&amp;nbsp;operations. During the execute stage, the operands to these operations were fed to the multi-cycle multiply/divide unit. The rest of the pipeline was free to continue execution while the multiply/divide unit did its work. To avoid complicating the writeback stage and issue logic, multicycle instruction wrote their results to a separate set of registers.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Memory_Access&quot;&gt;Memory Access&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Writeback&quot;&gt;Writeback&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Hazards&quot;&gt;Hazards&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;Hennessy and Patterson coined the term&amp;nbsp;&lt;i&gt;hazard&lt;/i&gt;&amp;nbsp;for situations in which a completely trivial pipeline would produce wrong answers.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Structural_Hazards&quot;&gt;Structural Hazards&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Data_Hazards&quot;&gt;Data Hazards&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Solution_A._Bypassing&quot;&gt;Solution A. Bypassing&lt;/span&gt;&lt;br /&gt;SUB r3,r4 -&amp;gt; r10    ; Writes r3-r4 to r10&lt;br /&gt;AND r10,r3 -&amp;gt; r11    ; Writes r10 &amp;amp; r3 to r11&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b style=&quot;line-height: 19px;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;A register file read port (i.e. the output of the decode stage, as in the naïve pipeline):&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;red&lt;/span&gt;&amp;nbsp;arrow&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The current register pipeline of the ALU (to bypass by one stage):&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;blue&lt;/span&gt;&amp;nbsp;arrow&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;The current register pipeline of the access stage (which is either a loaded value or a forwarded ALU result, this provides bypassing of two stages): purple arrow. Note that this requires the data to be passed&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;backwards&lt;/i&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;in time by one cycle. If this occurs, a&amp;nbsp;bubble&amp;nbsp;must be inserted to stall the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;operation until the data is ready.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/b&gt;&lt;ol style=&quot;line-height: 19px; list-style-image: none; margin: 0.3em 0px 0px 3.2em; padding: 0px; text-align: left;&quot;&gt;
&lt;/ol&gt;
&lt;ol style=&quot;line-height: 19px; list-style-image: none; margin: 0.3em 0px 0px 3.2em; padding: 0px; text-align: left;&quot;&gt;
&lt;/ol&gt;
&lt;ol style=&quot;line-height: 19px; list-style-image: none; margin: 0.3em 0px 0px 3.2em; padding: 0px;&quot;&gt;
&lt;/ol&gt;
&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-yRxS0Kx_eW3qhnshEfGHQN8ShXuKzhg0qG_ICRcmjWRN3QXsfTTT4Fy-eP3Zcq0ldQzS1GrRQEIIabGZQhf9W4FKS3UYywJ40MDCYaW0LdNjvhqKXZcGu9LGYnWEq1Rj5gVXNpCI7nI/s1600/320px-Data_Forwarding_(Two_Stage,_error).svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-yRxS0Kx_eW3qhnshEfGHQN8ShXuKzhg0qG_ICRcmjWRN3QXsfTTT4Fy-eP3Zcq0ldQzS1GrRQEIIabGZQhf9W4FKS3UYywJ40MDCYaW0LdNjvhqKXZcGu9LGYnWEq1Rj5gVXNpCI7nI/s1600/320px-Data_Forwarding_(Two_Stage,_error).svg.png&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1McgCSF9wLYorbm5NgFuXCpamXEZ0WiD-6qAVk0aV9IeI1bDigsUN2_A9rKuqyx9qt7WK_XbNLZl80PKt3Eehg9otKWf2ZqujBU7lSrCpdVqm1g7E8dcaG0Xd4zciWmFe6ioEQHsImCY/s1600/370px-Data_Forwarding_(Two_Stage).svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1McgCSF9wLYorbm5NgFuXCpamXEZ0WiD-6qAVk0aV9IeI1bDigsUN2_A9rKuqyx9qt7WK_XbNLZl80PKt3Eehg9otKWf2ZqujBU7lSrCpdVqm1g7E8dcaG0Xd4zciWmFe6ioEQHsImCY/s1600/370px-Data_Forwarding_(Two_Stage).svg.png&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;mw-headline&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Control_hazards&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Control hazards&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The branch resolution recurrence goes through quite a bit of circuitry: the instruction cache read, register file read, branch condition compute (which involves a 32-bit compare on the MIPS CPUs), and the next instruction address multiplexer.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Because branch and jump targets are calculated in parallel to the register read, RISC ISAs typically do not have instructions which branch to a register+offset address. Jump to register is supported.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;On any branch taken, the instruction immediately after the branch is always fetched from the instruction cache. If this instruction is ignored, there is a one cycle per taken branch&amp;nbsp;IPC&amp;nbsp;penalty, which is quite large.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Predict Not Taken: Always fetch the instruction after the branch from the instruction cache, but only execute it if the branch is not taken. If the branch is not taken, the pipeline stays full. If the branch is taken, the instruction is flushed (marked as if it were a NOP), and one cycle&#39;s opportunity to finish an instruction is lost.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Branch Likely: Always fetch the instruction after the branch from the instruction cache, but only execute it if the branch was taken. The compiler can always fill the branch delay slot on such a branch, and since branches are more often taken than not, such branches have a smaller IPC penalty than the previous kind.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Branch Delay Slot: Always fetch the instruction after the branch from the instruction cache, and always execute it, even if the branch is taken. Instead of taking an IPC penalty for some fraction of branches either taken (perhaps 60%) or not taken (perhaps 40%), branch delay slots take an IPC penalty for those branches into which the compiler could not schedule the branch delay slot. The SPARC, MIPS, and MC88K designers designed a branch delay slot into their ISAs.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Branch Prediction: In parallel with fetching each instruction, guess if the instruction is a branch or jump, and if so, guess the target. On the cycle after a branch or jump, fetch the instruction at the guessed target. When the guess is wrong, flush the incorrectly fetched target.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Compilers typically have some difficulty finding logically independent instructions to place after the branch (the instruction after the branch is called the delay slot), so that they must insert NOPs into the delay slots.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Superscalar&amp;nbsp;processors, which fetch multiple instructions per cycle and must have some form of branch prediction, do not benefit from delayed branches. The&amp;nbsp;Alpha&amp;nbsp;ISA left out delayed branches, as it was intended for superscalar processors.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;line-height: 19px; list-style-image: url(data:image/png; list-style-type: square; margin: 0.3em 0px 0px 1.6em; padding: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The most serious drawback to delayed branches is the additional control complexity they entail. If the delay slot instruction takes an exception, the processor has to be restarted on the branch, rather than that next instruction. Exceptions then have essentially two addresses, the exception address and the restart address, and generating and distinguishing between the two correctly in all cases has been a source of bugs for later designs.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The Instruction Cache on these machines had a latency of one cycle. During the Instruction Fetch stage, a 32-bit instruction was fetched from the cache.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The PC predictor sends the&amp;nbsp;Program Counter&amp;nbsp;(PC) to the Instruction Cache to read the current instruction. At the same time, the PC predictor predicts the address of the next instruction by incrementing the PC by 4 (all instructions were 4 bytes long). This prediction was always wrong in the case of a taken branch, jump, or exception (see&amp;nbsp;delayed branches, below). Later machines would use more complicated and accurate algorithms (branch prediction&amp;nbsp;and&amp;nbsp;branch target prediction) to guess the next instruction address.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Unlike earlier microcoded machines, the first RISC machines had no&amp;nbsp;microcode. Once fetched from the instruction cache, the instruction bits were shifted down the pipeline, so that simple combinational logic in each pipeline stage could produce the control signals for the datapath directly from the instruction bits. As a result, very little decoding is done in the stage traditionally called the decode stage.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;All MIPS, SPARC, and DLX instructions have at most two register inputs. During the decode stage, these two register names are identified within the instruction, and the two registers named are read from the&amp;nbsp;register file. In the MIPS design, the register file had 32 entries.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;At the same time the register file was read, instruction issue logic in this stage determined if the pipeline was ready to execute the instruction in this stage. If not, the issue logic would cause both the Instruction Fetch stage and the Decode stage to stall. On a stall cycle, the stages would prevent their initial flops from accepting new bits.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;If the instruction decoded was a branch or jump, the target address of the branch or jump was computed in parallel with reading the register file. The branch condition is computed after the register file is read, and if the branch is taken or if the instruction is a jump, the PC predictor in the first stage is assigned the branch target, rather than the incremented PC that has been computed.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The decode stage ended up with quite a lot of hardware: the MIPS instruction set had the possibility of branching if two registers were equal, so a 32-bit-wide AND tree ran in series after the register file read, making a very long critical path through this stage. Also, the branch target computation generally required a 16 bit add and a 14 bit incrementer. Resolving the branch in the decode stage made it possible to have just a single-cycle branch mispredict penalty. Since branches were very often taken (and thus mispredicted), it was very important to keep this penalty low.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Instructions on these simple RISC machines can be divided into three latency classes according to the type of the operation:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;During this stage, single cycle latency instructions simply have their results forwarded to the next stage. This forwarding ensures that both single and two cycle instructions always write their results in the same stage of the pipeline, so that just one write port to the register file can be used, and it is always available.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;For direct mapped and virtually tagged data caching, the simplest by far of the&amp;nbsp;numerous data cache organizations, two&amp;nbsp;SRAMs&amp;nbsp;are used, one storing data and the other storing tags.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;If the instruction is a load, data is read from the data cache, so both SRAMs are read in parallel during the access stage of the instruction. The single tag read from the tag SRAM is compared with the virtual address specified in the load instruction, and if the two are equal then the datum recently retrieved from the data SRAM is the desired element of data. The success of finding the tag immediately in the tag SRAM is called a&amp;nbsp;cache hit&amp;nbsp;and allows the load instruction to complete the writeback stage normally. If the tag from the tag SRAM and virtual address from the load instruction are not equal, then the data is not in the cache and the datum retrieved from the data SRAM is useless, referred to as a&amp;nbsp;cache miss. The CPU pipeline must suspend operation (described below) while a state machine updates the cache from memory, reading the required data from memory into the cache and optionally writing any dirty data evicted from the cache back into memory.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;During a store, the tag SRAM is read to determine if the store is a cache hit or cache miss. If a cache miss occurs, the previously described cache update state machine brings the correct datum into the cache. Note that this means store data cannot be written to the cache data SRAM during the access stage because the processor does not yet know if the correct line is resident. Instead, the store data is held in a Store Data Queue, until it can be written to the cache data SRAM during the&amp;nbsp;&lt;i&gt;next&lt;/i&gt;&amp;nbsp;store instruction. In a classic RISC pipeline, the Store Data Queue is just a single 32 bit register. For later reference, the virtual address written is held in the Store Address Queue, also a single 32 bit register. On more complicated pipelines, these queues can have multiple hardware registers and variable length.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;To complicate things further, a load instruction immediately after a store instruction could reference the same memory address, in which case the data must come from the Store Data Queue rather than from the cache&#39;s data SRAM. For this reason, during a load instruction the virtual address included in the instruction is checked against the Store Address Queue in addition to the tag cache SRAM. Should the virtual address included in the load instruction be matched by an entry in the Store Address Queue, the associated data from the Store Data Queue is forwarded during the writeback stage rather than any data from the data cache SRAM without changing the flow of the load operation through the pipeline.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;During this stage, both single cycle and two cycle instructions write their results into the register file.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Structural hazards are when two instructions might attempt to use the same resources at the same time.&amp;nbsp;Classic RISC pipelines avoided these hazards by replicating hardware. In particular, branch instructions could have used the ALU to compute the target address of the branch. If the ALU were used in the decode stage for that purpose, an ALU instruction followed by a branch would have seen both instructions attempt to use the ALU simultaneously. It is simple to resolve this conflict by designing a specialized branch target adder into the decode stage.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Data hazards are when an instruction, scheduled blindly, would attempt to use data before the data is available in the register file.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Data hazards are avoided in one of two ways:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Suppose the CPU is executing the following piece of code:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The instruction fetch and decode stages will send the second instruction one cycle after the first. They flow down the pipeline as shown in this diagram:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; line-height: 19px; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/a/a4/Pipeline_Data_Hazard.svg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/a/a4/Pipeline_Data_Hazard.svg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; line-height: 19px; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;In a&amp;nbsp;&lt;i&gt;naïve pipeline&lt;/i&gt;, without hazard consideration, the data hazard progresses as follows:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;In cycle 3, the&amp;nbsp;&lt;tt&gt;SUB&lt;/tt&gt;&amp;nbsp;instruction calculates the new value for&amp;nbsp;&lt;tt&gt;r10&lt;/tt&gt;. In the same cycle, the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;operation is decoded, and the value of&amp;nbsp;&lt;tt&gt;r10&lt;/tt&gt;&amp;nbsp;is fetched from the register file. However, the&amp;nbsp;&lt;tt&gt;SUB&lt;/tt&gt;instruction has not yet written its result to&amp;nbsp;&lt;tt&gt;r10&lt;/tt&gt;. Write-back of this normally occurs in cycle 5 (green box). Therefore, the value read from the register file and passed to the ALU (in the Execute stage of the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;operation, red box) is incorrect.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Instead, we must pass the data that was computed by&amp;nbsp;&lt;tt&gt;SUB&lt;/tt&gt;&amp;nbsp;back to the Execute stage (i.e. to the red circle in the diagram) of the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;operation&amp;nbsp;&lt;i&gt;before&lt;/i&gt;&amp;nbsp;it is normally written-back. The solution to this problem is a pair of bypass multiplexers. These multiplexers sit at the end of the decode stage, and their flopped outputs are the inputs to the ALU. Each multiplexer selects between:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Decode stage logic compares the registers written by instructions in the execute and access stages of the pipeline to the registers read by the instruction in the decode stage, and cause the multiplexers to select the most recent data. These bypass multiplexers make it possible for the pipeline to execute simple instructions with just the latency of the ALU, the multiplexer, and a flip-flop. Without the multiplexers, the latency of writing and then reading the register file would have to be included in the latency of these instructions.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Note that the data can only be passed&amp;nbsp;&lt;i&gt;forward&lt;/i&gt;&amp;nbsp;in time - the data cannot be bypassed back to an earlier stage if it has not been processed yet. In the case above, the data is passed forward (by the time the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;is ready for the register in the ALU, the&amp;nbsp;&lt;tt&gt;SUB&lt;/tt&gt;&amp;nbsp;has already computed it).&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; line-height: 19px; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/c/c3/Data_Forwarding_(One_Stage).svg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/c/c3/Data_Forwarding_(One_Stage).svg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; line-height: 19px; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; line-height: 19px; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;However, consider the following instructions:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The data read from the address&amp;nbsp;&lt;tt&gt;adr&lt;/tt&gt;&amp;nbsp;will not be present in the data cache until after the Memory Access stage of the&amp;nbsp;&lt;tt&gt;LD&lt;/tt&gt;&amp;nbsp;instruction. By this time, the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;instruction will already be through the ALU. To resolve this would require the data from memory to be passed backwards in time to the input to the ALU. This is not possible. The solution is to delay the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;instruction by one cycle. The data hazard is detected in the decode stage, and the fetch and decode stages are&amp;nbsp;stalled&amp;nbsp;- they are prevented from flopping their inputs and so stay in the same state for a cycle. The execute, access, and write-back stages downstream see an extra no-operation instruction (NOP) inserted between the&amp;nbsp;&lt;tt&gt;LD&lt;/tt&gt;&amp;nbsp;and&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;instructions.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;This NOP is termed a &quot;pipeline bubble&quot; since it floats in the pipeline, like an air bubble, occupying resources but not producing useful results. The hardware to detect a data hazard and stall the pipeline until the hazard is cleared is called a&amp;nbsp;pipeline interlock.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b style=&quot;line-height: 19px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;b style=&quot;line-height: 19px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;A pipeline interlock does not have to be used with any data forwarding, however. The first example of the&amp;nbsp;&lt;tt&gt;SUB&lt;/tt&gt;&amp;nbsp;followed by&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;and the second example of&amp;nbsp;&lt;tt&gt;LD&lt;/tt&gt;&amp;nbsp;followed by&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&amp;nbsp;can be solved by stalling the first stage by three cycles until write-back is achieved, and the data in the register file is correct, causing the correct register value to be fetched by the&amp;nbsp;&lt;tt&gt;AND&lt;/tt&gt;&#39;s Decode stage. This causes quite a performance hit, as the processor spends a lot of time processing nothing, but clock speeds can be increased as there is less forwarding logic to wait for.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;This data hazard can be detected quite easily when the program&#39;s machine code is written by the compiler. The original Stanford RISC machine relied on the compiler to add the NOP instructions in this case, rather than having the circuitry to detect and (more taxingly) stall the first two pipeline stages. Hence the name MIPS: Microprocessor without Interlocked Pipeline Stages. It turned out that the extra NOP instructions added by the compiler expanded the program binaries enough that the instruction cache hit rate was reduced. The stall hardware, although expensive, was put back into later designs to improve instruction cache hit rate, at which point the acronym no longer made sense.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Control hazards are caused by conditional and unconditional branching.&amp;nbsp;The classic RISC pipeline resolves branches in the decode stage, which means the branch resolution recurrence is two cycles long. There are three implications:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;There are four schemes to solve this performance problem with branches:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Delayed branches were controversial, first, because their semantics are complicated. A delayed branch specifies that the jump to a new location happens&amp;nbsp;&lt;i&gt;after&lt;/i&gt;&amp;nbsp;the next instruction. That next instruction is the one unavoidably loaded by the instruction cache after the branch.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/5191238995592110258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2013/03/risc-pipeline.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5191238995592110258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5191238995592110258'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2013/03/risc-pipeline.html' title='RISC PIPELINE'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAIhRvuBRyOzaCvBQoUmgJqH0vs26kbFO0kukluinDaD2fAsCWF2CTpUYcylnKQ3rgViUwqESdeOxprA54YV2SpZSOg0OtjeK1cgI4oUU0JI2pMPd1nGazXafuNMT4h1rW2IheZod11Go/s72-c/800px-Fivestagespipeline.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-2568845446520086618</id><published>2012-07-06T18:28:00.000+05:30</published><updated>2013-03-11T21:10:26.576+05:30</updated><title type='text'>MEMORY CONTROLLER</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;The&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;memory controller&lt;/span&gt;&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;is a digital circuit which manages the flow of data going to and from the&amp;nbsp;&lt;/span&gt;main memory&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;. It can be a separate chip or integrated into another chip, such as on the&amp;nbsp;&lt;/span&gt;die&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;&amp;nbsp;of a&amp;nbsp;&lt;/span&gt;microprocessor&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;. This is also called a Memory Chip Controller (MCC).&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;line-height: 19px; text-align: -webkit-auto;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Computers using&amp;nbsp;Intel&amp;nbsp;microprocessors have traditionally had a memory controller implemented on their motherboard&#39;s&amp;nbsp;northbridge, but many modern&amp;nbsp;microprocessors, such as&amp;nbsp;DEC/Compaq&#39;sAlpha 21364,&amp;nbsp;AMD&#39;s&amp;nbsp;Athlon 64&amp;nbsp;and&amp;nbsp;Opteron&amp;nbsp;processors,&amp;nbsp;IBM&#39;s&amp;nbsp;POWER5,&amp;nbsp;Sun Microsystems&#39;s&amp;nbsp;UltraSPARC T1, and more recently&amp;nbsp;Intel&#39;s&amp;nbsp;Core i7&amp;nbsp;have an integrated memory controller (IMC) on the microprocessor in order to reduce&amp;nbsp;memory latency. While this has the potential to increase the system&#39;s performance, it locks the microprocessor to a specific type (or types) of memory, forcing a redesign in order to support newer memory technologies. When&amp;nbsp;DDR2 SDRAM&amp;nbsp;was introduced, AMD released new Athlon 64 CPUs. These new models, with a DDR2 controller, use a different physical socket (known as&amp;nbsp;Socket AM2), so that they will only fit in motherboards designed for the new type of RAM. When the memory controller is not on-die, the same CPU may be installed on a new motherboard, with an updated&amp;nbsp;northbridge.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The integration of the memory controller onto the die of the microprocessor is not a new concept. Some microprocessors in the 1990s such as the DEC&amp;nbsp;Alpha 21066&amp;nbsp;and HP&amp;nbsp;PA-7300LC&amp;nbsp;had integrated memory controllers, but rather than for performance gains, this was implemented to reduce the cost of systems by eliminating the need for an external memory controller.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;/div&gt;
&lt;h2 style=&quot;background-image: none; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; margin: 0px 0px 0.6em; overflow: hidden; padding-bottom: 0.17em; padding-top: 0.5em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Purpose&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Purpose&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;line-height: 19px; margin-bottom: 0.5em; margin-top: 0.4em; text-align: -webkit-auto;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Memory controllers contain the logic necessary to read and write to&amp;nbsp;DRAM, and to &quot;refresh&quot; the DRAM by sending current through the entire device. Without constant refreshes, DRAM will lose the data written to it as the&amp;nbsp;capacitors&amp;nbsp;leak their&amp;nbsp;charge&amp;nbsp;within a fraction of a second (not less than 64 milliseconds according to&amp;nbsp;JEDEC&amp;nbsp;standards).&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Reading and writing to DRAM is performed by selecting the row and column data addresses of the DRAM as the inputs to the&amp;nbsp;multiplexer&amp;nbsp;circuit, where the&amp;nbsp;demultiplexer&amp;nbsp;on the DRAM uses the converted inputs to select the correct memory location and return the data, which is then passed back through a multiplexer to consolidate the data in order to reduce the required bus width for the operation.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Bus width is the number of parallel lines available to communicate with the memory cell. Memory controllers&#39; bus widths range from&amp;nbsp;8-bit&amp;nbsp;in earlier systems, to 512-bit in more complicated systems and video cards (typically implemented as four&amp;nbsp;64-bit&amp;nbsp;simultaneous memory controllers operating in parallel, though some are designed to operate in &quot;gang mode&quot; where two 64-bit memory controllers can be used to access a&amp;nbsp;128-bit&amp;nbsp;memory device).&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0.5em; margin-top: 0.4em;&quot;&gt;
&lt;/div&gt;
&lt;h2 style=&quot;background-image: none; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; margin: 0px 0px 0.6em; overflow: hidden; padding-bottom: 0.17em; padding-top: 0.5em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Double_data_rate_memory&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Double data rate memory&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Double Data Rate&amp;nbsp;DDR memory controllers are used to drive&amp;nbsp;DDR SDRAM, where data is transferred on the rising and falling access of the memory clock of the system. DDR memory controllers are significantly more complicated than Single Data Rate controllers, but allow for twice the data to be transferred without increasing the clock rate or increasing the bus width to the memory cell.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2 style=&quot;background-image: none; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; margin: 0px 0px 0.6em; overflow: hidden; padding-bottom: 0.17em; padding-top: 0.5em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot;&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Dual-channel_memory&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Dual-channel memory&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;span class=&quot;mw-headline&quot;&gt;
&lt;div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Dual Channel&amp;nbsp;memory controllers are memory controllers where the DRAM devices are separated on to two different buses to allow two memory controllers to access them in parallel. This doubles the theoretical amount of bandwidth of the bus. In theory, more channels can be built (a channel for every DRAM cell would be the ideal solution), but due to wire count,&amp;nbsp;line capacitance, and the need for parallel access lines to have identical lengths, more channels are very difficult to add.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2 style=&quot;background-image: none; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; margin: 0px 0px 0.6em; overflow: hidden; padding-bottom: 0.17em; padding-top: 0.5em;&quot;&gt;
&lt;span class=&quot;mw-headline&quot;&gt;
&lt;span class=&quot;mw-headline&quot; id=&quot;Fully_buffered_memory&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Fully buffered memory&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;span class=&quot;mw-headline&quot;&gt;
&lt;div&gt;
&lt;span class=&quot;mw-headline&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Fully buffered memory&amp;nbsp;systems place a memory buffer device on every&amp;nbsp;memory module&amp;nbsp;(called an&amp;nbsp;FB-DIMM&amp;nbsp;when Fully Buffered RAM is used), which unlike traditional memory controller devices, use a serial data link to the memory controller instead of the parallel link used in previous RAM designs. This decreases the number of the wires necessary to place the memory devices on a motherboard (allowing for a smaller number of layers to be used, meaning more memory devices can be placed on a single board), at the expense of increasing latency (the time necessary to access a memory location). This increase is due to the time required to convert the parallel information read from the DRAM cell to the serial format used by the FB-DIMM controller, and back to a parallel form in the memory controller on the motherboard. In theory, the FB-DIMM&#39;s memory buffer device could be built to access any DRAM cells, allowing for memory cell agnostic memory controller design, but this has not been demonstrated, as the technology is in its infancy.&lt;/span&gt;&lt;/b&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/2568845446520086618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2012/07/memory-controller.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2568845446520086618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2568845446520086618'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2012/07/memory-controller.html' title='MEMORY CONTROLLER'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-1407864634017693180</id><published>2011-06-10T21:33:00.000+05:30</published><updated>2012-07-06T18:28:02.015+05:30</updated><title type='text'>TRANSLATION LOOKASIDE BUFFER</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;A&amp;nbsp;translation lookaside buffer&amp;nbsp;(TLB) is a&amp;nbsp;CPU&amp;nbsp;cache&amp;nbsp;that&amp;nbsp;memory management hardware&amp;nbsp;uses to improve&amp;nbsp;virtual address&amp;nbsp;translation speed. All current desktop and server processors (such as&amp;nbsp;x86) use a TLB to map virtual and physical address spaces, and it is ubiquitous in any hardware which utilizes virtual memory.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The TLB is typically implemented as&amp;nbsp;content-addressable memory&amp;nbsp;(CAM). The CAM search key is the virtual address and the search result is a physical address. If the requested address is present in the TLB, the CAM search yields a match quickly and the retrieved physical address can be used to access memory. This is called a TLB hit. If the requested address is not in the TLB, it is a miss, and the translation proceeds by looking up the&amp;nbsp;page table&amp;nbsp;in a process called a&amp;nbsp;&lt;i&gt;page walk&lt;/i&gt;. The page walk is an expensive process, as it involves reading the contents of multiple memory locations and using them to compute the physical address. After the physical address is determined by the page walk, the virtual address to physical address mapping is entered into the TLB.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;A TLB has a fixed number of slots that contain&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;page table&lt;/span&gt;&amp;nbsp;entries, which map virtual addresses to&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;physical addresses&lt;/span&gt;. The&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;virtual memory&lt;/span&gt;&amp;nbsp;is the space seen from a process. This space is segmented in pages of a prefixed size. The&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;page table&lt;/span&gt;&amp;nbsp;(generally loaded in memory) keeps track of where the virtual pages are loaded in the physical memory. The TLB is a cache of the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;page table&lt;/span&gt;; that is, only a subset of its content are stored.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The TLB references physical memory addresses in its table. It may reside between the CPU and the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;CPU cache&lt;/span&gt;, between the CPU cache and&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;primary storage&lt;/span&gt;&amp;nbsp;memory, or between levels of a multi-level cache. The placement determines whether the cache uses physical or virtual addressing. If the cache is virtually addressed, requests are sent directly from the CPU to the cache, and the TLB is accessed only on a cache miss. If the cache is physically addressed, the CPU does a TLB lookup on every memory operation and the resulting physical address is sent to the cache. There are pros and cons to both implementations. Caches that use virtual addressing have for their key part of the virtual address plus, optionally, a key called an &quot;address space identifier&quot; (ASID). Caches that don&#39;t have ASIDs must be flushed every&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;context switch&lt;/span&gt;&amp;nbsp;in a&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot;&gt;multiprocessing&lt;/span&gt;&amp;nbsp;environment.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Implication For Performance:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The CPU has to access main memory for a:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style=&quot;line-height: 1.5em; list-style-type: square; margin-bottom: 0.5em; margin-left: 1.5em; margin-right: 0px; margin-top: 0.3em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;instruction cache miss&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;data cache miss&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;TLB miss&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The third case (the simplest case) is where the desired information itself actually&amp;nbsp;&lt;i&gt;is&lt;/i&gt;&amp;nbsp;in a cache, but the information for virtual-to-physical translation is not in a TLB. These are all about equally slow, so a program &quot;thrashing&quot; the TLB will run just as poorly as one thrashing an instruction or data cache. That is why a well functioning TLB is important.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/1407864634017693180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/06/translation-lookaside-buffer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/1407864634017693180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/1407864634017693180'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/06/translation-lookaside-buffer.html' title='TRANSLATION LOOKASIDE BUFFER'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-8874018258816087802</id><published>2011-04-27T21:07:00.000+05:30</published><updated>2011-04-27T21:07:19.838+05:30</updated><title type='text'>VIRTUAL FUNCTION</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;A&amp;nbsp;virtual function&amp;nbsp;or&amp;nbsp;virtual method&amp;nbsp;is a&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-origin: initial;&quot;&gt;function&lt;/span&gt;&amp;nbsp;or&amp;nbsp;method&amp;nbsp;whose behaviour can be&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-origin: initial;&quot;&gt;overridden&lt;/span&gt;&amp;nbsp;within an inheriting class by a function with the same&amp;nbsp;signature. This concept is a very important part of the&amp;nbsp;polymorphism&amp;nbsp;portion of&amp;nbsp;object-oriented programming&amp;nbsp;(OOP).&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The concept of the virtual function solves the following problem:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;In OOP when a derived class inherits a base class, an object of the derived class may be referred to (or cast) as either being the base class type or the derived class type. If there are base class methods overridden by the derived class, the method call behaviour is ambiguous.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The distinction between virtual and non-virtual resolves this ambiguity. If the function in question is designated &quot;virtual&quot; in the base class then the derived class&#39;s function would be called (if it exists). If it is not virtual, the base class&#39;s function would be called.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Virtual functions overcome the problems with the type-field solution by allowing the programmer to declare functions in a base class that can be redefined in each derived class.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;In C++&amp;nbsp;&lt;i&gt;virtual function&lt;/i&gt;s or&amp;nbsp;&lt;i&gt;virtual methods&lt;/i&gt;&amp;nbsp;are declared by using the&amp;nbsp;&lt;i&gt;virtual&lt;/i&gt;&amp;nbsp;keyword to the function&#39;s declaration.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;For example, a base class&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;Animal&lt;/code&gt;&amp;nbsp;could have a virtual function&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;eat&lt;/code&gt;. Subclass&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;Fish&lt;/code&gt;&amp;nbsp;would implement&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;eat()&lt;/code&gt;&amp;nbsp;differently than subclass&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;Wolf&lt;/code&gt;, but you can invoke&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;eat()&lt;/code&gt;&amp;nbsp;on any class instance referred to as Animal, and get the&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;eat()&lt;/code&gt;&amp;nbsp;behaviour of the specific subclass.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;This allows a programmer to process a list of objects of class&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;Animal&lt;/code&gt;, telling each in turn to eat (by calling&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9;&quot;&gt;eat()&lt;/code&gt;),&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-origin: initial;&quot;&gt;with no knowledge of what kin&lt;/span&gt;d&amp;nbsp;of animal may be in the list. You also do not need to have knowledge of how each animal eats, or what the complete set of possible animal types might be.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The following is an example in C++. Note that this example is not&amp;nbsp;exception-safe. In particular, it may leak resources if&amp;nbsp;&lt;tt&gt;new&lt;/tt&gt;&amp;nbsp;or&amp;nbsp;&lt;tt&gt;vector::push_back&lt;/tt&gt;&amp;nbsp;throws an exception.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mw-geshi&quot; dir=&quot;ltr&quot; style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; font-family: sans-serif; font-size: 13px; font-weight: normal; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em; text-align: left;&quot;&gt;&lt;div class=&quot;cpp source-cpp&quot; style=&quot;font-family: monospace; line-height: normal;&quot;&gt;&lt;pre class=&quot;de1&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: white; border-bottom-style: none; border-bottom-width: 0px; border-left-color: white; border-left-style: none; border-left-width: 0px; border-right-color: white; border-right-style: none; border-right-width: 0px; border-top-color: white; border-top-style: none; border-top-width: 0px; color: black; font-family: monospace, &#39;Courier New&#39; !important; font: normal normal normal 1em/1.2em monospace; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: top;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;co2&quot; style=&quot;color: #339900;&quot;&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co2&quot; style=&quot;color: #339900;&quot;&gt;#include &amp;lt;vector&amp;gt;&lt;/span&gt;
 
&lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; Animal &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; eat&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
            std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;I eat like a generic Animal.&quot;&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; ~Animal&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
 
&lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; Wolf &lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Animal &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; eat&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
            std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;I eat like a wolf!&quot;&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; ~Wolf&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
 
&lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; Fish &lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Animal &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; eat&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
            std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;I eat like a fish!&quot;&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; ~Fish&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
 
&lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; GoldFish &lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Fish &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; eat&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
            std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;I eat like a goldfish!&quot;&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; ~GoldFish&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
 
&lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; OtherAnimal &lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Animal &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;kw2&quot; style=&quot;color: blue;&quot;&gt;virtual&lt;/span&gt; ~OtherAnimal&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
 
&lt;span class=&quot;kw4&quot; style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; main&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
    std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span class=&quot;sy2&quot; style=&quot;color: #000040;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;gt;&lt;/span&gt; animals&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
    animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; Animal&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
    animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; Wolf&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
    animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; Fish&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
    animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; GoldFish&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
    animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;new&lt;/span&gt; OtherAnimal&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
 
    &lt;span class=&quot;kw1&quot; style=&quot;color: blue;&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;std&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span class=&quot;sy2&quot; style=&quot;color: #000040;&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot; style=&quot;color: #007788;&quot;&gt;const_iterator&lt;/span&gt; it &lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;=&lt;/span&gt; animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; it &lt;span class=&quot;sy3&quot; style=&quot;color: #000040;&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;=&lt;/span&gt; animals.&lt;span class=&quot;me1&quot; style=&quot;color: #007788;&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy2&quot; style=&quot;color: #000040;&quot;&gt;++&lt;/span&gt;it&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sy2&quot; style=&quot;color: #000040;&quot;&gt;*&lt;/span&gt;it&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy2&quot; style=&quot;color: #000040;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot; style=&quot;color: navy;&quot;&gt;&amp;gt;&lt;/span&gt;eat&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot; style=&quot;color: #0000dd;&quot;&gt;delete&lt;/span&gt; &lt;span class=&quot;sy2&quot; style=&quot;color: #000040;&quot;&gt;*&lt;/span&gt;it&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
 
    &lt;span class=&quot;kw1&quot; style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot; style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot; style=&quot;color: teal;&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: green;&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;font-family: sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Output with the virtual function&amp;nbsp;&lt;code style=&quot;background-color: #f9f9f9; font-family: monospace, &#39;Courier New&#39;;&quot;&gt;Animal::eat()&lt;/code&gt;:&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; font-family: monospace, &#39;Courier New&#39;; font-size: 13px; font-weight: normal; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;I eat like a generic Animal.
I eat like a wolf!
I eat like a fish!
I eat like a goldfish!
I eat like a generic Animal.
&lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;font-family: sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Output if&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;background-color: #f3f3f3; font-family: monospace, &#39;Courier New&#39;;&quot;&gt;Animal::eat()&lt;/code&gt;&amp;nbsp;were not declared as virtual:&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #f9f9f9; border-bottom-color: rgb(47, 111, 171); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(47, 111, 171); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(47, 111, 171); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(47, 111, 171); border-top-style: dashed; border-top-width: 1px; color: black; font-family: monospace, &#39;Courier New&#39;; font-size: 13px; font-weight: normal; line-height: 1.1em; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;I eat like a generic Animal.
I eat like a generic Animal.
I eat like a generic Animal.
I eat like a generic Animal.
I eat like a generic Animal.
&lt;/span&gt;&lt;/pre&gt;&lt;h3 style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; border-bottom-color: initial; border-bottom-style: none; border-bottom-width: initial; color: black; font-family: sans-serif; margin-bottom: 0.3em; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0.17em; padding-top: 0.5em; width: auto;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/8874018258816087802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/virtual-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/8874018258816087802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/8874018258816087802'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/virtual-function.html' title='VIRTUAL FUNCTION'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-8924719116556671132</id><published>2011-04-24T20:37:00.000+05:30</published><updated>2011-04-24T20:37:01.393+05:30</updated><title type='text'>COST BENEFIT</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;A cost benefit analysis is done to determine how well, or how poorly, a planned action will turn out. Although a cost benefit analysis can be used for almost anything, it is most commonly done on financial questions. Since the cost benefit analysis relies on the addition of positive factors and the subtraction of negative ones to determine a net result, it is also known as running the numbers. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;u&gt;Cost Benefit Analysis&lt;/u&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;A cost benefit analysis finds, quantifies, and adds all the positive factors. These are the benefits. Then it identifies, quantifies, and subtracts all the negatives, the costs. The difference between the two indicates whether the planned action is advisable. The real trick to doing a cost benefit analysis well is making sure you include all the costs and all the benefits and properly quantify them. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Should we hire an additional sales person or assign overtime? Is it a good idea to purchase the new stamping machine? Will we be better off putting our free cash flow into securities rather than investing in additional capital equipment? Each of these questions can be answered by doing a proper cost benefit analysis. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Example Cost Benefit Analysis&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;As the Production Manager, you are proposing the purchase of a $1 Million stamping machine to increase output. Before you can present the proposal to the Vice President, you know you need some facts to support your suggestion, so you decide to run the numbers and do a cost benefit analysis. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;You itemize the benefits. With the new machine, you can produce 100 more units per hour. The three workers currently doing the stamping by hand can be replaced. The units will be higher quality because they will be more uniform. You are convinced these outweigh the costs. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;There is a cost to purchase the machine and it will consume some electricity. Any other costs would be insignificant. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;You calculate the selling price of the 100 additional units per hour multiplied by the number of production hours per month. Add to that two percent for the units that aren&#39;t rejected because of the quality of the machine output. You also add the monthly salaries of the three workers. That&#39;s a pretty good total benefit. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Then you calculate the monthly cost of the machine, by dividing the purchase price by 12 months per year and divide that by the 10 years the machine should last. The manufacturer&#39;s specs tell you what the power consumption of the machine is and you can get power cost numbers from accounting so you figure the cost of electricity to run the machine and add the purchase cost to get a total cost figure. &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;You subtract your total cost figure from your total benefit value and your analysis shows a healthy profit. All you have to do now is present it to the VP, right? Wrong. You&#39;ve got the right idea, but you left out a lot of detail.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/8924719116556671132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/cost-benefit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/8924719116556671132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/8924719116556671132'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/cost-benefit.html' title='COST BENEFIT'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-2340097421725909476</id><published>2011-04-22T11:22:00.000+05:30</published><updated>2011-04-22T15:25:49.518+05:30</updated><title type='text'>FACT FINDING TECHNIQUE</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;To study any system the analyst needs to do collect facts and all relevant information. the facts when expressed in quantitative form are termed as data. The success of any project is depended upon the accuracy of available data. Accurate information can be collected with help of certain methods/ techniques. These specific methods for finding information of the system are termed as fact finding techniques. Interview, Questionnaire, Record View and Observations are the different fact finding techniques used by the analyst. The analyst may use more than one technique for investigation.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 12pt; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt; &lt;br /&gt;
&lt;u&gt;Interview &lt;/u&gt;&lt;br /&gt;
This method is used to collect the information from groups or individuals. Analyst selects the people who are related with the system for the interview. In this method the analyst sits face to face with the people and records their responses. The interviewer must plan in advance the type of questions he/ she is going to ask and should be ready to answer any type of question. He should also choose a suitable place and time which will be comfortable for the respondent. &lt;br /&gt;
&lt;br /&gt;
The information collected is quite accurate and reliable as the interviewer can clear and cross check the doubts there itself. This method also helps gap the areas of misunderstandings and help to discuss about the future problems. Structured and unstructured are the two sub categories of Interview. Structured interview is more formal interview where fixed questions are asked and specific information is collected whereas unstructured interview is more or less like a casual conversation where in-depth areas topics are covered and other information apart from the topic may also be obtained. &lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;
Questionnaire &lt;/u&gt;&lt;br /&gt;
It is the technique used to extract information from number of people. This method can be adopted and used only by an skillful analyst. The Questionnaire consists of series of questions framed together in logical manner. The questions are simple, clear and to the point. This method is very useful for attaining information from people who are concerned with the usage of the system and who are living in different countries. The questionnaire can be mailed or send to people by post. This is the cheapest source of fact finding. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Record View&lt;/u&gt; &lt;br /&gt;
The information related to the system is published in the sources like newspapers, magazines, journals, documents etc. This record review helps the analyst to get valuable information about the system and the organization. &lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Observation &lt;/u&gt;&lt;br /&gt;
Unlike the other fact finding techniques, in this method the analyst himself visits the organization and observes and understand the flow of documents, working of the existing system, the users of the system etc. For this method to be adopted it takes an analyst to perform this job as he knows which points should be noticed and highlighted. In analyst may observe the unwanted things as well and simply cause delay in the development of the new system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/2340097421725909476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/fact-finding-technique.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2340097421725909476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2340097421725909476'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/fact-finding-technique.html' title='FACT FINDING TECHNIQUE'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-5125437836202671803</id><published>2011-04-13T00:10:00.001+05:30</published><updated>2011-04-13T00:41:19.089+05:30</updated><title type='text'>INHERITANCE IN C++</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;span id=&quot;ContentPlaceHolder1_lblDescription&quot;&gt;&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Inheritance&lt;/span&gt; is the process of creating new classes from the existing class or classes.&lt;br /&gt;
&lt;br /&gt;
Using inheritance, one can create general class that defines traits common to a set of related items. This class can then be inherited (reused) by the other classes by using the properties of the existing ones with the addition of its own unique properties.&lt;br /&gt;
&lt;br /&gt;
The old class is referred to as the base class and the new classes, which are inherited from the base class, are called derived classes.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-12.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
In above figure, the class B contains the three member i.e. Property1, Property2 and Property3.&lt;br /&gt;
&lt;br /&gt;
The second class named as D contains four members i.e. Property1, Property2, Property3 and Property4.&lt;br /&gt;
&lt;br /&gt;
Out of these, three members (Property1, Property2, Property3) of the class D are same as that of class B, while the one member i.e. Property4 is unique.&lt;br /&gt;
&lt;br /&gt;
In the class D, instead of defining all the three members again, one can reuse them from the class B. This feature is known as inheritance which saves time, space, money and increases the reliability and efficiency.&lt;br /&gt;
&lt;br /&gt;
Forms of Inheritance:&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Single Inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
If a class is derived from a single base class, it is called as single inheritance.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Multiple Inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
If a class is derived from more than one base class, it is known as multiple inheritance&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Multilevel Inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
The classes can also be derived from the classes that are already derived. This type of inheritance is called multilevel inheritance.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Hierarchical Inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
If a number of classes are derived from a single base class, it is called as hierarchical inheritance&lt;br /&gt;
&lt;br /&gt;
A derived class can be defined as follows:&lt;br /&gt;
&lt;br /&gt;
class derived_class_name : access_specifier base_class_name&lt;br /&gt;
{ &lt;br /&gt;
data members of the derived class ; &lt;br /&gt;
member functions of the derived class ;&lt;br /&gt;
}&lt;br /&gt;
The colon (:), indicates that the class derived_class_name is derived from the class base_class_name.&lt;br /&gt;
The access_specifier may be public, private or protected (will be discussed further).&lt;br /&gt;
If no access_specifier is specified, it is private by default.&lt;br /&gt;
The access_specifier indicates whether the members of the base class are privately derived or publicly derived.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Public inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
When a derived class publicly inherits the base class, all the public members of the base class also become public to the derived class and the objects of the derived class can access the public members of the base class.&lt;br /&gt;
&lt;br /&gt;
The following program will illustrate the use of the single inheritance.&lt;br /&gt;
&lt;br /&gt;
This program has a base class B, from which class D is inherited publicly.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
#include&lt;iostream.h&gt;&lt;br /&gt;
class Rectangle&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
float length ; // This can&#39;t be inherited&lt;br /&gt;
public:&lt;br /&gt;
float breadth ; // The data and member functions are inheritable&lt;br /&gt;
void Enter_lb(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the length of the rectangle : &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; length ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the breadth of the rectangle : &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; breadth ;&lt;br /&gt;
}&lt;br /&gt;
float Enter_l(void)&lt;br /&gt;
{ return length ; }&lt;br /&gt;
}; // End of the class definition &lt;br /&gt;
&lt;br /&gt;
class Rectangle1 : public Rectangle&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
float area ;&lt;br /&gt;
public:&lt;br /&gt;
void Rec_area(void)&lt;br /&gt;
{ area = Enter_l( ) * breadth ; }&lt;br /&gt;
// area = length * breadth ; can&#39;t be used here&lt;br /&gt;
&lt;br /&gt;
void Display(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Length = &quot; &amp;lt;&amp;lt; Enter_l( ) ; // Object of the derived class can&#39;t&lt;br /&gt;
// inherit the private member of the base class. Thus the member&lt;br /&gt;
// function is used here to get the value of data member &#39;length&#39;.&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Breadth = &quot; &amp;lt;&amp;lt; breadth ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Area = &quot; &amp;lt;&amp;lt; area ;&lt;br /&gt;
}&lt;br /&gt;
}; // End of the derived class definition D&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
Rectangle1 r1 ;&lt;br /&gt;
r1.Enter_lb( );&lt;br /&gt;
r1.Rec_area( );&lt;br /&gt;
r1.Display( );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Figure- Public Inheritance&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-13.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Private inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
When a derived class privately inherits a base class, all the public members of the base class become private for the derived class.&lt;br /&gt;
&lt;br /&gt;
In this case, the public members of the base class can only be accessed by the member functions of the derived class.&lt;br /&gt;
&lt;br /&gt;
The objects of the derived class cannot access the public members of the base class.&lt;br /&gt;
&lt;br /&gt;
Note that whether the derived class is inherited publicly or privately from the base class, the private members of the base class cannot be inherited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
#include&lt;iostream.h&gt;&lt;br /&gt;
#include&lt;conio.h&gt;&lt;br /&gt;
class Rectangle&lt;br /&gt;
{&lt;br /&gt;
int length, breadth;&lt;br /&gt;
public:&lt;br /&gt;
void enter()&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter length: &quot;; cin &amp;gt;&amp;gt; length;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter breadth: &quot;; cin &amp;gt;&amp;gt; breadth;&lt;br /&gt;
}&lt;br /&gt;
int getLength()&lt;br /&gt;
{&lt;br /&gt;
return length;&lt;br /&gt;
}&lt;br /&gt;
int getBreadth()&lt;br /&gt;
{&lt;br /&gt;
return breadth;&lt;br /&gt;
}&lt;br /&gt;
void display()&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Length= &quot; &amp;lt;&amp;lt; length;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Breadth= &quot; &amp;lt;&amp;lt; breadth;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class RecArea : private Rectangle&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
void area_rec()&lt;br /&gt;
{&lt;br /&gt;
enter();&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Area = &quot; &amp;lt;&amp;lt; (getLength() * getBreadth());&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
clrscr();&lt;br /&gt;
RecArea r ;&lt;br /&gt;
r.area_rec();&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Example:2&lt;br /&gt;
&lt;br /&gt;
#include&lt;iostream.h&gt;&lt;br /&gt;
class Rectangle // Base class&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
float length ; // This data member can&#39;t be inherited&lt;br /&gt;
public:&lt;br /&gt;
float breadth ; // This data member is inheritable&lt;br /&gt;
void Enter_lb(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the length of the rectangle: &quot;; cin &amp;gt;&amp;gt; length ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the breadth of the rectangle: &quot;; cin &amp;gt;&amp;gt; bredth ;&lt;br /&gt;
}&lt;br /&gt;
float Enter_l(void)&lt;br /&gt;
{&lt;br /&gt;
return length ;&lt;br /&gt;
}&lt;br /&gt;
void Display_l(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Length = &quot; &amp;lt;&amp;lt; length ;&lt;br /&gt;
}&lt;br /&gt;
}; // End of the base class Rectangle.&lt;br /&gt;
// Defining the derived class Rectangle1. This class has been derived from the&lt;br /&gt;
// base class i.e. Rectangle, privately.&lt;br /&gt;
class Rectangle1 : private Rectangle // All the public members of the base class&lt;br /&gt;
{ // Rectangle become private for the derived class Rectangle1.&lt;br /&gt;
private:&lt;br /&gt;
float area ;&lt;br /&gt;
public:&lt;br /&gt;
void Rec_area(void)&lt;br /&gt;
{&lt;br /&gt;
Enter_lb( );&lt;br /&gt;
area = Enter_l( ) * bredth ; // length can&#39;t be used directly&lt;br /&gt;
}&lt;br /&gt;
void Display(void)&lt;br /&gt;
{&lt;br /&gt;
Display_l( ); // Displays the value of length.&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Bredth = &quot; &amp;lt;&amp;lt; bredth ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Area = &quot; &amp;lt;&amp;lt; area &amp;lt;&amp;lt; endl ;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
Rectangle1 r1 ;&lt;br /&gt;
r1.Rec_area( ) ;&lt;br /&gt;
// r.Enter_lb( ); will not work as it has become private for the derived class.&lt;br /&gt;
r1.Display( ) ;&lt;br /&gt;
// r.Display_l( ) will not work as it also has become private for the derived class.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Fig: private inheritance&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-14.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
The protected access specifier&lt;br /&gt;
&lt;br /&gt;
The third access specifier provided by C++ is protected.&lt;br /&gt;
&lt;br /&gt;
The members declared as protected can be accessed by the member functions within their own class and any other class immediately derived from it.&lt;br /&gt;
&lt;br /&gt;
These members cannot be accessed by the functions outside these two classes.&lt;br /&gt;
&lt;br /&gt;
Therefore, the objects of the derived class cannot access protected members of the base class.&lt;br /&gt;
&lt;br /&gt;
When the protected members (data, functions) are inherited in public mode, they become protected in the derived class. Thus, they can be accessed by the member functions of the derived class.&lt;br /&gt;
&lt;br /&gt;
On other hand, if the protected members are inherited in the private mode, the members also become private in the derived class.&lt;br /&gt;
&lt;br /&gt;
They can also be accessed by the member functions of the derived class, but cannot be inherited further.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-15.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Overriding the member functions:&lt;br /&gt;
&lt;br /&gt;
The member functions can also be used in a derived class, with the same name as those in the base class.&lt;br /&gt;
&lt;br /&gt;
One might want to do this so that calls in the program work the same way for objects of both base and derived classes.&lt;br /&gt;
&lt;br /&gt;
The following program will illustrate this concept.&lt;br /&gt;
&lt;br /&gt;
#include&lt;iostream.h&gt;&lt;br /&gt;
const int len = 20 ;&lt;br /&gt;
class Employee&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
char F_name[len];&lt;br /&gt;
int I_number ;&lt;br /&gt;
int age ;&lt;br /&gt;
float salary ;&lt;br /&gt;
public:&lt;br /&gt;
void Enter_data(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the first name = &quot; ; cin &amp;gt;&amp;gt; F_name ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the identity number = &quot; ; cin &amp;gt;&amp;gt; I_number ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the age = &quot; ; cin &amp;gt;&amp;gt; age ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the salary = &quot; ; cin &amp;gt;&amp;gt; salary ;&lt;br /&gt;
}&lt;br /&gt;
void Display_data(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Name = &quot; &amp;lt;&amp;lt; F_name ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Identity Number = &quot; &amp;lt;&amp;lt; I_number ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Age = &quot; &amp;lt;&amp;lt; age ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Salary = &quot; &amp;lt;&amp;lt; salary ;&lt;br /&gt;
}&lt;br /&gt;
}; // End of the base class&lt;br /&gt;
class Engineer : public Employee&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
char design[len] ; // S_Engineer, J_Engineer, Ex_Engineer etc&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
void Enter_data( )&lt;br /&gt;
{&lt;br /&gt;
Employee :: Enter_data( ) ; // Overriding of the member function&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the designation of the Engineer: &quot; ; cin &amp;gt;&amp;gt; design ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void Display_data(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n *******Displaying the particulars of the Engineer**** \n&quot; ;&lt;br /&gt;
Employee :: Display_data( ) ; // Overriding of the member function&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Designition = &quot; &amp;lt;&amp;lt; design ;&lt;br /&gt;
}&lt;br /&gt;
}; // End of the derived class&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
Engineer er ;&lt;br /&gt;
er.Enter_data( ) ;&lt;br /&gt;
er.Display_data( );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Hierarchical Inheritance:&lt;/u&gt; &lt;br /&gt;
When two or more classes are derived from a single base class, then&lt;br /&gt;
Inheritance is called the hierarchical inheritance. The representation&lt;br /&gt;
of the hierarchical inheritance is shown in the following Fig.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-16.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
In the above Fig., student is a base class, from which the three classes viz. arts, science and commerce have been derived. Now, let us write a program that illustrates the hierarchical inheritance, based on the above design.&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
&lt;br /&gt;
include&lt;iostream.h&gt;&lt;br /&gt;
const int len = 20 ;&lt;br /&gt;
class student // Base class&lt;br /&gt;
{&lt;br /&gt;
private: char F_name[len] , L_name[len] ;&lt;br /&gt;
int age, int roll_no ;&lt;br /&gt;
public:&lt;br /&gt;
void Enter_data(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Enter the first name: &quot; ; cin &amp;gt;&amp;gt; F_name ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the second name: &quot;; cin &amp;gt;&amp;gt; L_name ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the age: &quot; ; cin &amp;gt;&amp;gt; age ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the roll_no: &quot; ; cin &amp;gt;&amp;gt; roll_no ;&lt;br /&gt;
}&lt;br /&gt;
void Display_data(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t First Name = &quot; &amp;lt;&amp;lt; F_name ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Last Name = &quot; &amp;lt;&amp;lt; L_name ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Age = &quot; &amp;lt;&amp;lt; age ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Roll Number = &quot; &amp;lt;&amp;lt; roll_no ;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
class arts : public student&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
char asub1[len] ;&lt;br /&gt;
char asub2[len] ;&lt;br /&gt;
char asub3[len] ;&lt;br /&gt;
public:&lt;br /&gt;
void Enter_data(void)&lt;br /&gt;
{&lt;br /&gt;
student :: Enter_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the subject1 of the arts student: &quot;; cin &amp;gt;&amp;gt; asub1 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the subject2 of the arts student: &quot;; cin &amp;gt;&amp;gt; asub2 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the subject3 of the arts student: &quot;; cin &amp;gt;&amp;gt; asub3 ;&lt;br /&gt;
}&lt;br /&gt;
void Display_data(void)&lt;br /&gt;
{&lt;br /&gt;
student :: Display_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Subject1 of the arts student = &quot; &amp;lt;&amp;lt; asub1 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Subject2 of the arts student = &quot; &amp;lt;&amp;lt; asub2 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Subject3 of the arts student = &quot; &amp;lt;&amp;lt; asub3 ;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
class commerce : public student&lt;br /&gt;
{&lt;br /&gt;
private: char csub1[len], csub2[len], csub3[len] ;&lt;br /&gt;
public: &lt;br /&gt;
void Enter_data(void)&lt;br /&gt;
{&lt;br /&gt;
student :: Enter_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the subject1 of the commerce student: &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; csub1;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the subject2 of the commerce student: &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; csub2 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the subject3 of the commerce student: &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; csub3 ;&lt;br /&gt;
}&lt;br /&gt;
void Display_data(void)&lt;br /&gt;
{&lt;br /&gt;
student :: Display_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Subject1 of the commerce student = &quot; &amp;lt;&amp;lt; csub1 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Subject2 of the commerce student = &quot; &amp;lt;&amp;lt; csub2 ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Subject3 of the commerce student = &quot; &amp;lt;&amp;lt; csub3 ;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
arts a ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Entering details of the arts student\n&quot; ;&lt;br /&gt;
a.Enter_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Displaying the details of the arts student\n&quot; ;&lt;br /&gt;
a.Display_data( );&lt;br /&gt;
science s ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\n Entering details of the science student\n&quot; ;&lt;br /&gt;
s.Enter_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Displaying the details of the science student\n&quot; ;&lt;br /&gt;
s.Display_data( );&lt;br /&gt;
commerce c ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\n Entering details of the commerce student\n&quot; ;&lt;br /&gt;
c.Enter_data( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Displaying the details of the commerce student\n&quot;;&lt;br /&gt;
c.Display_data( );&lt;br /&gt;
}&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;
Multiple Inheritance&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
When a class is inherited from more than one base class, it is known as multiple inheritance.&lt;br /&gt;
The syntax for defining a subclass, which is inheriting more than one classes is:&lt;br /&gt;
class Subclass : access_specifier Baseclass1,&lt;br /&gt;
access_specifier Baseclass2, ………&lt;br /&gt;
…….. access_specifier Baseclass_n&lt;br /&gt;
{&lt;br /&gt;
members of the derived class ;&lt;br /&gt;
};&lt;br /&gt;
The following figure illustrates the use of multiple inheritance.&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-17.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
In the above figure, Circle and Rectangle are two base classes from which the class Cylinder is being inherited.&lt;br /&gt;
&lt;br /&gt;
The data members of both the base classes are declared in protected mode. Thus, the class Cylinder can access the data member radius of class Circle and data member length, breadth of the class Rectangle, but the objects of the class Cylinder cannot access these protected data members.&lt;br /&gt;
&lt;br /&gt;
The volume of the cylinder is equal to 22/7*(radius*radius*length). Thus, instead of defining these data again, they can be inherited from the base classes Circle and Rectangle ( radius from class Circle and length from class Rectangle ).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
#include&lt;iostream.h&gt;&lt;br /&gt;
class Circle // First base class&lt;br /&gt;
{&lt;br /&gt;
protected:&lt;br /&gt;
float radius ; &lt;br /&gt;
public:&lt;br /&gt;
void Enter_r(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\t Enter the radius: &quot;; cin &amp;gt;&amp;gt; radius ;&lt;br /&gt;
}&lt;br /&gt;
void Display_ca(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t The area = &quot; &amp;lt;&amp;lt; (22/7 * radius*radius) ;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
class Rectangle // Second base class&lt;br /&gt;
{&lt;br /&gt;
protected:&lt;br /&gt;
float length, breadth ;&lt;br /&gt;
public:&lt;br /&gt;
void Enter_lb(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t Enter the length : &quot;; cin &amp;gt;&amp;gt; length ;&lt;br /&gt;
cout &amp;lt;&amp;lt; “\t Enter the breadth : ” ; cin &amp;gt;&amp;gt; breadth ;&lt;br /&gt;
}&lt;br /&gt;
void Display_ar(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t The area = &quot; &amp;lt;&amp;lt; (length * breadth);&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
class Cylinder : public Circle, public Rectangle // Derived class, inherited&lt;br /&gt;
{ // from classes Circle &amp;amp; Rectangle&lt;br /&gt;
public:&lt;br /&gt;
void volume_cy(void)&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\t The volume of the cylinder is: &quot;&lt;br /&gt;
&amp;lt;&amp;lt; (22/7* radius*radius*length) ;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
Circle c ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Getting the radius of the circle\n&quot; ;&lt;br /&gt;
c.Enter_r( );&lt;br /&gt;
c.Display_ca( );&lt;br /&gt;
Rectangle r ;&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\n Getting the length and breadth of the rectangle\n\n&quot;;&lt;br /&gt;
r.Enter_l( );&lt;br /&gt;
r.Enter_b( );&lt;br /&gt;
r.Display_ar( );&lt;br /&gt;
Cylinder cy ; // Object cy of the class cylinder which can access all the&lt;br /&gt;
// public members of the class circle as well as of the class rectangle&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n\n Getting the height and radius of the cylinder\n&quot;;&lt;br /&gt;
cy.Enter_r( );&lt;br /&gt;
cy.Enter_lb( );&lt;br /&gt;
cy.volume_cy( );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt; Multilevel Inheritance:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
It has been discussed so far that a class can be derived from a class.&lt;br /&gt;
&lt;br /&gt;
C++ also provides the facility of multilevel inheritance, according to which the derived class can also be derived by an another class, which in turn can further be inherited by another and so on.&lt;br /&gt;
&lt;br /&gt;
The following figure will illustrate the meaning of the multilevel inheritance.&lt;br /&gt;
&lt;img alt=&quot;Photobucket&quot; border=&quot;0&quot; src=&quot;http://i726.photobucket.com/albums/ww266/puneetnick007/1-18.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
In the above figure, class B represents the base class. The class D1 that is called first level of inheritance, inherits the class B. The derived class D1 is further inherited by the class D2, which is called second level of inheritance.&lt;br /&gt;
&lt;br /&gt;
Example: Multilevel Inheritance&lt;br /&gt;
&lt;br /&gt;
#include&lt;iostream.h&gt;&lt;br /&gt;
class Base&lt;br /&gt;
{&lt;br /&gt;
protected:&lt;br /&gt;
int b;&lt;br /&gt;
public:&lt;br /&gt;
void EnterData( )&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the value of b: &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; b;&lt;br /&gt;
}&lt;br /&gt;
void DisplayData( )&lt;br /&gt;
{&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n b = &quot; &amp;lt;&amp;lt; b;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
class Derive1 : public Base&lt;br /&gt;
{&lt;br /&gt;
protected:&lt;br /&gt;
int d1;&lt;br /&gt;
public:&lt;br /&gt;
void EnterData( )&lt;br /&gt;
{&lt;br /&gt;
Base:: EnterData( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the value of d1: &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; d1;&lt;br /&gt;
}&lt;br /&gt;
void DisplayData( )&lt;br /&gt;
{&lt;br /&gt;
Base::DisplayData();&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n d1 = &quot; &amp;lt;&amp;lt; d1;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
class Derive2 : public Derive1&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
int d2;&lt;br /&gt;
public:&lt;br /&gt;
void EnterData( )&lt;br /&gt;
{&lt;br /&gt;
Derive1::EnterData( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n Enter the value of d2: &quot;;&lt;br /&gt;
cin &amp;gt;&amp;gt; d2;&lt;br /&gt;
}&lt;br /&gt;
void DisplayData( )&lt;br /&gt;
{&lt;br /&gt;
Derive1::DisplayData( );&lt;br /&gt;
cout &amp;lt;&amp;lt; &quot;\n d2 = &quot; &amp;lt;&amp;lt; d2;&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
int main( )&lt;br /&gt;
{&lt;br /&gt;
Derive2 objd2;&lt;br /&gt;
objd2.EnterData( );&lt;br /&gt;
objd2.DisplayData( );&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/conio.h&gt;&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/5125437836202671803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/inheritance-in-c_12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5125437836202671803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5125437836202671803'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/inheritance-in-c_12.html' title='INHERITANCE IN C++'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-8762787202762492917</id><published>2011-04-13T00:10:00.000+05:30</published><updated>2011-04-13T00:40:07.058+05:30</updated><title type='text'>DOCUMENTATION</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 16.8pt; margin-bottom: 6pt; margin-left: 0in; margin-right: 0in; margin-top: 0.25in;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;u&gt;Documentation and Importance of Documentation&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Documentation is one of the system which is used to communicate, instruct and record the information for any reference or operational purpose. They are very useful for representing the formal flow of the present system. With the help of documentation it is very easy to track the flow of the system&#39;s progress and they working of the system can be expalined very easily.&lt;br /&gt;
&lt;br /&gt;
It helps to provide the clear description of the work done so far. It is essential that the documents prepared must be updated on regular basis this will help to trace the progress of work easily. With appropriate and good documentation it is very easy to understand the how aspects of the system will work for the company where the system is to installed. It is also help to understand the type of data which will be inputted in the system and how the output can be produced.&lt;br /&gt;
&lt;br /&gt;
After the system is installed, and if in case the system is not working properly it will be very easy for the administrator to understand the flow of data in the system with documentation which will help him/ her to correct the flaws and get the system working in no time.&lt;br /&gt;
&lt;br /&gt;
Uses of Documentation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;It      facilitates effective communication regarding the system between the      technical and the non technical users.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;It      is very useful in training new users. With a Good documentation new users      can easily get acquainted with the flow of the systems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Documentation      also helps the users to solve problems like trouble shooting even a non      technical user can fix the problems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;It      plays a significant role in evaluation process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;It      not only helps to exercise a better control over the internal working of      the firm, but it also external as well especially during audit.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; text-align: justify;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Documentations      can help the manager to take better financial decisions of the      organization.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h1&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Characteristics &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; line-height: 21px;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;What the characteristics of good system documentation are is difficult to decide. Some desirable characteristics are described below: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot; style=&quot;letter-spacing: 0pt; text-transform: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Created for intended audience &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The documentation should be created for the intended audience. While it may be appropriate for a &quot;Management overview&quot; to be created for non-technical people, most system documentation will be used by System Administrators and other technical people as an important reference. System documentation should provide sufficient technical detail. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Specific &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The system documentation should describe the specific implementation of a given system rather than provide generic documentation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Relationship with other documentation &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;System documentation should be reasonably self contained; however it will often be a component of a wider collection of documentation and it is reasonable for it to reference other documents. There is little value in duplicating information from Vendor&#39;s manuals. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Up to date &lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=3105598028949200277&amp;amp;postID=8762787202762492917&quot; name=&quot;_GoBack&quot;&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The documentation needs to be up to date, but does not necessarily have to be recent. If the system has remained completely unchanged for a long period of time, the documentation can remain unchanged for the same period of time. It is important that when systems are changed documentation is updated to reflect the changes and this should be part of any change control procedures. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Sufficiently comprehensive &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Documentation needs to be sufficiently comprehensive to for fill its purpose. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Accessible &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The documentation must be held in a location and format that makes it accessible. It is obviously unacceptable to have the only copy of a system&#39;s documentation held on a drive that has failed or on the system itself should it fail. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;It is very desirable to hold the documentation in a universal standard format that does not require access to a particular word processor; ASCII text may be most suitable. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Secure &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Because system documentation could be useful to troublemakers, thought may need to be given to controlling access to the documentation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h1&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Requirements &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The question of what is the purpose of system documentation is difficult to answer. Below are some possible uses of system documentation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Introduction / overview &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;System documentation can provide an introduction and overview of systems. New Administrators, contractors and other staff may need to familiarise themselves with a system; the first thing that will be requested is any system documentation. To avoid staff having to waste time discovering the purpose of a system, how it is configured etc system documentation should provide an Introduction. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Disaster Recovery &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Many systems are supported by disaster recovery arrangements, but even in such circumstances, the recovery can still fail. There may be a need to re-build a system from scratch at least to the point where a normal restore from backup can be done. To make a rebuild possible it will be necessary to have documentation that provides answers to the configuration choices. For example it is important to re-build the system with the correct size of file systems to avoid trying to restore data to a file system that has been made too small. In some circumstances certain parameters can be difficult to change at a later date. When rebuilding a system it may be important to configure networking with the original parameters both to avoid conflicts with other systems on the network and because these may be difficult to change subsequently. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;OS or Application re-load &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Even when a disaster has not occurred, there may be times when it is necessary to reload an Operating System or Application; this can either be as part of a major version upgrade or a drastic step necessary to solve problems. In such circumstances it is important to know how an OS or Application has been configured. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Trouble shooting aid &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The benefits of good system documentation, when trouble shooting, are fairly obvious. A comprehensive description of how a system should be configured and should behave can be invaluable when configuration information has become corrupted, when services have failed, or components have failed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Good system documentation will include a description of the physical hardware and its physical configuration, which can avoid the need to shutdown a system in order to examine items such as jumper settings. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Planning tool &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;When planning changes or upgrades it will be necessary to assess the impact of changes on existing systems. A good understanding of existing systems is necessary for assessing the impact of any changes and for this good system documentation is required. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Other &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;System documentation can be used for many purposes including Auditing, Inventory, Maintenance, etc. The documentation of individual systems forms an important component of the overall network documentation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h1&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: small;&quot;&gt;Automating the creation of system documentation &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Most operating systems include tools to report important system information and often the output from such tools can be re-directed to a file; this provides a means of automating the creation of system documentation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Many Administrators have neither the time nor inclination to produce System Documentation and given the importance of keeping such documentation current, automation of the creation of system documentation is very desirable. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;There are limitations to the extent to which system documentation can be automated. The following cannot be documented automatically: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Textual descriptions that Administrators may      create. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Hardware configuration items that cannot be      detected through software (perhaps such as which slot on a bus a card      occupies or how jumpers are set). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Other items that cannot be detected through      software such as serial numbers, the physical location of a system etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The documentation of items that cannot be documented automatically can be facilitated by such means as having standard template documents and creating such documentation when systems are first installed. Fortunately this kind of documentation is less susceptible to change and is often less critical. It may be useful to create a simple file in a standard location (perhaps root) on systems that contains &quot;external&quot; information such as serial numbers, asset numbers etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Most Operating Systems have tools for automating their deployment (e.g. unattend.txt for NT, JumpStart for Solaris, Kickstart for Redhat Linux etc). Although these tools are primarily intended for deploying large numbers of systems they can be used for individual systems. While the configuration scripts used in these tools are not very readable, they are in text form, and can be read by technical staff. Such scripts offer the great advantage that a system is documented in an unambiguous way that guarantees that the system can be rebuilt exactly the same way it was first built. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;For most systems it should be possible to create a simple script (or batch file) that uses several system tools to report system information and out put the results to a file. The use of such tools together with simple print commands (e.g. echo &quot;line of text&quot;) can readily produce a useful document. It should be possible to adapt such scripts to produce the documentation required in terms of content and level of detail etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;If standard tools do not provide sufficient information, there are many third party tools and free tools that can be used, however the potential problems of using additional tools, rather than just &quot;built-in&quot; tools, has to be weighed against the advantages. Alternative scripting languages (such a Perl) may provide additional benefits.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: darkblue; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/8762787202762492917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/inheritance-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/8762787202762492917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/8762787202762492917'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/inheritance-in-c.html' title='DOCUMENTATION'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-3196037726801969829</id><published>2011-04-12T20:43:00.000+05:30</published><updated>2011-04-12T20:43:28.637+05:30</updated><title type='text'>FEASIBILITY STUDY</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-weight: normal; line-height: normal;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;It is the measure and the study of how beneficial the development&amp;nbsp;of the system would be to the organization. This is known as feasibility study. The measurement of feasibility is known as feasibility study. There are number of aspects which are taken into consideration while the feasibility studies. Firstly the project team&amp;nbsp;is formed then with the help of flowcharts and other forms of documentations the characteristics of the system are identified. The system is evaluated and measured against the expected performance. A suitable candidate is selected for the job and a final report is made and presented to the management for further evaluations.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 19.2pt; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogger.com/goog_2041247606&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The different types of feasibility studies are as follows:&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Technical feasibility study: It is used to determine the requirements of technologies for the current system.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Schedule feasibility study: It is used to determine the time factor related to the current system.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Cultural feasibility study: It is used to determine the impact of the current system on a culture.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Legal feasibility study: It is used to determine the legal scrutiny of the current system.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Marketing feasibility study: It is used to determine the single and multi-dimensional market forces that affect the current system.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;There are four types of marketing feasibility study, which are as follows:&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Economic feasibility.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Legal feasibility.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Operational feasibility.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Schedule feasibility.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/ul&gt;&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: -0.25in;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;&lt;span class=&quot;preloadwrap&quot;&gt;·&lt;span style=&quot;font: normal normal normal 7pt/normal &#39;Times New Roman&#39;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/3196037726801969829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/feasibility-study.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/3196037726801969829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/3196037726801969829'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/feasibility-study.html' title='FEASIBILITY STUDY'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-6415494745981647894</id><published>2011-04-11T23:34:00.000+05:30</published><updated>2011-04-11T23:37:50.784+05:30</updated><title type='text'>DEADLOCK</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Sometimes a process has to reserve more than one resource. For example, a process which copies files from one tape to another generally requires two tape drives. A process which deals with databases may need to lock multiple records in a database.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;In general, resources allocated to a process are not preemptable; this means that once a resource has been allocated to a process, there is no simple mechanism by which the system can take the resource back from the process unless the process voluntarily gives it up or the system administrator kills the process. This can lead to a situation called&amp;nbsp;deadlock. A set of processes or threads is deadlocked when each process or thread is waiting for a resource to be freed which is controlled by another process. Here is an example of a situation where deadlock can occur.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/6415494745981647894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/deadlock.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/6415494745981647894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/6415494745981647894'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/deadlock.html' title='DEADLOCK'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-75355494302920101</id><published>2011-04-11T23:32:00.001+05:30</published><updated>2011-04-11T23:32:19.421+05:30</updated><title type='text'>SYSTOLIC ARRAY</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px; line-height: 19px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;An array of processing elements (typically multiplier-accumulator chips) in a pipeline structure that is used for applications such as image and signal processing and fluid dynamics. The &quot;systolic,&quot; It refers to the rhythmic transfer of data through the pipeline, like blood flowing through the vascular system.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/75355494302920101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/systolic-array.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/75355494302920101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/75355494302920101'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/systolic-array.html' title='SYSTOLIC ARRAY'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-7779862470601198907</id><published>2011-04-11T23:31:00.000+05:30</published><updated>2011-04-11T23:31:36.067+05:30</updated><title type='text'>SEMAPHORE</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;First let me begin our topic by giving an insight to what is actually a semaphore. A semaphore is nothing but a term used in UNIX. T&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;hat comes in mind is what for we need this variable. For instance there may be times when two processes try to access the same file simultaneously. In this event we must control the access of the file when the other process is accessing. This is done by assigning value to semaphore.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;In other words, we also can say that&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 19px;&quot;&gt;In computer science, a&amp;nbsp;semaphore&amp;nbsp;is a protected variable&amp;nbsp;or abstract data type&amp;nbsp;that provides a simple but useful abstraction for controlling access by multiple processes&amp;nbsp;to a common resource in a parallel&amp;nbsp;environment.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 19px;&quot;&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;A useful way to think of a semaphore is as a record of how many units of a particular resource are available, coupled with operations to&amp;nbsp;&lt;i&gt;safely&lt;/i&gt;&amp;nbsp;(i.e. without&amp;nbsp;race conditions) adjust that record as units are required or become free, and if necessary wait until a unit of the resource becomes available. Semaphores are a useful tool in the prevention of race conditions and&amp;nbsp;deadlocks; however, their use is by no means a guarantee that a program is free from these problems. Semaphores which allow an arbitrary resource count are called&amp;nbsp;counting semaphores, whilst semaphores which are restricted to the values 0 and 1 (or locked/unlocked, unavailable/available) are called binary&amp;nbsp;semaphores.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/7779862470601198907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/semaphore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7779862470601198907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7779862470601198907'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/semaphore.html' title='SEMAPHORE'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-5066269244957685371</id><published>2011-04-11T23:22:00.000+05:30</published><updated>2011-04-11T23:39:57.368+05:30</updated><title type='text'>JVM - THE JAVA VIRTUAL MACHINE</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Acronym for&amp;nbsp;JAVA Virtual Machine.&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt; An abstract computing machine, or&amp;nbsp;virtual machine, JVM is a platform-independent execution environment that converts Java&amp;nbsp;bytecode&amp;nbsp;into machine language and&amp;nbsp;executes&amp;nbsp;it. Most programming languages compile source code directly into machine code that is designed to run on a specific&amp;nbsp;microprocessor&lt;a href=&quot;http://www.blogger.com/goog_684652428&quot; style=&quot;color: #b49720; text-decoration: none;&quot;&gt;&amp;nbsp;&lt;/a&gt;architecture&amp;nbsp;or&amp;nbsp;OS&amp;nbsp;such as&amp;nbsp;Windows&amp;nbsp;or&amp;nbsp;UNIX.&amp;nbsp;A JVM is a machine within a machine -- mimics a real&amp;nbsp;JAVA&amp;nbsp;processor, enabling Java bytecode to be executed as actions or operating system calls on any processor regardless of the operating system. For example, establishing a socket connection from a workstation to a remote machine involves an operating system call. Since different operating systems handle sockets in different ways, the JVM translates the programming code so that the two machines that may be on different platforms are able to connect.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/5066269244957685371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/jvm-java-virtual-machine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5066269244957685371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5066269244957685371'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/jvm-java-virtual-machine.html' title='JVM - THE JAVA VIRTUAL MACHINE'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-1919463231291092456</id><published>2011-04-11T23:20:00.001+05:30</published><updated>2011-04-11T23:20:44.780+05:30</updated><title type='text'>MISD - MULTIPLE INSTRUCTIONS SINGLE DATA</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif; font-size: 12px; line-height: 16px;&quot;&gt;&lt;b&gt;MISD didn&#39;t exist when Flynn was categorizing the machines. It might have been added for symmetry in his chart. Its applications are very limited and expensive and currently there seems to be no commercial implementation. But it is a research interest topic. One example is systolic array with matrix multiplication like computation. With rows of data processing units (cells) sharing the information with their neighbors immediately after processing.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/1919463231291092456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/misd-multiple-instructions-single-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/1919463231291092456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/1919463231291092456'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/misd-multiple-instructions-single-data.html' title='MISD - MULTIPLE INSTRUCTIONS SINGLE DATA'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-2563567641688954181</id><published>2011-04-11T23:19:00.000+05:30</published><updated>2011-04-11T23:19:04.681+05:30</updated><title type='text'>FIBRE OPTICS</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, Utopia, &#39;Palatino Linotype&#39;, Palatino, serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;A fiber-optic system is similar to the copper wire system that fiber-optics is replacing. The difference is that fiber-optics use light pulses to transmit information down fiber lines instead of using electronic pulses to transmit information down copper lines. Looking at the components in a fiber-optic chain will give a better understanding of how the system works in conjunction with wire based systems.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;•&amp;nbsp;SPEED:&amp;nbsp;Fiber optic networks operate at high speeds - up into the gigabits&lt;br /&gt;
•&amp;nbsp;BANDWIDTH:&amp;nbsp;large carrying capacity&lt;br /&gt;
•&amp;nbsp;DISTANCE:&amp;nbsp;Signals can be transmitted further without needing to be refreshed.&lt;br /&gt;
•&amp;nbsp;RESISTANCE:&amp;nbsp;Greater resistance to electromagnetic noise such as radios &amp;amp; motors.&lt;br /&gt;
•&amp;nbsp;MAINTENANCE:&amp;nbsp;Fiber optic cables costs much less to maintain.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/2563567641688954181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/fibre-optics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2563567641688954181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2563567641688954181'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/fibre-optics.html' title='FIBRE OPTICS'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-4606888602326680322</id><published>2011-04-11T23:17:00.003+05:30</published><updated>2011-04-11T23:18:06.056+05:30</updated><title type='text'>POLYMORPHISM</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Generally, the ability to appear in many forms. In&amp;nbsp;&lt;/b&gt;&lt;b&gt;object-oriented programming&lt;/b&gt;&lt;b&gt;,&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;polymorphism&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;refers to a&amp;nbsp;&lt;/b&gt;&lt;b&gt;programming language&#39;s&lt;/b&gt;&lt;b&gt;&amp;nbsp;ability to process objects differently depending on their&amp;nbsp;&lt;/b&gt;&lt;b&gt;data type&lt;/b&gt;&lt;b&gt;&amp;nbsp;or&amp;nbsp;class.&lt;/b&gt;&lt;b&gt;&amp;nbsp;More specifically, it is the ability to redefine&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;methods&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;for&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;derived classes.&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;For example, given a base class&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;shape,&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;polymorphism enables the programmer to define different&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;area&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;methods for any number of derived classes, such as circles, rectangles and triangles. No matter what shape an object is, applying the&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;area&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;method to it will return the correct results. Polymorphism is considered to be a requirement of any true object-oriented programming language (OOPL).&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/4606888602326680322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/polimorphism.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/4606888602326680322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/4606888602326680322'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/polimorphism.html' title='POLYMORPHISM'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-7713346457638355056</id><published>2011-04-11T23:16:00.000+05:30</published><updated>2011-04-11T23:16:33.587+05:30</updated><title type='text'>ABSTRACTION</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px; line-height: 14px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: tahoma, verdana, arial, helvetica, sans-serif; font-size: 12px; line-height: 18px;&quot;&gt;&lt;b&gt;Abstraction is the process of hiding the details and exposing only the essential features of a particular concept or object. Computer scientists use abstraction to understand and solve problems and communicate their solutions with the computer in some particular computer language.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/7713346457638355056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/abstraction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7713346457638355056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7713346457638355056'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/abstraction.html' title='ABSTRACTION'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-334541609796132019</id><published>2011-04-11T23:11:00.000+05:30</published><updated>2011-04-11T23:11:32.818+05:30</updated><title type='text'>ENCAPSULATION - COMPACTING DATA</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: myriad, arial, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;b&gt;Encapsulation means as much as shielding. Each OO object has a shield around it. Objects can&#39;t &#39;see&#39; each other. They can exchange things though, as if they are interconnected through a hatch.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/334541609796132019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/encapsulation-compacting-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/334541609796132019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/334541609796132019'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/encapsulation-compacting-data.html' title='ENCAPSULATION - COMPACTING DATA'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-3685097920662476475</id><published>2011-04-11T22:58:00.001+05:30</published><updated>2011-04-11T22:58:49.613+05:30</updated><title type='text'>NETWORK TOPOLOGIES</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, Utopia, &#39;Palatino Linotype&#39;, Palatino, serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The physical topology of a network refers to the configuration of cables, computers, and other peripherals. Physical topology should not be confused with logical topology which is the method used to pass information between workstations. Logical topology was discussed in the Protocol chapter .&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;There are few kind of topologies:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYc-O8TUKmGAvABFbsKTagCoBdzgX9dUZCGNN22vTurAlAbj_LQ5VzJeYzT2stxqt1MqZDzm11gGNywXsr10Cd2lbdfi7oTAEBDKOwrf2rVzTyihNQt3n3fmpVAOnbGlsDEmYxLAGLUEA/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;color: #b49720; margin-left: 1em; margin-right: 1em; text-decoration: none;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; qx=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYc-O8TUKmGAvABFbsKTagCoBdzgX9dUZCGNN22vTurAlAbj_LQ5VzJeYzT2stxqt1MqZDzm11gGNywXsr10Cd2lbdfi7oTAEBDKOwrf2rVzTyihNQt3n3fmpVAOnbGlsDEmYxLAGLUEA/s320/1.jpg&quot; style=&quot;-webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(237, 237, 237); border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(237, 237, 237); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(237, 237, 237); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(237, 237, 237); border-top-style: solid; border-top-width: 1px; border-width: initial; box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; position: relative;&quot; width=&quot;296&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul style=&quot;line-height: 1.4; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px;&quot;&gt;&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Bus&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ring&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Star&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Mesh&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Tree&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Extended Star&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hierarchical&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/3685097920662476475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/network-topologies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/3685097920662476475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/3685097920662476475'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/network-topologies.html' title='NETWORK TOPOLOGIES'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYc-O8TUKmGAvABFbsKTagCoBdzgX9dUZCGNN22vTurAlAbj_LQ5VzJeYzT2stxqt1MqZDzm11gGNywXsr10Cd2lbdfi7oTAEBDKOwrf2rVzTyihNQt3n3fmpVAOnbGlsDEmYxLAGLUEA/s72-c/1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-4195450065095788007</id><published>2011-04-11T22:57:00.001+05:30</published><updated>2011-04-11T23:42:11.318+05:30</updated><title type='text'>RAD - RAPID APPLICATION DEVELOPMENT MODEL</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif; font-size: 13px;&quot;&gt;&lt;strong&gt;RAD is a linear sequential software development process model that emphasis an extremely short development cycle using a component based construction approach. If the requirements are well understood and defines, and the project scope is constraint, the RAD process enables a development team to create a fully functional system with in very short time period&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/4195450065095788007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/rad-rapid-application-development-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/4195450065095788007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/4195450065095788007'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/rad-rapid-application-development-model.html' title='RAD - RAPID APPLICATION DEVELOPMENT MODEL'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-7435322569460868887</id><published>2011-04-11T22:56:00.001+05:30</published><updated>2011-04-11T22:56:18.396+05:30</updated><title type='text'>BRAND EQUITY</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;strong&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;A brand is a name or symbol used to identify the source of a product. When developing a new product, branding is an important decision. The brand can add significant value when it is well recognized and has positive associations in the mind of the consumer. This concept is referred to as brand equity.&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/7435322569460868887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/brand-equity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7435322569460868887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7435322569460868887'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/brand-equity.html' title='BRAND EQUITY'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-5762010393017229743</id><published>2011-04-11T22:46:00.001+05:30</published><updated>2011-04-11T22:46:45.946+05:30</updated><title type='text'>CRM - CUSTOMER RELATIONSHIP MANAGEMENT</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;CRM stands for Customer Relationship Management. It is a process or methodology used to learn more about customers&#39; needs and behaviors in order to develop stronger relationships with them. There are many technological components to CRM, but thinking about CRM in primarily technological terms is a mistake. The more useful way to think about CRM is as a process that will help bring together lots of pieces of information about customers, sales, marketing effectiveness, responsiveness and market trends.&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;CRM helps businesses use technology and human resources to gain insight into the behavior of customers and the value of those customers.&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/5762010393017229743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/crm-customer-relationship-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5762010393017229743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/5762010393017229743'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/crm-customer-relationship-management.html' title='CRM - CUSTOMER RELATIONSHIP MANAGEMENT'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-7385276846543171814</id><published>2011-04-11T22:45:00.001+05:30</published><updated>2011-04-11T22:45:31.907+05:30</updated><title type='text'>ADVERTISEMENT</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Verdana, sans-serif; font-size: 13px;&quot;&gt;&lt;strong&gt;&lt;span class=&quot;yellowFade&quot;&gt;&lt;span&gt;&lt;span class=&quot;FadeWordContainer&quot; style=&quot;position: relative;&quot;&gt;Advertising&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;promotes a product, service or event to its&amp;nbsp;target audience. A target audience is the portion of the general public that products, services or events were created for to fill a desire or need in the marketplace.&amp;nbsp;&lt;span class=&quot;yellowFade&quot;&gt;&lt;span&gt;&lt;span class=&quot;FadeWordContainer&quot; style=&quot;position: relative;&quot;&gt;Advertising&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;is written by&amp;nbsp;&lt;span class=&quot;yellowFade&quot;&gt;&lt;span&gt;&lt;span class=&quot;FadeWordContainer&quot; style=&quot;position: relative;&quot;&gt;advertising&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;copywriters and finished with artwork by&amp;nbsp;graphic designers. The channels&lt;span class=&quot;yellowFade&quot;&gt;&lt;span&gt;&lt;span class=&quot;FadeWordContainer&quot; style=&quot;position: relative;&quot;&gt;advertising&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;is run through to reach its target audience includes Internet, print, broadcast, outdoor and point of purchase.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/7385276846543171814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/advertisement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7385276846543171814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/7385276846543171814'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/advertisement.html' title='ADVERTISEMENT'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3105598028949200277.post-2673268208634964844</id><published>2011-04-11T22:44:00.000+05:30</published><updated>2011-04-11T23:43:50.728+05:30</updated><title type='text'>DBMS - DATABASE MANAGEMENT SYSTEM</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 14px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, Utopia, &#39;Palatino Linotype&#39;, Palatino, serif; font-size: 13px; font-weight: normal; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;DBMS&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Stands for &quot;Database Management System.&quot; In short, a DBMS is a database program. Technically speaking, it is a software system that uses a standard method of cataloging, retrieving, and running queries on data. The DBMS manages incoming data, organizes it, and provides ways for the data to be modified or extracted by users or other programs.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerfundamentalsandconcepts.blogspot.com/feeds/2673268208634964844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/dbms-database-management-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2673268208634964844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3105598028949200277/posts/default/2673268208634964844'/><link rel='alternate' type='text/html' href='http://computerfundamentalsandconcepts.blogspot.com/2011/04/dbms-database-management-system.html' title='DBMS - DATABASE MANAGEMENT SYSTEM'/><author><name>Amby</name><uri>http://www.blogger.com/profile/02945851912844913155</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>