Process
프로세스는 연속적으로 실행되고 있는 상태의 프로그램을 뜻한다. 메모리위에 올라와서 연산들이 처리되고 있는 프로그램의 인스턴스이다. 인스턴스라는 것은 프로그램 실행에 필요한 내용이 메모리에 적재된다는 의미이다.
프로세스는 실행될 때 운영체제로부터 Virtual Memory 를 정해진 크기만큼 할당받게 된다. 또 달리 생각하면 프로세스 단위로 Virtual Memory 를 할당해준다고 이해할 수 있다.
Virtual Memory 란 비싸고 빠르고 작은 RAM 과 크고 저렴하고 느린 HardDisk 를 병합해서 하나의 기억장치처럼 쓰겠다는 것이다. 이 가상메모리를 구현하는 역할을 하는 특수 메모리 관리 하드웨어가 MMU(Memory Management Unit)이다.
Thread
스레드가 프로세스 내에서 실행되는 작업 흐름의 단위이다. 프로세스는 한 개 이상의 thread를 가지고 있다. thread가 여러개이면 ? multi-thread 이다.
multi-thread들은 process가 할당 받은 가상메모리 공간이 '집' 이라면 집 안에 방이 여러개 있는 것과같이, 이 '방'들을 TLS(Thread Local Storage)로 사용하게 된다. 이 Thread Local Storage들은 Stack 에 저장된다.
그런데 집에는 거실과 같은 공용 공간이 있다. 이 공용 공간은 Heap 에 저장되게 된다.
thread들은 각자 흐름을 가지고 있고 이에 따라 연산을 처리해야 하니까 방의 주인, 사람으로 비유할 수 있다.
Process vs Thread
그런데 우리는 이 공용공간에 초점을 두고 합쳐서 '집' 과같은 프로세스 단위로 묶어서 Virtual Memory를 할당해주는 것이 나을까 ? 아니면 각각 개인에 해당하는 thread 들을 중심으로 Virtual Memory 를 나눠서 할당해주는 것이 좋을까 ? 이에 대한 논쟁이 있다.
프로세스 단위에 초점을 맞춘 OS로 Linux 가 있다. Docker가 Linux 기반인 것을 고려했을 때 Docker에서 컨테이너가 실행되는 것이 독립적인 process가 수행되는 것과 같이 디자인 된걸 떠올려 볼 수 있다 !!
반면에 윈도우 체제가 스레드 단위에 초점을 맞추고 있다. 따라서 Docker가 윈도우에 적합하지 않다 ?! 라는 말을 종종 들었는데 이는 이러한 이유 때문이다.
면접준비 하다말고 정말 감명깊어서 기록 ... 이런 강의를 무료로 듣다니..
https://www.youtube.com/watch?v=x-Lp-h_pf9Q
'Computer Science > 운영체제' 카테고리의 다른 글
[OS] 운영체제 3. 컴퓨터 시스템 구조 (0) | 2023.05.20 |
---|---|
메모리의 구조 (Memory Structure) (0) | 2023.04.03 |
[운영체제] 세마포어와 뮤텍스 알고리즘 (1) | 2023.01.16 |
[운영체제] 인터럽트 (Interrupt) (0) | 2023.01.08 |
[운영체제] CPU 스케줄링 & 선점/비선점 스케줄링 알고리즘 (0) | 2023.01.08 |