Add second year

This commit is contained in:
2023-12-07 01:19:12 +00:00
parent 3291e5c79e
commit 3d12031ab8
1168 changed files with 431409 additions and 0 deletions

View File

@ -0,0 +1,541 @@
- #[[CT213 - Computer Systems & Organisation]]
- No previous topic.
- **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf)
-
- ## 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
- ![image.png](../assets/image_1662829382080_0.png){: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
- ![image.png](../assets/image_1662830400492_0.png)
- 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**
- ![image.png](../assets/image_1662830846361_0.png){: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
- ![image.png](../assets/image_1662837864357_0.png){: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]]

View File

@ -0,0 +1,541 @@
- #[[CT213 - Computer Systems & Organisation]]
- No previous topic.
- **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf)
-
- ## 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
- ![image.png](../assets/image_1662829382080_0.png){: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
- ![image.png](../assets/image_1662830400492_0.png)
- 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**
- ![image.png](../assets/image_1662830846361_0.png){: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
- ![image.png](../assets/image_1662837864357_0.png){: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]]

View File

@ -0,0 +1,541 @@
- #[[CT213 - Computer Systems & Organisation]]
- No previous topic.
- **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf)
-
- ## 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
- ![image.png](../assets/image_1662829382080_0.png){: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
- ![image.png](../assets/image_1662830400492_0.png)
- 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**
- ![image.png](../assets/image_1662830846361_0.png){: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
- ![image.png](../assets/image_1662837864357_0.png){: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]]

View File

@ -0,0 +1,541 @@
- #[[CT213 - Computer Systems & Organisation]]
- No previous topic.
- **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf)
-
- ## 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
- ![image.png](../assets/image_1662829382080_0.png){: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
- ![image.png](../assets/image_1662830400492_0.png)
- 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**
- ![image.png](../assets/image_1662830846361_0.png){: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
- ![image.png](../assets/image_1662837864357_0.png){: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]]

View File

@ -0,0 +1,541 @@
- #[[CT213 - Computer Systems & Organisation]]
- No previous topic.
- **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf)
-
- ## 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
- ![image.png](../assets/image_1662829382080_0.png){: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
- ![image.png](../assets/image_1662830400492_0.png)
- 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**
- ![image.png](../assets/image_1662830846361_0.png){: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
- ![image.png](../assets/image_1662837864357_0.png){: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]]

View File

@ -0,0 +1,541 @@
- #[[CT213 - Computer Systems & Organisation]]
- No previous topic.
- **Relevant Slides:** ![Lecture01.pdf](../assets/Lecture01_1662828507609_0.pdf)
-
- ## 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
- ![image.png](../assets/image_1662829382080_0.png){: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
- ![image.png](../assets/image_1662830400492_0.png)
- 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**
- ![image.png](../assets/image_1662830846361_0.png){: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
- ![image.png](../assets/image_1662837864357_0.png){: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]]