OS - Process, Thread

최정환·2023년 1월 27일
0

OS

목록 보기
1/2

Process 란

사전적 의미

컴퓨터 운영 체제에서 프로세스는 현재 실행 중인 프로그램 또는 응용 프로그램.
실행 상태에 있고 자체 메모리 공간과 열린 파일 및 네트워크 연결과 같은 기타 시스템 리소스가 있는 프로그램의 인스턴스.

구성요소와 작동 방식

프로세스는 하나 이상의 스레드를 가질 수 있다.
스레드는 프로세스 컨텍스트 내에서 실행되는 가볍고 독립적인 실행 단위
각 스레드에는 자체 프로그램 counter, stack 및 기타 리소스가 있지만 동일한 프로세스 내의 다른 스레드와 동일한 메모리 공간을 공유한다.
이를 통해 동일한 프로그램 내에서 여러 작업을 동시에 실행할 수 있다.

프로세스와 스레드는 CPU 시간과 메모리와 같은 시스템 자원을 각 프로세스와 스레드에 할당하는 운영 체제의 스케줄러에 의해 관리된다.
스케줄러는 각 프로세스와 스레드가 시스템 리소스를 공평하게 공유하고 시스템의 전체 성능이 최적화되도록 한다.

요약한다면 프로세스는 컴퓨터 시스템에서 현재 실행 중인 프로그램 또는 응용 프로그램이며 자체 메모리 공간과 기타 시스템 리소스를 가지며 하나 이상의 스레드를 가질 수 있다.



Thread

사전적 의미

컴퓨터 운영 체제의 맥락에서 스레드는 프로세스의 맥락에서 실행되는 가볍고 독립적인 실행 단위
프로세스는 하나 이상의 스레드를 가질 수 있으며 각 스레드에는 자체 프로그램 counter, stack 및 기타 리소스가 있다.

구성요소와 작동 방식
스레드는 경량 프로세스라고도 하며 자체 메모리 공간이 필요하지 않다.
대신, 그것들을 생성한 프로세스의 메모리 공간을 공유한다.
이를 통해 동일한 프로그램 내에서 여러 작업을 동시에 실행할 수 있으며 프로그램이 동시에 계산을 수행하고 사용자 입력을 처리하는 것과 같은 여러 작업을 수행할 수 있다.

스레드는 각 스레드에 CPU 시간 및 기타 리소스를 할당하는 운영 체제의 스케줄러에 의해 예약 및 관리된다.
스케줄러는 각 스레드가 시스템 리소스를 공평하게 공유하고 시스템의 전체 성능이 최적화되도록 합니다.

스레드는 여러 사용자 요청을 동시에 처리하거나 백그라운드 작업을 수행하거나 여러 계산을 동시에 실행하는 등 여러 작업을 동시에 수행할 수 있도록 하여 프로그램의 성능을 향상시키는 데 유용하다.

요약하면 스레드는 프로세스 컨텍스트 내에서 실행되는 가볍고 독립적인 실행 단위이며 자체 프로그램 counter, stack 및 기타 리소스를 가지고 있지만 동일한 프로세스 내의 다른 스레드와 동일한 메모리 공간을 공유한다. OS의 스케줄러는 스레드를 관리하고 스레드에 리소스를 할당한다.


Context Switching

CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것

컨텍스트 스위칭은 프로세스든 스레드든 커널모드에서 실행되며 CPU의 레지스터 상태를 교체한다.

따라서 전환이 진행될때 CPU가 추가 작업을 수행해야 하고 작업 또는 프로세스 간 전환시 지연을 유발할 수 있으므로 성능 측면에서 비용이 발생하게 된다.
=> 일반적으로 몇 마이크로 ~ 밀리초가 걸린다.

Context Switching 과정

1. 현재 상태 저장

작업이 전환되려고 할 때 커널은 현재 작업의 레지스터 값, 메모리 상태 및 나중에 실행을 다시 시작하는 데 필요한 기타 정보를 저장한다.

레지스터 값에는 CPU의 범용 레지스터와 프로그램 카운터(PC) 및 스택 포인터와 같은 기타 특수 목적 레지스터의 값이 포함된다.

메모리 상태에는 일반적으로 "프로세스 제어 블록"(PCB)이라는 데이터 구조에 저장되는 작업 메모리 페이지의 내용이 포함된다.

2. 다음 작업 예약

커널은 예약 알고르즘을 사용해 다음에 실행할 작업을 결정한다.

이 결정은 우선 순위 수준, 타임 슬라이스, I/O 요구 사항과 같은 요소를 기반으로 한다.

3. 다음 상태 로드

다음 작업이 선택된 후 커널은 레지스터 값, 메모리 상태 및 PCB의 기타 정보를 포함하여 실행할 다음 작업의 상태를 로드한다.

4. 다음 작업으로 전환

커널은 CPU가 다음 작업으로 전환하여 실행할 수 있도록한다.

다음 작업의 상태와 일치하도록 CPU의 레지스터 값, 메모리 상태 및 기타 정보를 업데이트하는 작업이 포함된다.

커널은 또한 메모리 관리 장치(MMU)를 업데이트하여 CPU가 다음 작업의 메모리 페이지에 액세스할 수 있도록 한다.

5. 실행 재개
새 작업 또는 프로세스가 마지막으로 중지된 지점부터 실행을 시작한다.

작업은 전환되어야 하는 지점에 도달할 때까지 계속 실행한다.

0개의 댓글