프로세스와 스레드

jiwon·2023년 4월 2일

프로세스의 상태표

프로세스 상태

생성(Created)

  • 프로세스 최초 상태로, 주기억장치 적재되지 않고 보조 기억 장치에 저장되어 있는 실행 파일 상태

준비(Ready)

  • 프로세스가 CPU를 사용하여 실행 준비 된 상태
  • 프로세스 상태 리스트 중 준비 리스트에 들어감
  • 프로세스가 우선순위에 의해 정렬됨

실행(Running)

  • 프로세스가 CPU를 차지하여 실행 중인 상태
  • 명령어들이 실행되고 있는 상태

대기(Waiting)

  • 기다림(waiting) 또는 블록(block)상태
  • I/O 동작의 완료 등 사건 발생을 기다리는 상태
  • 프로세스 상태 리스트 중 블록 리스트에 들어감

종료(Exit)

  • 프로세스 실행이 완료되어 자원을 반납한 상태

프로세스 상태 전이

Dispatch (준비 -> 실행)

  • 프로세스 생성 상태에서 프로세서만 할당 받으면 실행 상태로 전이 과정
  • 준비 프로세스 중 하나가 CPU 할당 받아 실행 상태로 전이
  • 스케줄링 알고리즘에 의해 수행

Timeout (실행 -> 준비)

  • 일정 시간이 지나면 스케줄러에 의해 PCB에 저장, 프로세서 반납 후 준비 상태로 전이

Block (실행 -> 슬립)

  • I/O 등의 자원 요청 후 즉시 할당 받을 수 없어, 할당 받을 때까지 기다리고 있는 상태로 전이
  • I/O 처리는 CPU가 아닌 I/O 프로세스가 담당하기 때문에 발생

Wake up (조건만족, 슬립 -> 준비)

  • 필요한 자원이 할당되면 프로세스는 준비 상태로 전이
  • 장치 관리자로부터 신호 또는 페이지 인터럽트 처리 의해 발생
  • 준비 리스트의 맨 뒤에 붙음

프로세스 제어 블록 (PCB)

프로세스 제어 블록의 구성(1)

포인터

  • 준비 상태나 대기 상태의 큐를 구현할 때 사용
  • 대기 상태에는 같은 입출력을 요구한 프로세스끼리 연결할 때 포인터 사용

프로세스 상태

  • 프로세스가 현재 어떤 상태에 있는지를 나타내는 정보 (생성, 준비, 실행, 대기..)

프로세스 구분자

  • 운영체제 내에 있는 여러 프로세스를 구현하기 위한 구분자 -> pid

프로그램 카운터

  • 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값

프로세스 우선순위

  • 프로세스의 실행 순서를 결정하는 우선순위

각종 레지스터 정보

  • 프로세스가 실행되는 중에 사용하던 레지스터의 값

프로세스 제어 블록의 구성(2)

메모리 관리 정보

  • 프로세스가 메모리의 어디에 있는지 나타내는 메모리 위치 정보, 메모리 보호를 위해 사용하는 경계 레지스터 값과 한계 레지스터 값 등

할당된 자원 정보

  • 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보

계정 정보

  • 계정 번호, CPU 할당 시간, CPU 사용 시간 등

부모 프로세스 구분자와 자식 프로세스 구분자

  • 부모 프로세스를 가리키는 PPID와 자식 프로세스를 가리키는 CPID 정보

문맥교환

  • CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업
  • 실행 상태에서 나가는 프로세스 제어 블록에는 지금까지의 작업 내용을 저장하고, 반대로 실행 상태로 들어오는 프로세스 제어 블록의 내용으로 CPU가 다시 세팅

문맥교환 절차

  • 인터럽트/시스템 호출 : 운영체제에서 프로세스 스케쥴러에 의해 인터럽트 발생
  • 커널 모드 전환 : 프로세스가 실행되는 사용자모드에서 커널 모드로 전환
  • 현재 프로세스 상태 PCB 저장 : 기존 실행되는 프로세스 정보를 PCB에 저장
  • 다음 실행 프로세스 로드 : PCB에 있는 다음 실행 프로세스 상태 정보 복구
  • 사용자 모드 전환 : 커널 모드에서 사용자 모드로 전환하여 프로세스 실행

스레드의 정의

  • CPU 스케줄러가 CPU에 전달하는 일 하나
  • CPU가 처리하는 작업의 단위는 프로세스로부터 전달받은 스레드
  • 운영체제 입장에서의 작업 단위는 프로세스
  • CPU 입장에서의 작업 단위는 스레드
    스레드 : 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위

프로세스와 스레드의 차이

  • 프로세스끼리는 약하게 연결되어 있는 반면, 스레드끼리는 강하게 연결되어 있음

멀티태스크와 멀티스레드의 차이

  • 멀티태스크 : 여러 개의 프로세스로 구성된 것
  • 멀티스레드 : 하나의 프로세스에 여러 개의 스레드로 구성된 것, 작업의 부담을 줄이는 프로세스 운영 기법

이외

  • 멀티태스킹 : 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법
  • 멀티프로세싱 : CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경

CPU 멀티스레드

  • 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
profile
BSSM

0개의 댓글