[OS] Process / Thread

kdh10806·2022년 5월 3일
0
post-thumbnail

1. Process

1) 정의

  1. 운영체제로 부터 자원을 할당받은 작업의 단위.
  2. 컴퓨터에서 연속적으로 실행되고 있는 프로그램.(동적인 상태)
  3. 메모리에 올라와서 실행되고 있는 프로그램의 인스턴스.

참고
프로그램 : 파일이 저장 장치에 저장되어 있으나 메모리에는 올라와있지 않은 정적인 상태 (실행하지 않는 상태)

그저 코드 덩어리인 프로그램을 실행하면 프로세스가 된다.

2) Process Memory


프로세스의 메모리는 일반적으로 여러 섹션으로 구분되며 다음이 포함된다.

  • text 섹션 : 실행 코드, 고정 크기
  • data 섹션 : 전역 변수, 고정 크기
  • heap 섹션 : 프로그램 실행 중에 동적으로 할당되는 메모리, 동적 크기
  • stack 섹션 : 함수를 호출할 때 임시 데이터 저장장소(함수 매개변수, 복귀 주소 및 지역 변수 ...), 동적 크기

함수 호출 시
함수가 호출될 때마다 함수 매개변수, 지역 변수 및 복귀 주소를 포함하는 활성화 레코드(activation record)가 stackPush된다. 함수에서 제어가 되돌아오면 stack에서 활성화 레코드가 Pop된다. 마찬가지로 메모리가 동적으로 할당됨에 따라 heap이 커지고 메모리가 시스템에 반환되면 축소됩니다.

3) Process State

프로세스는 실행되면서 그 상태가 변한다.

  • new(생성) : 프로젝트가 생성 중이다.
  • running(실행) : 명령어들이 실행되고 있다.
  • waiting(대기) : 프로세스가 어떤 이벤트(입출력 완료 및 신호의 수신 같은)가 일어나길 기다린다.
  • ready(준비) : 프로세스가 처리기에 할당되기를 기다린다.
  • terminated(종료) : 프로세스의 실행이 종료되었다.

4) PCB(Process Control Block)


각 프로세스는 운영체제에서 프로세스 제어 블록에 의해 표현된다.
PCB는 특정 프로세스와 연관된 여러 정보를 수록하며 다음을 포함한다.

  • process state : new, running, waiting, ready, terminated
  • process number : PID
  • program counter : 이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다.
  • registers : CPU 레지스터는 컴퓨터의 구조에 따라 다양한 수와 유형을 가진다. 레지스터에는 누산기(accumulator), 인덱스 레지스터, 스택 레지스터, 범용(general-purpose) 레지스터들과 상태 코드(condition code) 정보가 포함된다. 프로그램 카운터와 함께 이 상태 정보는, 나중에 프로세스가 다시 스케줄 될 때 계속 올바르게 실행되도록 하기 위해서 인터럽트 발생 시 저장되어야 한다.
  • cpu scheduling info : 이 정보는 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수를 포함한다.
  • memory limits : 이 정보는 운영체제에 의해 사용되는 메모리 시스템에 따라 기준(base) 레지스터와 한계(limit) 레지스터의 값, 운영체제가 사용하는 메모리 시스템에 따라 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함한다.
  • accounting info : 이 정보는 CPU 사용 시간과 경과된 실시간, 시간 제한, 계정 번호, 잡 또는 프로세스 번호 등을 포함한다.
  • I/O info : 이 정보는 이 프로세스에 할당된 입출력 장치들과 열린 파일의 목록 등을 포함한다.

요약하면 프로세스 제어 블록은 약간의 회계 데이터와 함께 프로세스를 시작시키거나 다시 시작시키는 데 필요한 모든 데이터를 위한 저장소의 역할을 한다.

스레드를 지원하는 시스템에서는 PCB는 각 스레드에 관한 정보를 포함하도록 확장된다.

2. Tread

1) 정의

  1. 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
  2. 하나의 프로세스의 자원을 공유하며 일련의 과정을 여러개 동시에 실행시킬 수 있도록 하는 것.

2) 장점

  • 쓰레드는 프로세스보다 생성 및 종료시간, 쓰레드간 전환시간이 짧다.
  • 쓰레드는 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호간에 통신이 가능하다.
profile
빽빽한 빽엔드

0개의 댓글