[OS] Process vs Thread

유존돌돌이·2022년 3월 3일
0

공부

목록 보기
19/22

1. 프로그램 : 어떤 작업을 위해 사용되는 파일

2. 프로세스 : 실행되고 있는 프로그램

1) Code, Data, Stack, Heap 단독 할당
2) Process Control Block(이하 “PCB”)이라고 하는 자료구조 안에 있는데 커널 스케쥴러가 프로세스를 제어
3) Multi-process

  • 여러 프로세스를 사용할 경우 Multi-Process 방식을 사용하며, 이는 "동시인 것 처럼" 처리한다.
  • CPU 점유를 Context-Switching 하여 처리한다.
  • 재점유 할때 해당 프로세스의 상태는 PCB에 있으며 이전상태를 갖고 있기 때문에 이 상태를 불러와서 계속해서 실행한다.

3. 쓰레드 : 프로세스 내에서 실행되고 있는 흐름

1) Code, Data, Heap 공유 / Stack 단독 할당
2) Multi-Thread

  • 다중 쓰레드일 경우 동시(병렬)처리 가능
  • 공유하고 있는 Heap, Data, Code를 사용한다.

메모리의 구조 (Code/Data/Heap/Stack)

Code(text): 프로그램의 실제 코드를 저장
Data: 프로세스가 실행될 때 정의된 전역 변수, Static 변수들을 저장
Heap: 프로세스 런타임 중 동적으로 할당되는 변수들을 저장(함수 내에서 할당되는 변수 등)
Stack: 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역0

PCB (Process Control Block)의 구성

1) 프로세스 식별자(Process ID)
2) 프로세스 상태(Process State) : 생성(create), 준비(ready), 실행 (running), 대기(waiting), 완료(terminated) 상태
3) 프로그램 계수기(Program Counter) : 프로그램 계수기는 이 프로세스가 다음에 실행할 명령어의 주소
4) CPU 레지스터 및 일반 레지스터
5) CPU 스케줄링 정보 : 우선 순위, 최종 실행시각, CPU 점유시간 등
6) 메모리 관리 정보 : 해당 프로세스의 주소 공간 등
7) 프로세스 계정 정보 : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등
8) 입출력 상태 정보 : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등
9) 포인터 : 부모프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보 등.

0개의 댓글