OS

[혼자 공부하는 운영체제] 핵심개념

인생개발 이정환 2024. 9. 3. 21:58

운영체제의 기본 개념

1. 커널 모드와 사용자 모드

  • 커널 모드: 운영체제가 실행되는 모드로, 하드웨어와 메모리 접근을 포함하여 시스템의 모든 자원에 대한 접근 권한을 갖습니다. 이 모드에서는 시스템 전체의 관리 및 자원 할당을 담당하며, 높은 권한을 가지고 있습니다.
  • 사용자 모드: 응용 프로그램이 실행되는 모드로, 하드웨어나 메모리와 같은 시스템 자원에 직접 접근할 수 없습니다. 응용 프로그램은 커널 모드에서 제공하는 서비스를 통해 시스템 자원에 간접적으로 접근합니다. 이 모드는 보안과 안정성을 위해 권한이 제한됩니다.

2. 시스템 호출 (System Call)

사용자 모드에서 실행 중인 응용 프로그램이 커널 모드의 서비스에 접근하기 위해 사용하는 메커니즘입니다. 시스템 호출을 통해 응용 프로그램은 파일 시스템 접근, 프로세스 생성 및 종료, 메모리 할당 등의 기능을 요청할 수 있습니다.

3. 커널 영역과 사용자 영역

  • 커널 영역: 운영체제의 핵심 부분인 커널이 메모리에 적재되는 영역입니다. 운영체제의 모든 핵심 기능이 이 영역에서 실행됩니다.
  • 사용자 영역: 응용 프로그램이 실행되는 영역으로, 커널 영역과는 별도로 분리되어 있습니다. 사용자 모드에서 실행되는 모든 프로그램과 데이터가 이 영역에 적재됩니다.

4. 프로세스 제어 블록 (PCB)

프로세스 제어 블록은 운영체제가 각 프로세스를 관리하기 위해 사용하는 데이터 구조로, 다음과 같은 정보를 포함합니다:

  • 프로그램 카운터 (PC): 현재 실행 중인 명령어의 주소를 저장합니다.
  • 레지스터 상태: CPU 레지스터의 현재 상태를 저장하여, 프로세스가 중단되었다가 다시 실행될 때 상태를 복원합니다.
  • 프로세스 상태: 프로세스의 현재 상태 (예: 실행 중, 대기 중, 종료 등)를 나타냅니다.
  • 프로세스 ID (PID): 프로세스의 고유 식별자입니다.
  • 우선순위: 프로세스의 우선순위 정보입니다.
  • 메모리 관리 정보: 메모리 할당 정보와 주소 공간에 대한 정보입니다.

5. 문맥 교환 (Context Switching)

문맥 교환은 CPU가 현재 실행 중인 프로세스를 중단하고 다른 프로세스를 실행하기 위해 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 복원하는 과정입니다. 이 과정에서 PCB가 중요한 역할을 하며, 프로세스의 상태를 정확히 저장하고 복원하여 프로세스가 중단된 지점에서 다시 실행될 수 있도록 합니다.

6. 프로세스와 스레드

  • 프로세스: 실행 중인 프로그램으로, 메모리 공간, 코드, 데이터, 스택을 갖고 독립적으로 실행됩니다. 프로세스 간에는 메모리 공간이 분리되어 있습니다.
  • 스레드: 프로세스 내에서 실행되는 경량의 작업 단위입니다. 스레드는 프로세스의 자원을 공유하며, 각 스레드는 독립적으로 실행됩니다. 스레드는 프로세스의 메모리와 자원을 공유하기 때문에, 효율적으로 작업을 분산할 수 있습니다.
  • 멀티 프로세스: 여러 개의 프로세스를 동시에 실행하는 방식입니다.
  • 멀티 스레드: 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 방식입니다.

7. 동기화 (Synchronization)

동기화는 여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때 발생할 수 있는 문제를 방지하기 위해 필요한 기술입니다. 동기화의 주요 목적은 자원에 대한 상호배제와 실행 순서 제어입니다.

  • 상호배제 (Mutual Exclusion): 동시에 하나의 프로세스만이 공유 자원에 접근할 수 있도록 보장합니다.
  • 진행 (Progress): 자원을 기다리고 있는 프로세스 중에서 자원을 사용할 수 있는 프로세스가 반드시 선택되어야 합니다.
  • 유한 대기 (Bounded Waiting): 프로세스가 자원을 요청한 후, 자원을 받을 때까지 무한히 기다리지 않도록 보장합니다.

8. 임계 구역 (Critical Section)

임계 구역은 공유 자원에 접근하는 코드 영역입니다. 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있으므로, 상호배제 원칙에 따라 동기화 메커니즘을 통해 보호됩니다.

  • 레ース 컨디션 (Race Condition): 여러 프로세스가 동시에 공유 자원에 접근할 때 발생할 수 있는 문제로, 데이터의 일관성이 깨지는 상황입니다.

9. 동기화 도구

  • 뮤텍스 (Mutex): 상호배제를 제공하는 도구로, 한 번에 하나의 스레드만이 임계 구역에 접근할 수 있도록 보장합니다.
  • 세마포어 (Semaphore): 카운터를 사용하여 여러 스레드 간의 상호배제를 제어합니다. 특정 자원에 대한 접근 허용 수를 설정할 수 있습니다.
  • 모니터 (Monitor): 객체 지향 언어에서 제공하는 동기화 도구로, 조건 변수를 사용하여 실행 순서를 제어합니다. 모니터는 임계 구역을 보호하고 프로세스 간의 협력을 관리합니다.

10. 교착 상태 (Deadlock)

교착 상태는 두 개 이상의 프로세스가 서로 자원을 요청하며 무한히 대기하는 상태를 말합니다. 이 문제를 해결하기 위해 운영체제는 자원 할당 그래프를 사용하여 교착 상태를 탐지하고 회피하는 알고리즘을 적용합니다.

  • 자원 할당 그래프: 프로세스와 자원 간의 관계를 그래프로 나타내어, 교착 상태를 탐지하고 해결하는 데 사용됩니다.
  • 교착 상태 해결 전략:
    • 교착 상태 예방 (Prevention): 교착 상태가 발생하지 않도록 시스템 자원을 관리합니다.
    • 교착 상태 회피 (Avoidance): 교착 상태 발생 가능성을 모니터링하고, 이를 방지하는 방법을 사용합니다.
    • 교착 상태 탐지 (Detection): 교착 상태가 발생한 후 이를 탐지하고, 해결 방법을 적용합니다.