Operating Systems: Overview & History Flashcards

1
Q

What is the definition of an Operating System?

A

There’s no universally accepted definition. Kernel of the operating system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

If something isn’t the kernel of the OS, what is it?

A

Either a system program or an application program

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is the purpose of an OS?

A

Ensuring that hardware resources are shared fairly and securely e.g., Processor, I/O devices, memory.

Provide an environment for execution of programs an provide services to programs and users.
- Prevent errors and improper uses.
- Allocate all system resources fairy and efficiently.
- Ease of use to the user.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Outline the Von Neumann Architecture

A

The origins of the General-purpose Stored program computer (1945), where both instructions and data are stored in the same memory.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Von Neumann v Harvard, which do systems perform better with and why?

A

Systems based on the VNA perform wore than those based on the Harvard. This is because, in the VNA, the same network buses have to be shared for fetching both instructions and data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Where is the Von Neumann Architecture used?

A

General purpose systems e.g., laptops and smartphones.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is phase 1 of OS evolution, when was it, and what did it include?

A

Phase 1: Serial Processing.
1940s - 50s.
No operating system, so programmers had to interact directly with the hardware and sign up for blocks of time with the hardware, meaning there was the potential for wasted time. I/O devices also took a long time as the CPU was often idle.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is phase 2 of OS evolution, when was it, and what did it include?

A

Phase 2: Simple Batch Systems:
1950s - 60s
No longer interact directly with the hardware.
Submit jobs to computer operator who bundles a group of jobs into a batch.

Job - A single program called a job had to be installed before being used with its compiler and code, saving the object program and linking and so on to run the program.

Resident program - monitor - accepts batch and processes jobs sequentially with minimal pauses between.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What major event that impacted OS happened in the 1960s?

A

The Apollo program.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What was the problem laid out by NASA during this major event?

A

The 1 cubic foot problem. Computers typically built batch management style, big and bulky, often needing entire buildings worth of space. NASA space/lunar race needed much smaller, hence the 1 cubic foot rule. Transitioned from valves to silicon and memory to core memory ropes with each wire thread through magnetic cores, resulting in the Apollo guidance computer (AGC).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

How was the problem laid out by NASA during this major event relevant to OS?

A

Pre 1960s Operating Systems were constructed for the individual (mainframe) computer. But the smaller the computer, the greater the value and the AGC was among the first real-time operation computers. The AGC paved the way for the miniaturisation of computers, and the eventual development of personal computers, laptops and mobiles.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is phase 3 of OS evolution, when was it, and what did it include?

A

Phase 3: Multi-Programmed Batch Systems:
1960s - 1970s
Automatic job sequencing removed gaps between jobs.
Processor still IDLE sometimes, and time was spent waiting for I/O devices still.
Multiprocessing allowed OS’s to switch to a different job when an active job was waiting for an I/O.
UNICS (later UNIX) became a foundation for modern OS’s.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is phase 4 of OS evolution, when was it, and what did it include?

A

Phase 4: Time Sharing
Multi-programmed batch systems can be quite efficient but do not allow for user interaction. Time sharing allows for that user interaction, however, there is a trade-off between maximising user processing and minimising response time.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What was the significance of UNIX’s rise in 1970?

A

UNIX is portable, written in C, making it easier to adapt to different hardware.
UNIX is modular, introducing the idea of small, reusable utilities working together.
UNIX has a hierarchical file system, providing a flexible and powerful file organisation method.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What was the impact of UNIX’s rise in 1970?

A

UNIX became the foundation of many modern OS’s, including Linux, BSD, and macOS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Outline the key features of an OS.

A

UI.
Process management.
Memory management.
Information Protection and security.
Scheduling and resource management.
Communication.
Error detection.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What are system calls?

A

Programmatic way in which a computer program requests a service from the kernel of the operating system it is executed on.
They act as a bridge between user-mode and kernel-mode operations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

How are System calls accessed by programs?

A

Via a high-level Applications Program Interface (API), rather than direct system calls.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What is an API?

A

Contracts that define how different software components interact, specifying rules, endpoints, data formats and protocols that enable communication between applications.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What are the core components and rules of an API?

A

Endpoints are specific URLs or URIs where an API can b accessed. They enable application developers to interact with various services, retrieve data, and perform actions.

Parameters are additional pieces of information included in the URL or request body to customise the query, allowing clients to specify conditions, filters or other details for the requested data.

Request headers contain additional information about the request and play crucial roles in providing metadata. Clients can include headers in their requests to provide such information such as authentication tokens, content type, preferences etc.

The request body contains the main content of the request, holding the actual data being sent to the API, often in a structured format and commonly written in JSON or XML.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

What are the three most common API’s?

A

Win32 API - for Windows
POSIX API - for all POSIX-based systems (*nix, OS X, Android)
Java API - for the Java Virtual Machine (JVM).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Outline the API - System Call - OS relationship

A

User mode:
User application wants to open a file.
Open () API request sent to the System Call interface (SCI).
Switches to Kernel mode:
SCI works out to be numbered system calls.
Look up the correct system call.
Implement the System call.
Return yes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What is an OS system program?

A

Software to provide useful functions, utilities, and services.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Where do system programs operate?

A

System programs are not apart of the kernel, but operate in user space.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
What can be done with System calls in terms of the kernel?
System calls can be leveraged to interact with the kernel and manage resources.
26
Outline types of system programs
Some are simply user interfaces to system calls, others are considerably more complex.
27
Outline examples of system programs
File management: Create, delete, copy, rename, print, dump, list, and generally manipulate files and directories # Status Information: System info – date, time, memory usage, etc; performance, logging and debugging. File Modification: Text editors, commands to search and transform text. Programming-Language Support: Compilers, assemblers, debuggers and interpreters. Programming Loading and Execution: Absolute loaders, relocatable loaders, linkage editors, and overlay-loaders, debugging systems for higher-level and machine language. Communications: Provide the mechanism for creating virtual connections among processes, users, and computer systems. Background Services: Disk checking, scheduling, logging, print managers.
28
What are the different approaches to OS structures?
1. Simple structure. 2. Layered approach. 3. Microkernel approach. 4. Modular approach. 5. Hybrid approach.
29
Outline the simple structure of an OS
No well-defined structure and modularisation is not present. For example, MS-DOS has no dual mode operation, user programs can assess hardware directly, and it is vulnerable, for if user programs crash, so can the entire system.
30
Outline the Layered approach of an OS structure
The OS code is broken into smaller pieces (layers). Modularisation of code is possible. The bottommost layer is the hardware, and the topmost layer are the user/application programs. The top layers can invoke operations on the lower layers, making sure user programs don't have direct access to hardware which can be very dangerous.
31
Outline the microkernel approach to an OS structure.
OS growth and the kernel becomes more and more complex. Removes non-essential components from the kernel code. Made from user/system programs (pushed to upper layers). Results in smaller and much better kernel code. Usually a minimal process, memory and communication services are retained in the kernel.
32
Outline the modular approach to an OS system
Loadable kernel modules, meaning the kernel has a core set of services and additional services can be loaded as modules during runtime/boot. No need to recompile the kernel every time a new service is added the modules need to only be linked dynamically. More efficient as there is no need to pass messages/recurrently call lower layers.
33
Outline the hybrid approach to an OS system
Mixture of monolith and modular components to achieve a better efficiency. Can use layers, microkernels and loadable modules to optimise performance.
34
What are the two key questions when implementing OS?
Policy: What should the OS provide? Mechanism: How should it provide it?
35
What can operating systems use to run important activities in user mode rather than kernel mode?
They can use Daemons.
36
Beside system programs, what other types of programs are their?
General purpose e.g., word processors, spreadsheets, web browsers. Application programs e.g., database management systems, graphic design software. Bespoke programs.
37
How does an OS provide abstraction to its users?
Through application and system programs (via UI or GUI) rather than by exposing the actual system calls.
38
How can the same set of system calls be used by different user interfaces?
For example, both a mouse-and-window interface GUI and a command line UNIX shell use the same system calls but look and act in different ways.
39
What does dual booting from macOS X into Windows demonstrate about hardware usage?
It shows that the same hardware can support two entirely different interfaces and sets of applications.
40
What is the first problem to address when designing a system?
Defining the goals and specifications.
41
Which factors affect system design?
The hardware choice and the system type (e.g., batch, time sharing, single user, multiuser, distributed, real-time, or general purpose).
42
Into what two groups are the requirements for system design divided?
User goals and system goals.
43
What are some examples of user goals in system design?
Desired properties like convenience, ease of learning and use, reliability, safety, and speed.
44
Why can user goals be challenging as requirements?
Because there is no universally agreed standard for how to achieve them.
45
What are the examples of system goals in system design?
Goals such as being easy to design, implement and maintain, and being flexible, reliable, error-free, and efficient.
46
How do the requirements differ between operating systems like VxWorks and MVS?
VxWorks, a real-time OS for embedded systems, has substantially different requirements than MVS, a large multiuser, multiaccess OS for IBM mainframes.
47
What general principle separates “what” from “how” in operating system design?
The separation of policy from mechanism.
48
In operating system design, what does the mechanism determine?
How to do something.
49
In operating system design, what does the policy determine?
What will be done.
50
How does the timer-construct illustrate the separation of mechanism and policy?
The timer-construct is a mechanism for ensuring CPU protection, while deciding how long the timer should be set is a policy decision.
51
Why is a mechanism that is insensitive to policy changes desirable?
Because if policies change, the underlying mechanism would not need to be modified, making the system more adaptable.
52
How do microkernel-based operating systems handle policies and mechanisms?
They implement a basic set of policy-free building blocks and allow advanced mechanisms and policies to be added via user-created kernel modules or programs.
53
How did UNIX evolve its scheduling mechanism illustrate policy separated from mechanism?
It evolved from a basic time-sharing scheduler to one using loadable tables that can switch between scheduling policies (batch, real-time, fair share) with a single command.
54
How does Windows integrate its mechanism and policy in its operating system design?
It encodes both within the kernel and system libraries, enforcing a consistent, global look and feel across all applications.
55
How does macOS X ensure a uniform user experience?
By integrating interface consistency into the core system.
56
In OS design, what type of decision is "whether or not to allocate a resource"?
A policy decision.
57
In OS design, what type of decision is "how to allocate a resource"?
A mechanism decision.
58
In what language were operating systems originally written?
Assembly language.
59
What higher-level languages are most modern operating systems written in?
Languages such as C++ (and often C).
60
Can an operating system be written using more than one programming language?
Yes, the lowest levels may be in assembly language while higher-level routines are written in languages like C or C++.
61
What was the first machine not written entirely in assembly language, and what language was it written in?
The Master Control Program (MCP) for Burroughs computers, written in a variant of ALGOL.
62
What are some advantages of writing an operating system in higher-level languages?
Advantages include faster coding, more compact code, easier debugging and understanding, and improved portability.
63
How do improvements in compiler technology benefit operating systems written in higher-level languages?
They can improve the generated code for the entire OS through simple recompilation.
64
Why is OS portability better when using higher-level languages compared to assembly language?
Because higher-level language code (like C) can run natively on various CPU architectures, unlike assembly language which is often hardware-specific.
65
What are the possible disadvantages of writing an operating system in higher-level languages?
Potential disadvantages include reduced speed and increased storage requirements, although these are less significant in modern systems.
66
How do modern compilers mitigate the performance disadvantages of higher-level languages in OS development?
They perform complex analysis and apply sophisticated optimizations, leveraging modern processors' pipelining and multiple functional units.
67
What mainly results in major performance improvements in operating systems?
Better data structures and algorithms rather than solely optimized assembly-language code.
68
Which parts of the operating system code are most critical to high performance?
he interrupt handler, I/O manager, memory manager, and CPU scheduler.
69
What can be done once an operating system is functional to address performance bottlenecks?
Bottleneck routines can be identified and potentially replaced with optimized assembly-language code.
70
How have applications traditionally run on a computer?
Applications have traditionally run directly on an operating system.
71
What was a limitation regarding applications written for different operating systems in the traditional setup?
Applications written for a different OS could not be run on that computer.
72
How does virtualization allow applications written for a different OS to run?
Virtualization allows them to run through a Virtual Machine.
73
What is the difference between virtualization and emulation regarding application compatibility?
Virtualization allows applications written for a different OS to run, while emulation allows applications written for a different platform to run.
74
What additional benefit does virtualization provide besides enabling cross-OS application support?
It provides a “safe” environment for testing operating systems.