[cs] 프로세스와 스레드

·2022년 1월 24일
0

개발 기록

목록 보기
17/68

프로세스와 스레드

☑️ 프로세스

프로세스의 작업 방식

  • 일괄 작업 방식
    한 번에 하나의 작업만 처리하는 것

  • 시분할 작업 방식
    CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분함으로써 동시에 실행하는 것처럼 느껴지게 동작하는 것

프로그램에서 프로세스로의 전환

  1. 운영체제가 프로그램을 메모리의 적당한 위치로 가져온다.
  2. 그와 동시에 작업 지시서를 만든다. 이를 프로세스 제어 블록이라 한다.
  3. 프로세스가 종료되면 프로세스가 메모리에서 삭제된다.
  4. 프로세스 제어 블록도 폐기된다.

프로세스 제어 블록

프로세스 제어 블록은 작업 지시서처럼 프로세스를 처리하는데 필요한 다양한 정보가 들어있다.

  • 프로세스 구분자
    메모리에 올라간 여러개의 프로세스를 구분하는 ID

  • 메모리 관련 정보
    CPU가 실행하려는 프로세스의 메모리 상의 위치 정보, 경계 레지스터(?), 한계 레지스터(?)

  • 각종 중간값
    여러 프로세스가 번갈아 실행되는 시분할 시스템 특성상 프로세스들의 작업이 중단된 중간값을 저장하고 있어야 한다.

프로세스의 상태

  • 생성상태(create status)
    프로세스가 메모리에 올라와 실행 준비를 완료한 생태, 프로세스 제어 블록이 생성된다.

  • 준비상태(ready status)
    생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태

  • 실행상태(running status / execute status)
    준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태

    • 실행상태에 들어간 프로세스는 일정시간 동안 CPU를 사용할 권리를 얻는다.
    • 시간내 작업을 끝내지 못했다면 준비상태로 돌아와 다음 차례를 기다린다
    • 반복한다
  • 완료상태(terminate status)
    실행 상태에서 주어진 작업을 마치면 완료상태로 진입한다. 프로세스 제어 블록이 사라진 상태다.

  • 대기상태(blocking status / wait status)
    입출력을 요구한 프로세스가 입출력이 완료될 때까지 기다리는 상태

    • 대기상태의 프로세스는 입출력이 끝나면 준비상태로 돌아가 차례를 기다린다.
  • 휴식상태 / 보류상태

디스패치와 타임아웃(인터럽트)

  • 디스패치
    준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업
  • 타임아웃(인터럽트)
    CPU 점유 시간이 지났다고 클럭이 CPU에 알려주는 것

☑️ 스레드

CPU가 처리하는 작업의 단위

멀티태스크 vs 멀티스레드

  • 멀티태스크
    서로 독립적으로 작동하다가 프로세스간 통신을 이용해 데이터를 주고받는다. 한쪽이 종료되어도 영향을 받지 않는다.
  • 멀티스레드
    스레드들은 강하게 연결되어 있다. 프로세스가 종료되면 프로세스 내의 스레드들도 강제로 종료된다. 멀티스레드는 변수나 파일 등을 공유하고 전역 변수나 함수 호출 등의 방법으로 스레드간 통신을 한다.

멀티스레드 장점

  • 응답성 향상
    한 스레드가 입출력으로 작업이 진행되지 않고있어도 다른 스레드가 작업을 계속하여 사용자의 작업 요구에 빨리 응답할 수 있다.

  • 자원 공유
    한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스가 가진 자원을 모든 스레드가 공유하게 되어 작업을 원활하게 진행할 수 있다.

  • 효율성 향상
    여러 개의 프로세스를 생성하는 것과 달리 멀티스레드는 불필요한 자원의 중복을 막음으로써 시스템의 효율이 향상된다.

  • 다중 CPU 지원
    2개 이상의 CPU를 가진 컴퓨터에서 멀티스레드를 사용하면 다중 CPU가 멀티스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스의 처리 시간이 단축된다.

멀티스레드 단점

  • 멀티스레드는 모든 스레드가 자원을 공유하기 때문에 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다.

출처

쉽게 배우는 운영체제 [한빛아카데미]

0개의 댓글