[F-lab 모각코 챌린지 42일차] TIL

JeongheeKim·2023년 7월 12일

TIL

목록 보기
42/66

학습계획


  • Process와 Thread의 차이

Today I Learned


Process와 Thread의 차이

Process정의 & 종류

프로그램은 데이터 보조 기억장치에 저장된 데이터 덩어리 지만, 프로그램이 실행 되면 프로세스가 생성된다.

  • foreground process
    • 사용자가 볼 수 있는 공간에서 실행되는 프로세스
  • background process
    • 사용자가 볼 수 없는 공간에서 실행되는 프로세스
      • 사용자와 직접 사용작용 프로세스
      • 사용자와 상호작용하지 않고 정해진 일만 수행하는 프로세스
        • 예) 데몬 스레드

운영체제가 프로세스를 관리하는 방법

프로세스들은 돌아가며 한정된 시간만 CPU를 사용한다. 한정된 시간은 타이머 인터럽트에 의해 알려준다. 알림을 받은 프로세스는 다음 프로세스에게 CPU차례를 양보한다.

💡 타이머 인터럽트
  • 하드웨어에서 인터럽트의 한 종류. 주기적으로 발생하는 클럭 신호

PCB(Process Control Block)

  • 운영체제가 여러 프로세스를 관리하기 위한 자료구조
  • 프로세스에 관한 정보가 들어있다.
  • 운영체제 마다 조금 차이는 있지만 공통적으로 프로세스 아이디(PID), 레지스터 값, 프로세스 상태, CPU스케쥴링 정보, 메모리 정보등을 담고있다.

❓레지스터 값은 왜 PCB에 담길까?

컨텍스트 스위칭이 일어나 다시 자기 차례의 프로세스에 돌아올 경우 이전에 작업한 중간값을 복원하기 위해

💡 레지스터란? CPU 내부 구성 요소 중 가장 중요한 세가지 중 하나(산술연산장치, 레지스터, 제어장치) 프로그램 속 명령어와 데이터가 실행 전후로 저장되는 CPU 내부의 작은 임시 저장 장치

프로세스 생성 시 PCB는 커널 영역에 생성 되며, 프로세스 종료 시 폐기된다.

Process - 문맥교환(context switch)

프로세스 간에 실행을 전환하는것

프로세스 문맥 교환은 독립적인 메모리 공간의 프로세스로 전환하므로 캐시메모리를 초기화 해야한다.

과정

프로세스의 문맥이 교환되는 현상을 context(현재 실행중이던 프로세스의 중간 정보들) switching이라고 한다.

  1. P1의 CPU 할당 시간이 끝난다.
  2. 현재 실행중이던 P1의 정보를 PC에 백업한다.
  3. P2의 정보(=문맥)을 PCB로 부터 복구한다.

Thread

  • 스레드는 프로세스를 구성하는 실행 흐름 단위이다.
  • 프로세스가 할당 받은 자원을 이용하는 실행의 단위
  • 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.
  • 스레드의 구성 요소
    • 스레드 ID, 프로그램 카운터를 비롯한 레스지스터 값(실행에 필요한 최소한의 정보를 가짐)
  • 스레드들 끼리는 프로세스가 보유한 자원을 공유한다. = 협력과 통신에 유리
    • 프로세스 끼리는 자원을 공유하지 않음 = 독립적인 job 수행
      • 프로세스 간에도 자원을 주고받을 수 있기도 함(IPC)

TCB(Thread Control Block)

  • Thread 별로 존재하는 자료구조이며, 스레드 아이디, 스레드 상태, CPU정보, PCB를 가리키는 포인터를 가진다.

Thread - 문맥교환(context switch)

  • 동일한 process 내에서 Thread 간에 실행을 전환것을 뜻한다.
  • 스레드 문맥 교환은 공유하는 메모리 공간의 스레드로 전환 하므로 캐시메모리를 초기화 하지 않아도 된다.
  • Process Context Switching과 같이 메모리 주소를 변경하지 않아 Thread Context Switching 비용이 적게 든다.

❓동일한 작업을 수행하는 단일 스레드 vs 단일 스레드 프로세스 여러개 실행

문자열 출력 프로그램을 세번 fork(복제)와 동일한 프로그램을 스레드를 세 개로 구성하였다. fork할 경우 모든 자원(코드영역, 데이터 영역, 힙 영역 등)이 복제되어 메모리에 적재된다. 이는 동일한 작업을 수햄함에 있어 메모리 사용 비효율을 야기한다. 멀티 스레드로 작업을 수행하면 자원 공유로 인해 메모리 사용이 효율적이다.

Process , Thread Context Switching의 공통점

  1. 커널모드에서 실행
  2. CPU의 레지스터 상태를 교체

[참고]

https://www.youtube.com/watch?v=zUGvpUtNlwI&ab_channel=한빛미디어

https://www.inflearn.com/questions/554010/context-switching과-cache-memory

0개의 댓글