프로세스(process)
프로그램
이 메모리에 올라가 인스턴스화
된것 (독립적
으로 실행되는 개체)
- 프로세스 간의 자원 공유는 좀 더 복잡한 절차를 거쳐 이루어짐
- 프로세스는 최소 1개의
스레드(thread)
를 존재
프로세스의 메모리 구조
스택
- 프로세스의
실행 시
함수 호출
과 지역 변수
를 저장하고 관리하는 메모리 영역
- 메모리가 늘거나 줄어들수 있음
힙
- 프로그램
실행 중
동적 할당
을 위해 사용되는 메모리 영역
데이터 영역
- 프로세스의
전역 변수
와 정적 변수
를 저장하는 공간
코드 영역
PCB
- 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터
- 일반 사용자가 접근하지 못하도록
커널 스택
의 가장 앞부분에서 관리
- 프로세스 관리와 스케줄링을 용이하게 하고, 프로세스 간 전환(context switch)을 원활하게 수행
- 프로세스 식별자(Process ID) : 프로세스를 고유하게 식별하는 번호
- 프로세스 상태(Process State) : 프로세스의 현재 상태를 나타내는 정보
- 프로그램 카운터(Program Counter, PC) : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
- 레지스터 상태(Register State) : 프로세스가 실행되는 동안 사용되는 레지스터들의 상태를 저장(이 정보는
프로세스 간 전환
시 필요)
- 메모리 관리 정보(Memory Management) : 프로세스의 메모리 할당을 관리하기 위한 정보
- 프로세스 우선순위(Process Priority) : 프로세스 대기열에서 스케줄링 알고리즘에 따라 실행 순서를 정하기 위해 사용되는
우선순위 값
- 입출력 상태 및 정보(Input/Output Status, Information): 프로세스에 할당된 I/O 디바이스 목록
- 계정 정보(Accounting Information) : 프로세스 실행에 사용된 CPU사용량, 실행한 유저의 정보
컨텍스트 스위칭(context switching)
- 운영 체제에서 실행 중인 프로세스(혹은 스레드)를 중단하고 다른 프로세스(혹은 스레드)로 전환하는 과정
- 여러 프로세스들이 동시에 실행되는 것처럼 느껴지게 하며, 프로세서의 사용을 효율적으로 관리(아주 빠른 속도로 실행)
실행 순서
- 현재 실행 중인 프로세스(
Process P1
)의 상태를 PCB
에 저장
- 다음 실행할 프로세스(
Process P2
)를 결정
- 프로세스의(
Process P2
) PCB
에서 프로세서 상태와 관련된 정보를 가져와 프로세서에 로드
스레드(thread)
- 프로세스 내에서
독립적
으로 실행되는 작업의 흐름
- 프로세스 내의 코드와 자원을
공유
(스레드 간에 데이터 공유와 통신이 상대적으로 간단)
- 자신만의
스택 공간
을 가지며, 프로세스의 다른 스레드와 힙 공간, 전역 변수, 프로세스 코드 등을 공유
- CPU에서 실행되는 단위(unit of execution)
멀티스레딩 & 멀티프로세싱
멀티스레딩
- 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법
- 스레드끼리 메모리, 파일, 그리고 네트워크 리소스와 같은 프로세스 내부의 코드와 데이터를 공유
- 한 스레드가 중단 되어도 다른 스레드는 실행 상태일 수 있기 때문에 중단되지 않는 빠른 처리 가능(
동시성
)
- 한 스레드에 문제가 생기면 다른 스레드에 영향을 끼쳐 프로세스에 영향을 줄수도 있음
멀티프로세싱
- 여러 개의 프로세서(CPU)가 동시에 작업을 수행하는 컴퓨팅 방식
- 여러 프로세스들 또는 스레드들을
병렬
로 처리(프로세스 중 문제가 발생되더라도 다른프로세스를 이용 -> 신뢰성 높음)
대칭 다중처리(SMP, Symmetric multiprocessing)
- 두 개 이상의 프로세서가 메모리와 기타 시스템 리소스를 공유하는 방식
- 모든 CPU가
동등한 상태
로 동작하며, 운영 체제에서 각 프로세서에 작업을 균등
하게 분산하는 스케줄링 방식
- 부하
분산을 효과적
으로 수행(한 프로세서가 필요할 때 다른 프로세서의 작업을 쉽게 전달가능)
비대칭 다중처리(ASMP, Asymmetric multiprocessing)
- 각 프로세서가 전용 역할을 수행하고 특정 작업이나 리소스에 대한 권한이 할당된 구조
- 특정 프로세서가 시스템 관리 업무(Master)를 전담하고, 나머지 프로세서들이 사용자 작업(Slave)을 전담
- 특정 프로세서가 오버헤드를 처리하므로, 다른 프로세서들이 더 효과적으로 동작
📎 참고자료
유익한 자료 감사합니다.