본문 바로가기
CS/Operating System

Process & Thread

by JHyun0302 2023. 8. 30.
728x90

Program : 파일 형태로 존재하는 실행 파일

 

 

Process : CPU & Memory 사용해 실행 중인 프로그램 (= job = task)

 

 

 

 

※ Process 상태

 

1. new (생성) : 프로세스 생성

  • PCB (Process Control Block) 생성 : 프로세스를 제어하는데 필요한 정보 
  • ex. 상태 전이, context switching 시 사용

 

PCB 구조

 

 

2. ready (준비) : 준비 큐(queue)에서 CPU 할당 받기를 기다리는 준비 상태

 

 

3. running (실행) : CPU를 사용하여 실행 중인 상태

  • 문맥 교환 이뤄짐 (Context Switching) : CPU에서 실행 중인 A 프로세스를 B 프로세스로 전환하는 과정

 

 

 

Context Switching : PCB를 통해 CPU의 register 다시 설정

 

 

 

 

 

4. terminated (완료) : 실행이 완료된 상태

  • PCB 삭제

5. waiting (대기) : I/O controller를 사용하여 I/O가 완료될 때까지 대기하는 상태

 

 

 

 

프로세스 상태 & 전이

 

 

※ Process  전이

 

1. admitted (승인) : new → ready

 

 

2. scheduler dispatch (스케줄러 디스패치) : ready→ running

 

 

3. interrupt (인터럽트) : running→ ready

 

 

4. I/O wait (입출력 대기) : running→ waiting

 

 

5. I/O completion (입출력 완료) : running → terminated

 

 

 

 


Process의 메모리 구조

 

 

※ 메모리의 OS 영역 : PCB

 

 

 

 메모리의 사용자 영역

  1. 코드 영역 : 디스크에서 빌드된 프로그램 
  2. 데이터 영역 : 전역 변수 or 정적 변수 저장
  3. Stack 영역 : 지역 변수 저장
  4. Heap 영역 : malloc() & free() 메서드를 사용한 동적 메모리 할당 및 해제

 

 

 

 

※ fork() : 프로세스 복사하는 함수

  • 원본 : 부모, 복사한 프로세스 : 자식
  • PID, PPID, CPID, 메모리 관련 정보 다름

 

 

 

※ exec() : 프로세스에서 프로그램 실행하는 함수

  • 코드, 데이터, 힙, 스택 영역 변경

 

 

 

 

◎ 참고

좀비 프로세스 : 자식 프로세스가 종료되었지만 자원이 남아있는 프로세스

  1. 자식보다 부모 프로세스가 먼저 종료된 경우 (= Orphan Process)
  2. 자식 프로세스가 비정상 종료된 경우

 

 

 

 

 

 


Thread

 

프로세스에서 실질적인 작업 실행

 

 

 

 

 

 

 

TCB

 

PCB 안에 TCB 포함되어 있음

 

 

 

 

 

- multiprocess

     1. 각 프로세스는 독립적으로 실행, 각각 별개의 메로리 차지

     2. Distributed-memory 방식 (분산 메모리 방식)

     3. 구현 방법 : MPI 병렬 프로그래밍

 

 

 

 - multithread

    1. 각 스레드는 독립적으로 실행되지만 한 프로세스 내 메모리 공유

    2. Shared-memory 방식 (공유 메모리 방식)

    3. 구현 방법 : CreateThread, 리눅스의 pthread, OpenMp 병렬 프로그래밍

 

 

 

 

 

 

 

 

 

반응형

'CS > Operating System' 카테고리의 다른 글

메모리 주소 & 메모리 할당  (0) 2023.08.31
프로세스 간 통신 & 임계 영역  (0) 2023.08.31
Process Priority  (0) 2023.08.31
컴퓨터의 구조  (0) 2023.08.30
Operating System 이란?  (0) 2023.08.30