1. 멀티 프로세스

- 각각의 프로세스들은 독립적이므로, 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않는다.

- 하지만 멀티 스레드에 비해 더 많은 메모리공간과 컨텍스트 스위치로 인한 시간을 많이 차지한다.

- 여러개의 프로세스가 필요한 작업을 하나의 프로세스내의 여러개의 스레드로 나눠 수행하면 메모리 공간과 시스템 자 원소모, 실행시간을 줄일 수 있다.

 

 

2. 멀티스레드

- 멀티프로세스에 비해 적은 메모리공간 차지, 컨텍스트 스위치가 빠름

- 하나의 스레드에 문제가 발생하면, 다른 스레드들도 영향을 받을 수 있다.

- 스레드간의 통신은 별도의 자원을 이용하지 않고, 전역변수나 힙 영역을 이용해서 데이터를 주고 받을 수 있다

   ( 스택은 각각 가지지만, 힙 공간은 공유함)

- 이 점은 문제가 되기도 한다.... 멀티 프로세스는 프로세스간 공유하는 자원이 없으므로 동일한 자원에 동시에 접근하지 않지만, 멀티 스레드는 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 잘못 수정하거나, 예상치 못한 값으로 수정되는 경우가 발생할 수 있어서 동기화 작업이 필요하다.

- 작업 순서와 공유자원 처리에 대해 신경써야 한다. 이 과정에서 병목현상으로 인한 성능 저하가 나타날 수 있다. 

'학부생 공부 > 운영체제(os)' 카테고리의 다른 글

스케줄러(scheduler) 종류  (0) 2021.09.20
Context Switching ( 문맥 교환 )  (0) 2021.05.27
프로그램, 프로세스와 쓰레드  (0) 2021.05.19

 

1. Context Switching 이란?

- 멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있을 때, 

  운영체제의 스케줄링에 따라 인터럽트 요청이 발생해서 다음 프로세스가 실행되어야 할 때

  각 프로세스 들은 메모리를 공유하지 않기 때문에, 기존의 프로세스의 상태(레지스터 값)을 저장하고 

  다음 프로세스의 상태(레지스터 값)을 교체하는 작업을 Context Switching( 문맥 교환 ) 이라고 한다.

 

- OS에서 Context는 CPU가 프로세스를 실행하기 위한 그 프로세스의 정보들을 말한다.

  이 Context는 프로세스의 PCB(Process Control Block)에 저장된다.

  Context Switching이 발생하면 CPU는 해당 프로세스의 PCB 정보를 받아와서 이전의 작업을 이어 수행한다.

 

- ** PCB는 Process State, Process Counter ( 다음 실행할 명령어의 위치 (주소 값) ), registers 등으로 구성 

 

- Context Switching 이 발생할 경우 시간 소요가 많이 된다.

( 실행 중이던 프로세스의 PCB를 저장하고,  실행할 프로세스의 PCB를 불러오고, 캐쉬를 초기화 하고.......등) 

 

- 주체는 Operating System (운영 체제) 이다.

 

 

2. Interrupt 발생 시 Context Switching 

- 해당 프로세스에 할당된 CPU 사용시간이 만료되어 다른 프로세스를 처리해야 할 때 Interrupt 발생

 

- 입출력 요청 등의 사항으로 현재 프로세스 처리를 멈춰야 할 때 Interrupt 발생

 

- 등등......

0. 프로그램이란?

 - "실행할 수 있는 파일 ( 무언가 작업하기 위해 ) "

 - ex) 윈도우의 exe 파일 

 

1. 프로세스 란?

 - " 실행되고 있는 컴퓨터 프로그램 (독립적) "

 - 각 프로세스는 각각의 자원을 할당 받는다.

 - 프로세스 간의 통신 위해서는 파이프, 소켓등을 사용해 통신한다. (비용이 상대적으로 많이 든다.)

 - Register, Counter, Stack, Heap, Code 으로 구성된다

 - 시작, 종료, 컨텍스트 스위칭 시 비용(시간) 이 많이 소요된다.

 - 프로세스 간의 전환에는 운영체제 호출을 필요로한다.

 

1-1. 프로세스 제어 블록(PCB) 란?

- 운영체제의 자료구조

- 프로세스에 정보를 저장하고 있다.

- 운영체제는 프로세스 생성과 함께 PCB를 생성한다.

- 프로세스 스위치가 발생하면 진행중이던 작업들은 PCB에 저장하고 CPU를 반환한다.

- 다시 CPU를 할당받으면 PCB에서 복원해와 종료시점부터 다시 작업을 수행한다.

- 프로세스 ID, 프로세스 상태, 프로그램 카운트(다음 실행 명령어의 주소), CPU레지스터 등이 저장된다.

 

 

2. 쓰레드 란?

 - " 프로세스의 하나의 실행 단위 "

 - 프로세스 안에서 각각의 작업을 처리한다.

 - 프로세스 안에서 동시성(concurrency)을 가지고 진행한다.

 - 한 프로세스 안의 여러개의 프로세스들은 Code, Data, Heap은 공유하고, 각각의 Stack을 가진다. 

 - 시작, 종료, 컨텍스트 스위칭 시 비용(시간) 이 적게 소요된다.

 - 쓰레드 간의 전환에는 운영체제를 호출할 필요가 없다.

 - 자원을 공유하는 만큼, 공유자원에 접근하고, 변경을 할 때 주의가 필요하다.

 

 

2-2. 멀티스레딩 이란?

- 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 성능을 향상시키는 기법

- 각각의 스레드는 각각의 스택과 PC레지스터 값을 가진다.

- 독립적 실행흐름을 위해서 스택은 필요하다. (각각 가지는 이유)

- 스레드는 하나의 실행 단위 이므로 PC레지스터를 통해 실행위치를 CPU할당에 따라 저장,복구하여 그 위치에서 다시 실행한다.

'학부생 공부 > 운영체제(os)' 카테고리의 다른 글

스케줄러(scheduler) 종류  (0) 2021.09.20
멀티 프로세스 VS 멀티 스레드  (0) 2021.09.19
Context Switching ( 문맥 교환 )  (0) 2021.05.27

+ Recent posts