
is a software that operates a computer system.
is a machine that processes the information.
can be defined as a quantitative representation that measures the uncertainty.
정보의 최소 단위: bit(binary digit)
정보의 처리: 정보의 상태 변환 (0에서 1로, 1에서 0으로)
부울 대수(Boolean Algebra): NOT, AND, OR
논리 게이트: NOT, AND, OR, XOR, NAND, NOR
논리 회로 : IC, LSI, VLSI, ULSI, SoC, ..., 무어의 법칙, 황의 법칙
정보의 저장과 전송 : 플립-플롭, 데이터 버스
덧셈은? 반가산기, 전가산기
뺄셈은? 2의 보수 표현법
곱셈과 나눗셈은? 덧셈과 뺄셈의 반복
실수 연산은? 부동 소수점 표현법
함수는? GOTO
삼각함수, 미분, 적분, 사진 촬영, 동영상 재생 ...
NOT, AND, OR 게이트만으로 모든 계산을 할 수 있다.
NAND 게이트만으로 모든 계산을 할 수 있다.
범용 컴퓨터(general-purpose computer)
Turing-computable: 튜링 머신으로 계산 가능한 것.
정지 문제(Halting Problem): 튜링 머신으로 풀 수 없는 문제
컴퓨터의 할아버지: Alan Turing-Turing Machine
컴퓨터의 아버지: John von Neumann-ISA: Instruction Set Architecture
현대 컴퓨터의 모형(CPU, RAM, Application Programs, Operating System)을 설계
- Head와 Tape를 활용하여 목적성을 가진 Turing Machine을 만들 수 있음
- Turing Machine을 엮어 Universal Turing Machine을 만들 수 있음
명령을 끌어와서(fetch) 실행하는(execute) 사이클을 가진 내장형 프로그램 컴퓨터를 최초로 설계
A stored-program computer is a computer that stores programs in a memory.
is a set of instructions that tells a computer's hardware to perform a task. 
is a program running at all times on the computer
to provide system services to application programs
to manage processes, resources, user interfaces, and so on.
is a software that managers a computer's hardware.
It also provides a basis for application programs
and acts as an intermediary between the computer user and the computer hardware.
can be divided roughly into four components
| [1] hardware | [2] operating system | [3] application programs | [4] user |
|---|

There are NO universally accepted definition of an operating system.
A more common definition is that "the one program running at all times on the computer", usually called the kernel.
Along with the kernel, there are two other types of programs
⭐ system programs
⭐ application programs
One or more CPUs and a number of device controllers connected through a common bus

is the first program to run on computer power-on and then loads the operating system.
Hardware may trigger an interrupt at any time by sending a signal to the CPU, usually by way of the system bus.

A typical instruction-execution cycle
first fetches an instruction from memory
and stores that instruction in the instruction register.
The instruction is then decoded
and may cause operands to be fetched from memory
and stored in some internal register.
After the instruction on the operands
has been executed,
the result may be stored back in memory.
The wide variety of storage systems can be organized in a hierarchy according to storage capacity, and access time.

A large portion of OS code is dedicated to managing I/O
* DMA(Direct Message Access)
CPU - The hardware that executes instructions.
Processor - A physical chip that contains on or more CPUs.
Core - The back computatino unit of the CPU.
Multicore - Including multiple computing cores on the same CPU.
Multiprocessor - Including multiple processors.
The most common multiprocessor systems, in which each peer CPU processor performs all tasks. / ⭐ Asymmetric multiprocessing each processor is assigned a specific task.

Muti-core design with several cores on the same processor chip.

runs more than one program at a time.
keeps several processes in memory simultaneously to increase CPU utilization.

is a logical extension of multiprogramming in which CPU switches jobs so frequently that users can interact with each job while it it running.
파워포인트 작업하면서 유튜브 동영상 시청할 때 CPU가 여러 작업을 빠르게 번갈아가며 수행하는데, 사용자는 이를 자연스러운 멀티태스킹으로 인지함.
If several processes are ready to run at the same time, the system must choose which process will run next.
Two separate mode of operations to ensure that an incorrect program cannot cause other programs to execute incorrectly.
* 커널 모드 외에는 직접 하드웨어를 제어할 수 없기에 부적절한 명령이 방지됨.
is a technology that allow us to abstract the hardware of a single computer into several different execution environments.
VMware, XEN, WSL, and so on.
* (a) a single operating system and (b) three virtual machines.
Traditional Computing
Mobile Computing
Client-Server Computing (웹 클라이언트-서버 구조 etc)
Peer-to-peer Computing (음악/영화 공유, 토렌트 etc)
Cloud Computing (AWS, Azure, GCP etc)
▲ General Structure of a client-server system
▲ Peer-to-peer system with no centralized service
▲ Cloud Computing
User Interface
Program execution
I/O operation
File-system manipulation
Communications
Error detection
Resource allocation
Logging
Protection and security
Three fundamental ways for users to interface with the OS
CLI: command line interface, or command interpreter, known as shells, sh, bash, csh, tcsh, zsh, etc.
GUI: graphical user interface, Windows, Aqua for MacOS, KDE/GNOME for Linux, etc.
Touch-Screen Interface, Android UI, IPhone UI, etc.
provides an interface to the services made available by the OS.
API(Application Programming Interface)
* The handling of a user application invoking the open() system call


* printf (사용자가 open(), read(), write()하는 단계를 대신 함)
* Examples of Windows and UNIX system calls