- •Ssd2: Introduction to Computer Systems contents
- •Prerequisites
- •Course Textbook
- •Hardware/Software Requirements
- •The purpose of ssd2 is for students to
- •Students successfully completing ssd2 will be able to
- •1.1 Overview of Computer Systems
- •1.1.1 Components of a Computer System
- •Hardware System
- •Software System—Operating System Software and Application Software
- •Network System
- •1.2 Evolution of Computer Systems
- •1.2.1 Brief History
- •1200S—Manual Calculating Devices
- •1600S—Mechanical Calculators
- •1800S—Punched Cards
- •1940S—Vacuum Tubes
- •1950S—Transistors
- •1960S—Integrated Circuits
- •1970S to Present—Microprocessor
- •Pace of Advancement
- •1.2.2 Applications of Computer Systems
- •In Education Multimedia-Facilitated Learning
- •Simulation-Based Education
- •Intelligent Machine-Based Training
- •Interactive Learning
- •In Business Supply Chain Management
- •Project Management
- •Customer Relationship Management
- •Sales and Marketing Using Electronic Commerce
- •Manufacturing Research
- •In Entertainment Movies
- •Video Games
- •1.3 Data Representation in a Computer System
- •1.3.1 Bits and Bytes
- •Data Representation Using Binary Digits
- •Increasing Need for Bytes
- •1.3.2 Number Systems
- •Decimal
- •Hexadecimal
- •Learning Exercise
- •2.1 Processor and Memory
- •2.1.1 Processor Basics
- •Processor
- •Instruction Execution with the cpu
- •Performance: Factors and Measures
- •Types of Processors
- •2.1.2 Types of Memory
- •Cmos Memory
- •Summary
- •2.1.3 Lab: Benchmarking (Optional)
- •2.2 Peripherals
- •2.2.1 Connecting Peripherals
- •Expansion Slots and Cards
- •Usb and FireWire
- •Comparing Different Ports
- •2.2.2 Buses
- •2.2.3 Input/Output Devices
- •Input Devices
- •Cameras
- •Digital Camcorders
- •Scanners
- •Output Devices: Monitors and Projectors
- •Crt Monitors
- •Lcd Monitors
- •Projectors
- •Output Devices: Printers
- •Ink Printers
- •Dye-Sublimation Printers
- •Laser Printers
- •Comparing Printers
- •2.3 Storage Devices
- •2.3.1 Disk Controller Interfaces
- •Ide Interface
- •Eide Master/Slave
- •2.3.2 Mass Storage
- •How Mass Storage Devices Differ from ram
- •Disk Drive Reliability
- •Optical Media: cDs versus dvDs
- •Magnetic Media
- •Optical versus Magnetic
- •Solid State
- •Comparing Storages
- •2.4 Putting Together the Hardware Components
- •2.4.1 How Components Work Together
- •2.4.2 Lab: Researching a Computer System
- •2.4.3 Lab: Online Configuration
- •2.5 Improving Computer Performance
- •2.5.1 Moore's Law
- •2.5.2 Bottlenecks
- •Bottlenecks—Slowing a Process
- •Typical Bottlenecks
- •Eliminating Bottlenecks
- •2.5.3 Throughput and Latency
- •Unit 3. Operating System Software
- •3.1 Structure
- •3.1.1 Layers of Software
- •Layers and Process Management
- •Encapsulation and Abstraction
- •Layers of Software
- •3.1.2 The bios: Life at the Bottom
- •The Role of the bios
- •Changing bios Settings
- •3.1.3 Process Control
- •3.1.4 Lab: The Task Manager
- •3.2 Device Management and Configuration
- •3.2.1 Interrupt Handling
- •Interrupts
- •Interrupt Priority and Nested Interrupts
- •Traps and Faults
- •3.2.2 Hardware Attributes
- •Installing Drivers
- •Changing a Driver's Configuration
- •3.2.3 Configuration
- •3.2.4 Lab: Device Management
- •3.3 Resource Sharing
- •3.3.1 Virtual Memory
- •Managing Memory
- •Relocation
- •Virtual Memory
- •3.3.2 File and Printer Sharing
- •Printers
- •3.4 File Systems
- •3.4.1 File Organization
- •Folders
- •Shortcuts
- •File Names and Types
- •3.4.2 File Allocation Table and nt File System
- •Clusters and File Allocation Tables
- •Nt File System
- •Unit 4. Application Software
- •4.1 Software Basics
- •4.2 Using Software Systems
- •4.2.1 Lab: dos Commands
- •4.2.2 Lab: Macros
- •4.2.3 Lab: Embedding Application Objects
- •4.3 Batch Script Files
- •4.3.1 Advanced Command-Line Functions
- •Dos Command Syntax
- •Review of File System Commands
- •Wildcard Characters
- •Redirection and Piping
- •4.3.2 Batch File Commands
- •Batch Files
- •Commands
- •4.3.3 Lab: Creating a Batch File
- •Example of a Batch File
- •Example of a Batch File with Arguments
- •4.4 Databases
- •4.4.1 Lab: Searching the Library of Congress
- •4.5 Software Engineering
- •4.5.1 Issues in Large-Scale Software Development
- •The Software Development Process
- •Define or Redefine the Problem
- •Plan a Solution to the Problem
- •Code the Solution
- •Evaluate and Test Everything
- •4.5.2 Open Source Model
- •Free Software
- •4.5.3 Tools for Software Creation and Management
- •Editors
- •Compilers
- •Debuggers
- •Integrated Development Environments (idEs)
- •Unit 5. Network Systems
- •5.1 Internet Basics
- •5.1.1 Mime Types
- •5.1.2 Internet Languages
- •JavaScript
- •5.2 Local and Wide Area Networks
- •5.3 Communication Strategies
- •5.3.1 Client-Server Framework
- •5.3.2 Peer-to-Peer Connectivity
- •5.4 Data Transfer Technologies
- •5.5 Internet Architecture
- •5.5.1 Routers and tcp/ip
- •Internet Protocol
- •Routers
- •Transmission Control Protocol
- •5.5.2 Domain Name Service
- •Domain Name Service
- •5.5.3 Connectivity
- •Conventional Analog Phone Lines
- •Isdn: Integrated Services Digital Network
- •Cable Modem
- •XDsl: Digital Subscriber Line
- •Dedicated High Speed Lines
- •5.5.4 Internet Service Providers
- •Unit 6. Computer Security
- •6.1 Security Threats
- •6.1.1 Intruders: Who, Why, and How?
- •6.1.2 Identity Theft and Privacy Violation
- •Password Cracking
- •Packet sniffing
- •Social Engineering/Fraud
- •Spoofing
- •Port Scanning
- •6.1.3 Malicious Software
- •Trojan Horse
- •Prevention
- •Detection
- •Counter Measures
- •6.1.4 Denial of Service
- •Network Connectivity
- •Network Bandwidth
- •Other Resource Consumption Attacks
- •Distributed Denial of Service Attack
- •Prevention
- •6.2 Security Technologies
- •6.2.1 Encryption
- •Substitution Cipher
- •Transmitting the Key
- •Private Key Encryption Scheme
- •Public Key Encryption Scheme
- •Hybrid Encryption Schemes
- •6.2.2 Applications of Encryption
- •Hard Drives
- •Dvd Movies
- •Cellular Phones
- •6.2.3 Authentication
- •Strong Passwords
- •Smart Cards
- •Biometrics
- •Digital Signatures
- •Digital Certificates and Certificate Authorities
- •Ssl Protocol
- •6.3 Prevention, Detection, and Recovery
- •6.3.1 Firewall
- •Application Gateway
- •Packet Filter
- •Application Gateway versus Packet Filter
- •Intruder Attacks Prevented by Firewall
- •Setting up a Firewall
- •6.3.2 Intrusion Detection Tools
- •Intrusion Detection Systems
- •Network Monitoring Tools
- •Anti-Virus Software
- •6.3.3 Data Recovery
- •6.3.4 Summary of Security Tips
Layers of Software
Let us now consider the layers of software that make up a computer system:
|
User-Written Scripts or Macros |
|
User Interface |
|
Application |
|
Run-time Library |
|
Application Program Interface |
|
Operating System |
|
Kernel |
|
Device Drivers |
|
BIOS |
|
(Hardware) |
Table 1 Layers of software
We will go through these levels from the bottom up:
Hardware, for our purposes, is the lowest level of the computer: the physical components from which it is constructed. Actually, there are several levels of hardware, since a computer is composed of circuit boards, a board contains multiple chips, chips are composed of circuits, and circuits are built from transistors. But, this unit is supposed to be about software, so we will ignore those details.
The BIOS, or Basic Input/Output System, is the most fundamental level of software. It deals directly with the signals that control each hardware component. Much of its work is performed when the computer is first turned on.
Device drivers are the helper programs the operating system uses to communicate with a specific model of device. To add new hardware to a system, the appropriate device drivers must be installed. (Peripheral components are often shipped with a floppy disk containing the necessary drivers.) The device driver for a hard drive, for example, knows how many tracks are on the drive and what commands to send to the drive to move the arm to a specific track and then read or write data. The advantage of this arrangement is that the operating system vendor does not have to be responsible for supporting every device ever invented, or that might be invented in the future. The device manufacturer supplies the driver, and as long as the driver follows the established conventions for communicating with the operating system, the device should be usable.
The kernel is the heart of the operating system and performs the functions that are most crucial for keeping everything running. It manages memory, decides which task to run next, and handles the various types of interrupts that can occur. The kernel must stay resident in RAM at all times, and because of its special nature, it must run without some of the protection mechanisms that guard against faulty instructions or illegal memory accesses. Therefore, it is kept as small as possible.
The remaining layer of the operating system is much larger than the kernel. It implements all the other functions the operating system is expected to perform. For example, it includes a file system for managing the folders and files on a disk. Refer to 3.4 File Systems for a more detailed discussion of this material. It communicates with the kernel when it needs to perform basic actions, such as initiating a data transfer operation to a peripheral.
The application program interface, or API, is the layer where user programs (applications) communicate with the operating system. For example, suppose a Web browser application decides it needs more memory in order to display a large image file. The operating system is responsible for keeping track of which programs are using which chunks of memory at any given time. This information is encapsulated within the operating system; the application does not know anything about how the information is organized. It does not have to. The operating system defines an abstraction for managing memory known as an API call. All the application developer has to know is which API call to use to ask for more. If a new version of the operating system comes along that uses a different way to keep track of memory, the application program will continue to work just fine as long as the API call stays the same.
Run-time libraries are collections of software routines that application programs rely on. For example, if you write an application in the C language to open a file and read some data from it, you will use two built-in functions called fopen and fscanf. These functions are fetched from a library of I/O routines called stdio that can be used by any C program. They will make the appropriate API calls to get the operating system to do what you need. The nice thing about the stdio abstraction is that your program is not dependent on a specific set of API calls, so you can run it on any machine that has a C compiler and an implementation of the C runtime library. Most programs draw on routines from several libraries.
The application layer is where you will find the routines that do the actual work the application was created for.
The user interface layer is responsible for communication between the application and the user. It is typically a GUI (graphical user interface) composed of buttons and pull-down menus. Suppose the user wants the application to open a file. This requires a bit of dialog that is handled by the GUI. First, on theFile menu, the user clicks Open.... The Open dialog box appears and prompts the user to select a file. Once the user has selected a file, the GUI passes the request and the file name to the application, which opens and processes the file.
Scripts or macros are routines that many applications allow users to create from the application's set of built-in commands. Scripts and macros allow users to automate sequences of actions they perform frequently. For example, a Microsoft Excel macro might open a file, copy a bunch of numbers from the file to a spreadsheet, perform some calculation on them, and write the results to another file. If these calculations update the values of a user's stock portfolio, he or she will want to perform the calculations every day—so it might be worthwhile for them to collect the calculations into a script that can be executed with just a few keystrokes. That way the user can forget about the details. Scripts are located above the application layer in the software hierarchy because they are built from application-level commands.
The computer industry today relies on specialists in each of the levels listed above. Some people make their living writing BIOS software, while others concentrate on improving GUI technology. But, the greatest number of programmers is found at the application level, because people want to use computers for so many different tasks.
![]()
1 Croutons are small toasted cubes of bread that are popular in salads in the U.S.—where a salad will typically be leaves of lettuce, slices of tomato (or the tiny cherry tomatoes), and sometimes slices of other vegetables like cucumber or green pepper. The croutons go on top!
