인터리빙(interleaving) = 멀티 프로그래밍
- 단일 프로세서 환경에서 여러 작업이 번갈아가면서 수행되는 것
오버래핑(overlapping) = 멀티 프로세싱
- 멀티 프로세서 환경에서 여러 작업이 물리적으로 동시에 수행되는 것
컴퓨터 시스템의 네 가지 구성 요소
1. Hardware
- CPU, 메모리, I/O devices
2. Operating System
하드웨어의 사용을 여러 응용 프로그램 간에 제어하고 조정
3. Application Programs
4. 사용자 (Users)
사람, 기계, 다른 컴퓨터 등이 포함됩니다.
User View
사용자는 편리함, 사용 용이성, 그리고 좋은 성능을 원함, 자원 활용(Resource utilization)은 신경쓰지 않음
System View
OS는 자원 할당자(Resource Allocator), 프로그램 제어(Control Program)
하드웨어를 효율적으로 사용하고 user program의 실행을 관리
자원 관리(Resource Management)와 프로그램 제어(Program Control)의 필요성 때문에 등장
"컴퓨터에서 항상 실행되고 있는 단 하나의 프로그램"은 *커널(Kernel)이며, 운영 체제의 일부
OS의 세 가지 목표: 편의성, 효율성, 진화 가능성
운영 체제를 제외한 것은 다음 중 하나:
시스템 프로그램(System Program), 응용 프로그램(Application Program)
Processor
- 컴퓨터의 동작을 제어
Main Memory
– 데이터와 프로그램을 저장
– 일반적으로 휘발성
– Real Memory 또는Primary Memory라고도 불림
I/O Modules
– 컴퓨터와 외부 환경 간에 데이터를 이동
보조 기억 장치 (예: 디스크), 통신 장비, 터미널 등
– 입출력 장치(I/O 장치)와 CPU는 동시에 실행될 수 있다
System Bus
– 프로세서, 주기억 장치, 입출력 모듈 간의 통신을 제공
인터럽트
– OS는 인터럽트 기반으로 동작
– 인터럽트는 I/O 장치나 메모리와 같은 다른 모듈이
프로세서의 정상적인 수행 순서 중단시킬 수 있도록 하는 메커니즘
– processor utilization 향상을 위해 제공
프로세서는 I/O 장치의 작업 완료를 기다리기 위해 정지해야 함, 이는 프로세서를 비효율적으로 사용하는 것
Classes of Interrupts
1. 프로그램 인터럽트 (Program Interrupt)
– 명령 실행 결과로 인한 특정 조건으로 생성.
– 예: 산술 오버플로우, 0으로 나누기, 잘못된 명령어 실행 시도,
사용자가 허용된 메모리 영역 외부를 참조하는 경우 등
2. 타이머 인터럽트 (Timer Interrupt)
– 프로세서 내의 타이머에 의해 생성되어 OS가 정기적으로 특정 기능을 수행하도록 함
3. I/O 인터럽트 (I/O Interrupt)
– I/O 컨트롤러에 의해 생성되어 작업 완료 또는 오류 조건을 OS에 알리는 신호로 사용
4. 하드웨어 오류 인터럽트 (Hardware Failure Interrupt)
– 전원 장애(power failure), 메모리 패리티 오류(memory parity error)와 같은
고장이나 오류가 발생했을 때 생성


Simple Interrupt

Multiple Interrupts
하나의 인터럽트가 처리되는 중에 또 다른 인터럽트가 발생할 수 있음*
– 예: 통신 회선에서 데이터를 수신하면서 동시에 결과를 출력
두 가지 처리 방식
1. 인터럽트 처리 중에는 다른 인터럽트를 비활성화(disable)
– 하나의 인터럽트를 모두 처리한 후에 다음 인터럽트를 처리
2.우선순위(priority) 방식
– 더 높은 우선순위의 인터럽트를 먼저 처리
Storage Structure
Main Memory
- CPU가 직접 접근할 수 있는 유일한 대용량 저장 매체
- 휘발성(Volatile)
- 보통 DRAM(Dynamic Random-Access Memory)
보조 저장 장치(Secondary Storage)
– 주기억 장치를 확장한 것으로, 대용량 비휘발성 저장 공간 제공
– HDD: 금속 또는 유리 플래터에 자기 기록 물질이 코팅
– 비휘발성 메모리(NVM, Non-Volatile Memory): HDD보다 빠르고 비휘발성.
부트스트랩 프로그램(Bootstrap Program)은 전원을 켜거나 재부팅할 때 로드됨.
- EEPROM에 저장되어 있으며, 펌웨어(Firmware)라 불림
- 시스템의 모든 구성 요소 초기화, 커널(kernel)을 메모리에 로드하고 실행을 시작
Byte: 가장 작은 저장 단위
Word: 컴퓨터 아키텍처 고유의 데이터 단위 (예: 64비트 컴퓨터는 연산을 워드 단위(64비트)로 수행)
계층적으로 구성된 저장 시스템 : 속도,비용,휘발성
계층을 아래로 내려갈수록:
비트당 비용 감소
용량 증가
접근 시간 증가
프로세서에 의한 메모리 접근 빈도 감소
직접 메모리 접근(DMA) 구조
메모리 속도에 근접한 속도로 정보를 전송할 수 있는 고속 I/O 장치에서 사용됨
장치 컨트롤러(하드웨어 장치)가 버퍼 저장소로부터 메인 메모리로 데이터를 CPU의 개입 없이 직접 블록 단위로 전송함
데이터 블록당 한 번만 인터럽트가 발생하며, 바이트당 인터럽트를 발생시키지 않음
장치 컨부트롤러가 CPU 개입 없이 메인 메모리와 I/O 장치 간 데이터를 직접 블록 단위로 전송하고,
전송 완료 후에만 CPU에 인터럽트를 보내는 방식

Multiprocessor System의 사용과 중요성이 점점 증가
장점: throughput증가, 신뢰성(reliability) 향상
두 가지 유형:
비대칭 멀티프로세싱 (Asymmetric Multiprocessing) – 각 프로세서에 특정 작업이 할당됨
대칭 멀티프로세싱 (Symmetric Multiprocessing) –각 프로세서가 모든 작업을 수행함
멀티코어 시스템(multicore systems)
- 하나의 칩 안에 여러 개의 코어가 존재하는 시스템
- 멀티코어 시스템은 단일 코어를 가진 여러 개의 칩보다 더 효율적
이유: 칩 내 통신(on-chip communication)이 칩 간 통신(between-chip communication)보다 더 빠르기 때문
하나의 칩에 여러 코어가 있는 구조는 여러 개의 단일 코어 칩에 비해 훨씬 적은 전력을 사용
NUMA System (Non-Uniform Memory Access System)
프로세서가 각자 local memory를 가지며,
다른 프로세서의 메모리에 접근할 때보다 자신의 메모리에 접근할 때 더 빠른 컴퓨터 메모리 구조
확장성이 뛰어남
Clustered Systems
여러 독립적인 컴퓨터를 하나의 시스템처럼 연결하여 작동하는 구조
장애 발생 시에도 서비스를 지속할 수 있는 고가용성(High Availability) 서비스를 제공
비대칭 클러스터 (Asymmetric Clustering)
한 대의 머신이 대기 모드(hot-standby)로 작동
- HA (고가용성) 클러스터, 또는 페일오버 클러스터(Failover Cluster)
- Active-Standby 모드
대칭 클러스터 (Symmetric Clustering)
여러 노드가 동시에 애플리케이션을 실행하고 서로를 모니터링
- LB (Load balancing) 클러스터
- Active-Active 모드
일부 클러스터는 고성능 컴퓨팅(HPC: High Performance Computing)용
- 병렬 처리(parallelization)가 가능하도록 작성되어야 함
분산 잠금 관리자(DLM: Distributed Lock Manager)를 사용해 충돌되는 작업을 방지
일반적으로 스토리지 영역 네트워크(SAN: Storage-Area Network)를 통해 저장소를 공유
Multiprogramming
하나의 프로그램만으로는 CPU와 입출력 장치(I/O)를 항상 바쁘게 유지할 수 없기 때문에
작업 스케줄링(job scheduling)을 통해 하나의 작업이 선택되어 실행하여 CPU가 항상 실행할 프로세스를 갖도록 함
만약 해당 작업이 I/O를 기다려야 하는 상황이 되면, 운영체제는 다른 작업으로 전환하여 CPU를 계속 활용
- Interleaving (multiprogramming: one processor)
Multitasking
멀티 프로그래밍의 논리적인 확장
CPU가 작업들을 매우 빠르게 전환하여, 사용자가 작업이 실행 중인 동안에도 상호작용할 수 있게 함
→ 인터랙티브 컴퓨팅(Interactive Computing) 환경을 만듦, 응답 시간(response time)은 1초 미만이어야 함
여러 작업이 동시에 실행 준비가 되어 있다면 → CPU 스케줄링(CPU scheduling) 필요
Virtual Memory를 통해, 프로세스 전체가 메모리에 없더라도 실행 가능하게 함
- Interleaving and overlapping (multiprocessing: two processors)

Dual-Mode : 사용자 모드(User Mode), 커널 모드(Kernel Mode)
OS가 자신과 다른 시스템 구성 요소를 보호할 수 있도록 함
하드웨어가 모드 비트(mode bit)를 제공 → 현재 유저 코드를 실행 중인지, 커널 코드를 실행 중인지 구분 가능
Privileged Instruction은 커널 모드에서만 실행 가능 → 시스템 자원 보호를 위한 핵심 메커니즘
시스템 콜을 통해 user 모드 → kernel 모드로 전환 → 작업이 끝나면 다시 사용자 모드로 복귀
Timer
프로세스가 무한 루프에 빠지거나 자원을 독점하는 것(process hogging resources)을 막기 위해 타이머 사용
타이머는 일정 시간이 지나면 컴퓨터에 인터럽트를 발생하도록 설정
물리적 시계(시스템 클럭)에 의해 감소되는 카운터(counter)를 유지
카운터가 0이 되면 인터럽트 발생
운영체제만이 이 타이머 값을 설정할 수 있음 → 특권 명령(privileged instruction)
프로세스는 program in execution, 시스템 내에서 Unit of work within system
- 프로그램은 passive entity
- 프로세스는 active entity
프로세스가 작업을 수행하기 위해 필요한 자원들:
CPU, 메모리, 입출력 장치 (I/O), 파일, 초기화 데이터 (Initialization data)
프로세스가 종료되면, OS는 재사용 가능한 자원들을 회수
OS의 프로세스 관리 활동:
- 사용자 프로세스와 시스템 프로세스의 생성 및 삭제
- 프로세스의 일시 중지(suspend) 및 재개(resume)
- 프로세스 간 동기화 메커니즘 제공
- 프로세스 간 통신 메커니즘 제공
- 교착 상태(Deadlock) 처리 메커니즘 제공
메모리 관리는 메모리에 무엇이 언제 있는지 결정
→ CPU utilization과 사용자에 대한 컴퓨터 응답성을 Optimaization 해줌
- 현재 메모리의 어느 부분이 누구에 의해 사용되고 있는지 추적
- 어떤 프로세스와 데이터를 메모리로 이동시킬지, 이동시킬 시기를 결정
- 필요에 따라 메모리 공간을 할당 및 해제함
캐싱(Caching)
현재 사용하는 데이터를 느린 저장장치에서 빠른 저장장치에 임시로 복사해둔 후 사용하고,
필요할 때 캐시를 먼저 확인하여 성능을 높이는 기술
현재 사용 중인 정보를 느린 저장장치에서 빠른 저장장치로 임시 복사하여 사용
빠른 저장장치(캐시)를 먼저 확인하여 데이터가 있는지 검사하고
있으면 캐시에서 바로 사용하고, 없으면 → 느린 저장장치에서 데이터를 캐시로 복사한 후 사용

파일 시스템 관리 (File-system Management)
OS는 정보를 저장할 때, 일관된 논리적 관점을 제공
물리적인 저장 장치의 특성을 논리적인 저장 단위인 파일로 추상화
각 저장 매체는 디스크 드라이브 등의 장치에 의해 제어됨
저장 매체는 서로 다른 접근 속도, 용량, 데이터 전송 속도, 접근 방식(순차 또는 랜덤) 등의 속성을 가짐
파일은 일반적으로 디렉터리 구조로 조직
대부분의 시스템은 누가 어떤 파일에 접근할 수 있는지 결정하는 접근 제어 기능을 가짐
운영체제가 수행하는 주요 작업
- 파일과 디렉터리 생성 및 삭제
- 파일 및 디렉터리를 조작하기 위한 기본 연산(프리미티브) 제공
- 파일을 보조 저장 장치에 매핑
- 파일을 안정적인 비휘발성 저장 장치(예: 백업 장치)에 백업
대용량 저장소 관리 (Mass-Storage Management)
디스크는 Main Memory에 다 담을 수 없는 데이터나 오랫동안 보관해야 하는 데이터를 저장하는 데 사용
OS의 주요 역할
- 마운트(Mounting) 및 언마운트(Unmounting)
- 여유 공간 관리(Free-space management)
- 저장 공간 할당(Storage allocation)
- 디스크 스케줄링(Disk scheduling)
- 디스크 파티셔닝(Partitioning)
- 보호(Protection)
추가 저장소 (속도가 느려도 되는 저장소)
일부 저장소는 빠를 필요가 없음
3차 저장소(Tertiary storage)→ 광학 저장장치(Optical storage), 자기 테이프(Magnetic tape) 등
보호 (Protection)
OS 정의한 자원에 대해 접근을 제어할 수 있도록 하는 모든 메커니즘
예: 파일, 메모리, 입출력 장치 등에 누가 접근할 수 있는지를 제한
보안 (Security)
시스템을 내부 및 외부 공격으로부터 방어
사용자 식별 및 접근 제어
User ID는 사용자별로 부여, 해당 사용자의 모든 파일 및 프로세스에 연결되어 접근 권한 결정에 사용됨
Group ID로 사용자 집합을 정의하고, 접근 제어를 그룹 단위로 관리할 수 있도록 함, 그룹 ID도 프로세스나 파일에 연결되어 공동 관리 가능

분산 컴퓨팅 (Distributed Computing)
독립적인 시스템들의 모음으로 네트워크를 통해 연결되어 함께 동작
Network Operating System
네트워크를 통해 시스템 간 기능을 제공
통신 방식(Communication scheme)을 통해
시스템들이 메시지를 교환할 수 있도록 함
사용자에게는 마치 하나의 통합된 시스템처럼 보이도록 환상(illusion)을 제공