프로세스
실행중인 프로그램.
디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작하면 비로소 프로세스가 되며, 프로세스는 CPU를 획득해서 자신의 코드를 수행하기도 하고 때로는 CPU를 반환하고 입출력 작업을 수행하기도 한다.
자신의 임무를 다 수행하고 나면 종료되어 사라진다.
여러 프로세스가 함께 수행되는 시분할 시스템 환경에서는 짧은 시간 동안 CPU를 사용한 후 빼앗겼다가 추후에 다시 CPU를 획득하는 식으로 CPU관리가 이루어진다.
CPU를 다시 획득해 명령의 수행을 재개하는 시점이 되면 이전의 CPU 보유 시기에 어느 부분까지 명령을 수행했는지 직전 수행 시점의 정확한 상태를 재현할 필요가 있다.
이때 정확한 재현을 위해 필요한 정보가 바로 프로세스의 문맥(context)이다.
프로세스의 문맥은 해당 프로세스의 주소 공간(코드, 데이터, 스택 상태)을 비롯해 레지스터에 어떤 값을 가지고 있었는지와 시스템콜 등을 통해 커널에서 수행한 일의 상태, 커널이 관리하고 있는 각종 정보 등을 포함한다.
프로세스는 코드, 데이터, 스택으로 구성되는 자신만의 독자적인 주소 공간을 가지고 있다.
프로세스의 주소 공간은 해당 프로세스의 문맥을 결정짓는 중요한 요소중 하나이다.
쓰레드
프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원, 쓰레도르 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 행하는 것이 바로 쓰레드이다.
모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스 라고 한다.
멀티태스킹과 멀티쓰레딩
멀티태스킹(multi-tasking, 다중작업)
여러 개의 프로세스가 동시에 시행.
멀티쓰레딩(multi-threading)
하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행
싱글 쓰레드 vs 멀티 쓰레드
CPU의 코어가 한번에 단 하나의 작업만 수행할수 있음으로, 실제로 동시에 처리되는 작업의 개수는 코어의 개수와 일치한다. 그러나 쓰레드의 수는 언제나 코어의 개수보다 훨씬 많기 때문에 각 코어가 아주 짧은 시간 동안 여러 작업을 번갈아 가며 수행(시분할 시스템)함으로써 사용자 입장에서는 동시에 수행되는 것처럼 보인다.
* 프로세스의 성능이 단순히 쓰레드의 개수에 비례하는 것은 아니며, 하나의 쓰레드를 가진프로세스 보다 두 개의 쓰레드를 가진 프로세스가 오히려 더 낮은 성능을 보일 수도있다.
<장점>
- CPU의 사용률을 향상시킨다
- 자원을 보다 효율적으로 사용할 수 있다
- 사용자에 대한 응답성이 향상된다.
- 작업이 분리되어 코드가 간결해진다
<단점>
동기화, 교착상태
'CS > 운영체제' 카테고리의 다른 글
[OS] 1. 컴퓨터 시스템의 개요 (0) | 2021.06.29 |
---|