Introduction to comp science

49
By J Zvirikuzhe, produced by Chief printers A Basic Handout of a Computer System By Jacob Zvirikuzhe, produced by Chief Printing Services

description

A basic handout of a computer system provides operating system overview, hardware operations and basic functions of a computer system as a comprehensive entity.

Transcript of Introduction to comp science

Page 1: Introduction to comp science

1

By J Zvirikuzhe, produced by Chief printers

A Basic Handout

of a Computer

System

By Jacob Zvirikuzhe, produced by Chief Printing Services

Page 2: Introduction to comp science

2

By J Zvirikuzhe, produced by Chief printers

What is a Computer?

A computer is a general purpose device that can be programmed to carry out a finite set of arithmetic or logical operations. Since a sequence of operations can be readily changed, the computer can solve more than one kind of problem.

Conventionally, a computer consists of at least one processing element, typically a central processing unit (CPU) and some form of memory. The processing element carries out arithmetic and logic operations, and a sequencing and control unit that can change the order of operations based on stored information. Peripheral devices allow information to be retrieved from an external source, and the result of operations saved and retrieved.

The first electronic digital computers were developed between 1940 and 1945 in the United Kingdom and United States. Originally they were the size of a large room, consuming as much power as several hundred modern personal computers (PCs). In this era mechanical analog computers were used for military applications.

Modern computers based on integrated circuits are millions to billions of times more capable than the early machines, and occupy a fraction of the space. Simple computers are small enough to fit into mobile devices, and mobile computers can be powered by small batteries. Personal computers in their various forms are icons of the Information Age and are what most people think of as “computers.” However, the embedded computers found in many devices from MP3 players to fighter aircraft and from toys to industrial robots are the most numerous.

Input/output (I/O)

I/O is the means by which a computer exchanges information with the outside world. Devices that provide input or output to the computer are called peripherals.

Page 3: Introduction to comp science

3

By J Zvirikuzhe, produced by Chief printers

On a typical personal computer, peripherals include input devices like the keyboard and mouse, and output devices such as the display and printer. Hard disk drives, floppy disk drives and optical disc drives serve as both input and output devices. Computer networking is another form of I/O.

I/O devices are often complex computers in their own right, with their own CPU and memory. A graphics processing unit might contain fifty or more tiny computers that perform the calculations necessary to display 3D graphics. Modern desktop computers contain many smaller computers that assist the main CPU in performing I/O.

Central Processing Unit

A central processing unit (CPU), also referred to as a central processor unit, is the hardware within a computer that carries out the instructions of a computer program by performing the basic arithmetical, logical, and input/output operations of the system. The term has been in use in the computer industry at least since the early 1960s. The form, design, and implementation of CPUs have changed over the course of their history, but their fundamental operation remains much the same.

In older computers, CPUs require one or more printed circuit boards. With the invention of the microprocessor, a CPU could be contained within a single silicon chip. The first computers to use microprocessors were personal computers and small workstations. Since the 1970s the microprocessor class of CPUs has almost completely overtaken all other CPU implementations, to the extent that even mainframe computers use one or more microprocessors. Modern microprocessors are large scale integrated circuits in packages typically less than four centimeters square, with hundreds of connecting pins.

A computer can have more than one CPU; this is called multiprocessing. Some microprocessors can contain multiple CPUs on a single chip; those microprocessors are called multi-core processors.

Two typical components of a CPU are the arithmetic logic unit (ALU), which performs arithmetic and logical operations, and the control unit (CU), which extracts instructions from memory and decodes and executes them, calling on the ALU when necessary.

Not all computational systems rely on a central processing unit. An array processor or vector processor has multiple parallel computing elements, with no one unit considered the "center". In the distributed computing model, problems are solved by a distributed interconnected set of processors.

Page 4: Introduction to comp science

4

By J Zvirikuzhe, produced by Chief printers

Computer data storage

Computer data storage often called storage or memory, is a technology consisting of computer components and recording media used to retain digital data. It is a core function and fundamental component of computers.

In contemporary usage, memory is usually semiconductor storage read-write random-access memory, typically DRAM (Dynamic-RAM) or other forms of fast but temporary storage. Storage consists of storage devices and their media not directly accessible by the CPU, (secondary or tertiary storage), typically hard disk drives, optical disc drives, and other devices slower than RAM but are non-volatile (retaining contents when powered down). Historically, memory has been called core, main memory, real storage or internal memory while storage devices have been referred to as secondary storage, external memory or auxiliary/peripheral storage.

The distinctions are fundamental to the architecture of computers. The distinctions also reflect an important and significant technical difference between memory and mass storage devices, which has been blurred by the historical usage of the term storage. Nevertheless, this article uses the traditional nomenclature.

Many different forms of storage, based on various natural phenomena, have been invented. So far, no practical universal storage medium exists, and all forms of storage have some drawbacks. Therefore a computer system usually contains several kinds of storage, each with an individual purpose.

A modern digital computer represents data using the binary numeral system. Text, numbers, pictures, audio, and nearly any other form of information can be converted into a string of bits, or binary digits, each of which has a value of 1 or 0. The most common unit of storage is the byte, equal to 8 bits. A piece of information can be handled by any computer or device whose storage space is large enough to accommodate the binary representation of the piece of information, or simply data. For example, the complete works of Shakespeare, about 1250 pages in print, can be stored in about five megabytes (40 million bits) with one byte per character.

The defining component of a computer is the central processing unit (CPU, or simply processor), because it operates on data, performs computations, and controls other components. In the most commonly used computer architecture, the CPU consists of two main parts: control unit and arithmetic logic unit (ALU). The former controls the flow of data between the CPU and memory; the latter performs arithmetic and logical operations on data.

Without a significant amount of memory, a computer would merely be able to perform fixed operations and immediately output the result. It would have to be

Page 5: Introduction to comp science

5

By J Zvirikuzhe, produced by Chief printers

reconfigured to change its behavior. This is acceptable for devices such as desk calculators, digital signal processors, and other specialised devices. Von Neumann machines differ in having a memory in which they store their operating instructions and data. Such computers are more versatile in that they do not need to have their hardware reconfigured for each new program, but can simply be reprogrammed with new in-memory instructions; they also tend to be simpler to design, in that a relatively simple processor may keep state between successive computations to build up complex procedural results. Most modern computers are von Neumann machines.

In practice, almost all computers use a variety of memory types, organized in a storage hierarchy around the CPU, as a trade-off between performance and cost. Generally, the lower a storage is in the hierarchy, the lesser its bandwidth and the greater its access latency is from the CPU. This traditional division of storage to primary, secondary, tertiary and off-line storage is also guided by cost per bit.

Computer Storage

Contents

1 Hierarchy of storage o 1.1 Primary storage o 1.2 Secondary storage o 1.3 Tertiary storage o 1.4 Off-line storage

2 Characteristics of storage o 2.1 Volatility o 2.2 Mutability o 2.3 Accessibility o 2.4 Addressability o 2.5 Capacity o 2.6 Performance o 2.7 Energy use

3 Fundamental storage technologies o 3.1 Semiconductor o 3.2 Magnetic o 3.3 Optical o 3.4 Paper o 3.5 Uncommon

4 Related technologies

Page 7: Introduction to comp science

7

By J Zvirikuzhe, produced by Chief printers

Various forms of storage, divided according to their distance from the central processing unit. The fundamental components of a general-purpose computer are arithmetic and logic unit, control circuitry, storage space, and input/output devices. Technology and capacity as in common home computers around 2005. See also: Memory hierarchy

Primary storage

Direct links to this section: Primary storage, Main memory, Internal Memory. Main article: Computer memory

Primary storage (or main memory or internal memory), often referred to simply as memory, is the only one directly accessible to the CPU. The CPU continuously reads instructions stored there and executes them as required. Any data actively operated on is also stored there in uniform manner.

Page 8: Introduction to comp science

8

By J Zvirikuzhe, produced by Chief printers

Historically, early computers used delay lines, Williams tubes, or rotating magnetic drums as primary storage. By 1954, those unreliable methods were mostly replaced by magnetic core memory. Core memory remained dominant until the 1970s, when advances in integrated circuit technology allowed semiconductor memory to become economically competitive.

This led to modern random-access memory (RAM). It is small-sized, light, but quite expensive at the same time. (The particular types of RAM used for primary storage are also volatile, i.e. they lose the information when not powered).

As shown in the diagram, traditionally there are two more sub-layers of the primary storage, besides main large-capacity RAM:

Processor registers are located inside the processor. Each register typically holds a word of data (often 32 or 64 bits). CPU instructions instruct the arithmetic and logic unit to perform various calculations or other operations on this data (or with the help of it). Registers are the fastest of all forms of computer data storage.

Processor cache is an intermediate stage between ultra-fast registers and much slower main memory. It's introduced solely to increase performance of the computer. Most actively used information in the main memory is just duplicated in the cache memory, which is faster, but of much lesser capacity. On the other hand, main memory is much slower, but has a much greater storage capacity than processor registers. Multi-level hierarchical cache setup is also commonly used—primary cache being smallest, fastest and located inside the processor; secondary cache being somewhat larger and slower.

Main memory is directly or indirectly connected to the central processing unit via a memory bus. It is actually two buses (not on the diagram): an address bus and a data bus. The CPU firstly sends a number through an address bus, a number called memory address, that indicates the desired location of data. Then it reads or writes the data itself using the data bus. Additionally, a memory management unit (MMU) is a small device between CPU and RAM recalculating the actual memory address, for example to provide an abstraction of virtual memory or other tasks.

As the RAM types used for primary storage are volatile (cleared at start up), a computer containing only such storage would not have a source to read instructions from, in order to start the computer. Hence, non-volatile primary storage containing a small startup program (BIOS) is used to bootstrap the computer, that is, to read a larger program from non-volatile secondary storage to RAM and start to execute it. A non-volatile technology used for this purpose is called ROM, for read-only memory

Page 9: Introduction to comp science

9

By J Zvirikuzhe, produced by Chief printers

(the terminology may be somewhat confusing as most ROM types are also capable of random access).

Many types of "ROM" are not literally read only, as updates are possible; however it is slow and memory must be erased in large portions before it can be re-written. Some embedded systems run programs directly from ROM (or similar), because such programs are rarely changed. Standard computers do not store non-rudimentary programs in ROM, rather use large capacities of secondary storage, which is non-volatile as well, and not as costly.

Recently, primary storage and secondary storage in some uses refer to what was historically called, respectively, secondary storage and tertiary storage.[2]

Secondary storage

A hard disk drive with protective cover removed.

Secondary storage (also known as external memory or auxiliary storage), differs from primary storage in that it is not directly accessible by the CPU. The computer usually uses its input/output channels to access secondary storage and transfers the desired data using intermediate area in primary storage. Secondary storage does not lose the data when the device is powered down—it is non-volatile. Per unit, it is typically also two orders of magnitude less expensive than primary storage. Consequently, modern computer systems typically have two orders of magnitude more secondary storage than primary storage and data are kept for a longer time there.

In modern computers, hard disk drives are usually used as secondary storage. The time taken to access a given byte of information stored on a hard disk is typically a few thousandths of a second, or milliseconds. By contrast, the time taken to access a given byte of information stored in random-access memory is measured in billionths of a second, or nanoseconds. This illustrates the significant access-time difference which distinguishes solid-state memory from rotating magnetic storage devices: hard disks are typically about a million times slower than memory. Rotating

Page 10: Introduction to comp science

10

By J Zvirikuzhe, produced by Chief printers

optical storage devices, such as CD and DVD drives, have even longer access times. With disk drives, once the disk read/write head reaches the proper placement and the data of interest rotates under it, subsequent data on the track are very fast to access. To reduce the seek time and rotational latency, data are transferred to and from disks in large contiguous blocks.

When data reside on disk, block access to hide latency offers a ray of hope in designing efficient external memory algorithms. Sequential or block access on disks is orders of magnitude faster than random access, and many sophisticated paradigms have been developed to design efficient algorithms based upon sequential and block access. Another way to reduce the I/O bottleneck is to use multiple disks in parallel in order to increase the bandwidth between primary and secondary memory.[3]

Some other examples of secondary storage technologies are: flash memory (e.g. USB flash drives or keys), floppy disks, magnetic tape, paper tape, punched cards, standalone RAM disks, and Iomega Zip drives.

The secondary storage is often formatted according to a file system format, which provides the abstraction necessary to organize data into files and directories, providing also additional information (called metadata) describing the owner of a certain file, the access time, the access permissions, and other information.

Most computer operating systems use the concept of virtual memory, allowing utilization of more primary storage capacity than is physically available in the system. As the primary memory fills up, the system moves the least-used chunks (pages) to secondary storage devices (to a swap file or page file), retrieving them later when they are needed. As more of these retrievals from slower secondary storage are necessary, the more the overall system performance is degraded.

Tertiary storage

Page 11: Introduction to comp science

11

By J Zvirikuzhe, produced by Chief printers

Large tape library. Tape cartridges placed on shelves in the front, robotic arm moving in the back. Visible height of the library is about 180 cm.

Tertiary storage or tertiary memory,[4] provides a third level of storage. Typically it involves a robotic mechanism which will mount (insert) and dismount removable mass storage media into a storage device according to the system's demands; these data are often copied to secondary storage before use. It is primarily used for archiving rarely accessed information since it is much slower than secondary storage (e.g. 5–60 seconds vs. 1–10 milliseconds). This is primarily useful for extraordinarily large data stores, accessed without human operators. Typical examples include tape libraries and optical jukeboxes.

When a computer needs to read information from the tertiary storage, it will first consult a catalog database to determine which tape or disc contains the information. Next, the computer will instruct a robotic arm to fetch the medium and place it in a drive. When the computer has finished reading the information, the robotic arm will return the medium to its place in the library.

Off-line storage

Off-line storage is a computer data storage on a medium or a device that is not under the control of a processing unit.[5] The medium is recorded, usually in a secondary or tertiary storage device, and then physically removed or disconnected. It must be inserted or connected by a human operator before a computer can access it again. Unlike tertiary storage, it cannot be accessed without human interaction.

Page 12: Introduction to comp science

12

By J Zvirikuzhe, produced by Chief printers

Off-line storage is used to transfer information, since the detached medium can be easily physically transported. Additionally, in case a disaster, for example a fire, destroys the original data, a medium in a remote location will probably be unaffected, enabling disaster recovery. Off-line storage increases general information security, since it is physically inaccessible from a computer, and data confidentiality or integrity cannot be affected by computer-based attack techniques. Also, if the information stored for archival purposes is rarely accessed, off-line storage is less expensive than tertiary storage.

In modern personal computers, most secondary and tertiary storage media are also used for off-line storage. Optical discs and flash memory devices are most popular, and to much lesser extent removable hard disk drives. In enterprise uses, magnetic tape is predominant. Older examples are floppy disks, Zip disks, or punched cards.

Characteristics of storage

A 1GB DDR RAM module (detail)

Storage technologies at all levels of the storage hierarchy can be differentiated by evaluating certain core characteristics as well as measuring characteristics specific to a particular implementation. These core characteristics are volatility, mutability, accessibility, and addressibility. For any particular implementation of any storage technology, the characteristics worth measuring are capacity and performance.

Page 13: Introduction to comp science

13

By J Zvirikuzhe, produced by Chief printers

Volatility

Non-volatile memory Will retain the stored information even if it is not constantly supplied with electric power. It is suitable for long-term storage of information.

Volatile memory Requires constant power to maintain the stored information. The fastest memory technologies of today are volatile ones (not a universal rule). Since primary storage is required to be very fast, it predominantly uses volatile memory. Dynamic random-access memory A form of volatile memory which also requires the stored information to be periodically re-read and re-written, or refreshed, otherwise it would vanish. Static random-access memory A form of volatile memory similar to DRAM with the exception that it never needs to be refreshed as long as power is applied. (It loses its content if power is removed).

Mutability

Read/write storage or mutable storage Allows information to be overwritten at any time. A computer without some amount of read/write storage for primary storage purposes would be useless for many tasks. Modern computers typically use read/write storage also for secondary storage.

Read only storage Retains the information stored at the time of manufacture, and write once storage (Write Once Read Many) allows the information to be written only once at some point after manufacture. These are called immutable storage. Immutable storage is used for tertiary and off-line storage. Examples include CD-ROM and CD-R.

Slow write, fast read storage Read/write storage which allows information to be overwritten multiple times, but with the write operation being much slower than the read operation. Examples include CD-RW and flash memory.

Accessibility

Random access Any location in storage can be accessed at any moment in approximately the same amount of time. Such characteristic is well suited for primary and

Page 14: Introduction to comp science

14

By J Zvirikuzhe, produced by Chief printers

secondary storage. Most semiconductor memories and disk drives provide random access.

Sequential access The accessing of pieces of information will be in a serial order, one after the other; therefore the time to access a particular piece of information depends upon which piece of information was last accessed. Such characteristic is typical of off-line storage.

Addressability

Location-addressable Each individually accessible unit of information in storage is selected with its numerical memory address. In modern computers, location-addressable storage usually limits to primary storage, accessed internally by computer programs, since location-addressability is very efficient, but burdensome for humans.

File addressable Information is divided into files of variable length, and a particular file is selected with human-readable directory and file names. The underlying device is still location-addressable, but the operating system of a computer provides the file system abstraction to make the operation more understandable. In modern computers, secondary, tertiary and off-line storage use file systems.

Content-addressable Each individually accessible unit of information is selected based on the basis of (part of) the contents stored there. Content-addressable storage can be implemented using software (computer program) or hardware (computer device), with hardware being faster but more expensive option. Hardware content addressable memory is often used in a computer's CPU cache.

CAS(content-addressable storage) addresses the thinking behind how are we to find and access the information that we currently have or will gather in the future.

Capacity

Raw capacity The total amount of stored information that a storage device or medium can hold. It is expressed as a quantity of bits or bytes (e.g. 10.4 megabytes).

Memory storage density The compactness of stored information. It is the storage capacity of a medium divided with a unit of length, area or volume (e.g. 1.2 megabytes per square inch).

Page 15: Introduction to comp science

15

By J Zvirikuzhe, produced by Chief printers

Performance

Latency The time it takes to access a particular location in storage. The relevant unit of measurement is typically nanosecond for primary storage, millisecond for secondary storage, and second for tertiary storage. It may make sense to separate read latency and write latency, and in case of sequential access storage, minimum, maximum and average latency.

Throughput The rate at which information can be read from or written to the storage. In computer data storage, throughput is usually expressed in terms of megabytes per second or MB/s, though bit rate may also be used. As with latency, read rate and write rate may need to be differentiated. Also accessing media sequentially, as opposed to randomly, typically yields maximum throughput.

Energy use

Storage devices that reduce fan usage, automatically shut-down during inactivity, and low power hard drives can reduce energy consumption 90 percent.[6]

2.5 inch hard disk drives often consume less power than larger ones.[7][8] Low capacity solid-state drives have no moving parts and consume less power than hard disks.[9][10][11] Also, memory may use more power than hard disks.[11]

Fundamental storage technologies

As of 2011, the most commonly used data storage technologies are semiconductor, magnetic, and optical, while paper still sees some limited usage. Media is a common name for what actually holds the data in the storage device. Some other fundamental storage technologies have also been used in the past or are proposed for development.

Semiconductor

Semiconductor memory uses semiconductor-based integrated circuits to store information. A semiconductor memory chip may contain millions of tiny transistors or capacitors. Both volatile and non-volatile forms of semiconductor memory exist. In modern computers, primary storage almost exclusively consists of dynamic volatile semiconductor memory or dynamic random access memory. Since the turn of the century, a type of non-volatile semiconductor memory known as flash memory has steadily gained share as off-line storage for home computers. Non-

Page 16: Introduction to comp science

16

By J Zvirikuzhe, produced by Chief printers

volatile semiconductor memory is also used for secondary storage in various advanced electronic devices and specialized computers. As early as 2006, notebook and desktop computer manufacturers started using flash-based solid-state drives (SSDs) as default configuration options for the secondary storage either in addition to or instead of the more traditional HDD.[12][13][14][15][16]

Magnetic

Magnetic storage media

Magnetic storage uses different patterns of magnetization on a magnetically coated surface to store information. Magnetic storage is non-volatile. The information is accessed using one or more read/write heads which may contain one or more recording transducers. A read/write head only covers a part of the surface so that the head or medium or both must be moved relative to another in order to access data. In modern computers, magnetic storage will take these forms:

Magnetic disk o Floppy disk, used for off-line storage o Hard disk drive, used for secondary storage

Magnetic tape, used for tertiary and off-line storage

In early computers, magnetic storage was also used as:

Primary storage in a form of magnetic memory, or core memory, core rope memory, thin-film memory and/or twistor memory.

Tertiary (e.g. NCR CRAM) or off line storage in the form of magnetic cards. Magnetic tape was then often used for secondary storage.

Optical

Optical storage media

Optical storage, the typical optical disc, stores information in deformities on the surface of a circular disc and reads this information by illuminating the surface with a laser diode and observing the reflection. Optical disc storage is non-volatile. The deformities may be permanent (read only media ), formed once (write once media) or reversible (recordable or read/write media). The following forms are currently in common use:[17]

Page 17: Introduction to comp science

17

By J Zvirikuzhe, produced by Chief printers

CD, CD-ROM, DVD, BD-ROM: Read only storage, used for mass distribution of digital information (music, video, computer programs)

CD-R, DVD-R, DVD+R, BD-R: Write once storage, used for tertiary and off-line storage

CD-RW, DVD-RW, DVD+RW, DVD-RAM, BD-RE: Slow write, fast read storage, used for tertiary and off-line storage

Ultra Density Optical or UDO is similar in capacity to BD-R or BD-RE and is slow write, fast read storage used for tertiary and off-line storage.

Magneto-optical disc storage is optical disc storage where the magnetic state on a ferromagnetic surface stores information. The information is read optically and written by combining magnetic and optical methods. Magneto-optical disc storage is non-volatile, sequential access, slow write, fast read storage used for tertiary and off-line storage.

3D optical data storage has also been proposed.

Paper

Paper data storage media

Paper data storage, typically in the form of paper tape or punched cards, has long been used to store information for automatic processing, particularly before general-purpose computers existed. Information was recorded by punching holes into the paper or cardboard medium and was read mechanically (or later optically) to determine whether a particular location on the medium was solid or contained a hole. A few technologies allow people to make marks on paper that are easily read by machine—these are widely used for tabulating votes and grading standardized tests. Barcodes made it possible for any object that was to be sold or transported to have some computer readable information securely attached to it.

Uncommon

Vacuum tube memory A Williams tube used a cathode ray tube, and a Selectron tube used a large vacuum tube to store information. These primary storage devices were short-lived in the market, since Williams tube was unreliable and the Selectron tube was expensive.

Electro-acoustic memory

Page 18: Introduction to comp science

18

By J Zvirikuzhe, produced by Chief printers

Delay line memory used sound waves in a substance such as mercury to store information. Delay line memory was dynamic volatile, cycle sequential read/write storage, and was used for primary storage.

Optical tape is a medium for optical storage generally consisting of a long and narrow strip of plastic onto which patterns can be written and from which the patterns can be read back. It shares some technologies with cinema film stock and optical discs, but is compatible with neither. The motivation behind developing this technology was the possibility of far greater storage capacities than either magnetic tape or optical discs.

Phase-change memory uses different mechanical phases of Phase Change Material to store information in an X-Y addressable matrix, and reads the information by observing the varying electrical resistance of the material. Phase-change memory would be non-volatile, random-access read/write storage, and might be used for primary, secondary and off-line storage. Most rewritable and many write once optical disks already use phase change material to store information.

Holographic data storage stores information optically inside crystals or photopolymers. Holographic storage can utilize the whole volume of the storage medium, unlike optical disc storage which is limited to a small number of surface layers. Holographic storage would be non-volatile, sequential access, and either write once or read/write storage. It might be used for secondary and off-line storage. See Holographic Versatile Disc (HVD).

Molecular memory stores information in polymer that can store electric charge. Molecular memory might be especially suited for primary storage. The theoretical storage capacity of molecular memory is 10 terabits per square inch.[18]

Related technologies

Network connectivity

A secondary or tertiary storage may connect to a computer utilizing computer networks. This concept does not pertain to the primary storage, which is shared between multiple processors in a much lesser degree.

Direct-attached storage (DAS) is a traditional mass storage that does not use any network. This is still a most popular approach. This retronym was coined recently, together with NAS and SAN.

Page 19: Introduction to comp science

19

By J Zvirikuzhe, produced by Chief printers

Network-attached storage (NAS) is mass storage attached to a computer which another computer can access at file level over a local area network, a private wide area network, or in the case of online file storage, over the Internet. NAS is commonly associated with the NFS and CIFS/SMB protocols.

Storage area network (SAN) is a specialized network that provides other computers with storage capacity. The crucial difference between NAS and SAN is the former presents and manages file systems to client computers, whilst the latter provides access at block-addressing (raw) level, leaving it to attaching systems to manage data or file systems within the provided capacity. SAN is commonly associated with Fibre Channel networks.

Robotic storage

Large quantities of individual magnetic tapes, and optical or magneto-optical discs may be stored in robotic tertiary storage devices. In tape storage field they are known as tape libraries, and in optical storage field optical jukeboxes, or optical disk libraries per analogy. Smallest forms of either technology containing just one drive device are referred to as autoloaders or auto-changers.

Robotic-access storage devices may have a number of slots, each holding individual media, and usually one or more picking robots that traverse the slots and load media to built-in drives. The arrangement of the slots and picking devices affects performance. Important characteristics of such storage are possible expansion options: adding slots, modules, drives, robots. Tape libraries may have from 10 to more than 100,000 slots, and provide terabytes or petabytes of near-line information. Optical jukeboxes are somewhat smaller solutions, up to 1,000 slots.

Robotic storage is used for backups, and for high-capacity archives in imaging, medical, and video industries. Hierarchical storage management is a most known archiving strategy of automatically migrating long-unused files from fast hard disk storage to libraries or jukeboxes. If the files are needed, they are retrieved back to disk.

Page 20: Introduction to comp science

20

By J Zvirikuzhe, produced by Chief printers

Software

Computer software, or just software, is a collection of computer programs and related data that provides the instructions for telling a computer what to do and how to do it. Software refers to one or more computer programs and data held in the storage of the computer. In other words, software is a set of programs, procedures, algorithms and its documentation concerned with the operation of a data processing system. Program software performs the function of the program it implements, either by directly providing instructions to the digital electronics or by serving as input to another piece of software. The term was coined to contrast to the old term hardware (meaning physical devices). In contrast to hardware, software "cannot be touched".[1] Software is also sometimes used in a more narrow sense, meaning application software only. Sometimes the term includes data that has not traditionally been associated with computers, such as film, tapes, and records.[2]

Computer software is so called to distinguish it from computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. At the lowest level, executable code consists of machine language instructions specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. Programs are an ordered sequence of instructions for changing the state of the computer in a particular sequence. It is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an assembly language, essentially, a

Page 21: Introduction to comp science

21

By J Zvirikuzhe, produced by Chief printers

mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler.

Contents

1 History 2 Types of software

o 2.1 System software o 2.2 Programming software o 2.3 Application software

3 Software topics o 3.1 Architecture o 3.2 Documentation o 3.3 Library o 3.4 Standard o 3.5 Execution o 3.6 Quality and reliability o 3.7 License o 3.8 Patents

4 Design and implementation 5 Industry and organizations 6 See also 7 References 8 External links

Page 22: Introduction to comp science

22

By J Zvirikuzhe, produced by Chief printers

Types of software

A layer structure showing where the operating system software and application

software are situated while running on a typical desktop computer

Software includes all the various forms and roles that digitally stored data may have and play in a computer (or similar system), regardless of whether the data is used as code for a CPU, or other interpreter, or whether it represents other kinds of information. Software thus encompasses a wide array of products that may be developed using different techniques such as ordinary programming languages, scripting languages, microcode, or an FPGA configuration.

The types of software include web pages developed in languages and frameworks like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like OpenOffice.org, Microsoft Word developed in languages like C, C++, Objective-C, Java, C#, or Smalltalk. Application software usually runs on an underlying software operating systems such as Linux or Microsoft Windows. Software (or firmware) is also used in video games and for the configurable parts of the logic systems of automobiles, televisions, and other consumer electronics.

Practical computer systems divide software systems into three major classes system software, programming software and application software, although the distinction is arbitrary, and often blurred.

Page 23: Introduction to comp science

23

By J Zvirikuzhe, produced by Chief printers

System software

System software is computer software designed to operate the computer hardware, to provide basic functionality, and to provide a platform for running application software.[5] System software includes device drivers, operating systems, servers, utilities, and window systems.

System software is responsible for managing a variety of independent hardware components, so that they can work together harmoniously. Its purpose is to unburden the application software programmer from the often complex details of the particular computer being used, including such accessories as communications devices, printers, device readers, displays and keyboards, and also to partition the computer's resources such as memory and processor time in a safe and stable manner.

Programming software

Programming software include tools in the form of programs or applications that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs such as compilers, debuggers, interpreters, linkers, and text editors, that can be combined together to accomplish a task, much as one might use multiple hand tools to fix a physical object. Programming tools are intended to assist a programmer in writing computer programs, and they may be combined in an integrated development environment (IDE) to more easily manage all of these functions.

Application software

Application software is developed to perform in any task that benefits from computation. It is a set of programs that allows the computer to perform a specific data processing job for the user. It is a broad category, and encompasses software of many kinds, including the internet browser being used to display this page.

Software topics

Architecture

Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user software.

Page 24: Introduction to comp science

24

By J Zvirikuzhe, produced by Chief printers

Platform software: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software.

Application software: Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.

User-written software: End-user development tailors systems to meet users' specific needs. User software include spreadsheet templates and word processor templates. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.

Documentation

Most software has software documentation so that the end user can understand the program, what it does, and how to use it. Without clear documentation, software can be hard to use—especially if it is very specialized and relatively complex like Photoshop or AutoCAD.

Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified.

Library

An executable is almost always not sufficiently complete for direct execution. Software libraries include collections of functions and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.

Page 25: Introduction to comp science

25

By J Zvirikuzhe, produced by Chief printers

Standard

Since software can be designed using many different programming languages and in many different operating systems and operating environments, software standard is needed so that different software can understand and exchange information between each other. For instance, an email sent from a Microsoft Outlook should be readable from Yahoo! Mail and vice versa.

Execution

Computer software has to be "loaded" into the computer's storage (such as the hard drive or memory). Once the software has loaded, the computer is able to execute the software. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation – moving data, carrying out a computation, or altering the control flow of instructions.

Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.

Quality and reliability

Software quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "bugs." Many bugs are discovered and eliminated (debugged) through software testing. However, software testing rarely – if ever – eliminates every bug; some programmers say that "every program has at least one more bug" (Lubarsky's Law). All major software companies, such as Microsoft, Novell and Sun Microsystems, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testing and other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, NASA has extremely rigorous software testing procedures for many operating systems and communication functions. Many NASA based operations interact and identify each other through command programs called software. This enables many people who work at NASA to check and evaluate functional systems overall. Programs containing command software enable hardware engineering and system operations to function much easier together.

Page 26: Introduction to comp science

26

By J Zvirikuzhe, produced by Chief printers

License

The software's license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware.

Patents

Software can be patented in some but not all countries; however, software patents can be controversial in the software industry with many people holding different views about it. The controversy over software patents is about specific algorithms or techniques that the software contains, which may not be duplicated by others and considered intellectual property and copyright infringement depending on the severity.

Design and implementation

Page 27: Introduction to comp science

27

By J Zvirikuzhe, produced by Chief printers

A particular implementation of software. This software was created to assist the

Wikipedia website. Also, it does not use a graphical user interface aside from a

simple console window.

Page 28: Introduction to comp science

28

By J Zvirikuzhe, produced by Chief printers

Design and implementation of software varies depending on the complexity of the software. For instance, design and creation of Microsoft Word software will take much more time than designing and developing Microsoft Notepad because of the difference in functionalities in each one.

Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like Eclipse, Emacs and Microsoft Visual Studio that can simplify the process and compile the program. As noted in different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK+, JavaBeans or Swing. Libraries (APIs) are categorized for different purposes. For instance, JavaBeans library is used for designing enterprise applications, Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word, and Windows Communication Foundation is used for designing web services. Underlying computer programming concepts like quicksort, hash table, array, and binary tree can be useful to creating software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows desktop application, he/she might use the .NET Windows Forms library to design the desktop application and call its APIs like Form1.Close() and Form1.Show()[6] to close or open the application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Sun Microsystems, Novell, and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.

Computer software has special economic characteristics that make its design, creation, and distribution different from most other economic goods.

A person who creates software is called a programmer, software engineer, software developer, or "code monkey", terms that all have a similar meaning.

Page 29: Introduction to comp science

29

By J Zvirikuzhe, produced by Chief printers

Software Categories

1. Starting a computer 2. User interface 3. Features of operating

systems 4. Stand-alone and

network operating system

6. Stand-alone operating systems

7. Network operating systems

8. Embedded operating systems

9. Utility programs

Here you will find additional information that will expand and enhance your knowledge beyond that contained in your textbook. Compare this information to what may be provided in a traditional classroom by your instructor or peers.

Starting a Computer

When you turn on a computer after it has been powered off, you are performing a cold boot. When you restart a computer that already has been powered on, you are performing a warm boot. Your typically can perform a warm boot by pressing a combination of keys on the keyboard (in Windows, CTRL+ALT+DEL), selecting options from a menu, or pressing a Reset button on the computer.

If you watch the screen closely as the POST is conducted, the value for the total amount of memory can be seen to change as it is measured in the memory test. If the POST results do not match the data on the CMOS chip, an appropriate message should appear. The boot program typically is the first side, first track, and first sector of the hard disk. When you install an operating system, one of the installation steps involves making an emergency disk from which you can start your computer if the hard disk is damaged.

User Interface

You can interact with an operating system directly (as you do when copying files, moving files, formatting disks, and so on) or indirectly (as you do when working with an application program). An operating system is intended to be transparent; that is, it does not have to be understood, considered, or even known. The operating system with which an application program will work is specified on the application software package. The application programs you want to use should be considered

Page 30: Introduction to comp science

30

By J Zvirikuzhe, produced by Chief printers

before deciding on an operating system, and the operating system must be considered when choosing application software.

A graphical user interface is designed to be easier to use (more user-friendly) than a command-line interface. As an example of this user-friendly nature, consider how a relatively simple task, such as deleting a file, is performed with a command-line interface and with a GUI. With a command-line interface, you might type del followed by the file name in quotation marks. Therefore, you must remember the command, type it correctly, and use the proper syntax. On the other hand, with a GUI you need only select (click) the file name in the file manager window and then click the Delete command on a menu or the Delete button on a toolbar. Although most people find a GUI the easiest interface to use, some long-time computer virtuosos still feel a command-line user interface is more efficient.

Features of Operating Systems

Early operating systems were single user/single tasking, but today most operating system are multitasking. Multitasking can be cooperative, in which programs switch when they reach a logical break point, or preemptive, in which programs switch based on priority and an allocated amount of time. Early versions of Windows used cooperative multitasking; Windows 95 and subsequent versions use preemptive multitasking. Upon termination, most programs relinquish their space in memory, which then is reallocated by the operating system. Some programs, however, stay in memory after they terminate. As a class, these programs are called TSR (Terminate and Stay Resident) programs.

Virtual memory is employed with multitasking operating systems to maximize the number of programs that can use memory at one time. Paging, or the technique of swapping items between memory and storage, was developed before processors could address directly more than 1 MB of memory. All printers have buffers, and printer manufacturers are eager to sell DRAM. The term spooling comes from the observation that placing print jobs temporarily in a buffer is somewhat like winding thread onto a spool so that it can be used at a later time. Today, adding and configuring devices is easier because most devices support Plug and Play, which means the computer can recognize a new device and automatically load the necessary drivers. A feature of Windows 95, Plug and Play initially was greeted with mixed reviews. In fact, some wags claimed the new technology was more accurately called, “Plug and Pray.”

Processor utilization – the amount of time that the processor is working and not idle – is one way of monitoring system performance. In addition to the programs that come with most operating systems, several utility programs are available to monitor

Page 31: Introduction to comp science

31

By J Zvirikuzhe, produced by Chief printers

system performance. Formatting a disk is the process of preparing it for reading and writing. Today, most floppy and hard disks are preformatted by the manufacturer. If you format a disk that already contains data, the formatting process erases the file location information, but it does not erase the actual files on the disk. Therefore, if you accidentally format a disk, often you can unformat it with a utility program. System security usually is most important for large systems or networks. For single-user PCs, adequate system security can be a key in the user’s pocket.

Stand-Alone and Network Operating System

Many early operating systems were device dependent and proprietary. Device-dependent operating systems run only on a specific type of computer. Proprietary software is privately owned and limited to a specific vendor or computer mode. Today, the trend is towards device-independent operating systems that run on many manufacturers’ computers. Software that is not proprietary (i.e., that can work with a variety of computer models) sometimes is called portable or generic. Most of the operating systems discussed in this section are portable. When an operating system is proprietary, usually it is to boost hardware sales.

Operating systems for Apple computers and most mainframes initially were proprietary. Steve Wozniak, cofounder of Apple Computers, believes the decision to make its innovative Macintosh operating system proprietary was one of the company’s greatest mistakes. “We had the most beautiful operating system,” Wozniak writes, “but to get it you had to buy our hardware at twice the price.” Wozniak now feels the operating system should have been licensed.

Stand-Alone Operating Systems

Bill Gates, founder of Microsoft and one of the wealthiest men in the world, began his fortune with the MS-DOS operating system. Although developed for IBM, Microsoft retained the rights to the operating system and licensed the source code to several hardware manufacturers, which resulted in multiple variations. An application written for one type of DOS, however, will work with any other variation. A number follows each version of PC-DOS or MS-DOS. The integer portion of the number indicates a major release, while the decimal portion indicates updates. Thus, MS-DOS 6.2 means major version six, which has been updated twice. To a great extent, the popularity of DOS was a result of the large number of applications written to work with the operating system.

Windows 1.0, released in 1985, was Microsoft’s first attempt with a graphical user interface. It was not until five years later, however, with the release of Windows 3.0, that computer users began to take Windows seriously. Windows required 2 MB of memory (with 4 MB recommended) and an 80386 or newer processor, so it could

Page 32: Introduction to comp science

32

By J Zvirikuzhe, produced by Chief printers

not be used with many older PCs. Nevertheless, because Windows 3.0 was easier to use than DOS, eventually most software was written, and many popular DOS programs were rewritten, to work with Windows.

Despite the advantages of Windows 95 and a heavily-funded promotional campaign, a poll of DOS and Windows 3.x users showed not everyone immediately embraced the new operating system. When asked how likely they were to adopt Windows 95 within the next six months, respondents replied:

extremely likely 10% possible 35% not likely 53% don’t know 2%

Why are people often reluctant to adopt a new operating system?

The inclusion of Internet Explorer in the Windows 98 operating system led to an antitrust suit against Microsoft. Prosecutors insisted that the incorporation of a browser was an attempt by Microsoft to eliminate competition from rival Web browsers (such as Netscape Navigator). Microsoft maintained that the addition simply was an enhancement to the operating system. Although Microsoft advertised Windows 98 less heavily than Windows 95, many vendors took up the slack. One retailer offered Windows 98 with the opportunity to buy a new computer for $98. The promotion evidently worked. A buyer waited in line 11 hours for a chance to buy the new operating system and discount computer. When asked if he would have come out simply for Windows 98 (his current computer ran Windows 3.1), he replied, “Not a chance.”

Windows 2000 was released in February, 2000 and was touted as a boon for all businesses, from small companies with no more than two desktop computers to large corporations with vast networks. Windows Millennium is a result of Microsoft’s recognition that the needs of business and home users are different.

For years, the Macintosh operating system had features that made it far easier to use than other operating systems. For example, people could give files sensible names (like “Letter to Grandma”) instead of the cryptic, eight-character strings (like “letgrand.txt”) demanded by DOS and Windows 3.x. While Windows 95 incorporated many of these features, Macintosh devotees still feel their operating system is easier to use. Until recently, the Macintosh operating system was proprietary. In 1994 the operating system was licensed, but experts feel Apple’s promotion has been lukewarm. New standards let IBM computers run Apple software. More than 4,000 applications are designed to run under the Mac OS. Microsoft has developed the more popular Mac OS applications.

Page 33: Introduction to comp science

33

By J Zvirikuzhe, produced by Chief printers

IBM supplies OS/2 (Operating System/2) Warp with its high-end personal computers. OS/2 originally was developed jointly by IBM and Microsoft to replace MS-DOS. As an interim measure, Microsoft developed Windows, an operating environment to work with DOS. The eventual popularity of Windows, coupled with the initial poor sales of OS/2, resulted in Microsoft and IBM going their separate ways, with Microsoft concentrating on Windows and IBM continuing to develop OS/2. Features offered in OS/2 Warp include:

An enhanced graphical user interface Integrated business application software Speaker-independent speech recognition software Desktop objects that allow users to connect directly to the Internet Integrated Java programming language that allows Java applications to run

without a Web browser Support for multiple CPUs using multiprocessing

Page 34: Introduction to comp science

34

By J Zvirikuzhe, produced by Chief printers

Command line vs. GUI

Users not familiar with a command line interface (CLI) or a graphic user interface (GUI) may want to know the advantages and disadvantages of each interface to help determine what interface is the best for them to use and why. Below is a table to help illustrate the major advantages and disadvantages of each of the interfaces.

Topic Command line (CLI) GUI

Ease

Because of the memorization and

familiarity needed to operate a

command line interface, new users

have a difficult time navigating and

operating a command line interface.

Although new users may have a

difficult time learning to use the

mouse and all GUI features, most

users pick up this interface much

easier when compared to a

command line interface.

Control

Users have much more control of

their file system and operating

system in a command line interface.

For example, users can copy a

specific file from one location to

another with a one-line command.

Although a GUI offers plenty of

control of a file system and

operating system, the more

advanced tasks may still need a

command line.

Multitasking

Although many command line

environments are capable of

multitasking, they do not offer the

same ease and ability to view

multiple things at once on one

screen.

GUI users have windows that

enable a user to view, control,

and manipulate multiple things

at once and is much faster to

navigate when compared with a

command line.

Speed

Command line users only need to

use their keyboards to navigate a

command line interface and often

only need to execute a few lines to

perform a task.

A GUI may be easier to use

because of the mouse. However,

using a mouse and keyboard to

navigate and control your

operating system for many

things is going to be much

slower than someone who is

Page 35: Introduction to comp science

35

By J Zvirikuzhe, produced by Chief printers

working in a command line.

Resources

A computer that is only using the

command line takes a lot less of the

computers system resources than a

GUI.

A GUI requires more system

resources because of each of the

elements that need to be loaded

such as icons, fonts, etc. In

addition, video drivers, mouse

drivers, and other drivers that

need to be loaded will also take

additional resources.

Scripting

A command line interface enables a

user to script a sequence of

commands to perform a task or

execute a program.

Although A GUI enables a user to

create shortcuts, tasks, or other

similar actions, it doesn't even

come close in comparison to

what is available through a

command line.

Remote

access

When accessing another computer

or networking device over a

network, a user will only be able to

manipulate the device or its files

using a command line interface.

Although remote graphical

access is possible. Not all

computers and especially not all

network equipment will have

this ability.

Diverse

After you've learned how to navigate

and use a command line, it's not

going to change as much as a new

GUI. Although new commands may

be introduced, the original

commands always remain the same.

Each GUI has a different design

and structure of how to perform

different tasks. Even different

versions of the same GUI, such as

Windows, can have hundreds of

different changes between each

version.

Strain

The command line allows the user to

keep their hands on the keyboard

and rarely have to move from the

keyboard to the mouse. Moving back

and forth between a keyboard and

Although shortcut keys can be

learned to help reduce the

amount of times you have move

from the keyboard to the mouse,

you will still be moving much

Page 36: Introduction to comp science

36

By J Zvirikuzhe, produced by Chief printers

mouse can cause additional strain

and may help contribute to Carpal

Tunnel.

more between the keyboard and

mouse with a GUI.

Computer program

A computer program written in an object-oriented style.

A computer program (also software, or just a program or application) is a sequence of instructions written to perform a specified task with a computer.[1] A computer requires programs to function, typically executing the program's instructions in a central processor.[2] The program has an executable form that the computer can use directly to execute the instructions. The same program in its human-readable source code form, from which executable programs are derived (e.g., compiled), enables a programmer to study and develop its algorithms.

Computer source code is often written by computer programmers. Source code is written in a programming language that usually follows one of two main paradigms: imperative or declarative programming. Source code may be converted into an executable file (sometimes called an executable program or a binary) by a compiler and later executed by a central processing unit. Alternatively, computer programs

Page 37: Introduction to comp science

37

By J Zvirikuzhe, produced by Chief printers

may be executed with the aid of an interpreter, or may be embedded directly into hardware.

Computer programs may be categorized along functional lines: system software and application software. Two or more computer programs may run simultaneously on one computer, a process known as multitasking

Contents

1 Programming o 1.1 Paradigms o 1.2 Compiling or interpreting o 1.3 Self-modifying programs

2 Execution and storage o 2.1 Embedded programs o 2.2 Manual programming o 2.3 Automatic program generation o 2.4 Simultaneous execution

3 Functional categories 4 See also 5 References 6 Further reading 7 External links

Page 38: Introduction to comp science

38

By J Zvirikuzhe, produced by Chief printers

Programming

Computer programming is the iterative process of writing or editing source code.

Editing source code involves testing, analyzing, and refining, and sometimes coordinating with other programmers on a jointly developed program.

A person who practices this skill is referred to as a computer programmer, software developer or coder.

The sometimes lengthy process of computer programming is usually referred to as software development.

The term software engineering is becoming popular as the process is seen as an engineering discipline.

#include <stdio.h> int main() { printf("Hello world!\n"); return 0; }

Source code of a Hello World program written in the C programming language

Paradigms

Computer programs can be categorized by the programming language paradigm used to produce them. Two of the main paradigms are imperative and declarative.

Programs written using an imperative language specify an algorithm using declarations, expressions, and statements.[3] A declaration couples a variable name to a datatype. For example: var x: integer; . An expression yields a value. For example: 2 + 2 yields 4. Finally, a statement might assign an expression to a variable or use the value of a variable to alter the program's control flow. For example: x := 2 + 2; if x = 4 then do_something(); One criticism of imperative languages is the side effect of an assignment statement on a class of variables called non-local variables.[4]

Page 39: Introduction to comp science

39

By J Zvirikuzhe, produced by Chief printers

Programs written using a declarative language specify the properties that have to be met by the output. They do not specify details expressed in terms of the control flow of the executing machine but of the mathematical relations between the declared objects and their properties. Two broad categories of declarative languages are functional languages and logical languages. The principle behind functional languages (like Haskell) is to not allow side effects, which makes it easier to reason about programs like mathematical functions.[4] The principle behind logical languages (like Prolog) is to define the problem to be solved — the goal — and leave the detailed solution to the Prolog system itself.[5] The goal is defined by providing a list of subgoals. Then each subgoal is defined by further providing a list of its subgoals, etc. If a path of subgoals fails to find a solution, then that subgoal is backtracked and another path is systematically attempted.

The form in which a program is created may be textual or visual. In a visual language program, elements are graphically manipulated rather than textually specified.

Compiling or interpreting

A computer program in the form of a human-readable, computer programming language is called source code. Source code may be converted into an executable image by a compiler or executed immediately with the aid of an interpreter.

Either compiled or interpreted programs might be executed in a batch process without human interaction, but interpreted programs allow a user to type commands in an interactive session. In this case the programs are the separate commands, whose execution occurs sequentially, and thus together. When a language is used to give commands to a software application (such as a shell) it is called a scripting language.

Compilers are used to translate source code from a programming language into either object code or machine code. Object code needs further processing to become machine code, and machine code is the central processing unit's native code, ready for execution. Compiled computer programs are commonly referred to as executables, binary images, or simply as binaries — a reference to the binary file format used to store the executable code.

Interpreted computer programs - in a batch or interactive session - are either decoded and then immediately executed or are decoded into some efficient intermediate representation for future execution. BASIC, Perl, and Python are examples of immediately executed computer programs. Alternatively, Java computer programs are compiled ahead of time and stored as a machine

Page 40: Introduction to comp science

40

By J Zvirikuzhe, produced by Chief printers

independent code called bytecode. Bytecode is then executed on request by an interpreter called a virtual machine.

The main disadvantage of interpreters is that computer programs run slower than when compiled. Interpreting code is slower than running the compiled version because the interpreter must decode each statement each time it is loaded and then perform the desired action. However, software development may be faster using an interpreter because testing is immediate when the compiling step is omitted. Another disadvantage of interpreters is that at least one must be present on the computer during computer program execution. By contrast, compiled computer programs need no compiler present during execution.

No properties of a programming language require it to be exclusively compiled or exclusively interpreted. The categorization usually reflects the most popular method of language execution. For example, BASIC is thought of as an interpreted language and C a compiled language, despite the existence of BASIC compilers and C interpreters. Some systems use just-in-time compilation (JIT) whereby sections of the source are compiled 'on the fly' and stored for subsequent executions.

Self-modifying programs

A computer program in execution is normally treated as being different from the data the program operates on. However, in some cases this distinction is blurred when a computer program modifies itself. The modified computer program is subsequently executed as part of the same program. Self-modifying code is possible for programs written in machine code, assembly language, Lisp, C, COBOL, PL/1, Prolog and JavaScript (the evaluated feature) among others.

Execution and storage

Typically, computer programs are stored in non-volatile memory until requested either directly or indirectly to be executed by the computer user. Upon such a request, the program is loaded into random access memory, by a computer program called an operating system, where it can be accessed directly by the central processor. The central processor then executes ("runs") the program, instruction by instruction, until termination. A program in execution is called a process.[6] Termination is either by normal self-termination or by error — software or hardware error.

Embedded programs

Page 41: Introduction to comp science

41

By J Zvirikuzhe, produced by Chief printers

The microcontroller on the right of this USB flash drive is controlled with embedded

firmware.

Some computer programs are embedded into hardware. A stored-program computer requires an initial computer program stored in its read-only memory to boot. The boot process is to identify and initialize all aspects of the system, from processor registers to device controllers to memory contents.[7] Following the initialization process, this initial computer program loads the operating system and sets the program counter to begin normal operations. Independent of the host computer, a hardware device might have embedded firmware to control its operation. Firmware is used when the computer program is rarely or never expected to change, or when the program must not be lost when the power is off.[8]

Manual programming

Switches for manual input on a Data General Nova 3

Computer programs historically were manually input to the central processor via switches. An instruction was represented by a configuration of on/off settings. After setting the configuration, an execute button was pressed. This process was then repeated. Computer programs also historically were manually input via paper tape

Page 42: Introduction to comp science

42

By J Zvirikuzhe, produced by Chief printers

or punched cards. After the medium was loaded, the starting address was set via switches and the execute button pressed.[9]

Automatic program generation

Generative programming is a style of computer programming that creates source code through generic classes, prototypes, templates, aspects, and code generators to improve programmer productivity. Source code is generated with programming tools such as a template processor or an integrated development environment. The simplest form of source code generator is a macro processor, such as the C preprocessor, which replaces patterns in source code according to relatively simple rules.

Software engines output source code or markup code that simultaneously become the input to another computer process. Application servers are software engines that deliver applications to client computers. For example, a Wiki is an application server that lets users build dynamic content assembled from articles. Wikis generate HTML, CSS, Java, and JavaScript which are then interpreted by a web browser.

Simultaneous execution

Many operating systems support multitasking which enables many computer programs to appear to run simultaneously on one computer. Operating systems may run multiple programs through process scheduling — a software mechanism to switch the CPU among processes often so users can interact with each program while it runs.[10] Within hardware, modern day multiprocessor computers or computers with multicore processors may run multiple programs.[11]

One computer program can calculate simultaneously more than one operation using threads or separate processes. Multithreading processors are optimized to execute multiple threads efficiently.

Functional categories

Computer programs may be categorized along functional lines. The main functional categories are system software and application software. System software includes the operating system which couples computer hardware with application software.[12] The purpose of the operating system is to provide an environment in which application software executes in a convenient and efficient manner.[12] In addition to the operating system, system software includes utility programs that help manage and tune the computer. If a computer program is not system software then it is application software. Application software includes middleware, which couples the system software with the user interface. Application software also

Page 43: Introduction to comp science

43

By J Zvirikuzhe, produced by Chief printers

includes utility programs that help users solve application problems, like the need for sorting.

Sometimes development environments for software development are seen as a functional category on its own, especially in the context of human-computer interaction and programming language design. Development environments gather system software (such as compilers and system's batch processing scripting languages) and application software (such as IDEs) for the specific purpose of helping programmers create new programs.

Operating System: Questions and Answers

Overview 1. Describe the two types of software

2. Understand the startup process for a personal computer

3. Describe the term user interface

4. Explain features common to most operating systems

5. Know the difference between stand-alone operating systems and network operating systems

6. Identify various stand-alone operating systems

7. Identify various network operating systems

8. Recognize devices that use embedded operating systems

9. Discuss the purpose of the following utilities: file viewer, file compression, diagnostic, uninstaller, disk scanner, disk defragmenter, backup, and screen saver

System software is an essential part of a computer system. This chapter defines system software and discusses two types of system software: operating systems and utility programs. You learn what an operating system is and explore user interfaces, operating systems features, and operating system functions. A variety of popular operating systems are described including DOS, Windows 3.x, Windows 95, Windows 98, Windows 2000, Windows XP, Windows CE, the Mac OS, OS/2, UNIX, Linux, and NetWare. You discover what happens when they start a computer and why a boot disk is important. Finally, a number of utility programs are explained.

Describe the two types of software

Two types of software are application software and system software. Application software consists of programs that perform specific tasks for users, such as a word

Page 44: Introduction to comp science

44

By J Zvirikuzhe, produced by Chief printers

processing program, e-mail program, or Web browser. System software consists of the programs that control the operations of a computer and its devices. The two types of system software are operating systems and utility programs. An operating system (OS) is a set of programs containing instructions that coordinate all the activities among computer hardware devices. A utility program performs a specific task, usually related to managing a computer, its devices, or its programs.

Understand the startup process for a personal computer

Booting is the process of starting or restarting a computer. When you turn on the computer, the power supply sends an electrical signal to devices located in the system unit. The processor chip resets itself and looks for the ROM chip that contains the BIOS (basic input/output system), which is firmware that holds the startup instructions. The BIOS executes the power-on self test (POST) to make sure hardware is connected properly and operating correctly. The POST results are compared with data in a CMOS chip on the motherboard. If the POST completes successfully, the BIOS searches for specific operating system files called system files. Once located, the boot drive (the drive from which your personal computer starts), loads the system files from storage (the hard disk – usually drive C) into memory (RAM) and executes them. Next, the kernel of the operating system loads into memory and takes control of the computer. The operating system loads configuration information. In Windows XP, the registry consists of several file that contain the system configuration information. When complete, the Windows XP desktop and icons display, and programs in the StartUp folder are executed.

Describe the term user interface

A user interface controls how you enter data and instructions and how information displays on the screen. Two types of user interfaces are command-line and graphical. With a command-line interface, you type keywords or press special keys to enter data or instructions. A graphical user interface (GUI) allows you to use menus and visual images such as icons, buttons, and other graphical objects to issue commands. A menu is a set of commands from which you can choose. An icon is a small image that represents a program, an instruction, a file, or some other object.

Explain features common to most operating systems

Most operating systems perform similar functions that include managing programs, managing memory, scheduling jobs, configuring devices, accessing the Web, monitoring performance, providing housekeeping services, and administering security. Managing programs directly affects your productivity. A single user/single tasking operating system allows only one user to run one program at a

Page 45: Introduction to comp science

45

By J Zvirikuzhe, produced by Chief printers

time. A multitasking operating system allows a single user to work on two or more applications that reside in memory at the same time. A multi-user operating system enables two or more users to run a program simultaneously.

A multiprocessing operating system can support two or more CPUs running programs at the same time. Managing memory involves assigning items to an area of memory while they are being processed. The purpose of memory management is to optimize use of random access memory (RAM). With virtual memory (VM), the operating system optimizes memory by allocating a portion of a storage medium, usually the hard disk, to function as additional RAM. Scheduling jobs (operations the processor manages) involves determining the order in which jobs are processed.

Spooling increases efficiency by placing print jobs in a buffer (an area of memory or storage where data resides while waiting to be transferred) until the printer is ready, freeing the processor for other tasks. Configuring devices establishes communication with each device in the computer. A device driver is a small program that tells the operating system how to communicate with a device. Accessing the Web may entail including a Web browser and e-mail program in the operating system. Monitoring performance helps to identify and solve system problems.

A performance monitor is a program that assesses and reports information about various system resources and devices. Providing housekeeping services entails performing storage and file management functions. A file manager performs such functions as formatting and copying disks; listing the files on a storage medium; checking the amount of used and unused space on a storage medium; organizing, copying, deleting, moving, and sorting files; and creating shortcuts (icons on the desktop that run a program when clicked).

Administering security involves establishing user accounts on a network. Each account typically requires a user name and a password to log on, or access, the network.

Know the difference between stand-alone operating systems and network operating systems

A stand-alone operating system is a complete operating system that works on a desktop or notebook computer. A network operating system (also called network OS or NOS) is an operating system that supports a network. A network is a collection of computers and devices connected together via communications media and devices such as cables, telephone lines, and modems. In some networks, the server is the computer that controls access to the hardware and software on a

Page 46: Introduction to comp science

46

By J Zvirikuzhe, produced by Chief printers

network and provides a centralized storage area. The other computers on the network, called clients, rely on the server(s) for resources.

Identify various stand-alone operating systems

Stand-alone operating systems include DOS, Windows 3.x, Windows 95, Windows NT Workstation, Windows 98, Windows 2000 Professional, Windows Millennium Edition, Windows XP Home Edition, Windows XP Professional Edition, Mac OS, OS/2 Warp Client, UNIX, and Linux. UNIX and Linux also function as network operating systems.

DOS (Disk Operating System) refers to several single user, command-line and menu-driven operating systems developed in the early 1980s for personal computers. Windows 3.x refers to early operating environments that, although not operating systems, provided a graphical user interface to work in combination with DOS and simplify its use. Windows 95 is a true multitasking operating system – not an operating environment – with an improved graphical interface. Windows NT Workstation is a client operating system that can connect to a Windows NT Server. Developed as an upgrade to Windows 95, the Windows 98 operating system is easier to use and more integrated with the Internet. Windows 98 includes Microsoft Internet Explorer, a popular Web browser, Windows Explorer, a file manager, and an Active Desktop™ that works similarly to Web links. Windows 2000 Professional is a complete, reliable multitasking client operating system for business desktop and business notebook computers. Windows Millennium Edition is an operating system that has features specifically for the home user. Windows XP is Microsoft’s fastest, most reliable Windows operating system, providing quicker startup, better performance, and a new, simplified visual look. Windows XP Home Edition is an upgrade to Windows Millennium Edition, while Windows XP Professional Edition is an upgrade to Windows 2000 Professional.

The Mac OS, the latest version of the Macintosh operating system (the first commercially successful graphical user interface), is a multitasking operating system available only on Apple computers. OS/2 Warp Client is IBM’s GUI multitasking client operating system that supports networking, Java, the Internet, and speech recognition.

Identify various network operating systems

Network operating systems include NetWare, Windows NT Server, Windows 2000 Server, Windows .NET Server, OS/2 Warp Server for E-business, UNIX, Linux, and Solaris™. Novell’s NetWare is a widely used network operating system designed for client/server networks. Windows NT Server is the operating system used by servers in the Windows NT client/server network environment. The Windows

Page 47: Introduction to comp science

47

By J Zvirikuzhe, produced by Chief printers

2000 Server family consists of three products: Windows 2000 Server (for the typical business network), Windows 2000 Advanced Server (for e-commerce applications), and Windows 2000 Database server (for demanding, large-scale applications). Windows .NET Server is an upgrade to Windows 2000 Server. The Windows .NET Server family includes four products: Windows .NET Standard Server (for the typical small- to medium-sized business network), Windows .NET Enterprise Server (for medium- to large-sized businesses, including those with e-commerce applications), Windows .NET Datacenter (for business with huge volumes of transactions and large-scale databases), and Windows .NET Web Server (for Web server and Web hosting businesses).

OS/2 Warp Server for E-business is IBM’s network operating system designed for all sizes of business.

UNIX is a multitasking, command-line operating system implemented on many different types of computers. Because it is both a stand-alone operating system and a network operating system, some call UNIX a multipurpose operating system. Linux is a popular, free, multitasking UNIX-type operating system. Solaris™, a version of UNIX developed by Sun Microsystems, is a network operating system designed for e-commerce applications.

Recognize devices that use embedded operating systems

The operating system on most handheld computers and small devices, called an embedded operating system, resides on a ROM chip. Popular embedded operating systems include Windows CE, Pocket PC OS, and Palm OS®. Windows CE is a scaled-down Windows operating system designed for use on wireless communications devices and smaller computers such as handheld computers, in-vehicle devices, and Web-enabled devices. Pocket PC OS is a scaled-down operating system developed by Microsoft that works on a specific type of handheld computer, called a Pocket PC. The Palm OS® is the operating system used on Palm handheld computers from Palm, Inc., and Visor handheld computers from Handspring™.

Discuss the purpose of the following utilities: file viewer, file compression, diagnostic, uninstaller, disk scanner, disk defragmenter, backup, and screen saver

Most operating systems include several utility programs that perform specific tasks related to managing a computer, its devices, or its programs. A file viewer is a utility that allows you to display and copy the contents of a file. A file compression utility shrinks the size of a file. A diagnostic utility compiles technical information about a computer’s hardware and certain system software programs and then prepares a report outlining any identified problems. An uninstaller is a utility that removes an application, as well as any associated entries in the system files. A disk

Page 48: Introduction to comp science

48

By J Zvirikuzhe, produced by Chief printers

scanner is a utility that (1) detects and corrects both physical and logical problems on a hard disk, and (2) searches for and removes unnecessary files.

A disk defragmenter is a utility that reorganizes files and unused space on a computer’s hard disk so data can be accessed more quickly and programs can run faster. A backup utility copies, or backs up, selected files or an entire hard drive onto another disk or tape. A screen saver is a utility that causes the monitor’s screen to display a moving image on a blank screen if no keyboard activity occurs for a specified period.

Page 49: Introduction to comp science

49

By J Zvirikuzhe, produced by Chief printers