Post

1회차

이찬우

프로세스, 스레드

프로세스

  • 작업의 단위
  • OS는 가상메모리를 프로세스에게 할당

스레드

  • 실행의 단위
  • 프로세스에 속한 모든 스레드는 프로세스의 가상 메모리로 공간이 제약된다

쉬운 비유

  • 프로세스: 한 가구
  • 스레드: 세대원
  • 할당된 가상 메모리: 집 평수
  • 스레드 스택: 각자의 방
  • 프로세스 힙: 거실
1
2
3
4
Stack: 지역변수가 할당되는 영역, 함수 종료 시 반납
Heap: malloc(), calloc(), new 등 동적 할당 영역, 직접 or GC가 해제
Code: 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역, 소스 파일
Data: 전역변수와 Static변수가 지정되는 영역

도커

  • 가상 머신
    • 프로세스에 OS를 다시 구성
    • 자원 소모 심함
  • 도커
    • 기존의 컴퓨터 리소스와 겹치는 부분을 제거함
    • 하드웨어 자원 할당과 같이 시스템 콜이 필요한 요청을 도커 엔진이 대신 처리함
    • 하나의 프로세스 처럼 작동

브라우저

  • 메인 스레드
    • 싱글 스레드
    • 렌더링 작업

김남영

메모리

메모리란 무엇인가?

  • 메인 메모리 - RAM
  • 프로그램을 실행할 때의 필요한 데이터를 저장하거나 사용하기 위한 공간
  • 주기억 장치를 의미함
  • 폰 노이만 구조에 따라 모든 프로그램은 메모리에 올라와야 실행 가능하다는 점에서 중요하다는 점을 알 수 있다.


컴퓨터를 켤 때 운영체제 및 모든 프로그램이 비어 있는 메모리에 적재된다.

각 프로세스는 CPU를 점유할 기회를 노린다.


메모리를 읽자

  • 프로세스가 점유한 CPU는 메모리에 적재되어 있는 코드를 바로 읽을 수 없다.
  • 컴파일러는 프로그램의 코드를 숫자로 코드의 주소를 결정한다.
  • 주소 바인딩을 통해 실제 메모리의 어느 위치에 적재할지 결정한다.
  • 이로서 CPU는 논리 주소만으로 물리 메모리의 데이터를 읽을 수 있다.


메모리 관리

  • 주소 바인딩을 할 때 프로그램 실행 중에 물리 주소를 변경할 경우가 있다.
  • 이때 MNU(Memory Management Unit)이 필요하다.

MNU (Memory Management Unit)

  • 논리 주소를 물리 주소로 매핑하는 하드웨어.
  • CPU가 잘못된 주소를 요청할 경우 오류를 일으킨다.


메모리 할당

  • 프로그램을 실행하기 위해 메모리에 할당하는 여러 가지 방식이 있는데, 대표적으로 필요한 때의 루틴만을 로딩하는 Dynamic Loading이 있다.

  • 연속 메모리 할당
    • 프로세스를 통째로 할당한다.
    • 메모리보호에 용이
  • 메모리에 프로세스를 할당할 경우 충분한 공간에서 프로세스가 왔다리 갔다리 하면서 구멍이 생긴다.
    • 이 구멍을 free hole 이라 부름
    • free hole을 잘 관리해주는 것이 중요.


Fragmentation

  • 사용 가능한 메모리가 충분하지만 할당이 불가능한 상태 - 메모리 단편화

내부 단편화

  • 프로세스가 필요한 메모리보다 더 큰 메모리가 할당된 경우

외부 단편화

  • 프로세스가 필요한 메모리보다 크기가 작아 할당할 수 없는 현상


Paging

  • 단편화 때문에 나온 개념
  • 프로세스의 물리 주소를 쪼개서 관리하는 기법
  • OS는 실제 물리 메모리와 논리 메모리 주소를 매핑한다.
    • CPU가 생성하는 메모리 주소
    • page numberpage offset
    • page table을 참고하여 물리 주소로 변환한다. (논리 주소를)

    • 하지만 이와 같은 문맥 교환은 오버헤드가 굉장히 클 수 있음.


이럴 때 페이지를 이용하면 된다.

스스로 변경 되지 않는 코드인 reentrant code를 공유하여 메모리 공간을 절약 가능하다.


Swapping

  • 프로그램의 크기가 실제 물리 공간보다 클 경우에도 동작이 가능하게 하는 기법
  • 프로세스의 필요한 부분만 메모리로 올리고 다시 내리는 방식


가상 메모리

  • 프로세스의 일부만 메모리에 올린다.
  • 프로그램의 용량이 아무리 커도 필요할 때마다 즉각적으로 물리 메모리에 매핑할 수 있다?


가상 메모리 공간

  • 프로세스가 메모리에 저장되는 공간
  • 논리적인 관점에서의 존재
  • 연속적인 메모리로서 표현 됨


Page sharing

  • 가상 메모리가 여러 개의 프로세스의 메모리를 공유할 수 있게 해준다.
This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Jekyll theme Chirpy