컴퓨터 공학 | 퀴즈 (2)

Faithful Dev·2025년 1월 26일

컴퓨터 공학

목록 보기
32/81

운영체제 이론 정리

프로세스와 스레드

컨텍스트 스위칭과 단계

컨텍스트 스위칭(Context Switching)은 CPU가 실행 중인 프로세스를 중단하고, 다른 프로세스를 실행하기 위해 상태를 저장하고 복원하는 과정이다.
1. 현재 프로세스 상태 저장: 실행 중인 프로세스의 PCB에 CPU 레지스터 값(CP, SP 등)을 저장한다.
2. 다음 프로세스 준비: 다음 실행할 프로세스의 상태 정보를 메모리에서 읽어온다. 저장매체에서 코드를 가져오는 과정은 포함되지 않는다.
3. 레지스터 복원: 읽어온 프로세스의 PC와 SP 값을 CPU 레지스터에 복원한다.
4. 프로세스 실행: CPU에서 다음 프로세스를 실행한다.

IPC(InterProcess Communication)

IPC는 프로세스 간 통신을 의미하며, 운영체제에서 서로 다른 프로세스가 데이터를 주고받거나 동기화하는 방법을 제공한다. IPC의 주요 기법은 파일, 파이프, 소켓, 공유 메모리, 메시지 큐 등이 있다.
1. 파일은 데이터를 교환하기 위한 간단한 형태의 IPC 기법이다.
2. 사용자 영역: 대부분의 IPC는 커널 영역을 사용하며, 사용자 영역만 활용하는 경우는 드물다.
3. 메시지 큐는 데이터 교환을 위한 구조적 IPC 기법이다.

스레드(Thread)와 특징

스레드는 프로세스 내 실행 단위로, 하나의 프로세스에서 여러 개의 스레드를 생성할 수 있다. 스레드는 같은 프로세스의 메모리 공간(코드, 데이터, 힙)을 공유하지만, 각각 독립적인 스택을 가진다.
스레드는 경량 프로세스(Light Weight Process)라고 불리며, 프로세스보다 더 빠르게 생성되고 자원을 효율적으로 관리한다.

스레드(Thread)의 장단점

장점
  1. 스레드는 같은 프로세스의 메모리를 공유하므로, IPC 없이도 효율적으로 데이터 교환이 가능하다.
  2. 사용자 응답성 향상: 멀티스레딩은 UI와 백그라운드 작업을 분리하여 사용자 경험을 개선한다.
단점
  1. 한 스레드의 오류는 프로세스 전체에 영향을 미칠 수 있다.
  2. 과도한 스레드 생성은 컨텍스트 스위칭 비용으로 인해 성능이 저하될 수 있다.

동기화와 병렬 처리

스레드 동기화 이슈와 해결 방안

스레드 동기화 이슈는 여러 스레드가 공유 자원에 동시에 접근할 때 발생하며, 데이터 불일치나 충돌 문제가 생길 수 있다. 이를 해결하기 위해 상호 배제(Mutual Exclusion) 기법을 사용한다.

  • SemaphoreMutex는 동기화 이슈를 해결하는 대표적인 도구이다.
  • 동기화의 핵심은 한 스레드 공유 자원을 처리 중일 때, 다른 스레드 접근을 차단하는 것이다.

Mutex와 세마포어의 차이와 특징

Mutex와 세마포어임계 구역(critical section)에 대한 동시 접근을 제어하기 위한 동기화 도구이다.

  • Mutex: 단 하나의 스레드만 임계 구역에 접근할 수 있도록 제어하는 락(lock) 메커니즘으로, Binary Semaphore와 유사하다.
  • 세마포어(Semaphore): 카운터 기반으로 여러 스레드가 동시에 접근 가능한 자원의 수를 제한할 수 있다.
  • Mutex는 이진 값(locked/unlocked)만 가지며, 세마포어는 0 이상의 정수 값을 갖는다.

교착상태와 자원 관리

교착상태(Deadlock)와 기아상태(Starvation)

교착상태(Deadlock)

여러 프로세스가 서로 자원을 점유한 상태에서 상대방의 자원을 기다리며, 모든 프로세스가 멈춰버리는 상태를 말한다.

기아상태(Starvation)

특정 프로세스가 우선순위가 낮거나 자원 할당이 계속 지연되어 실행되지 못하는 상태를 의미한다.


메모리 관리

가상 메모리(Virtual Memory)의 정의와 작동

가상 메모리는 프로세스가 물리 메모리 크기를 초과하는 메모리를 사용하는 것처럼 동작하게 만드는 메모리 관리 기술이다. 이는 실제 메모리보다 적은 공간으로 다수의 프로세스를 동시에 실행할 수 있도록 설계되었다.

  • 가상 메모리는 저장매체(SSD/HDD)를 스왑 공간(Swap Space)으로 활용하여 부족한 물리 메모리를 보완한다.
  • 실제로 실행 중인 데이터만 물리 메모리에 적재하며, 나머지는 저장매체에 보관된다.

MMU(Memory Management Unit)의 역할

MMU(Memory Management Unit)는 하드웨어 장치로, CPU가 가상 주소를 사용할 때 이를 물리 주소로 변환하는 역할을 한다. 가상 메모리 시스템에서 핵심적인 역할을 하며, 프로세스의 메모리 접근을 관리한다.

  • MMU는 페이지 테이블(Page Table)을 참조하여 변환 작업을 수행한다.
  • 변환 속도를 높이기 위해 TLB(Translation Lookaside Buffer)를 사용해 주소 변환을 캐싱한다.

페이징 시스템

페이징 시스템(Paging System)의 구조와 특징

페이징 시스템은 가상 주소 공간을 동일한 크기의 페이지 단위로 나누고, 이를 물리 메모리의 프레임에 매핑하는 메모리 관리 방식이다.

  • 하드웨어 지원: MMU와 페이지 테이블이 필요하다.
  • 가상 주소 구조: 페이지 번호(p)와 변위(d)로 구성되어 특정 메모리 주소를 참조한다.
  • 고정 크기: 모든 페이지와 프레임은 동일한 크기를 가지며, 가변적인 크기는 사용하지 않는다.

페이징 시스템의 주소 변환 과정

페이징 시스템은 가상 주소를 물리 주소로 변환하는 과정을 통해 메모리를 관리한다. 주요 단계는 다음과 같다:
1. 가상 주소 접근 시도: 프로세스가 특정 가상 주소에 접근을 요청한다.
2. 페이지 번호 확인: 요청한 가상 주소에서 페이지 번호(p)와 변위(d)를 추출한다.
3. 페이지 테이블 참조: 해당 페이지가 물리 메모리에 존재하면, 페이지 테이블을 통해 페이지의 시작 주소(프레임 번호)를 확인한다.
4. 물리 주소 계산: 물리 주소는 페이지 시작 주소(프레임 번호)와 변위(d)를 더해 계산한다.

페이지 테이블과 CR3 레지스터

프로세스가 구동될 때, 페이지 테이블의 기준 주소(base address)는 CPU의 CR3(Control Register 3) 레지스터에 저장된다.

  • CR3: 페이지 테이블의 시작 주소를 저장하며, 가상 주소를 물리 주소로 변환할 때 MMU가 참조한다.
  • 이 과정은 페이징 시스템을 사용하는 메모리 관리의 핵심이다.

페이지 폴트(Page Fault)의 정의와 원인

페이지 폴트는 프로세스가 접근하려는 가상 메모리의 페이지가 물리 메모리에 없는 경우 발생하는 인터럽트이다. 이는 운영체제가 해당 페이지를 디스크에서 물리 메모리로 로드하도록 처리하는 중요한 과정이다.

  • 페이지 폴트는 요구 페이징(Demand Paging) 환경에서 발생한다.
  • 페이지 폴트를 줄이기 위해 예측적 페이징을 사용해 필요한 페이지를 미리 적재할 수 있다.

페이지 교체 정책과 종류

페이지 교체 정책은 페이지 폴트가 발생했을 때, 메모리에 적재된 페이지 중 어떤 것을 교체할지 결정하는 알고리즘이다. 주요 정책은 다음과 같다:
1. OPT(Optimal Replacement): 가장 오랜 시간 동안 사용되지 않을 페이지를 교체한다.
2. LRU(Least Recently Used): 가장 최근에 사용되지 않은 페이지를 교체한다.
3. NUR(Not Used Recently): 최근 사용 여부에 따라 교체 대상을 결정한다.

LFU(Least Frequently Used) 알고리즘의 특징

LFU(Least Frequently Used)가장 적게 사용된 페이지를 교체하는 페이지 교체 정책이다.

  • 페이지가 참조된 횟수를 기준으로 교체 대상을 결정한다.
  • 자주 참조된 페이지는 유지되고, 적게 참조된 페이지는 교체된다.
  • 장점: 자주 사용되는 페이지를 보존하여 효율성을 높인다.
  • 단점: 참조 횟수를 오래 유지하면 오래된 데이터에 대한 왜곡이 발생할 수 있다.

다중 단계 페이징 시스템(Multi-Level Paging)의 개념

다중 단계 페이징 시스템페이징 테이블을 여러 단계로 나누어 메모리를 효율적으로 관리하는 방식이다. 주요 특징은 다음과 같다:

  • 메모리 공간 절약: 전체 페이지 테이블을 한 번에 로드하지 않고, 필요한 부분만 로드하여 메모리를 절약한다.
  • 트리 구조: 페이지 테이블이 계층적 구조(예: 2단계, 3단계 등)로 구성되며, 최상위 테이블에서 하위 테이블을 참조하는 방식으로 동작한다.
  • 페이지 폴트 감소: 필요한 테이블만 참조하기 때문에 불필요한 페이지 폴트를 줄이는 데 기여한다.

성능 문제와 최적화

스레싱(Thrashing)의 정의와 원인

스레싱(Thrashing)반복적인 페이지 폴트로 인해 과도한 페이지 교체 작업이 발생하여, 프로세스가 실제 작업을 거의 수행하지 못하는 상태를 말한다.

  • 원인: 물리 메모리에 비해 과도한 프로세스를 실행하거나, 각 프로레스의 작업 집합 크기가 물리 메모리보다 클 경우 발생한다.
  • 결과: CPU가 지속적으로 페이지 교체 작업에만 사용되어 시스템 성능이 심각하게 저하된다.
  • 해결 방안: 작업 집합 크기 조정, 멀티프로그래밍 정도 조절 등.

파일 시스템

inode 기반 파일 시스템의 구조

inode 방식 파일 시스템은 파일의 메타데이터와 실제 데이터를 효율적으로 관리하기 위한 구조로, 다음과 같은 특징을 가진다:

  • 구조: 수퍼 블록, 아이노드 블록, 데이터 블록으로 구성된다.
    • 수퍼 블록: 파일 시스템의 정보를 저장(크기, 상태 등).
    • 아이노드 블록: 파일의 메타데이터(소유자, 권한, 파일 크기, 데이터 블록 위치 등)를 저장.
    • 데이터 블록: 실제 파일 데이터를 저장.
  • FAT나 NTFS와 같은 파일 시스템과는 별개로 동작하며, 운영체제 버전이나 파일 갯수 정보는 포함되지 않는다.

가상 파일 시스템(Virtual File System, VFS)의 개념

가상 파일 시스템(VFS)은 운영체제가 다양한 파일 시스템을 통합된 인터페이스로 관리할 수 있도록 설계된 시스템이다. 주요 특징은 다음과 같다:

  • 네트워크 파일 시스템, 디스크 파일 시스템, 장치 파일 시스템 등 다양한 파일 시스템을 추상화된 계층으로 지원한다.
  • 파일 시스템 간의 차이를 감추고, 동일한 인터페이스(API)로 파일 작업을 수행할 수 있도록 한다.
  • 개발자는 파일 시스템의 내부 구조에 관계없이 일관된 방식으로 작업할 수 있다.
profile
Turning Vision into Reality.

0개의 댓글