OS - Process, Thread 정확히 무엇을 말하는걸까?

김재만·2024년 2월 25일
0
post-thumbnail

지난번 Coroutine 을 설명하며 나왔던 개념인 Thread 와 Process 그리고 이 Process 의 작업을 주체하는 OS 에 대해서 공부하는 시간입니다.

💡 OS(Operating System) 란?

OS 라고 하면 다들 잘 알고 계시는 window, Linux, MacOS 등이 있습니다.

Operating System 의 약자인 OS 는 깊게 들어가면 끝도 없는 공부를 시작해야하고 실제로 전공 서적등을 통해 개념을 살펴봐도 엄밀히 정의하지 않고 모호한 경우가 상당합니다. 이유는 OS 라 불리는 운영체제는 어느 기기에서 어떠한 형태로든 나타날 수 있기 때문인데요. 한 가지 사례로 MP3 플레이어 같은 작은 소형 전자기기들도 전원을 키고 음악을 골라 재생하는 등의 기능을 운영체제를 깨우고 동작시킨다는 개념으로 설명할 수 있기 때문입니다.

하지만 이 MP3 플레이어의 경우 제조 공정 중 설치되어 응용 프로그램 설치를 통한 기능 추가를 할 수 없기에 펌웨어로 분류되고 OS 라고 부르지 않지만, OS의 정의를 '하드웨어와 소프트웨어를 관리하는 소프트웨어 전체.' 라고 보면 또 펌웨어도 OS의 일부이지 않나 싶습니다.

🎯 Process - Thread

  • OS가 Process 동작 관리의 주체가 되며 Process 는 프로그램 동작의 단위가 됨.
  • Process 는 최소 1개 이상의 Flow(Thread)를 가지며 Flow 를 중심을 동작함
  • Thread 가 여러개 일 땐 Multi-Thread 라 부르며 각 Thread 는 동시에 각자 동작 -> 동시성, 동기화 이슈

  • Process 가 동작하게 될땐 직접 물리적 메모리(H/W)에 접근하는 것이 아닌 가상 메모리를 이용한다.
  • OS 는 Process 에 가상 메모리를(제한된 공간) 할당해주며, Process에 속한 모든 Thread 는 Process 의 가상 메모리로 공간이 제약된다.

  • Process 는 하나의 가상 메모리를 할당 받아 그 안에서 Thread 를 동작시키고 이 때의 Thread 들은 한정된 가상 메모리 내에서만 동작을 해야함.
  • 각 Thread 는 개인의 Stack 메모리를 가지고 있고 공용 Heap 메모리를 사용함.
  • 동시성, 동기화 이슈 등을 해결하기 위해 Multi-Thread 가 아닌 개별적인 각 Process 로 동작시키는 방법이 있음.

👀 마무리

Coroutine 과 비교하며 시작된 개념이지만 Thread 의 동작 과정을 공부해 볼 수 있어 유익했고 평소 많이 들어본 이야기지만 정확히 알지 못하던 것들을 정리하는 계기가 되었습니다.

다음에는 최근 React Project 의 번들러로 가장 기본적인 CRA(Create React App) 의 시끌시끌한 소식이 있어 Vite와 비교를 하며 알아보겠습니다.

출처 : https://www.youtube.com/@nullnull_not_eq_null
출처 : https://en.wikipedia.org/wiki/Operating_system
출처 : https://velog.io/@ghddbwns9808/Android-Kotlin-Coroutine%EA%B3%BC-Flow-%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B01-Thread

profile
기록으로 남기고 공유를 위한 벨로그입니다.

0개의 댓글