[OS] 멀티스레딩 & 메모리 공간
CS/Operating System

[OS] 멀티스레딩 & 메모리 공간

[OS] 멀티스레딩 & 메모리 공간

멀티스레딩이란 하나의 프로세스를 다수의 스레드로 나눠서 작업을 실행하는 것

멀티스레딩

  • 멀티스레딩이란 하나의 프로세스를 다수의 실행 단위인 스레드로 나눠서 작업을 실행하는 것을 말함
  • 장점
    • 메모리 공간과 시스템 자원 소모가 줄어듬
    • 스레드 간의 통신에 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 heap 영역을 이용하여 데이터를 주고 받아 멀티 프로세스(프로세스 여러개로 실행하는 방식, 멀티 프로세스의 경우 IPC와 같은 통신 사용)보다 훨씬 간단 (이전 글: 스레드는 레지스터와 stack만 독립적으로 갖고 나머지는 공유한다) 
    • 스레드의 context switch(실행하던 스레드를 멈추고 다른 스레드를 실행 시키면서 실행에 필요한 정보들을 바꾸는 행위)는 프로세스의 context switch와는 달리 캐시 메모리를 비울 필요가 없고 CPU 레지스터 교체가 필요없기 때문에 더 빠름. 즉, 오버헤드가 작음. stack 영역만 처리하면 되기 때문.
    • 결론적으로 시스템의 throughput이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축
참고)
Response Time 응답 속도: 하나의 요청에 대해 응답을 받기까지의 시간
Throughput 처리량: 단위 시간 내에 처리 가능한 일의 양

 

  • 단점
    • 멀티 프로세스 방식은 프로세스 간 공유하는 자원이 없어서 동일한 자원에 동시에 접근하는 일이 없지만 멀티 스레딩의 경우 이부분을 신경써줘야 함 (동기화 문제. 이후에 자세히 다룸)
    • 서로 영향을 끼치지 않는 멀티 프로세스 방식과 다르게 오류가 나서 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있음

프로그램의 실행을 위한 메모리 공간은 코드, 데이터, 스택, 힙 영역으로 나뉜다.

메모리 공간

메모리 구조

  • 프로그램이 실행되기 위해 프로그램이 메모리에 로드가 되야 함. 따라서 운영체제에서 프로그램의 실행을 위해 다양한 메모리 공간을 제공한다. 코드, 데이터, 스택, 힙 영역이 할당되고 각 역할은 다음과 같음
  • Code: 실행할 프로그램의 코드가 저장되는 텍스트 영역. CPU는 코드 영역에서 저장된 명령어를 하나씩 가져가서 처리.
  • Data: 전역변수와 정적변수를 저장. 프로그램의 시작과 함께 할당되며 프로그램 종료시 소멸
  • Stack: 함수의 호출과 관계되는 지역변수와 매개변수가 저장. 함수의 호출과 함께 할당되며, 함수의 호출이 종료될때 소멸
  • Heap: 사용자가 직접 관리할 수 있는 메모리 영역. malloc, new와 같이 동적으로 메모리 공간을 할당할 수 있고 해제할 수 있음

 

Reference

github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS#%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C

gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-os.html

hyonee.tistory.com/95

728x90
반응형

'CS > Operating System' 카테고리의 다른 글

[OS] Computer System Overview  (0) 2021.09.07
[OS] Process 동기화 (3) Deadlock  (0) 2021.02.11
[OS] Process 동기화(2)  (0) 2021.02.11
[OS] Process 동기화(1)  (0) 2021.01.28
[OS] 동기와 비동기  (0) 2021.01.24