Process와 Thread

YJS·2023년 9월 21일
0

🤓오늘의 공부 주제: Process와 Thread🤓

Q. Process는 무엇인가?

A. 실행파일(program)이 memory에 적재되어 CPU를 할당받아 실행되는 것을 process라고 한다.

실행중인 프로그램을 프로세스라고 함. 실행파일 형태로 존재하던 프로그램이 메모리에 적재되어 cpu에 의해 연산 되는 것.

여기서 잠깐!💡 메모리란?

메모리는 cpu가 접근할 수 있는 컴퓨터 내부의 기억장치.
Code 영역: 실행한 프로그램의 코드가 저장되는 메모리 영역.
Data 영역: 프로그램의 전역 변수와 static 변수가 저장되는 메모리 영역.
Heap 영역: 프로그래머가 직접 공간을 할당/해제하는 메모리 영역.(런타임시 동적 할당)
Stack 영역: 함수 호출 시 생성되는 지역변수와 매개변수가 저장되는 임시 메모리 영역.

Q. Multi process는 무엇인가?

A.Multi process란 2개 이상의 process가 동시에 실행되는 것.

여기서 잠깐!💡

동시에 = 동시성 + 병렬성

동시성
:CPU core가 1개일 때, 여러 process를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 시분할 시스템(time sharing system)으로 실행되는 것.

병렬성
:CPU core가 여러개일 때, 각각의 core가 각각의 process를 연산함으로써 process가 동시에 실행되는 것.

시분할 시스템(time sharing system)이란?

cpu의 작업시간을 여러 프로세스가 나누어서 쓰는 시스템

멀티프로세스시 프로세스들은 cpu와 메모리를 공유하게됨. 메모리의 경우에는 각각의 프로세스 들이 각자의 메모리 영역을 차지하여 동시에 적재.
반면, 하나의 cpu는 매순간 하나의 연산만 가능. 처리 속도가 빨라서 ms 이내의 짧은 시간동안 여러 프로세스들이 번갈아 실행되기 때문에 사용자 입장에서는 동시 실행처럼 보임. 이처럼 cpu의 작업시간을 여러 프로세스가 나누어서 쓰는 시스템을 시분할 시스템이라고 함.

여러 프로세스가 동시에 메모리에 적재된 경우 서로 다른 프로세스의 영역을 침범하지 않도록 각 프로세스가 자신의 메모리 영역만 접근하도록 운영체제가 관리 = 메모리 관리

Context란?

process가 현재 어떤 상태로 수행되고 있는지에 대한 총체적인 정보가 바로 context. context 정보들은 PCB(Process Control Block)에 저장.

시분할 시스템에서는 한 process가 매우 짧은 시간동안 CPU를 점유하여 일정부분의 명령을 수행하고, 다른 process에게 넘긴다.그 후 차례가 되면 다시 CPU를 점유하여 명령을 수행. 따라서 이전에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있었는지에 대한 정보가 필요함.이러한 정보를 Context라 함.

PCB(Process Control Block)란?

PCB는 운영 체제가 프로세스를 표현한 자료구조. PCB에는 프로세스의 중요한 정보가 포함되어 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 저장됨.

일부 운영 체제에서 PCB는 커널 스택에 위치. 이 메모리 영역은 보호를 받으면서도 비교적 접근하기가 편리하기 때문.

PCB(Process Control Block)에 저장되는 것들은 무엇이 있나?

PCB는 운영체제가 process에 대해 필요한 정보를 모아놓은 자료구조

  • Process number
  • Process state
  • Program Counter (PC), 레지스터
  • CPU 스케쥴링 정보, 우선순위
  • 메모리 정보 (해당 process의 주소 공간 등)

Context switch란?

한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것.

이 때 이전의 프로세스의 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업

process의 state에는 어떤 것들이 있나?

프로세스는 실행(running), 준비(ready), 봉쇄(wait, sleep, blocked) 세 가지 상태로 구분

  • 실행: 프로세스가 cpu를 점유하고 명령을 수행중인 상태.
  • 준비: cpu만 할당 받으면 즉시 명령을 수행할 수 있도록 준비된 상태.
  • 봉쇄: cpu를 할당 받아도 명령을 실행할 수 없는 상태.
    e.g. i/o작업을 기다리는 경우 등

출처 : 인프런 - 기출로 대비하는 개발자 전공면접 [CS 완전정복]

profile
우당탕탕 개발 일기

0개의 댓글