프로세스 기초

2star_·4일 전
0

cs

목록 보기
2/2

프로세스 관리

1. 프로세스의 개념과 구성 요소

  • 프로세스 정의
    • 실행 중인 프로그램을 의미 각 프로세스는 독립된 메모리 공간과 실행 상태를 가짐
  • 프로세스 제어 블록(PCB)
    • 프로세스의 상태, 프로그램 카운터, 레지스터, 메모리 관리 정보, I/O 상태 등의 정보를 저장하는 자료구조
    • PCB는 운영체제가 프로세스를 관리하고 스케줄링할 때 핵심적인 역할을 함

2. 프로세스 생성과 종료

  • 프로세스 생성
    • fork: 기존 프로세스를 복제하여 새로운 프로세스를 생성하는 시스템 호출. 부모와 자식 프로세스는 독립적으로 실행. 자식은 부모의 메모리 상태를 복사함
    • exec: 생성된 프로세스가 다른 프로그램을 실행하도록 덮어쓰는 방식으로 사용. fork와 함께 자주 사용됨
  • 프로세스 종료
    • 프로세스가 실행을 마치거나 오류 발생 시 종료. 운영체제는 종료된 프로세스의 PCB를 해제하고, 관련 자원을 반환

3. 프로세스 상태와 전이

  • 주요 프로세스 상태
    • 생성(New): 프로세스가 생성되어 준비되는 상태
    • 준비(Ready): CPU 할당을 기다리는 상태. 여러 프로세스가 이 상태에서 대기
    • 실행(Running): CPU를 할당받아 명령어를 실행 중인 상태
    • 대기(Waiting): I/O 요청이나 특정 이벤트를 기다리는 상태
    • 종료(Terminated): 프로세스 실행이 완료되거나 강제 종료된 상태
  • 상태 전이 과정
    • 프로세스는 실행 중 I/O 요청이나 이벤트 대기로 인해 준비 상태에서 대기 상태로, 이벤트가 완료되면 다시 준비 상태로 돌아감 즉 상태 간의 전이가 이루어짐

4. CPU 스케줄링과 알고리즘

  • 스케줄링의 목적
    • CPU를 여러 프로세스 간에 효율적으로 분배하여 시스템 자원 활용도를 높이고, 응답 시간을 최소화함
  • 주요 스케줄링 알고리즘
    • FCFS(First-Come, First-Served):
      • 도착 순서대로 프로세스에 CPU 할당. 단순하지만 평균 대기 시간이 길어질 수 있음
    • SJF(Shortest Job First):
      • 실행 시간이 짧은 프로세스 우선. 평균 대기 시간이 짧아지지만, 예측이 어려울 경우 부적합
    • 라운드 로빈(Round Robin):
      • 각 프로세스에 고정된 시간(타임 슬라이스)을 할당하며 순환적으로 CPU를 분배. 공정성이 높지만, 타임 슬라이스의 크기에 따라 성능이 좌우됨
    • 우선순위 스케줄링:
      • 프로세스마다 우선순위를 부여하여 높은 우선순위를 가진 프로세스에 CPU를 우선 할당. 우선순위 역전 문제 등이 발생할 수 있음
    • 멀티 레벨 큐 스케줄링:
      • 프로세스들을 여러 큐로 분류한 후, 각 큐에 다른 스케줄링 알고리즘을 적용하여 관리. 서로 다른 특성을 가진 프로세스들을 효율적으로 처리

5. 문맥 교환(Context Switching)

  • 문맥 교환의 정의
    • CPU가 한 프로세스에서 다른 프로세스로 전환할 때 현재 프로세스의 상태(레지스터, 프로그램 카운터 등)를 저장하고 새로운 프로세스의 상태를 불러오는 과정
  • 문맥 교환의 오버헤드
    • 빈번한 문맥 교환은 CPU 시간을 소모. 스케줄링 알고리즘 설계 시 오버헤드를 최소화하는 것이 중요함

6. 인터프로세스 커뮤니케이션(IPC)

  • IPC의 필요성
    • 여러 프로세스가 서로 데이터를 교환하거나 협력 작업을 수행하기 위해 필요
  • IPC 기법들
    • 파이프(Pipe): 한 프로세스의 출력이 다른 프로세스의 입력으로 연결되는 방식
    • 메시지 큐: 프로세스 간에 메시지를 보내고 받을 수 있도록 지원하는 큐 구조
    • 공유 메모리: 여러 프로세스가 동일한 메모리 공간을 공유하며 빠른 통신을 가능하게 함
    • 소켓: 네트워크를 통한 프로세스 간 통신에 사용.

7. 동기화와 경쟁 조건 문제

  • 동기화 필요성
    • 여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때 데이터 무결성을 보장하기 위한 방법
  • 주요 동기화 기법
    • 뮤텍스(Mutex): 상호 배제를 통해 한 번에 한 프로세스만 공유 자원에 접근하도록 제한
    • 세마포어(Semaphore): 프로세스 동기화와 자원 관리를 위한 카운터 기반의 기법
    • 모니터(Monitor): 데이터와 그 데이터를 조작하는 절차를 하나로 묶어 동기화를 자동으로 처리
profile
안녕하세요.

0개의 댓글

관련 채용 정보