Add second year
This commit is contained in:
@ -0,0 +1,541 @@
|
||||
- #[[CT213 - Computer Systems & Organisation]]
|
||||
- No previous topic.
|
||||
- **Relevant Slides:** 
|
||||
-
|
||||
- ## Traditional Classes of Computer Systems
|
||||
- What is a **Personal Computer (PC)**?
|
||||
card-last-score:: 5
|
||||
card-repeats:: 2
|
||||
card-next-schedule:: 2022-09-23T18:28:00.836Z
|
||||
card-last-interval:: 4
|
||||
card-ease-factor:: 2.7
|
||||
card-last-reviewed:: 2022-09-19T18:28:00.836Z
|
||||
- A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse.
|
||||
- What is a **Server**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-22T14:51:19.171Z
|
||||
card-last-reviewed:: 2022-09-18T14:51:19.172Z
|
||||
card-last-score:: 3
|
||||
- A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
|
||||
- What is a **Supercomputer**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:20:18.972Z
|
||||
card-last-reviewed:: 2022-09-18T15:20:18.973Z
|
||||
card-last-score:: 5
|
||||
- A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars.
|
||||
- What is an **Embedded Computer**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:21.268Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:21.269Z
|
||||
card-last-score:: 5
|
||||
- An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software.
|
||||
- What are **Personal Mobile Devices**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:24.814Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:24.814Z
|
||||
card-last-score:: 5
|
||||
- **Personal Mobile Devices** are small, wireless devices that connect to the internet.
|
||||
- They rely on batteries for power, and software is installed by downloading apps.
|
||||
- Conventional examples include smartphones and tablets.
|
||||
- What is **Cloud Computing**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:02.669Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:02.669Z
|
||||
card-last-score:: 5
|
||||
- **Cloud Computing** refers to large collections of servers that provide services over the internet.
|
||||
- Some providers rent dynamically varying number of servers as a utility.
|
||||
- What is **Software as a Service**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-23T17:42:30.362Z
|
||||
card-last-reviewed:: 2022-09-19T17:42:30.363Z
|
||||
card-last-score:: 5
|
||||
- **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser.
|
||||
- Examples include web search & email.
|
||||
-
|
||||
- ## Computer Systems
|
||||
collapsed:: true
|
||||
- {:height 410, :width 414}
|
||||
- What is **Application Software**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:30.513Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:30.513Z
|
||||
card-last-score:: 5
|
||||
- **Application Software** consists of user-installed applications & programs.
|
||||
- Application Software provides services to the user that are commonly useful.
|
||||
- What is the purpose of the **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:09.752Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:09.753Z
|
||||
card-last-score:: 5
|
||||
- The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions.
|
||||
- What is the purpose of the **Hardware**?
|
||||
- The **Hardware** performs the tasks.
|
||||
-
|
||||
- ## Seven Great Ideas in Computer Organisation
|
||||
- ### 1. Use **Abstraction** to Simplify Design #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:25:18.076Z
|
||||
card-last-reviewed:: 2022-09-19T18:25:18.076Z
|
||||
card-last-score:: 5
|
||||
- A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation
|
||||
- Lower-level details are hidden to offer a simpler model at higher levels.
|
||||
- ### 2. Make the **Common Case** Fast #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:44.377Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:44.378Z
|
||||
card-last-score:: 5
|
||||
- Making the **common case fast** will tend to enhance performance better than optimising the rare case.
|
||||
- The common case is often simpler than the rare case, and hence is usually easier to enhance.
|
||||
- ### 3. Performance via **Parallelism** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:03:58.567Z
|
||||
card-last-reviewed:: 2022-09-18T15:03:58.567Z
|
||||
card-last-score:: 5
|
||||
- Involves speeding up performance by using designs that compute operations in **parallel**.
|
||||
- ### 4. Performance via **Pipelining** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.6
|
||||
card-next-schedule:: 2022-09-21T20:52:29.657Z
|
||||
card-last-reviewed:: 2022-09-17T20:52:29.657Z
|
||||
card-last-score:: 5
|
||||
- **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name.
|
||||
- ### 5. Performance via **Prediction** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:23:23.782Z
|
||||
card-last-reviewed:: 2022-09-19T18:23:23.782Z
|
||||
card-last-score:: 5
|
||||
- In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate).
|
||||
- ### 6. Hierarchy of Memories #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:18:36.340Z
|
||||
card-last-reviewed:: 2022-09-18T15:18:36.341Z
|
||||
card-last-score:: 5
|
||||
- Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**.
|
||||
- The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy.
|
||||
- The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy.
|
||||
- ### 7. Dependability via **Redundancy** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:19:01.340Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:01.341Z
|
||||
card-last-score:: 5
|
||||
- Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures.
|
||||
-
|
||||
- ## Hardware Organisation
|
||||
- What does basic computer organisation look like? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:27:44.250Z
|
||||
card-last-reviewed:: 2022-09-19T18:27:44.250Z
|
||||
card-last-score:: 5
|
||||
- 
|
||||
- What is an **integrated circuit**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 10.8
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-30T12:47:21.597Z
|
||||
card-last-reviewed:: 2022-09-19T17:47:21.597Z
|
||||
card-last-score:: 5
|
||||
- An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors.
|
||||
- ### The CPU
|
||||
collapsed:: true
|
||||
- What is a **CPU**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:22:22.644Z
|
||||
card-last-reviewed:: 2022-09-18T15:22:22.644Z
|
||||
card-last-score:: 5
|
||||
- The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on.
|
||||
- The CPU is ^^responsible for executing programs.^^
|
||||
- What are the steps that the CPU takes to process programs? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-22T14:58:32.353Z
|
||||
card-last-reviewed:: 2022-09-18T14:58:32.353Z
|
||||
card-last-score:: 3
|
||||
- **1. Fetch:** Retrieve an instruction from ^^program memory.^^
|
||||
- **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU.
|
||||
- **3. Execute:** Various portions of the CPU are connected to perform the desired operation.
|
||||
- **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^
|
||||
- ### CPU Organisation
|
||||
- What does the **organisation** of the CPU look like? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-22T15:13:04.465Z
|
||||
card-last-reviewed:: 2022-09-18T15:13:04.465Z
|
||||
card-last-score:: 3
|
||||
- Processors are made up of:
|
||||
- A **Control Unit**
|
||||
- **Execution Unit(s)**
|
||||
- A **Register File**
|
||||
- {:height 339, :width 418}
|
||||
-
|
||||
- #### Control Unit
|
||||
- What does the **Control Unit** do? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:27:08.868Z
|
||||
card-last-reviewed:: 2022-09-19T18:27:08.869Z
|
||||
card-last-score:: 5
|
||||
- The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory.
|
||||
- It ^^retrieves & executes^^ them.
|
||||
- What is the architecture of the control unit? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-18T20:02:39.216Z
|
||||
card-last-reviewed:: 2022-09-14T20:02:39.217Z
|
||||
card-last-score:: 3
|
||||
- The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**.
|
||||
- It also contains two special registers:
|
||||
- **Program Counter (PC):** keeps the address of the next instruction
|
||||
- **Instruction Register (IR):** keeps the instruction being executed
|
||||
- {:height 266, :width 550}
|
||||
-
|
||||
- ### The Memory Subsystem
|
||||
collapsed:: true
|
||||
- How is the memory divided into storage locations? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:17:42.430Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:42.430Z
|
||||
card-last-score:: 5
|
||||
- Memory is divided into a set of storage location which can hold data.
|
||||
- Locations are numbered.
|
||||
- Addresses are used to tell the memory which location the processor wants to access.
|
||||
- What are the two hierarchies of memory? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-19T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-19T18:29:01.554Z
|
||||
card-last-score:: 1
|
||||
- **1. Nonvolatile / ROM (Read Only Memory):** Read only memory.
|
||||
- Used to store the BIOS and / or a *bootstrap* or *bootloader* program.
|
||||
- **2. Volatile / RAM (Random Access Memory):** Read / Write memory.
|
||||
- Also called **Primary Memory**.
|
||||
- Used to hold the programs, operating system, and data required by the computer.
|
||||
- #### Primary Memory
|
||||
- How is primary memory connected to the CPU? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:06:00.776Z
|
||||
card-last-reviewed:: 2022-09-19T18:06:00.777Z
|
||||
card-last-score:: 5
|
||||
- **Primary Memory** is directly connected to the Central Processing Unit of the computer.
|
||||
- It must be present for the CPU to function correctly.
|
||||
- What are the three types of Primary Storage? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-18T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-18T15:10:32.299Z
|
||||
card-last-score:: 1
|
||||
- **1. Processors Register:**
|
||||
- Contains information that the CPU needs to carry out the current instruction.
|
||||
- **2. Cache Memory:**
|
||||
- A special type of internal memory used by many CPUs to increase their **throughput**.
|
||||
- **3. Main Memory:**
|
||||
- Contains the programs that are currently being run and the data that the programs are operating on.
|
||||
- What is the **address width**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:21:24.382Z
|
||||
card-last-reviewed:: 2022-09-18T15:21:24.382Z
|
||||
card-last-score:: 5
|
||||
- The **address width** is the number of bits used to represent an address in memory.
|
||||
- The **width** limits the amount of memory that a computer can access.
|
||||
- Most computers use a **64 bit address**, which means that the maximum number of locations is $$ 2^{64} \approx 16 \text{ billion gigabytes}$$.
|
||||
- What operations does the memory subsystem support? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:11.140Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:11.140Z
|
||||
card-last-score:: 5
|
||||
- The memory subsystem supports two operations:
|
||||
- **Load** (or read) + the address of the data location to be read.
|
||||
- **Store** (or write) + the address of the location & the data to be written.
|
||||
- How many bytes may the memory system read or write at a time? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:57.109Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:57.110Z
|
||||
card-last-score:: 3
|
||||
- Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit.
|
||||
- How is a section of memory addressed? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:12:03.194Z
|
||||
card-last-reviewed:: 2022-09-18T15:12:03.195Z
|
||||
card-last-score:: 5
|
||||
- The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes.
|
||||
- #### Memory Alignment & Words of Data
|
||||
- When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^
|
||||
- When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^
|
||||
- Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16.
|
||||
- ### The I/O Subsystem
|
||||
- What are **input devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:21:35.278Z
|
||||
card-last-reviewed:: 2022-09-18T15:21:35.278Z
|
||||
card-last-score:: 5
|
||||
- Anything that feeds data into the computer.
|
||||
- What are **output devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:16:34.930Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:34.931Z
|
||||
card-last-score:: 5
|
||||
- Display / transmit information back to the user.
|
||||
- What does the **I/O Subsystem** contain? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:21:46.984Z
|
||||
card-last-reviewed:: 2022-09-19T18:21:46.985Z
|
||||
card-last-score:: 5
|
||||
- The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data.
|
||||
- How do I/O devices communicate with the processor? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-22T14:53:22.144Z
|
||||
card-last-reviewed:: 2022-09-18T14:53:22.145Z
|
||||
card-last-score:: 3
|
||||
- I/O devices usually communicate with the processor using the **I/O Bus**.
|
||||
- PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus.
|
||||
- The Operating System needs a **device driver** to access a given I/O device.
|
||||
- What is a **device driver**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:11:51.628Z
|
||||
card-last-reviewed:: 2022-09-18T15:11:51.628Z
|
||||
card-last-score:: 5
|
||||
- A **device driver** is a program that allows the OS to control an I/O device.
|
||||
- #### I/O Read / Write Operations
|
||||
- The I/O read & write operations are similar to the memory read & write operations.
|
||||
- How does the processor address I/O devices? #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-28T14:48:48.247Z
|
||||
card-last-reviewed:: 2022-09-19T17:48:48.248Z
|
||||
card-last-score:: 3
|
||||
- A processor may use:
|
||||
- **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^
|
||||
- **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^
|
||||
- What is **IO/M**? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-18T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-18T15:11:25.751Z
|
||||
card-last-score:: 1
|
||||
- **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem.
|
||||
- When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**.
|
||||
- When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**.
|
||||
-
|
||||
-
|
||||
-
|
||||
- ## Programs
|
||||
- What are programs? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:13:13.990Z
|
||||
card-last-reviewed:: 2022-09-18T15:13:13.990Z
|
||||
card-last-score:: 5
|
||||
- Programs are ^^sequences of instructions^^ that tell the computer what to do.
|
||||
- To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^
|
||||
- These operations are known as **machine instructions** or just **instructions**.
|
||||
- A set of instructions that a processor can execute is known as an **instruction set**.
|
||||
- ### Program Development Tools
|
||||
collapsed:: true
|
||||
- What is a **high-level programming language**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:08:53.500Z
|
||||
card-last-reviewed:: 2022-09-18T15:08:53.500Z
|
||||
card-last-score:: 5
|
||||
- A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**.
|
||||
- What is a **compiler**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T17:43:48.914Z
|
||||
card-last-reviewed:: 2022-09-19T17:43:48.914Z
|
||||
card-last-score:: 5
|
||||
- A **compiler** is a program that translates statements in a given high-level language into assembly language statements.
|
||||
- What is an **assembler**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:10:09.892Z
|
||||
card-last-reviewed:: 2022-09-18T15:10:09.892Z
|
||||
card-last-score:: 5
|
||||
- An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^
|
||||
- What is **Assembly Language**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-09-30T21:48:54.576Z
|
||||
card-last-reviewed:: 2022-09-19T17:48:54.576Z
|
||||
card-last-score:: 5
|
||||
- **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**.
|
||||
- What is **Machine Language**? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.6
|
||||
card-next-schedule:: 2022-09-19T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-19T18:22:03.638Z
|
||||
card-last-score:: 1
|
||||
- **Machine Language** is a ^^binary representation^^ of **machine instructions**.
|
||||
- What is an **instruction**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:19:26.835Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:26.836Z
|
||||
card-last-score:: 5
|
||||
- An **instruction** is a command that the computer hardware understands & obeys.
|
||||
-
|
||||
- ## Operating Systems
|
||||
- What is an **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-23T18:25:01.958Z
|
||||
card-last-reviewed:: 2022-09-19T18:25:01.958Z
|
||||
card-last-score:: 5
|
||||
- Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^
|
||||
- The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc.
|
||||
- It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^
|
||||
- Usually, there is no operating system for **small embedded systems**.
|
||||
- Computers designed for one specific task.
|
||||
-
|
||||
- ### Multiprogramming
|
||||
- What is **Multiprogramming**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:23:28.557Z
|
||||
card-last-reviewed:: 2022-09-19T18:23:28.557Z
|
||||
card-last-score:: 5
|
||||
- **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^
|
||||
- Many multiprogrammed computers are **multiuser**.
|
||||
- They allow multiple users to be logged in at a time.
|
||||
- How is multiprogramming achieved? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:19:07.150Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:07.151Z
|
||||
card-last-score:: 5
|
||||
- Multiprogramming is achieved by ^^switching rapidly between programs.^^
|
||||
- How does the processor decide which process to execute next? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:20:14.106Z
|
||||
card-last-reviewed:: 2022-09-18T15:20:14.106Z
|
||||
card-last-score:: 5
|
||||
- **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive.
|
||||
- **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time.
|
||||
- **Round Robin:** distributes the processing time equitably among all ready processes.
|
||||
- ### Context Switching
|
||||
- What is a **Context Switch**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:10:00.458Z
|
||||
card-last-reviewed:: 2022-09-18T15:10:00.458Z
|
||||
card-last-score:: 5
|
||||
- When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor.
|
||||
- This is a **context switch**.
|
||||
- How does the OS go about a Context Switch? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-22T15:19:47.984Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:47.984Z
|
||||
card-last-score:: 3
|
||||
- copies the current program register file into memory
|
||||
- restores the contents of the next program's register file into the processor
|
||||
- starts executing the next program
|
||||
- From the program point of view, ^^no program can tell that a context switch has been performed.^^
|
||||
- ### Protection
|
||||
- Three rules of Protection in multiprogrammed computers: #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-28T14:45:26.235Z
|
||||
card-last-reviewed:: 2022-09-19T17:45:26.235Z
|
||||
card-last-score:: 3
|
||||
- 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^
|
||||
- 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy).
|
||||
- 3. Programs ^^must not interfere with other programs' use of I/O devices.^^
|
||||
- How is protection achieved? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-19T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-19T18:26:58.100Z
|
||||
card-last-score:: 1
|
||||
- Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through:
|
||||
- **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode.
|
||||
- User programs execute in **user mode**.
|
||||
- **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space.
|
||||
- The OS is *translating* memory addresses that the program references into physical addresses used by the memory system.
|
||||
-
|
||||
-
|
||||
- **Next Topic:** [[Programming Models]]
|
@ -0,0 +1,541 @@
|
||||
- #[[CT213 - Computer Systems & Organisation]]
|
||||
- No previous topic.
|
||||
- **Relevant Slides:** 
|
||||
-
|
||||
- ## Traditional Classes of Computer Systems
|
||||
- What is a **Personal Computer (PC)**?
|
||||
card-last-score:: 5
|
||||
card-repeats:: 2
|
||||
card-next-schedule:: 2022-09-23T18:28:00.836Z
|
||||
card-last-interval:: 4
|
||||
card-ease-factor:: 2.7
|
||||
card-last-reviewed:: 2022-09-19T18:28:00.836Z
|
||||
- A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse.
|
||||
- What is a **Server**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-22T14:51:19.171Z
|
||||
card-last-reviewed:: 2022-09-18T14:51:19.172Z
|
||||
card-last-score:: 3
|
||||
- A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
|
||||
- What is a **Supercomputer**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:20:18.972Z
|
||||
card-last-reviewed:: 2022-09-18T15:20:18.973Z
|
||||
card-last-score:: 5
|
||||
- A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars.
|
||||
- What is an **Embedded Computer**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:21.268Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:21.269Z
|
||||
card-last-score:: 5
|
||||
- An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software.
|
||||
- What are **Personal Mobile Devices**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:24.814Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:24.814Z
|
||||
card-last-score:: 5
|
||||
- **Personal Mobile Devices** are small, wireless devices that connect to the internet.
|
||||
- They rely on batteries for power, and software is installed by downloading apps.
|
||||
- Conventional examples include smartphones and tablets.
|
||||
- What is **Cloud Computing**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:02.669Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:02.669Z
|
||||
card-last-score:: 5
|
||||
- **Cloud Computing** refers to large collections of servers that provide services over the internet.
|
||||
- Some providers rent dynamically varying number of servers as a utility.
|
||||
- What is **Software as a Service**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-23T17:42:30.362Z
|
||||
card-last-reviewed:: 2022-09-19T17:42:30.363Z
|
||||
card-last-score:: 5
|
||||
- **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser.
|
||||
- Examples include web search & email.
|
||||
-
|
||||
- ## Computer Systems
|
||||
collapsed:: true
|
||||
- {:height 410, :width 414}
|
||||
- What is **Application Software**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:30.513Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:30.513Z
|
||||
card-last-score:: 5
|
||||
- **Application Software** consists of user-installed applications & programs.
|
||||
- Application Software provides services to the user that are commonly useful.
|
||||
- What is the purpose of the **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:09.752Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:09.753Z
|
||||
card-last-score:: 5
|
||||
- The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions.
|
||||
- What is the purpose of the **Hardware**?
|
||||
- The **Hardware** performs the tasks.
|
||||
-
|
||||
- ## Seven Great Ideas in Computer Organisation
|
||||
- ### 1. Use **Abstraction** to Simplify Design #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:25:18.076Z
|
||||
card-last-reviewed:: 2022-09-19T18:25:18.076Z
|
||||
card-last-score:: 5
|
||||
- A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation
|
||||
- Lower-level details are hidden to offer a simpler model at higher levels.
|
||||
- ### 2. Make the **Common Case** Fast #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:44.377Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:44.378Z
|
||||
card-last-score:: 5
|
||||
- Making the **common case fast** will tend to enhance performance better than optimising the rare case.
|
||||
- The common case is often simpler than the rare case, and hence is usually easier to enhance.
|
||||
- ### 3. Performance via **Parallelism** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:03:58.567Z
|
||||
card-last-reviewed:: 2022-09-18T15:03:58.567Z
|
||||
card-last-score:: 5
|
||||
- Involves speeding up performance by using designs that compute operations in **parallel**.
|
||||
- ### 4. Performance via **Pipelining** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.6
|
||||
card-next-schedule:: 2022-09-21T20:52:29.657Z
|
||||
card-last-reviewed:: 2022-09-17T20:52:29.657Z
|
||||
card-last-score:: 5
|
||||
- **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name.
|
||||
- ### 5. Performance via **Prediction** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:23:23.782Z
|
||||
card-last-reviewed:: 2022-09-19T18:23:23.782Z
|
||||
card-last-score:: 5
|
||||
- In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate).
|
||||
- ### 6. Hierarchy of Memories #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:18:36.340Z
|
||||
card-last-reviewed:: 2022-09-18T15:18:36.341Z
|
||||
card-last-score:: 5
|
||||
- Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**.
|
||||
- The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy.
|
||||
- The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy.
|
||||
- ### 7. Dependability via **Redundancy** #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:19:01.340Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:01.341Z
|
||||
card-last-score:: 5
|
||||
- Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures.
|
||||
-
|
||||
- ## Hardware Organisation
|
||||
- What does basic computer organisation look like? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:27:44.250Z
|
||||
card-last-reviewed:: 2022-09-19T18:27:44.250Z
|
||||
card-last-score:: 5
|
||||
- 
|
||||
- What is an **integrated circuit**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 10.8
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-30T12:47:21.597Z
|
||||
card-last-reviewed:: 2022-09-19T17:47:21.597Z
|
||||
card-last-score:: 5
|
||||
- An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors.
|
||||
- ### The CPU
|
||||
collapsed:: true
|
||||
- What is a **CPU**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:22:22.644Z
|
||||
card-last-reviewed:: 2022-09-18T15:22:22.644Z
|
||||
card-last-score:: 5
|
||||
- The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on.
|
||||
- The CPU is ^^responsible for executing programs.^^
|
||||
- What are the steps that the CPU takes to process programs? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-22T14:58:32.353Z
|
||||
card-last-reviewed:: 2022-09-18T14:58:32.353Z
|
||||
card-last-score:: 3
|
||||
- **1. Fetch:** Retrieve an instruction from ^^program memory.^^
|
||||
- **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU.
|
||||
- **3. Execute:** Various portions of the CPU are connected to perform the desired operation.
|
||||
- **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^
|
||||
- ### CPU Organisation
|
||||
- What does the **organisation** of the CPU look like? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-22T15:13:04.465Z
|
||||
card-last-reviewed:: 2022-09-18T15:13:04.465Z
|
||||
card-last-score:: 3
|
||||
- Processors are made up of:
|
||||
- A **Control Unit**
|
||||
- **Execution Unit(s)**
|
||||
- A **Register File**
|
||||
- {:height 339, :width 418}
|
||||
-
|
||||
- #### Control Unit
|
||||
- What does the **Control Unit** do? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:27:08.868Z
|
||||
card-last-reviewed:: 2022-09-19T18:27:08.869Z
|
||||
card-last-score:: 5
|
||||
- The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory.
|
||||
- It ^^retrieves & executes^^ them.
|
||||
- What is the architecture of the control unit? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-18T20:02:39.216Z
|
||||
card-last-reviewed:: 2022-09-14T20:02:39.217Z
|
||||
card-last-score:: 3
|
||||
- The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**.
|
||||
- It also contains two special registers:
|
||||
- **Program Counter (PC):** keeps the address of the next instruction
|
||||
- **Instruction Register (IR):** keeps the instruction being executed
|
||||
- {:height 266, :width 550}
|
||||
-
|
||||
- ### The Memory Subsystem
|
||||
collapsed:: true
|
||||
- How is the memory divided into storage locations? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:17:42.430Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:42.430Z
|
||||
card-last-score:: 5
|
||||
- Memory is divided into a set of storage location which can hold data.
|
||||
- Locations are numbered.
|
||||
- Addresses are used to tell the memory which location the processor wants to access.
|
||||
- What are the two hierarchies of memory? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-19T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-19T18:29:01.554Z
|
||||
card-last-score:: 1
|
||||
- **1. Nonvolatile / ROM (Read Only Memory):** Read only memory.
|
||||
- Used to store the BIOS and / or a *bootstrap* or *bootloader* program.
|
||||
- **2. Volatile / RAM (Random Access Memory):** Read / Write memory.
|
||||
- Also called **Primary Memory**.
|
||||
- Used to hold the programs, operating system, and data required by the computer.
|
||||
- #### Primary Memory
|
||||
- How is primary memory connected to the CPU? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:06:00.776Z
|
||||
card-last-reviewed:: 2022-09-19T18:06:00.777Z
|
||||
card-last-score:: 5
|
||||
- **Primary Memory** is directly connected to the Central Processing Unit of the computer.
|
||||
- It must be present for the CPU to function correctly.
|
||||
- What are the three types of Primary Storage? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-18T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-18T15:10:32.299Z
|
||||
card-last-score:: 1
|
||||
- **1. Processors Register:**
|
||||
- Contains information that the CPU needs to carry out the current instruction.
|
||||
- **2. Cache Memory:**
|
||||
- A special type of internal memory used by many CPUs to increase their **throughput**.
|
||||
- **3. Main Memory:**
|
||||
- Contains the programs that are currently being run and the data that the programs are operating on.
|
||||
- What is the **address width**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:21:24.382Z
|
||||
card-last-reviewed:: 2022-09-18T15:21:24.382Z
|
||||
card-last-score:: 5
|
||||
- The **address width** is the number of bits used to represent an address in memory.
|
||||
- The **width** limits the amount of memory that a computer can access.
|
||||
- Most computers use a **64 bit address**, which means that the maximum number of locations is $$ 2^{64} \approx 16 \text{ billion gigabytes}$$.
|
||||
- What operations does the memory subsystem support? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:17:11.140Z
|
||||
card-last-reviewed:: 2022-09-18T15:17:11.140Z
|
||||
card-last-score:: 5
|
||||
- The memory subsystem supports two operations:
|
||||
- **Load** (or read) + the address of the data location to be read.
|
||||
- **Store** (or write) + the address of the location & the data to be written.
|
||||
- How many bytes may the memory system read or write at a time? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:16:57.109Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:57.110Z
|
||||
card-last-score:: 3
|
||||
- Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit.
|
||||
- How is a section of memory addressed? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:12:03.194Z
|
||||
card-last-reviewed:: 2022-09-18T15:12:03.195Z
|
||||
card-last-score:: 5
|
||||
- The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes.
|
||||
- #### Memory Alignment & Words of Data
|
||||
- When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^
|
||||
- When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^
|
||||
- Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16.
|
||||
- ### The I/O Subsystem
|
||||
- What are **input devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:21:35.278Z
|
||||
card-last-reviewed:: 2022-09-18T15:21:35.278Z
|
||||
card-last-score:: 5
|
||||
- Anything that feeds data into the computer.
|
||||
- What are **output devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:16:34.930Z
|
||||
card-last-reviewed:: 2022-09-18T15:16:34.931Z
|
||||
card-last-score:: 5
|
||||
- Display / transmit information back to the user.
|
||||
- What does the **I/O Subsystem** contain? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:21:46.984Z
|
||||
card-last-reviewed:: 2022-09-19T18:21:46.985Z
|
||||
card-last-score:: 5
|
||||
- The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data.
|
||||
- How do I/O devices communicate with the processor? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-22T14:53:22.144Z
|
||||
card-last-reviewed:: 2022-09-18T14:53:22.145Z
|
||||
card-last-score:: 3
|
||||
- I/O devices usually communicate with the processor using the **I/O Bus**.
|
||||
- PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus.
|
||||
- The Operating System needs a **device driver** to access a given I/O device.
|
||||
- What is a **device driver**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:11:51.628Z
|
||||
card-last-reviewed:: 2022-09-18T15:11:51.628Z
|
||||
card-last-score:: 5
|
||||
- A **device driver** is a program that allows the OS to control an I/O device.
|
||||
- #### I/O Read / Write Operations
|
||||
- The I/O read & write operations are similar to the memory read & write operations.
|
||||
- How does the processor address I/O devices? #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-28T14:48:48.247Z
|
||||
card-last-reviewed:: 2022-09-19T17:48:48.248Z
|
||||
card-last-score:: 3
|
||||
- A processor may use:
|
||||
- **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^
|
||||
- **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^
|
||||
- What is **IO/M**? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-18T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-18T15:11:25.751Z
|
||||
card-last-score:: 1
|
||||
- **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem.
|
||||
- When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**.
|
||||
- When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**.
|
||||
-
|
||||
-
|
||||
-
|
||||
- ## Programs
|
||||
- What are programs? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:13:13.990Z
|
||||
card-last-reviewed:: 2022-09-18T15:13:13.990Z
|
||||
card-last-score:: 5
|
||||
- Programs are ^^sequences of instructions^^ that tell the computer what to do.
|
||||
- To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^
|
||||
- These operations are known as **machine instructions** or just **instructions**.
|
||||
- A set of instructions that a processor can execute is known as an **instruction set**.
|
||||
- ### Program Development Tools
|
||||
collapsed:: true
|
||||
- What is a **high-level programming language**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:08:53.500Z
|
||||
card-last-reviewed:: 2022-09-18T15:08:53.500Z
|
||||
card-last-score:: 5
|
||||
- A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**.
|
||||
- What is a **compiler**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T17:43:48.914Z
|
||||
card-last-reviewed:: 2022-09-19T17:43:48.914Z
|
||||
card-last-score:: 5
|
||||
- A **compiler** is a program that translates statements in a given high-level language into assembly language statements.
|
||||
- What is an **assembler**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:10:09.892Z
|
||||
card-last-reviewed:: 2022-09-18T15:10:09.892Z
|
||||
card-last-score:: 5
|
||||
- An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^
|
||||
- What is **Assembly Language**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-09-30T21:48:54.576Z
|
||||
card-last-reviewed:: 2022-09-19T17:48:54.576Z
|
||||
card-last-score:: 5
|
||||
- **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**.
|
||||
- What is **Machine Language**? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.6
|
||||
card-next-schedule:: 2022-09-19T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-19T18:22:03.638Z
|
||||
card-last-score:: 1
|
||||
- **Machine Language** is a ^^binary representation^^ of **machine instructions**.
|
||||
- What is an **instruction**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:19:26.835Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:26.836Z
|
||||
card-last-score:: 5
|
||||
- An **instruction** is a command that the computer hardware understands & obeys.
|
||||
-
|
||||
- ## Operating Systems
|
||||
- What is an **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-23T18:25:01.958Z
|
||||
card-last-reviewed:: 2022-09-19T18:25:01.958Z
|
||||
card-last-score:: 5
|
||||
- Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^
|
||||
- The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc.
|
||||
- It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^
|
||||
- Usually, there is no operating system for **small embedded systems**.
|
||||
- Computers designed for one specific task.
|
||||
-
|
||||
- ### Multiprogramming
|
||||
- What is **Multiprogramming**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-23T18:23:28.557Z
|
||||
card-last-reviewed:: 2022-09-19T18:23:28.557Z
|
||||
card-last-score:: 5
|
||||
- **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^
|
||||
- Many multiprogrammed computers are **multiuser**.
|
||||
- They allow multiple users to be logged in at a time.
|
||||
- How is multiprogramming achieved? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-09-22T15:19:07.150Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:07.151Z
|
||||
card-last-score:: 5
|
||||
- Multiprogramming is achieved by ^^switching rapidly between programs.^^
|
||||
- How does the processor decide which process to execute next? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:20:14.106Z
|
||||
card-last-reviewed:: 2022-09-18T15:20:14.106Z
|
||||
card-last-score:: 5
|
||||
- **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive.
|
||||
- **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time.
|
||||
- **Round Robin:** distributes the processing time equitably among all ready processes.
|
||||
- ### Context Switching
|
||||
- What is a **Context Switch**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-09-22T15:10:00.458Z
|
||||
card-last-reviewed:: 2022-09-18T15:10:00.458Z
|
||||
card-last-score:: 5
|
||||
- When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor.
|
||||
- This is a **context switch**.
|
||||
- How does the OS go about a Context Switch? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-22T15:19:47.984Z
|
||||
card-last-reviewed:: 2022-09-18T15:19:47.984Z
|
||||
card-last-score:: 3
|
||||
- copies the current program register file into memory
|
||||
- restores the contents of the next program's register file into the processor
|
||||
- starts executing the next program
|
||||
- From the program point of view, ^^no program can tell that a context switch has been performed.^^
|
||||
- ### Protection
|
||||
- Three rules of Protection in multiprogrammed computers: #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-09-28T14:45:26.235Z
|
||||
card-last-reviewed:: 2022-09-19T17:45:26.235Z
|
||||
card-last-score:: 3
|
||||
- 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^
|
||||
- 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy).
|
||||
- 3. Programs ^^must not interfere with other programs' use of I/O devices.^^
|
||||
- How is protection achieved? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-19T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-19T18:26:58.100Z
|
||||
card-last-score:: 1
|
||||
- Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through:
|
||||
- **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode.
|
||||
- User programs execute in **user mode**.
|
||||
- **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space.
|
||||
- The OS is *translating* memory addresses that the program references into physical addresses used by the memory system.
|
||||
-
|
||||
-
|
||||
- **Next Topic:** [[Programming Models]]
|
@ -0,0 +1,541 @@
|
||||
- #[[CT213 - Computer Systems & Organisation]]
|
||||
- No previous topic.
|
||||
- **Relevant Slides:** 
|
||||
-
|
||||
- ## Traditional Classes of Computer Systems
|
||||
- What is a **Personal Computer (PC)**?
|
||||
card-last-score:: 5
|
||||
card-repeats:: 2
|
||||
card-next-schedule:: 2022-09-23T18:28:00.836Z
|
||||
card-last-interval:: 4
|
||||
card-ease-factor:: 2.7
|
||||
card-last-reviewed:: 2022-09-19T18:28:00.836Z
|
||||
- A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse.
|
||||
- What is a **Server**? #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-09T05:29:45.315Z
|
||||
card-last-reviewed:: 2022-09-30T08:29:45.315Z
|
||||
card-last-score:: 3
|
||||
- A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
|
||||
- What is a **Supercomputer**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:52.646Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:52.647Z
|
||||
card-last-score:: 5
|
||||
- A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars.
|
||||
- What is an **Embedded Computer**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:37.659Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:37.659Z
|
||||
card-last-score:: 5
|
||||
- An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software.
|
||||
- What are **Personal Mobile Devices**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:08.211Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:08.211Z
|
||||
card-last-score:: 5
|
||||
- **Personal Mobile Devices** are small, wireless devices that connect to the internet.
|
||||
- They rely on batteries for power, and software is installed by downloading apps.
|
||||
- Conventional examples include smartphones and tablets.
|
||||
- What is **Cloud Computing**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:28:27.277Z
|
||||
card-last-reviewed:: 2022-10-01T17:28:27.278Z
|
||||
card-last-score:: 5
|
||||
- **Cloud Computing** refers to large collections of servers that provide services over the internet.
|
||||
- Some providers rent dynamically varying number of servers as a utility.
|
||||
- What is **Software as a Service**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:42:21.001Z
|
||||
card-last-reviewed:: 2022-10-03T11:42:21.001Z
|
||||
card-last-score:: 5
|
||||
- **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser.
|
||||
- Examples include web search & email.
|
||||
-
|
||||
- ## Computer Systems
|
||||
collapsed:: true
|
||||
- {:height 410, :width 414}
|
||||
- What is **Application Software**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:12.546Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:12.546Z
|
||||
card-last-score:: 5
|
||||
- **Application Software** consists of user-installed applications & programs.
|
||||
- Application Software provides services to the user that are commonly useful.
|
||||
- What is the purpose of the **Operating System**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-09T18:11:34.929Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:34.929Z
|
||||
card-last-score:: 3
|
||||
- The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions.
|
||||
- What is the purpose of the **Hardware**?
|
||||
- The **Hardware** performs the tasks.
|
||||
-
|
||||
- ## Seven Great Ideas in Computer Organisation
|
||||
- ### 1. Use **Abstraction** to Simplify Design #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:28:36.002Z
|
||||
card-last-reviewed:: 2022-10-03T14:28:36.003Z
|
||||
card-last-score:: 5
|
||||
- A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation
|
||||
- Lower-level details are hidden to offer a simpler model at higher levels.
|
||||
- ### 2. Make the **Common Case** Fast #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:14.556Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:14.557Z
|
||||
card-last-score:: 5
|
||||
- Making the **common case fast** will tend to enhance performance better than optimising the rare case.
|
||||
- The common case is often simpler than the rare case, and hence is usually easier to enhance.
|
||||
- ### 3. Performance via **Parallelism** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T17:16:13.241Z
|
||||
card-last-reviewed:: 2022-09-30T12:16:13.242Z
|
||||
card-last-score:: 3
|
||||
- Involves speeding up performance by using designs that compute operations in **parallel**.
|
||||
- ### 4. Performance via **Pipelining** #card
|
||||
card-last-interval:: 10.8
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-10-11T04:28:23.981Z
|
||||
card-last-reviewed:: 2022-09-30T09:28:23.982Z
|
||||
card-last-score:: 5
|
||||
- **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name.
|
||||
- ### 5. Performance via **Prediction** #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:27:10.532Z
|
||||
card-last-reviewed:: 2022-10-03T14:27:10.533Z
|
||||
card-last-score:: 5
|
||||
- In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate).
|
||||
- ### 6. Hierarchy of Memories #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:13.824Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:13.824Z
|
||||
card-last-score:: 3
|
||||
- Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**.
|
||||
- The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy.
|
||||
- The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy.
|
||||
- ### 7. Dependability via **Redundancy** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:28.794Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:28.794Z
|
||||
card-last-score:: 5
|
||||
- Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures.
|
||||
-
|
||||
- ## Hardware Organisation
|
||||
- What does basic computer organisation look like? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:29:58.087Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:58.087Z
|
||||
card-last-score:: 5
|
||||
- 
|
||||
- What is an **integrated circuit**?
|
||||
card-last-interval:: 31.36
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-11-04T20:17:29.178Z
|
||||
card-last-reviewed:: 2022-10-04T12:17:29.178Z
|
||||
card-last-score:: 5
|
||||
collapsed:: true
|
||||
- An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors.
|
||||
- ### The CPU
|
||||
collapsed:: true
|
||||
- What is a **CPU**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:40:13.962Z
|
||||
card-last-reviewed:: 2022-10-03T11:40:13.962Z
|
||||
card-last-score:: 5
|
||||
- The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on.
|
||||
- The CPU is ^^responsible for executing programs.^^
|
||||
- What are the steps that the CPU takes to process programs? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-09T18:15:57.207Z
|
||||
card-last-reviewed:: 2022-09-30T12:15:57.208Z
|
||||
card-last-score:: 5
|
||||
- **1. Fetch:** Retrieve an instruction from ^^program memory.^^
|
||||
- **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU.
|
||||
- **3. Execute:** Various portions of the CPU are connected to perform the desired operation.
|
||||
- **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^
|
||||
- ### CPU Organisation
|
||||
- What does the **organisation** of the CPU look like? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-09T20:25:22.675Z
|
||||
card-last-reviewed:: 2022-10-01T13:25:22.675Z
|
||||
card-last-score:: 3
|
||||
- Processors are made up of:
|
||||
- A **Control Unit**
|
||||
- **Execution Unit(s)**
|
||||
- A **Register File**
|
||||
- {:height 339, :width 418}
|
||||
-
|
||||
- #### Control Unit
|
||||
- What does the **Control Unit** do? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T19:29:08.350Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:08.350Z
|
||||
card-last-score:: 3
|
||||
- The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory.
|
||||
- It ^^retrieves & executes^^ them.
|
||||
- What is the architecture of the control unit? #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-09T05:29:05.114Z
|
||||
card-last-reviewed:: 2022-09-30T08:29:05.115Z
|
||||
card-last-score:: 3
|
||||
- The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**.
|
||||
- It also contains two special registers:
|
||||
- **Program Counter (PC):** keeps the address of the next instruction
|
||||
- **Instruction Register (IR):** keeps the instruction being executed
|
||||
- {:height 266, :width 550}
|
||||
-
|
||||
- ### The Memory Subsystem
|
||||
collapsed:: true
|
||||
- How is the memory divided into storage locations? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:34:12.415Z
|
||||
card-last-reviewed:: 2022-10-01T17:34:12.416Z
|
||||
card-last-score:: 5
|
||||
- Memory is divided into a set of storage location which can hold data.
|
||||
- Locations are numbered.
|
||||
- Addresses are used to tell the memory which location the processor wants to access.
|
||||
- What are the two hierarchies of memory? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-30T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-30T09:22:16.754Z
|
||||
card-last-score:: 1
|
||||
- **1. Nonvolatile / ROM (Read Only Memory):** Read only memory.
|
||||
- Used to store the BIOS and / or a *bootstrap* or *bootloader* program.
|
||||
- **2. Volatile / RAM (Random Access Memory):** Read / Write memory.
|
||||
- Also called **Primary Memory**.
|
||||
- Used to hold the programs, operating system, and data required by the computer.
|
||||
- #### Primary Memory
|
||||
- How is primary memory connected to the CPU? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:43:34.991Z
|
||||
card-last-reviewed:: 2022-10-03T11:43:34.992Z
|
||||
card-last-score:: 5
|
||||
- **Primary Memory** is directly connected to the Central Processing Unit of the computer.
|
||||
- It must be present for the CPU to function correctly.
|
||||
- What are the three types of Primary Storage? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-06T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-10-06T09:40:50.799Z
|
||||
card-last-score:: 1
|
||||
- **1. Processor Register:**
|
||||
- Contains information that the CPU needs to carry out the current instruction.
|
||||
- **2. Cache Memory:**
|
||||
- A special type of internal memory used by many CPUs to increase their **throughput**.
|
||||
- **3. Main Memory:**
|
||||
- Contains the programs that are currently being run and the data that the programs are operating on.
|
||||
- What is the **address width**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T13:30:08.146Z
|
||||
card-last-reviewed:: 2022-09-30T08:30:08.147Z
|
||||
card-last-score:: 3
|
||||
- The **address width** is the number of bits used to represent an address in memory.
|
||||
- The **width** limits the amount of memory that a computer can access.
|
||||
- Most computers use a **64 bit address**, which means that the maximum number of locations is $$ 2^{64} \approx 16 \text{ billion gigabytes}$$.
|
||||
- What operations does the memory subsystem support? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:33.402Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:33.403Z
|
||||
card-last-score:: 5
|
||||
- The memory subsystem supports two operations:
|
||||
- **Load** (or read) + the address of the data location to be read.
|
||||
- **Store** (or write) + the address of the location & the data to be written.
|
||||
- How many bytes may the memory system read or write at a time? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:45.960Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:45.960Z
|
||||
card-last-score:: 5
|
||||
- Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit.
|
||||
- How is a section of memory addressed? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:24:14.775Z
|
||||
card-last-reviewed:: 2022-10-01T13:24:14.776Z
|
||||
card-last-score:: 5
|
||||
- The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes.
|
||||
- #### Memory Alignment & Words of Data
|
||||
- When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^
|
||||
- When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^
|
||||
- Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16.
|
||||
- ### The I/O Subsystem
|
||||
- What are **input devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:40.506Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:40.507Z
|
||||
card-last-score:: 5
|
||||
- Anything that feeds data into the computer.
|
||||
- What are **output devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:09.769Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:09.770Z
|
||||
card-last-score:: 5
|
||||
- Display / transmit information back to the user.
|
||||
- What does the **I/O Subsystem** contain? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:38.831Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:38.832Z
|
||||
card-last-score:: 5
|
||||
- The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data.
|
||||
- How do I/O devices communicate with the processor? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-30T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-30T12:14:49.335Z
|
||||
card-last-score:: 1
|
||||
- I/O devices usually communicate with the processor using the **I/O Bus**.
|
||||
- PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus.
|
||||
- The Operating System needs a **device driver** to access a given I/O device.
|
||||
- What is a **device driver**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:23:41.787Z
|
||||
card-last-reviewed:: 2022-10-01T13:23:41.788Z
|
||||
card-last-score:: 5
|
||||
- A **device driver** is a program that allows the OS to control an I/O device.
|
||||
- #### I/O Read / Write Operations
|
||||
- The I/O read & write operations are similar to the memory read & write operations.
|
||||
- How does the processor address I/O devices? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-03T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-10-03T14:35:03.201Z
|
||||
card-last-score:: 1
|
||||
- A processor may use:
|
||||
- **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^
|
||||
- **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^
|
||||
- What is **IO/M**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-04T09:11:16.531Z
|
||||
card-last-reviewed:: 2022-09-30T09:11:16.532Z
|
||||
card-last-score:: 3
|
||||
- **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem.
|
||||
- When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**.
|
||||
- When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**.
|
||||
-
|
||||
-
|
||||
-
|
||||
- ## Programs
|
||||
- What are programs? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T18:29:21.265Z
|
||||
card-last-reviewed:: 2022-10-01T13:29:21.266Z
|
||||
card-last-score:: 5
|
||||
- Programs are ^^sequences of instructions^^ that tell the computer what to do.
|
||||
- To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^
|
||||
- These operations are known as **machine instructions** or just **instructions**.
|
||||
- A set of instructions that a processor can execute is known as an **instruction set**.
|
||||
- ### Program Development Tools
|
||||
collapsed:: true
|
||||
- What is a **high-level programming language**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:17:29.873Z
|
||||
card-last-reviewed:: 2022-10-01T13:17:29.874Z
|
||||
card-last-score:: 5
|
||||
- A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**.
|
||||
- What is a **compiler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:39.064Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:39.064Z
|
||||
card-last-score:: 5
|
||||
- A **compiler** is a program that translates statements in a given high-level language into assembly language statements.
|
||||
- What is an **assembler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:19:13.686Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:13.686Z
|
||||
card-last-score:: 5
|
||||
- An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^
|
||||
- What is **Assembly Language**? #card
|
||||
card-last-interval:: 33.64
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.9
|
||||
card-next-schedule:: 2022-11-07T03:25:47.210Z
|
||||
card-last-reviewed:: 2022-10-04T12:25:47.210Z
|
||||
card-last-score:: 5
|
||||
- **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**.
|
||||
- What is **Machine Language**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-04T09:26:52.257Z
|
||||
card-last-reviewed:: 2022-09-30T09:26:52.258Z
|
||||
card-last-score:: 3
|
||||
- **Machine Language** is a ^^binary representation^^ of **machine instructions**.
|
||||
- What is an **instruction**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:20.118Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:20.118Z
|
||||
card-last-score:: 5
|
||||
- An **instruction** is a command that the computer hardware understands & obeys.
|
||||
-
|
||||
- ## Operating Systems
|
||||
- What is an **Operating System**? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-03T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-10-03T14:28:14.754Z
|
||||
card-last-score:: 1
|
||||
- Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^
|
||||
- The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc.
|
||||
- It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^
|
||||
- Usually, there is no operating system for **small embedded systems**.
|
||||
- Computers designed for one specific task.
|
||||
-
|
||||
- ### Multiprogramming
|
||||
- What is **Multiprogramming**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T17:10:38.026Z
|
||||
card-last-reviewed:: 2022-09-30T12:10:38.027Z
|
||||
card-last-score:: 3
|
||||
- **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^
|
||||
- Many multiprogrammed computers are **multiuser**.
|
||||
- They allow multiple users to be logged in at a time.
|
||||
- How is multiprogramming achieved? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:35:33.411Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:33.411Z
|
||||
card-last-score:: 5
|
||||
- Multiprogramming is achieved by ^^switching rapidly between programs.^^
|
||||
- How does the processor decide which process to execute next? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-12T17:37:46.365Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:46.366Z
|
||||
card-last-score:: 3
|
||||
- **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive.
|
||||
- **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time.
|
||||
- **Round Robin:** distributes the processing time equitably among all ready processes.
|
||||
- ### Context Switching
|
||||
- What is a **Context Switch**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-10T19:19:02.676Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:02.677Z
|
||||
card-last-score:: 3
|
||||
- When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor.
|
||||
- This is a **context switch**.
|
||||
- How does the OS go about a Context Switch? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T18:37:36.618Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:36.618Z
|
||||
card-last-score:: 3
|
||||
- copies the current program register file into memory
|
||||
- restores the contents of the next program's register file into the processor
|
||||
- starts executing the next program
|
||||
- From the program point of view, ^^no program can tell that a context switch has been performed.^^
|
||||
- ### Protection
|
||||
- Three rules of Protection in multiprogrammed computers: #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-20T21:34:44.306Z
|
||||
card-last-reviewed:: 2022-10-03T14:34:44.306Z
|
||||
card-last-score:: 3
|
||||
- 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^
|
||||
- 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy).
|
||||
- 3. Programs ^^must not interfere with other programs' use of I/O devices.^^
|
||||
- How is protection achieved? #card
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-09-30T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-09-30T09:24:47.114Z
|
||||
card-last-score:: 1
|
||||
- Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through:
|
||||
- **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode.
|
||||
- User programs execute in **user mode**.
|
||||
- **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space.
|
||||
- The OS is *translating* memory addresses that the program references into physical addresses used by the memory system.
|
||||
-
|
||||
-
|
||||
- **Next Topic:** [[Programming Models]]
|
@ -0,0 +1,541 @@
|
||||
- #[[CT213 - Computer Systems & Organisation]]
|
||||
- No previous topic.
|
||||
- **Relevant Slides:** 
|
||||
-
|
||||
- ## Traditional Classes of Computer Systems
|
||||
- What is a **Personal Computer (PC)**?
|
||||
card-last-score:: 5
|
||||
card-repeats:: 2
|
||||
card-next-schedule:: 2022-09-23T18:28:00.836Z
|
||||
card-last-interval:: 4
|
||||
card-ease-factor:: 2.7
|
||||
card-last-reviewed:: 2022-09-19T18:28:00.836Z
|
||||
- A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse.
|
||||
- What is a **Server**? #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-09T05:29:45.315Z
|
||||
card-last-reviewed:: 2022-09-30T08:29:45.315Z
|
||||
card-last-score:: 3
|
||||
- A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
|
||||
- What is a **Supercomputer**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:52.646Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:52.647Z
|
||||
card-last-score:: 5
|
||||
- A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars.
|
||||
- What is an **Embedded Computer**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:37.659Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:37.659Z
|
||||
card-last-score:: 5
|
||||
- An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software.
|
||||
- What are **Personal Mobile Devices**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:08.211Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:08.211Z
|
||||
card-last-score:: 5
|
||||
- **Personal Mobile Devices** are small, wireless devices that connect to the internet.
|
||||
- They rely on batteries for power, and software is installed by downloading apps.
|
||||
- Conventional examples include smartphones and tablets.
|
||||
- What is **Cloud Computing**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:28:27.277Z
|
||||
card-last-reviewed:: 2022-10-01T17:28:27.278Z
|
||||
card-last-score:: 5
|
||||
- **Cloud Computing** refers to large collections of servers that provide services over the internet.
|
||||
- Some providers rent dynamically varying number of servers as a utility.
|
||||
- What is **Software as a Service**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:42:21.001Z
|
||||
card-last-reviewed:: 2022-10-03T11:42:21.001Z
|
||||
card-last-score:: 5
|
||||
- **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser.
|
||||
- Examples include web search & email.
|
||||
-
|
||||
- ## Computer Systems
|
||||
collapsed:: true
|
||||
- {:height 410, :width 414}
|
||||
- What is **Application Software**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:12.546Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:12.546Z
|
||||
card-last-score:: 5
|
||||
- **Application Software** consists of user-installed applications & programs.
|
||||
- Application Software provides services to the user that are commonly useful.
|
||||
- What is the purpose of the **Operating System**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-09T18:11:34.929Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:34.929Z
|
||||
card-last-score:: 3
|
||||
- The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions.
|
||||
- What is the purpose of the **Hardware**?
|
||||
- The **Hardware** performs the tasks.
|
||||
-
|
||||
- ## Seven Great Ideas in Computer Organisation
|
||||
- ### 1. Use **Abstraction** to Simplify Design #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:28:36.002Z
|
||||
card-last-reviewed:: 2022-10-03T14:28:36.003Z
|
||||
card-last-score:: 5
|
||||
- A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation
|
||||
- Lower-level details are hidden to offer a simpler model at higher levels.
|
||||
- ### 2. Make the **Common Case** Fast #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:14.556Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:14.557Z
|
||||
card-last-score:: 5
|
||||
- Making the **common case fast** will tend to enhance performance better than optimising the rare case.
|
||||
- The common case is often simpler than the rare case, and hence is usually easier to enhance.
|
||||
- ### 3. Performance via **Parallelism** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T17:16:13.241Z
|
||||
card-last-reviewed:: 2022-09-30T12:16:13.242Z
|
||||
card-last-score:: 3
|
||||
- Involves speeding up performance by using designs that compute operations in **parallel**.
|
||||
- ### 4. Performance via **Pipelining** #card
|
||||
card-last-interval:: 10.8
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-10-11T04:28:23.981Z
|
||||
card-last-reviewed:: 2022-09-30T09:28:23.982Z
|
||||
card-last-score:: 5
|
||||
- **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name.
|
||||
- ### 5. Performance via **Prediction** #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:27:10.532Z
|
||||
card-last-reviewed:: 2022-10-03T14:27:10.533Z
|
||||
card-last-score:: 5
|
||||
- In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate).
|
||||
- ### 6. Hierarchy of Memories #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:13.824Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:13.824Z
|
||||
card-last-score:: 3
|
||||
- Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**.
|
||||
- The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy.
|
||||
- The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy.
|
||||
- ### 7. Dependability via **Redundancy** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:28.794Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:28.794Z
|
||||
card-last-score:: 5
|
||||
- Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures.
|
||||
-
|
||||
- ## Hardware Organisation
|
||||
- What does basic computer organisation look like? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:29:58.087Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:58.087Z
|
||||
card-last-score:: 5
|
||||
- 
|
||||
- What is an **integrated circuit**?
|
||||
card-last-interval:: 31.36
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-11-04T20:17:29.178Z
|
||||
card-last-reviewed:: 2022-10-04T12:17:29.178Z
|
||||
card-last-score:: 5
|
||||
collapsed:: true
|
||||
- An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors.
|
||||
- ### The CPU
|
||||
collapsed:: true
|
||||
- What is a **CPU**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:40:13.962Z
|
||||
card-last-reviewed:: 2022-10-03T11:40:13.962Z
|
||||
card-last-score:: 5
|
||||
- The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on.
|
||||
- The CPU is ^^responsible for executing programs.^^
|
||||
- What are the steps that the CPU takes to process programs? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-09T18:15:57.207Z
|
||||
card-last-reviewed:: 2022-09-30T12:15:57.208Z
|
||||
card-last-score:: 5
|
||||
- **1. Fetch:** Retrieve an instruction from ^^program memory.^^
|
||||
- **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU.
|
||||
- **3. Execute:** Various portions of the CPU are connected to perform the desired operation.
|
||||
- **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^
|
||||
- ### CPU Organisation
|
||||
- What does the **organisation** of the CPU look like? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-09T20:25:22.675Z
|
||||
card-last-reviewed:: 2022-10-01T13:25:22.675Z
|
||||
card-last-score:: 3
|
||||
- Processors are made up of:
|
||||
- A **Control Unit**
|
||||
- **Execution Unit(s)**
|
||||
- A **Register File**
|
||||
- {:height 339, :width 418}
|
||||
-
|
||||
- #### Control Unit
|
||||
- What does the **Control Unit** do? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T19:29:08.350Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:08.350Z
|
||||
card-last-score:: 3
|
||||
- The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory.
|
||||
- It ^^retrieves & executes^^ them.
|
||||
- What is the architecture of the control unit? #card
|
||||
card-last-interval:: 8.88
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.22
|
||||
card-next-schedule:: 2022-10-09T05:29:05.114Z
|
||||
card-last-reviewed:: 2022-09-30T08:29:05.115Z
|
||||
card-last-score:: 3
|
||||
- The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**.
|
||||
- It also contains two special registers:
|
||||
- **Program Counter (PC):** keeps the address of the next instruction
|
||||
- **Instruction Register (IR):** keeps the instruction being executed
|
||||
- {:height 266, :width 550}
|
||||
-
|
||||
- ### The Memory Subsystem
|
||||
collapsed:: true
|
||||
- How is the memory divided into storage locations? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:34:12.415Z
|
||||
card-last-reviewed:: 2022-10-01T17:34:12.416Z
|
||||
card-last-score:: 5
|
||||
- Memory is divided into a set of storage location which can hold data.
|
||||
- Locations are numbered.
|
||||
- Addresses are used to tell the memory which location the processor wants to access.
|
||||
- What are the two hierarchies of memory? #card
|
||||
card-last-interval:: 3.33
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-11T22:24:15.552Z
|
||||
card-last-reviewed:: 2022-10-08T15:24:15.553Z
|
||||
card-last-score:: 5
|
||||
- **1. Nonvolatile / ROM (Read Only Memory):** Read only memory.
|
||||
- Used to store the BIOS and / or a *bootstrap* or *bootloader* program.
|
||||
- **2. Volatile / RAM (Random Access Memory):** Read / Write memory.
|
||||
- Also called **Primary Memory**.
|
||||
- Used to hold the programs, operating system, and data required by the computer.
|
||||
- #### Primary Memory
|
||||
- How is primary memory connected to the CPU? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:43:34.991Z
|
||||
card-last-reviewed:: 2022-10-03T11:43:34.992Z
|
||||
card-last-score:: 5
|
||||
- **Primary Memory** is directly connected to the Central Processing Unit of the computer.
|
||||
- It must be present for the CPU to function correctly.
|
||||
- What are the three types of Primary Storage? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T10:20:18.031Z
|
||||
card-last-reviewed:: 2022-10-07T10:20:18.032Z
|
||||
card-last-score:: 3
|
||||
- **1. Processor Register:**
|
||||
- Contains information that the CPU needs to carry out the current instruction.
|
||||
- **2. Cache Memory:**
|
||||
- A special type of internal memory used by many CPUs to increase their **throughput**.
|
||||
- **3. Main Memory:**
|
||||
- Contains the programs that are currently being run and the data that the programs are operating on.
|
||||
- What is the **address width**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T13:30:08.146Z
|
||||
card-last-reviewed:: 2022-09-30T08:30:08.147Z
|
||||
card-last-score:: 3
|
||||
- The **address width** is the number of bits used to represent an address in memory.
|
||||
- The **width** limits the amount of memory that a computer can access.
|
||||
- Most computers use a **64 bit address**, which means that the maximum number of locations is $$ 2^{64} \approx 16 \text{ billion gigabytes}$$.
|
||||
- What operations does the memory subsystem support? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:33.402Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:33.403Z
|
||||
card-last-score:: 5
|
||||
- The memory subsystem supports two operations:
|
||||
- **Load** (or read) + the address of the data location to be read.
|
||||
- **Store** (or write) + the address of the location & the data to be written.
|
||||
- How many bytes may the memory system read or write at a time? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:45.960Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:45.960Z
|
||||
card-last-score:: 5
|
||||
- Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit.
|
||||
- How is a section of memory addressed? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:24:14.775Z
|
||||
card-last-reviewed:: 2022-10-01T13:24:14.776Z
|
||||
card-last-score:: 5
|
||||
- The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes.
|
||||
- #### Memory Alignment & Words of Data
|
||||
- When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^
|
||||
- When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^
|
||||
- Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16.
|
||||
- ### The I/O Subsystem
|
||||
- What are **input devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:40.506Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:40.507Z
|
||||
card-last-score:: 5
|
||||
- Anything that feeds data into the computer.
|
||||
- What are **output devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:09.769Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:09.770Z
|
||||
card-last-score:: 5
|
||||
- Display / transmit information back to the user.
|
||||
- What does the **I/O Subsystem** contain? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:38.831Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:38.832Z
|
||||
card-last-score:: 5
|
||||
- The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data.
|
||||
- How do I/O devices communicate with the processor? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: -1
|
||||
card-repeats:: 1
|
||||
card-ease-factor:: 2.36
|
||||
card-next-schedule:: 2022-10-08T23:00:00.000Z
|
||||
card-last-reviewed:: 2022-10-08T15:20:26.377Z
|
||||
card-last-score:: 1
|
||||
- I/O devices usually communicate with the processor using the **I/O Bus**.
|
||||
- PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus.
|
||||
- The Operating System needs a **device driver** to access a given I/O device.
|
||||
- What is a **device driver**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:23:41.787Z
|
||||
card-last-reviewed:: 2022-10-01T13:23:41.788Z
|
||||
card-last-score:: 5
|
||||
- A **device driver** is a program that allows the OS to control an I/O device.
|
||||
- #### I/O Read / Write Operations
|
||||
- The I/O read & write operations are similar to the memory read & write operations.
|
||||
- How does the processor address I/O devices? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-10T17:25:39.877Z
|
||||
card-last-reviewed:: 2022-10-06T17:25:39.878Z
|
||||
card-last-score:: 3
|
||||
- A processor may use:
|
||||
- **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^
|
||||
- **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^
|
||||
- What is **IO/M**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-16T16:39:35.254Z
|
||||
card-last-reviewed:: 2022-10-07T10:39:35.254Z
|
||||
card-last-score:: 5
|
||||
- **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem.
|
||||
- When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**.
|
||||
- When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**.
|
||||
-
|
||||
-
|
||||
-
|
||||
- ## Programs
|
||||
- What are programs? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T18:29:21.265Z
|
||||
card-last-reviewed:: 2022-10-01T13:29:21.266Z
|
||||
card-last-score:: 5
|
||||
- Programs are ^^sequences of instructions^^ that tell the computer what to do.
|
||||
- To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^
|
||||
- These operations are known as **machine instructions** or just **instructions**.
|
||||
- A set of instructions that a processor can execute is known as an **instruction set**.
|
||||
- ### Program Development Tools
|
||||
collapsed:: true
|
||||
- What is a **high-level programming language**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:17:29.873Z
|
||||
card-last-reviewed:: 2022-10-01T13:17:29.874Z
|
||||
card-last-score:: 5
|
||||
- A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**.
|
||||
- What is a **compiler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:39.064Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:39.064Z
|
||||
card-last-score:: 5
|
||||
- A **compiler** is a program that translates statements in a given high-level language into assembly language statements.
|
||||
- What is an **assembler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:19:13.686Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:13.686Z
|
||||
card-last-score:: 5
|
||||
- An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^
|
||||
- What is **Assembly Language**? #card
|
||||
card-last-interval:: 33.64
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.9
|
||||
card-next-schedule:: 2022-11-07T03:25:47.210Z
|
||||
card-last-reviewed:: 2022-10-04T12:25:47.210Z
|
||||
card-last-score:: 5
|
||||
- **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**.
|
||||
- What is **Machine Language**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-16T16:39:57.935Z
|
||||
card-last-reviewed:: 2022-10-07T10:39:57.935Z
|
||||
card-last-score:: 3
|
||||
- **Machine Language** is a ^^binary representation^^ of **machine instructions**.
|
||||
- What is an **instruction**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:20.118Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:20.118Z
|
||||
card-last-score:: 5
|
||||
- An **instruction** is a command that the computer hardware understands & obeys.
|
||||
-
|
||||
- ## Operating Systems
|
||||
- What is an **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-11T10:38:21.429Z
|
||||
card-last-reviewed:: 2022-10-07T10:38:21.431Z
|
||||
card-last-score:: 3
|
||||
- Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^
|
||||
- The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc.
|
||||
- It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^
|
||||
- Usually, there is no operating system for **small embedded systems**.
|
||||
- Computers designed for one specific task.
|
||||
-
|
||||
- ### Multiprogramming
|
||||
- What is **Multiprogramming**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T17:10:38.026Z
|
||||
card-last-reviewed:: 2022-09-30T12:10:38.027Z
|
||||
card-last-score:: 3
|
||||
- **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^
|
||||
- Many multiprogrammed computers are **multiuser**.
|
||||
- They allow multiple users to be logged in at a time.
|
||||
- How is multiprogramming achieved? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:35:33.411Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:33.411Z
|
||||
card-last-score:: 5
|
||||
- Multiprogramming is achieved by ^^switching rapidly between programs.^^
|
||||
- How does the processor decide which process to execute next? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-12T17:37:46.365Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:46.366Z
|
||||
card-last-score:: 3
|
||||
- **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive.
|
||||
- **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time.
|
||||
- **Round Robin:** distributes the processing time equitably among all ready processes.
|
||||
- ### Context Switching
|
||||
- What is a **Context Switch**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-10T19:19:02.676Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:02.677Z
|
||||
card-last-score:: 3
|
||||
- When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor.
|
||||
- This is a **context switch**.
|
||||
- How does the OS go about a Context Switch? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T18:37:36.618Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:36.618Z
|
||||
card-last-score:: 3
|
||||
- copies the current program register file into memory
|
||||
- restores the contents of the next program's register file into the processor
|
||||
- starts executing the next program
|
||||
- From the program point of view, ^^no program can tell that a context switch has been performed.^^
|
||||
- ### Protection
|
||||
- Three rules of Protection in multiprogrammed computers: #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-20T21:34:44.306Z
|
||||
card-last-reviewed:: 2022-10-03T14:34:44.306Z
|
||||
card-last-score:: 3
|
||||
- 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^
|
||||
- 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy).
|
||||
- 3. Programs ^^must not interfere with other programs' use of I/O devices.^^
|
||||
- How is protection achieved? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-15T17:20:10.955Z
|
||||
card-last-reviewed:: 2022-10-07T10:20:10.955Z
|
||||
card-last-score:: 3
|
||||
- Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through:
|
||||
- **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode.
|
||||
- User programs execute in **user mode**.
|
||||
- **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space.
|
||||
- The OS is *translating* memory addresses that the program references into physical addresses used by the memory system.
|
||||
-
|
||||
-
|
||||
- **Next Topic:** [[Programming Models]]
|
@ -0,0 +1,541 @@
|
||||
- #[[CT213 - Computer Systems & Organisation]]
|
||||
- No previous topic.
|
||||
- **Relevant Slides:** 
|
||||
-
|
||||
- ## Traditional Classes of Computer Systems
|
||||
- What is a **Personal Computer (PC)**?
|
||||
card-last-score:: 5
|
||||
card-repeats:: 2
|
||||
card-next-schedule:: 2022-09-23T18:28:00.836Z
|
||||
card-last-interval:: 4
|
||||
card-ease-factor:: 2.7
|
||||
card-last-reviewed:: 2022-09-19T18:28:00.836Z
|
||||
- A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse.
|
||||
- What is a **Server**? #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-27T18:42:38.737Z
|
||||
card-last-reviewed:: 2022-10-10T11:42:38.738Z
|
||||
card-last-score:: 3
|
||||
- A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
|
||||
- What is a **Supercomputer**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:52.646Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:52.647Z
|
||||
card-last-score:: 5
|
||||
- A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars.
|
||||
- What is an **Embedded Computer**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:37.659Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:37.659Z
|
||||
card-last-score:: 5
|
||||
- An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software.
|
||||
- What are **Personal Mobile Devices**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:08.211Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:08.211Z
|
||||
card-last-score:: 5
|
||||
- **Personal Mobile Devices** are small, wireless devices that connect to the internet.
|
||||
- They rely on batteries for power, and software is installed by downloading apps.
|
||||
- Conventional examples include smartphones and tablets.
|
||||
- What is **Cloud Computing**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:28:27.277Z
|
||||
card-last-reviewed:: 2022-10-01T17:28:27.278Z
|
||||
card-last-score:: 5
|
||||
- **Cloud Computing** refers to large collections of servers that provide services over the internet.
|
||||
- Some providers rent dynamically varying number of servers as a utility.
|
||||
- What is **Software as a Service**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:42:21.001Z
|
||||
card-last-reviewed:: 2022-10-03T11:42:21.001Z
|
||||
card-last-score:: 5
|
||||
- **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser.
|
||||
- Examples include web search & email.
|
||||
-
|
||||
- ## Computer Systems
|
||||
collapsed:: true
|
||||
- {:height 410, :width 414}
|
||||
- What is **Application Software**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:12.546Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:12.546Z
|
||||
card-last-score:: 5
|
||||
- **Application Software** consists of user-installed applications & programs.
|
||||
- Application Software provides services to the user that are commonly useful.
|
||||
- What is the purpose of the **Operating System**? #card
|
||||
card-last-interval:: 23.43
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.42
|
||||
card-next-schedule:: 2022-11-02T21:44:58.883Z
|
||||
card-last-reviewed:: 2022-10-10T11:44:58.883Z
|
||||
card-last-score:: 5
|
||||
- The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions.
|
||||
- What is the purpose of the **Hardware**?
|
||||
- The **Hardware** performs the tasks.
|
||||
-
|
||||
- ## Seven Great Ideas in Computer Organisation
|
||||
- ### 1. Use **Abstraction** to Simplify Design #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:28:36.002Z
|
||||
card-last-reviewed:: 2022-10-03T14:28:36.003Z
|
||||
card-last-score:: 5
|
||||
- A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation
|
||||
- Lower-level details are hidden to offer a simpler model at higher levels.
|
||||
- ### 2. Make the **Common Case** Fast #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:14.556Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:14.557Z
|
||||
card-last-score:: 5
|
||||
- Making the **common case fast** will tend to enhance performance better than optimising the rare case.
|
||||
- The common case is often simpler than the rare case, and hence is usually easier to enhance.
|
||||
- ### 3. Performance via **Parallelism** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T17:16:13.241Z
|
||||
card-last-reviewed:: 2022-09-30T12:16:13.242Z
|
||||
card-last-score:: 3
|
||||
- Involves speeding up performance by using designs that compute operations in **parallel**.
|
||||
- ### 4. Performance via **Pipelining** #card
|
||||
card-last-interval:: 10.8
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-10-11T04:28:23.981Z
|
||||
card-last-reviewed:: 2022-09-30T09:28:23.982Z
|
||||
card-last-score:: 5
|
||||
- **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name.
|
||||
- ### 5. Performance via **Prediction** #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:27:10.532Z
|
||||
card-last-reviewed:: 2022-10-03T14:27:10.533Z
|
||||
card-last-score:: 5
|
||||
- In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate).
|
||||
- ### 6. Hierarchy of Memories #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:13.824Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:13.824Z
|
||||
card-last-score:: 3
|
||||
- Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**.
|
||||
- The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy.
|
||||
- The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy.
|
||||
- ### 7. Dependability via **Redundancy** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:28.794Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:28.794Z
|
||||
card-last-score:: 5
|
||||
- Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures.
|
||||
-
|
||||
- ## Hardware Organisation
|
||||
- What does basic computer organisation look like? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:29:58.087Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:58.087Z
|
||||
card-last-score:: 5
|
||||
- 
|
||||
- What is an **integrated circuit**?
|
||||
card-last-interval:: 31.36
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-11-04T20:17:29.178Z
|
||||
card-last-reviewed:: 2022-10-04T12:17:29.178Z
|
||||
card-last-score:: 5
|
||||
collapsed:: true
|
||||
- An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors.
|
||||
- ### The CPU
|
||||
collapsed:: true
|
||||
- What is a **CPU**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:40:13.962Z
|
||||
card-last-reviewed:: 2022-10-03T11:40:13.962Z
|
||||
card-last-score:: 5
|
||||
- The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on.
|
||||
- The CPU is ^^responsible for executing programs.^^
|
||||
- What are the steps that the CPU takes to process programs? #card
|
||||
card-last-interval:: 23.43
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.42
|
||||
card-next-schedule:: 2022-11-02T21:45:06.768Z
|
||||
card-last-reviewed:: 2022-10-10T11:45:06.768Z
|
||||
card-last-score:: 5
|
||||
- **1. Fetch:** Retrieve an instruction from ^^program memory.^^
|
||||
- **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU.
|
||||
- **3. Execute:** Various portions of the CPU are connected to perform the desired operation.
|
||||
- **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^
|
||||
- ### CPU Organisation
|
||||
- What does the **organisation** of the CPU look like? #card
|
||||
card-last-interval:: 15.05
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 1.94
|
||||
card-next-schedule:: 2022-10-25T12:45:53.286Z
|
||||
card-last-reviewed:: 2022-10-10T11:45:53.286Z
|
||||
card-last-score:: 3
|
||||
- Processors are made up of:
|
||||
- A **Control Unit**
|
||||
- **Execution Unit(s)**
|
||||
- A **Register File**
|
||||
- {:height 339, :width 418}
|
||||
-
|
||||
- #### Control Unit
|
||||
- What does the **Control Unit** do? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T19:29:08.350Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:08.350Z
|
||||
card-last-score:: 3
|
||||
- The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory.
|
||||
- It ^^retrieves & executes^^ them.
|
||||
- What is the architecture of the control unit? #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-27T18:42:33.523Z
|
||||
card-last-reviewed:: 2022-10-10T11:42:33.524Z
|
||||
card-last-score:: 3
|
||||
- The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**.
|
||||
- It also contains two special registers:
|
||||
- **Program Counter (PC):** keeps the address of the next instruction
|
||||
- **Instruction Register (IR):** keeps the instruction being executed
|
||||
- {:height 266, :width 550}
|
||||
-
|
||||
- ### The Memory Subsystem
|
||||
collapsed:: true
|
||||
- How is the memory divided into storage locations? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:34:12.415Z
|
||||
card-last-reviewed:: 2022-10-01T17:34:12.416Z
|
||||
card-last-score:: 5
|
||||
- Memory is divided into a set of storage location which can hold data.
|
||||
- Locations are numbered.
|
||||
- Addresses are used to tell the memory which location the processor wants to access.
|
||||
- What are the two hierarchies of memory? #card
|
||||
card-last-interval:: 3.33
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-11T22:24:15.552Z
|
||||
card-last-reviewed:: 2022-10-08T15:24:15.553Z
|
||||
card-last-score:: 5
|
||||
- **1. Nonvolatile / ROM (Read Only Memory):** Read only memory.
|
||||
- Used to store the BIOS and / or a *bootstrap* or *bootloader* program.
|
||||
- **2. Volatile / RAM (Random Access Memory):** Read / Write memory.
|
||||
- Also called **Primary Memory**.
|
||||
- Used to hold the programs, operating system, and data required by the computer.
|
||||
- #### Primary Memory
|
||||
- How is primary memory connected to the CPU? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:43:34.991Z
|
||||
card-last-reviewed:: 2022-10-03T11:43:34.992Z
|
||||
card-last-score:: 5
|
||||
- **Primary Memory** is directly connected to the Central Processing Unit of the computer.
|
||||
- It must be present for the CPU to function correctly.
|
||||
- What are the three types of Primary Storage? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T10:20:18.031Z
|
||||
card-last-reviewed:: 2022-10-07T10:20:18.032Z
|
||||
card-last-score:: 3
|
||||
- **1. Processor Register:**
|
||||
- Contains information that the CPU needs to carry out the current instruction.
|
||||
- **2. Cache Memory:**
|
||||
- A special type of internal memory used by many CPUs to increase their **throughput**.
|
||||
- **3. Main Memory:**
|
||||
- Contains the programs that are currently being run and the data that the programs are operating on.
|
||||
- What is the **address width**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T13:30:08.146Z
|
||||
card-last-reviewed:: 2022-09-30T08:30:08.147Z
|
||||
card-last-score:: 3
|
||||
- The **address width** is the number of bits used to represent an address in memory.
|
||||
- The **width** limits the amount of memory that a computer can access.
|
||||
- Most computers use a **64 bit address**, which means that the maximum number of locations is $$ 2^{64} \approx 16 \text{ billion gigabytes}$$.
|
||||
- What operations does the memory subsystem support? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:33.402Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:33.403Z
|
||||
card-last-score:: 5
|
||||
- The memory subsystem supports two operations:
|
||||
- **Load** (or read) + the address of the data location to be read.
|
||||
- **Store** (or write) + the address of the location & the data to be written.
|
||||
- How many bytes may the memory system read or write at a time? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:45.960Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:45.960Z
|
||||
card-last-score:: 5
|
||||
- Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit.
|
||||
- How is a section of memory addressed? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:24:14.775Z
|
||||
card-last-reviewed:: 2022-10-01T13:24:14.776Z
|
||||
card-last-score:: 5
|
||||
- The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes.
|
||||
- #### Memory Alignment & Words of Data
|
||||
- When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^
|
||||
- When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^
|
||||
- Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16.
|
||||
- ### The I/O Subsystem
|
||||
- What are **input devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:40.506Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:40.507Z
|
||||
card-last-score:: 5
|
||||
- Anything that feeds data into the computer.
|
||||
- What are **output devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:09.769Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:09.770Z
|
||||
card-last-score:: 5
|
||||
- Display / transmit information back to the user.
|
||||
- What does the **I/O Subsystem** contain? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:38.831Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:38.832Z
|
||||
card-last-score:: 5
|
||||
- The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data.
|
||||
- How do I/O devices communicate with the processor? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 3.45
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-13T21:36:17.677Z
|
||||
card-last-reviewed:: 2022-10-10T11:36:17.677Z
|
||||
card-last-score:: 5
|
||||
- I/O devices usually communicate with the processor using the **I/O Bus**.
|
||||
- PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus.
|
||||
- The Operating System needs a **device driver** to access a given I/O device.
|
||||
- What is a **device driver**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:23:41.787Z
|
||||
card-last-reviewed:: 2022-10-01T13:23:41.788Z
|
||||
card-last-score:: 5
|
||||
- A **device driver** is a program that allows the OS to control an I/O device.
|
||||
- #### I/O Read / Write Operations
|
||||
- The I/O read & write operations are similar to the memory read & write operations.
|
||||
- How does the processor address I/O devices? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-10T17:25:39.877Z
|
||||
card-last-reviewed:: 2022-10-06T17:25:39.878Z
|
||||
card-last-score:: 3
|
||||
- A processor may use:
|
||||
- **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^
|
||||
- **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^
|
||||
- What is **IO/M**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-16T16:39:35.254Z
|
||||
card-last-reviewed:: 2022-10-07T10:39:35.254Z
|
||||
card-last-score:: 5
|
||||
- **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem.
|
||||
- When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**.
|
||||
- When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**.
|
||||
-
|
||||
-
|
||||
-
|
||||
- ## Programs
|
||||
- What are programs? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T18:29:21.265Z
|
||||
card-last-reviewed:: 2022-10-01T13:29:21.266Z
|
||||
card-last-score:: 5
|
||||
- Programs are ^^sequences of instructions^^ that tell the computer what to do.
|
||||
- To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^
|
||||
- These operations are known as **machine instructions** or just **instructions**.
|
||||
- A set of instructions that a processor can execute is known as an **instruction set**.
|
||||
- ### Program Development Tools
|
||||
collapsed:: true
|
||||
- What is a **high-level programming language**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:17:29.873Z
|
||||
card-last-reviewed:: 2022-10-01T13:17:29.874Z
|
||||
card-last-score:: 5
|
||||
- A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**.
|
||||
- What is a **compiler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:39.064Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:39.064Z
|
||||
card-last-score:: 5
|
||||
- A **compiler** is a program that translates statements in a given high-level language into assembly language statements.
|
||||
- What is an **assembler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:19:13.686Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:13.686Z
|
||||
card-last-score:: 5
|
||||
- An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^
|
||||
- What is **Assembly Language**? #card
|
||||
card-last-interval:: 33.64
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.9
|
||||
card-next-schedule:: 2022-11-07T03:25:47.210Z
|
||||
card-last-reviewed:: 2022-10-04T12:25:47.210Z
|
||||
card-last-score:: 5
|
||||
- **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**.
|
||||
- What is **Machine Language**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-16T16:39:57.935Z
|
||||
card-last-reviewed:: 2022-10-07T10:39:57.935Z
|
||||
card-last-score:: 3
|
||||
- **Machine Language** is a ^^binary representation^^ of **machine instructions**.
|
||||
- What is an **instruction**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:20.118Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:20.118Z
|
||||
card-last-score:: 5
|
||||
- An **instruction** is a command that the computer hardware understands & obeys.
|
||||
-
|
||||
- ## Operating Systems
|
||||
- What is an **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-11T10:38:21.429Z
|
||||
card-last-reviewed:: 2022-10-07T10:38:21.431Z
|
||||
card-last-score:: 3
|
||||
- Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^
|
||||
- The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc.
|
||||
- It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^
|
||||
- Usually, there is no operating system for **small embedded systems**.
|
||||
- Computers designed for one specific task.
|
||||
-
|
||||
- ### Multiprogramming
|
||||
- What is **Multiprogramming**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-10T17:10:38.026Z
|
||||
card-last-reviewed:: 2022-09-30T12:10:38.027Z
|
||||
card-last-score:: 3
|
||||
- **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^
|
||||
- Many multiprogrammed computers are **multiuser**.
|
||||
- They allow multiple users to be logged in at a time.
|
||||
- How is multiprogramming achieved? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:35:33.411Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:33.411Z
|
||||
card-last-score:: 5
|
||||
- Multiprogramming is achieved by ^^switching rapidly between programs.^^
|
||||
- How does the processor decide which process to execute next? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-12T17:37:46.365Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:46.366Z
|
||||
card-last-score:: 3
|
||||
- **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive.
|
||||
- **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time.
|
||||
- **Round Robin:** distributes the processing time equitably among all ready processes.
|
||||
- ### Context Switching
|
||||
- What is a **Context Switch**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-10T19:19:02.676Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:02.677Z
|
||||
card-last-score:: 3
|
||||
- When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor.
|
||||
- This is a **context switch**.
|
||||
- How does the OS go about a Context Switch? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T18:37:36.618Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:36.618Z
|
||||
card-last-score:: 3
|
||||
- copies the current program register file into memory
|
||||
- restores the contents of the next program's register file into the processor
|
||||
- starts executing the next program
|
||||
- From the program point of view, ^^no program can tell that a context switch has been performed.^^
|
||||
- ### Protection
|
||||
- Three rules of Protection in multiprogrammed computers: #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-20T21:34:44.306Z
|
||||
card-last-reviewed:: 2022-10-03T14:34:44.306Z
|
||||
card-last-score:: 3
|
||||
- 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^
|
||||
- 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy).
|
||||
- 3. Programs ^^must not interfere with other programs' use of I/O devices.^^
|
||||
- How is protection achieved? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-15T17:20:10.955Z
|
||||
card-last-reviewed:: 2022-10-07T10:20:10.955Z
|
||||
card-last-score:: 3
|
||||
- Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through:
|
||||
- **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode.
|
||||
- User programs execute in **user mode**.
|
||||
- **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space.
|
||||
- The OS is *translating* memory addresses that the program references into physical addresses used by the memory system.
|
||||
-
|
||||
-
|
||||
- **Next Topic:** [[Programming Models]]
|
@ -0,0 +1,541 @@
|
||||
- #[[CT213 - Computer Systems & Organisation]]
|
||||
- No previous topic.
|
||||
- **Relevant Slides:** 
|
||||
-
|
||||
- ## Traditional Classes of Computer Systems
|
||||
- What is a **Personal Computer (PC)**?
|
||||
card-last-score:: 5
|
||||
card-repeats:: 2
|
||||
card-next-schedule:: 2022-09-23T18:28:00.836Z
|
||||
card-last-interval:: 4
|
||||
card-ease-factor:: 2.7
|
||||
card-last-reviewed:: 2022-09-19T18:28:00.836Z
|
||||
- A **Personal Computer** is a computer designed for use by an individual, usually incorporating a graphics display, a keyboard, and a mouse.
|
||||
- What is a **Server**? #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-27T18:42:38.737Z
|
||||
card-last-reviewed:: 2022-10-10T11:42:38.738Z
|
||||
card-last-score:: 3
|
||||
- A **server** is a computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
|
||||
- What is a **Supercomputer**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:52.646Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:52.647Z
|
||||
card-last-score:: 5
|
||||
- A **supercomputer** is a member of a class of computers with the highest performance (and cost). They are configured as servers and typically cost tens to hundreds of millions of dollars.
|
||||
- What is an **Embedded Computer**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:37.659Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:37.659Z
|
||||
card-last-score:: 5
|
||||
- An **embedded computer** is a computer inside another device, used for running one predetermined application or collection of software.
|
||||
- What are **Personal Mobile Devices**?
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:08.211Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:08.211Z
|
||||
card-last-score:: 5
|
||||
- **Personal Mobile Devices** are small, wireless devices that connect to the internet.
|
||||
- They rely on batteries for power, and software is installed by downloading apps.
|
||||
- Conventional examples include smartphones and tablets.
|
||||
- What is **Cloud Computing**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:28:27.277Z
|
||||
card-last-reviewed:: 2022-10-01T17:28:27.278Z
|
||||
card-last-score:: 5
|
||||
- **Cloud Computing** refers to large collections of servers that provide services over the internet.
|
||||
- Some providers rent dynamically varying number of servers as a utility.
|
||||
- What is **Software as a Service**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:42:21.001Z
|
||||
card-last-reviewed:: 2022-10-03T11:42:21.001Z
|
||||
card-last-score:: 5
|
||||
- **Software as a Service** delivers software & data as a service over the internet, usually via a thing program, such as a browser.
|
||||
- Examples include web search & email.
|
||||
-
|
||||
- ## Computer Systems
|
||||
collapsed:: true
|
||||
- {:height 410, :width 414}
|
||||
- What is **Application Software**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:31:12.546Z
|
||||
card-last-reviewed:: 2022-10-01T17:31:12.546Z
|
||||
card-last-score:: 5
|
||||
- **Application Software** consists of user-installed applications & programs.
|
||||
- Application Software provides services to the user that are commonly useful.
|
||||
- What is the purpose of the **Operating System**? #card
|
||||
card-last-interval:: 23.43
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.42
|
||||
card-next-schedule:: 2022-11-02T21:44:58.883Z
|
||||
card-last-reviewed:: 2022-10-10T11:44:58.883Z
|
||||
card-last-score:: 5
|
||||
- The **Operating System** interfaces between a user's program and the hardware, provides a variety of services, and performs supervisory functions.
|
||||
- What is the purpose of the **Hardware**?
|
||||
- The **Hardware** performs the tasks.
|
||||
-
|
||||
- ## Seven Great Ideas in Computer Organisation
|
||||
- ### 1. Use **Abstraction** to Simplify Design #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:28:36.002Z
|
||||
card-last-reviewed:: 2022-10-03T14:28:36.003Z
|
||||
card-last-score:: 5
|
||||
- A major productivity technique for hardware & software is to use **abstractions** to characterise the design at different levels of representation
|
||||
- Lower-level details are hidden to offer a simpler model at higher levels.
|
||||
- ### 2. Make the **Common Case** Fast #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:14.556Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:14.557Z
|
||||
card-last-score:: 5
|
||||
- Making the **common case fast** will tend to enhance performance better than optimising the rare case.
|
||||
- The common case is often simpler than the rare case, and hence is usually easier to enhance.
|
||||
- ### 3. Performance via **Parallelism** #card
|
||||
card-last-interval:: 28.3
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.66
|
||||
card-next-schedule:: 2022-11-17T15:35:06.365Z
|
||||
card-last-reviewed:: 2022-10-20T08:35:06.365Z
|
||||
card-last-score:: 5
|
||||
- Involves speeding up performance by using designs that compute operations in **parallel**.
|
||||
- ### 4. Performance via **Pipelining** #card
|
||||
card-last-interval:: 10.8
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.7
|
||||
card-next-schedule:: 2022-10-11T04:28:23.981Z
|
||||
card-last-reviewed:: 2022-09-30T09:28:23.982Z
|
||||
card-last-score:: 5
|
||||
- **Performance via Pipelining** is a particular pattern of **parallelism** that is so prevalent in computer architecture that it merits its own name.
|
||||
- ### 5. Performance via **Prediction** #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T18:27:10.532Z
|
||||
card-last-reviewed:: 2022-10-03T14:27:10.533Z
|
||||
card-last-score:: 5
|
||||
- In some cases, it can be ^^faster on average to guess and start working^^ that to wait until you know for sure (assuming that the mechanism to recover from a misprediction is not too expensive, and your prediction is relatively accurate).
|
||||
- ### 6. Hierarchy of Memories #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:13.824Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:13.824Z
|
||||
card-last-score:: 3
|
||||
- Computer Architects have found that they can address conflicting demands with a **hierarchy of memories**.
|
||||
- The ^^fastest, smallest, & most expensive memory per bit^^ is at the top of the hierarchy.
|
||||
- The ^^slowest, largest, & cheapest per bit^^ is at the bottom of the hierarchy.
|
||||
- ### 7. Dependability via **Redundancy** #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:35:28.794Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:28.794Z
|
||||
card-last-score:: 5
|
||||
- Since any physical device can fail, we make systems **dependable** by including ^^redundant components^^ that can take over when a failure occurs *and* help detect failures.
|
||||
-
|
||||
- ## Hardware Organisation
|
||||
- What does basic computer organisation look like? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 33.64
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.9
|
||||
card-next-schedule:: 2022-11-22T23:24:24.522Z
|
||||
card-last-reviewed:: 2022-10-20T08:24:24.523Z
|
||||
card-last-score:: 5
|
||||
- 
|
||||
- What is an **integrated circuit**?
|
||||
card-last-interval:: 31.36
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-11-04T20:17:29.178Z
|
||||
card-last-reviewed:: 2022-10-04T12:17:29.178Z
|
||||
card-last-score:: 5
|
||||
collapsed:: true
|
||||
- An **integrated circuit**, also called a **chip**, is a device combining dozens to millions of transistors.
|
||||
- ### The CPU
|
||||
collapsed:: true
|
||||
- What is a **CPU**? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T16:40:13.962Z
|
||||
card-last-reviewed:: 2022-10-03T11:40:13.962Z
|
||||
card-last-score:: 5
|
||||
- The **Central Processing Unit (CPU)**, also called the **processor**, is the ^^active part of the computer^^, which contains the datapath & control, and which adds numbers, tests numbers, signals I/O devices to activate, and so on.
|
||||
- The CPU is ^^responsible for executing programs.^^
|
||||
- What are the steps that the CPU takes to process programs? #card
|
||||
card-last-interval:: 23.43
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.42
|
||||
card-next-schedule:: 2022-11-02T21:45:06.768Z
|
||||
card-last-reviewed:: 2022-10-10T11:45:06.768Z
|
||||
card-last-score:: 5
|
||||
- **1. Fetch:** Retrieve an instruction from ^^program memory.^^
|
||||
- **2. Decode:** Break down the instruction into parts that have significance to specific sections of the CPU.
|
||||
- **3. Execute:** Various portions of the CPU are connected to perform the desired operation.
|
||||
- **4. Write Back:** Simply "writes back" the results of the execute step ^^if necessary.^^
|
||||
- ### CPU Organisation
|
||||
- What does the **organisation** of the CPU look like? #card
|
||||
card-last-interval:: 15.05
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 1.94
|
||||
card-next-schedule:: 2022-10-25T12:45:53.286Z
|
||||
card-last-reviewed:: 2022-10-10T11:45:53.286Z
|
||||
card-last-score:: 3
|
||||
- Processors are made up of:
|
||||
- A **Control Unit**
|
||||
- **Execution Unit(s)**
|
||||
- A **Register File**
|
||||
- {:height 339, :width 418}
|
||||
-
|
||||
- #### Control Unit
|
||||
- What does the **Control Unit** do? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-13T19:29:08.350Z
|
||||
card-last-reviewed:: 2022-10-03T14:29:08.350Z
|
||||
card-last-score:: 3
|
||||
- The **Control Unit** ^^controls the execution^^ of the instructions stored in main memory.
|
||||
- It ^^retrieves & executes^^ them.
|
||||
- What is the architecture of the control unit? #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-27T18:42:33.523Z
|
||||
card-last-reviewed:: 2022-10-10T11:42:33.524Z
|
||||
card-last-score:: 3
|
||||
- The control unit contains a **fetch unit**, a **decode unit**, and an **execute unit**.
|
||||
- It also contains two special registers:
|
||||
- **Program Counter (PC):** keeps the address of the next instruction
|
||||
- **Instruction Register (IR):** keeps the instruction being executed
|
||||
- {:height 266, :width 550}
|
||||
-
|
||||
- ### The Memory Subsystem
|
||||
collapsed:: true
|
||||
- How is the memory divided into storage locations? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:34:12.415Z
|
||||
card-last-reviewed:: 2022-10-01T17:34:12.416Z
|
||||
card-last-score:: 5
|
||||
- Memory is divided into a set of storage location which can hold data.
|
||||
- Locations are numbered.
|
||||
- Addresses are used to tell the memory which location the processor wants to access.
|
||||
- What are the two hierarchies of memory? #card
|
||||
card-last-interval:: 3.33
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-11T22:24:15.552Z
|
||||
card-last-reviewed:: 2022-10-08T15:24:15.553Z
|
||||
card-last-score:: 5
|
||||
- **1. Nonvolatile / ROM (Read Only Memory):** Read only memory.
|
||||
- Used to store the BIOS and / or a *bootstrap* or *bootloader* program.
|
||||
- **2. Volatile / RAM (Random Access Memory):** Read / Write memory.
|
||||
- Also called **Primary Memory**.
|
||||
- Used to hold the programs, operating system, and data required by the computer.
|
||||
- #### Primary Memory
|
||||
- How is primary memory connected to the CPU? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:43:34.991Z
|
||||
card-last-reviewed:: 2022-10-03T11:43:34.992Z
|
||||
card-last-score:: 5
|
||||
- **Primary Memory** is directly connected to the Central Processing Unit of the computer.
|
||||
- It must be present for the CPU to function correctly.
|
||||
- What are the three types of Primary Storage? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T10:20:18.031Z
|
||||
card-last-reviewed:: 2022-10-07T10:20:18.032Z
|
||||
card-last-score:: 3
|
||||
- **1. Processor Register:**
|
||||
- Contains information that the CPU needs to carry out the current instruction.
|
||||
- **2. Cache Memory:**
|
||||
- A special type of internal memory used by many CPUs to increase their **throughput**.
|
||||
- **3. Main Memory:**
|
||||
- Contains the programs that are currently being run and the data that the programs are operating on.
|
||||
- What is the **address width**? #card
|
||||
card-last-interval:: 23.43
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.42
|
||||
card-next-schedule:: 2022-11-12T18:33:12.074Z
|
||||
card-last-reviewed:: 2022-10-20T08:33:12.074Z
|
||||
card-last-score:: 3
|
||||
- The **address width** is the number of bits used to represent an address in memory.
|
||||
- The **width** limits the amount of memory that a computer can access.
|
||||
- Most computers use a **64 bit address**, which means that the maximum number of locations is 2^{64} \approx 16 billion gigabytes.
|
||||
- What operations does the memory subsystem support? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:30:33.402Z
|
||||
card-last-reviewed:: 2022-10-01T17:30:33.403Z
|
||||
card-last-score:: 5
|
||||
- The memory subsystem supports two operations:
|
||||
- **Load** (or read) + the address of the data location to be read.
|
||||
- **Store** (or write) + the address of the location & the data to be written.
|
||||
- How many bytes may the memory system read or write at a time? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T22:29:45.960Z
|
||||
card-last-reviewed:: 2022-10-01T17:29:45.960Z
|
||||
card-last-score:: 5
|
||||
- Read & Write operations ^^operate at the width of the system's data bus^^, usually 32 bit or 64 bit.
|
||||
- How is a section of memory addressed? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:24:14.775Z
|
||||
card-last-reviewed:: 2022-10-01T13:24:14.776Z
|
||||
card-last-score:: 5
|
||||
- The address ^^contains only the address of the lowest byte^^, and a number of bytes to be read is specified, e.g., 4 bytes.
|
||||
- #### Memory Alignment & Words of Data
|
||||
- When the computer's **word size** is 4 bytes, the data to be read should be at a memory address which is ^^some multiple of four.^^
|
||||
- When this is not the case, e.g., the data starts at address 14 instead of 16, then the computer has to read two or more 4 byte chunks and do some calculation before the requested data has been read, or it may generate ^^an alignment fault.^^
|
||||
- Even though the previous data structure end is at, for example, address 13, the next data structure should start at address 16. Two **padding bytes** are inserted between the two data structures at addresses 14 & 15 to align the next data structure at address 16.
|
||||
- ### The I/O Subsystem
|
||||
- What are **input devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:40.506Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:40.507Z
|
||||
card-last-score:: 5
|
||||
- Anything that feeds data into the computer.
|
||||
- What are **output devices**? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:09.769Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:09.770Z
|
||||
card-last-score:: 5
|
||||
- Display / transmit information back to the user.
|
||||
- What does the **I/O Subsystem** contain? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:11:38.831Z
|
||||
card-last-reviewed:: 2022-09-30T12:11:38.832Z
|
||||
card-last-score:: 5
|
||||
- The **I/O Subsystem** contains the devices that the computer uses to communicate with the outside world and to store data.
|
||||
- How do I/O devices communicate with the processor? #card
|
||||
collapsed:: true
|
||||
card-last-interval:: 3.45
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.46
|
||||
card-next-schedule:: 2022-10-13T21:36:17.677Z
|
||||
card-last-reviewed:: 2022-10-10T11:36:17.677Z
|
||||
card-last-score:: 5
|
||||
- I/O devices usually communicate with the processor using the **I/O Bus**.
|
||||
- PCs use the **PCI Express (Peripheral Component Interconnect Express)** bus for their I/O bus.
|
||||
- The Operating System needs a **device driver** to access a given I/O device.
|
||||
- What is a **device driver**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:23:41.787Z
|
||||
card-last-reviewed:: 2022-10-01T13:23:41.788Z
|
||||
card-last-score:: 5
|
||||
- A **device driver** is a program that allows the OS to control an I/O device.
|
||||
- #### I/O Read / Write Operations
|
||||
- The I/O read & write operations are similar to the memory read & write operations.
|
||||
- How does the processor address I/O devices? #card
|
||||
card-last-interval:: 7.76
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 1.94
|
||||
card-next-schedule:: 2022-10-28T02:36:52.036Z
|
||||
card-last-reviewed:: 2022-10-20T08:36:52.037Z
|
||||
card-last-score:: 3
|
||||
- A processor may use:
|
||||
- **Memory-Mapped I/O:** when the address of the I/O device is in the **direct memory space**, and the ^^sequences to read/write data in the device are the same as the memory read/write sequences.^^
|
||||
- **Isolated I/O:** similar process to Memory-Mapped I/O, but the processor has a ^^second set of control signals to distinguish between a **memory access** and am **I/O access**.^^
|
||||
- What is **IO/M**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-16T16:39:35.254Z
|
||||
card-last-reviewed:: 2022-10-07T10:39:35.254Z
|
||||
card-last-score:: 5
|
||||
- **IO/M** is a **status signal** in **Isolated I/O** that denotes whether the read/write operation pertains to the memory or to the I/O subsystem.
|
||||
- When the **signal is low** (IO/M = 0), i.e., IO/M is `true`, it denotes **memory-related operations**.
|
||||
- When the **signal is high**, (IO/M = 1), i.e., IO/M is `false`, it denotes an **I/O operation**.
|
||||
-
|
||||
-
|
||||
-
|
||||
- ## Programs
|
||||
- What are programs? #card
|
||||
card-last-interval:: 10.24
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.56
|
||||
card-next-schedule:: 2022-10-11T18:29:21.265Z
|
||||
card-last-reviewed:: 2022-10-01T13:29:21.266Z
|
||||
card-last-score:: 5
|
||||
- Programs are ^^sequences of instructions^^ that tell the computer what to do.
|
||||
- To the computer, a program is made out of a ^^sequence of numbers that represent individual operations.^^
|
||||
- These operations are known as **machine instructions** or just **instructions**.
|
||||
- A set of instructions that a processor can execute is known as an **instruction set**.
|
||||
- ### Program Development Tools
|
||||
collapsed:: true
|
||||
- What is a **high-level programming language**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:17:29.873Z
|
||||
card-last-reviewed:: 2022-10-01T13:17:29.874Z
|
||||
card-last-score:: 5
|
||||
- A **high-level programming language** is a ^^portable language^^ such as C that is ^^composed of words & algebraic notation^^ that can be translated by a compiler into **assembly language**.
|
||||
- What is a **compiler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-11T16:12:39.064Z
|
||||
card-last-reviewed:: 2022-09-30T12:12:39.064Z
|
||||
card-last-score:: 5
|
||||
- A **compiler** is a program that translates statements in a given high-level language into assembly language statements.
|
||||
- What is an **assembler**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T17:19:13.686Z
|
||||
card-last-reviewed:: 2022-10-01T13:19:13.686Z
|
||||
card-last-score:: 5
|
||||
- An **assembler** is a program that translates symbolic, assembly language versions of instructions into the ^^binary version.^^
|
||||
- What is **Assembly Language**? #card
|
||||
card-last-interval:: 33.64
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.9
|
||||
card-next-schedule:: 2022-11-07T03:25:47.210Z
|
||||
card-last-reviewed:: 2022-10-04T12:25:47.210Z
|
||||
card-last-score:: 5
|
||||
- **Assembly Language** is a ^^symbolic representation^^ of **machine instructions**.
|
||||
- What is **Machine Language**? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-16T16:39:57.935Z
|
||||
card-last-reviewed:: 2022-10-07T10:39:57.935Z
|
||||
card-last-score:: 3
|
||||
- **Machine Language** is a ^^binary representation^^ of **machine instructions**.
|
||||
- What is an **instruction**? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-14T15:37:20.118Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:20.118Z
|
||||
card-last-score:: 5
|
||||
- An **instruction** is a command that the computer hardware understands & obeys.
|
||||
-
|
||||
- ## Operating Systems
|
||||
- What is an **Operating System**? #card
|
||||
card-last-interval:: 4
|
||||
card-repeats:: 2
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-11T10:38:21.429Z
|
||||
card-last-reviewed:: 2022-10-07T10:38:21.431Z
|
||||
card-last-score:: 3
|
||||
- Possible definition: a program that runs on the computer that ^^knows about all the hardware^^ and usually ^^runs in privileged mode^^, having ^^access to physical resources that user programs can't control^^, and has the ^^ability to start & stop user programs.^^
|
||||
- The OS is responsible for managing the physical resources of complex systems, such as PCs, workstations, mainframe computers, etc.
|
||||
- It is also responsible for ^^loading & executing programs^^ and ^^interfacing with the users.^^
|
||||
- Usually, there is no operating system for **small embedded systems**.
|
||||
- Computers designed for one specific task.
|
||||
-
|
||||
- ### Multiprogramming
|
||||
- What is **Multiprogramming**? #card
|
||||
card-last-interval:: 28.3
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.66
|
||||
card-next-schedule:: 2022-11-17T15:33:42.952Z
|
||||
card-last-reviewed:: 2022-10-20T08:33:42.952Z
|
||||
card-last-score:: 5
|
||||
- **Multiprogramming** is a technique that allows the system to ^^present the illusion that multiple programs are running on the computer simultaneously.^^
|
||||
- Many multiprogrammed computers are **multiuser**.
|
||||
- They allow multiple users to be logged in at a time.
|
||||
- How is multiprogramming achieved? #card
|
||||
card-last-interval:: 11.2
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.8
|
||||
card-next-schedule:: 2022-10-12T21:35:33.411Z
|
||||
card-last-reviewed:: 2022-10-01T17:35:33.411Z
|
||||
card-last-score:: 5
|
||||
- Multiprogramming is achieved by ^^switching rapidly between programs.^^
|
||||
- How does the processor decide which process to execute next? #card
|
||||
card-last-interval:: 9.28
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.32
|
||||
card-next-schedule:: 2022-10-12T17:37:46.365Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:46.366Z
|
||||
card-last-score:: 3
|
||||
- **FCFS - First Come, First Served:** processes are moved to the CPU in the order in which they arrive.
|
||||
- **SJN - Shortest Job Next:** looks at all processes in the **ready state** and dispatches the one with the smallest service time.
|
||||
- **Round Robin:** distributes the processing time equitably among all ready processes.
|
||||
- ### Context Switching
|
||||
- What is a **Context Switch**? #card
|
||||
card-last-interval:: 23.43
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.42
|
||||
card-next-schedule:: 2022-11-12T18:37:16.898Z
|
||||
card-last-reviewed:: 2022-10-20T08:37:16.898Z
|
||||
card-last-score:: 5
|
||||
- When a program timeslice ends, the OS stops it, removes it, and gives another program control over the processor.
|
||||
- This is a **context switch**.
|
||||
- How does the OS go about a Context Switch? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-11T18:37:36.618Z
|
||||
card-last-reviewed:: 2022-10-03T11:37:36.618Z
|
||||
card-last-score:: 3
|
||||
- copies the current program register file into memory
|
||||
- restores the contents of the next program's register file into the processor
|
||||
- starts executing the next program
|
||||
- From the program point of view, ^^no program can tell that a context switch has been performed.^^
|
||||
- ### Protection
|
||||
- Three rules of Protection in multiprogrammed computers: #card
|
||||
card-last-interval:: 17.31
|
||||
card-repeats:: 4
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-20T21:34:44.306Z
|
||||
card-last-reviewed:: 2022-10-03T14:34:44.306Z
|
||||
card-last-score:: 3
|
||||
- 1. The result of any program running on the multiprogram computer ^^must be the same as if the program was the only program running on the computer.^^
|
||||
- 2. Programs ^^must not be able to access other programs' data^^ and must be confident that their data will not be modified by other programs (for security and privacy).
|
||||
- 3. Programs ^^must not interfere with other programs' use of I/O devices.^^
|
||||
- How is protection achieved? #card
|
||||
card-last-interval:: 8.32
|
||||
card-repeats:: 3
|
||||
card-ease-factor:: 2.08
|
||||
card-next-schedule:: 2022-10-15T17:20:10.955Z
|
||||
card-last-reviewed:: 2022-10-07T10:20:10.955Z
|
||||
card-last-score:: 3
|
||||
- Protection is achieved by the ^^operating system having full control over the resources of the system (processor, memory, and I/O devices)^^ through:
|
||||
- **Privileged Mode:** the operating system is the only one that can control the physical resources it executes in privileged mode.
|
||||
- User programs execute in **user mode**.
|
||||
- **Virtual Memory:** each program operates as if it were the only program on the computer, occupying a full set of the address space in its virtual space.
|
||||
- The OS is *translating* memory addresses that the program references into physical addresses used by the memory system.
|
||||
-
|
||||
-
|
||||
- **Next Topic:** [[Programming Models]]
|
Reference in New Issue
Block a user