2 분 소요

1. 프로세스의 개념

💡 프로세스의 정의와 구성 요소는 OS 관련 기술 면접에서 매우 자주 등장하는 핵심 질문입니다.

1.1 프로세스란?

  • 정의: 실행 중인 프로그램의 인스턴스
  • 구성 요소:
    1. 이미지(Images)
      • 코드(Code): 기계어 명령어
      • 데이터(Data): 변수들
      • 스택(Stack): 함수 호출 상태
      • 힙(Heap): 동적 메모리
    2. 프로세스 문맥(Process Context)

1.2 프로세스 문맥(Context)

  1. 프로그램 문맥
    • 데이터 레지스터
    • 프로그램 카운터
    • 스택 포인터
  2. 커널 문맥
    • pid, gid, sid
    • 환경 변수
    • VM 구조(페이징 테이블)
    • 열린 파일들
    • 시그널 핸들러

2. 프로세스 메모리 구조

2.1 메모리 세그먼트

💡 프로세스의 메모리 구조는 메모리 관리와 관련된 면접 질문에서 필수적인 내용입니다.

  1. Code Segment
    • 실행 코드가 저장
    • 일반적으로 읽기 전용
  2. Data Segment
    • Initialized data segment
    • Uninitialized data segment (BSS)
      • 커널이 프로그램 시작 전 0으로 초기화
  3. Stack
    • 자동 변수
    • 임시 변수
    • 리턴 주소
    • 호출자의 환경(registers)
  4. Heap
    • 동적으로 할당된 메모리

Cseg

2.2 메모리 레이아웃 예제

long array[100];
long bufsize = 100;

int main(void) {
    int i;
    char* buf;
    i = 10;
    buf = f1(i);
    return(0);
}

char* f1(int n) {
    printf("%d\n", i);
    return malloc(bufsize);
}

3. 프로세스 제어 구조

3.1 프로세스 제어 블록 (PCB)

💡 PCB는 프로세스 관리의 핵심 자료구조로, OS 면접에서 자주 다루어지는 주제입니다.

  • 정의: 프로세스와 관련된 정보를 저장하는 커널의 핵심 자료구조
  • 특징: 모든 프로세스마다 하나씩 존재
  • 구성 요소:
    1. 이미지 정보
    2. 프로세스 문맥
      • 프로그램 문맥
      • 커널 문맥

4. OS의 데이터 구조

4.1 시스템 테이블

  1. 메모리 데이터 구조
    • 프로세스별 메모리 할당 정보
    • 가상 메모리 관리 정보
    • 공유 메모리 영역의 보호 속성
  2. 파일 데이터 구조
    • 파일 존재 여부
    • 보조 기억장치상의 위치
    • 현재 상태
    • 속성 정보
  3. I/O 데이터 구조
    • I/O 장치 가용성
    • I/O 작업 상태
    • 메모리 전송 위치
  4. 프로세스 데이터 구조 (PCB)
    • 프로세스 위치
    • 프로세스 관리 속성
      • 프로세스 ID
      • 프로세스 상태
      • 메모리 위치 등

5. 프로세스 상태

5.1 5단계 프로세스 상태 모델

💡 프로세스 상태와 상태 전이는 OS 동작 이해의 기본이 되는 매우 중요한 개념입니다.

  1. 생성 (new)
    • 프로세스가 생성되는 중
  2. 준비 (ready)
    • 프로세서 할당을 기다리는 상태
  3. 실행 (running)
    • 명령어들이 실행되는 상태
  4. 대기 (blocked/waiting)

    • I/O 완료 등의 이벤트를 기다리는 상태
  5. 종료 (exit/terminated)

    • 실행이 완료된 상태

    Pstate

6. 프로세스 스케줄링

💡 참고: 자세한 내용은 Lecture 5에서 다룰 예정입니다.

6.1 스케줄링 종류

  1. 장기 스케줄링 (Job Scheduling)
    • 시스템에 진입할 프로세스 선택
    • 다중 프로그래밍 정도 조절
    • 호출 빈도 낮음 (초, 분 단위)
  2. 단기 스케줄링 (CPU Scheduling)
    • 실행할 프로세스 선택
    • CPU 할당
    • 매우 빈번히 호출 (밀리초 단위)
  3. 중기 스케줄링 (Medium Term Scheduling)

Psche

7. 프로세스 전환

7.1 프로세스 전환의 개념

💡 프로세스 전환의 개념과 모드 전환과의 차이점은 면접에서 자주 다루어지는 주제입니다.

  • 정의: 실행 중인 프로세스가 interrupted 되고 운영체제가 다른 프로세스를 실행 상태로 전환하는 과정
  • 이중 모드 동작:
    • 현대 운영체제는 하드웨어 보호를 위해 이중 실행 모드 사용
    • 사용자 모드: 제한된 권한으로 일반 프로그램 실행
    • 커널 모드: 모든 하드웨어 자원과 명령어에 대한 완전한 접근 권한

7.2 모드 전환과 프로세스 전환

  1. 모드 전환 발생 조건
    • External Interrupt
      • 타이머 인터럽트 (시간 할당량 만료)
      • I/O 인터럽트 (이벤트 발생)
    • Internal Trap(exception)
      • 페이지 폴트
      • 잘못된 연산 등
    • System Call
      • I/O 작업
      • fork 등 프로세스 생성
  2. 모드 전환 처리
    • 현재 프로세서 상태 저장 (레지스터, 플래그 등)
    • 적절한 처리 루틴의 주소로 프로그램 카운터 설정
    • 커널 모드로 전환하여 특권 명령어 실행 가능
  3. 프로세스 전환 과정
    • 프로그램 문맥 저장
    • 현재 프로세스 상태 변경 (실행→준비/대기/종료)
    • PCB를 적절한 큐로 이동
    • 스케줄러를 통한 새로운 프로세스 선택
    • 선택된 프로세스의 상태를 실행으로 변경
    • 메모리 관리 구조 갱신
    • 새 프로세스의 프로그램 문맥 복원

7.3 전환 특성

  1. 모드 전환만 발생하는 경우
    • 인터럽트/예외/시스템 콜 처리 후 동일 프로세스 재개
    • 상대적으로 적은 오버헤드
  2. 프로세스 전환이 동반되는 경우
    • 현재 프로세스가 다른 상태로 이동할 때 발생
    • 상당한 추가 작업 필요
    • 시스템 성능에 큰 영향

7.4 전환 오버헤드

  • 전환 중에는 유용한 작업 수행 불가
  • 운영체제가 복잡할수록 전환 작업량 증가
  • 효율적인 전환을 위한 하드웨어 지원
    • 예: Sun UltraSPARC의 다중 레지스터 세트

참고 자료

  • A. Silberschatz의 운영체제 개론
  • Operating System Concepts (10th Edition)

댓글남기기