IT 공부/운영체제

5-1. 프로세스의 문제점

unnimm 2023. 4. 15. 15:48

1-1. 멀티 태스킹(multitasking)

태스크(Task) : 컴퓨터에서 처리하고자 하는 일의 단위

멀티 태스킹 : 컴퓨터 시스템 내에 여러 태스크를 동시에 실행시키거나, 한 응용프로그램 내에서 여러 태스크를 동시에 실행시키는 기법

  • 전통적으로 태스크는 프로세스 단위(~1980년대 초반)
  • 응용프로그램 개발자는 fork()와 같은 시스템호출을 통해 프로세스를 만들고, 프로세스 스케줄링을 통해 일정한 타임 슬라이스(time slice)마다 태스크들을 번갈아 실행시킴으로써 CPU 활용률을 높임
  • 1959년 제안된 시분할(time-sharing) 시스템(multi-user를 위한 시스템)과 유사한 개념

1-2. 프로세스의 문제점

1) 프로세스 생성의 큰 오버헤드

  • 프로세스 생성
    • 프로세스를 위한 메모리 할당
    • 부모 프로세스를 그대로 복사
    • PCB생성, 매핑 테이블(페이지 테이블) 생성 등

2) 프로세스 컨텍스트 스위칭의 큰 오버헤드

  • 컨텍스트 스위칭
    • CPU 레지스터들을 프로세스 컨텍스트에 저장, 새 프로세스 컨텍스트를 CPU로 옮기는 시간
    • CPU가 참고할 매핑 테이블(페이지 테이블) 전환에 따른 지연 시간 등
    • CPU 캐시에 새로운 프로세스의 코드와 데이터가 채워지는데 걸리는 시간 등

3) 프로세스 사이 통신의 어려움

  • 프로세스들은 독립적인 주소 공간을 가지고 있음
    • 프로세스가 다른 프로세스의 메모리에 접근 불가
  • 프로세스 사이의 통신을 위한 제 3의 방법 필요
    • 커널 메모리나 커널에 의해 마련된 메모리 공간을 이용하여 데이터 송수신(소켓, 신호, 메시지 큐, 세마포, 공유메모리, 메모리맵 파일 등)
    • 이 방법들은 코딩하기 어렵고, 느린 실행 속도, 운영체제 호환성 부족

1-3. 프로세스 스케줄링과 컨텍스트 스위칭

프로세스 스케줄링과 스레드 스케줄링

  • 프로세스 스케줄링
    • 과거 운영체제에서 실행 단위는 프로세스였음
    • Ready 상태의 프로세스 중에 실행 시킬 프로세스 선택
  • 오늘날 운영체제는 스레드를 대상으로 스케줄링
    • 오늘날 프로세스 스케줄링은 없음
    • 오늘날 운영체제에서 실행 단위는 스레드
    • Ready상태의 스레드 중 실행시킬 스레드 선택

프로세스란?

  • 프로세스는 스레드들에게 공유 자원을 제공하는 컨테이너로 역할이 바뀌었음.