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 number page offset page table을 참고하여 물리 주소로 변환한다. (논리 주소를)
- 하지만 이와 같은 문맥 교환은 오버헤드가 굉장히 클 수 있음.
이럴 때 페이지를 이용하면 된다.
스스로 변경 되지 않는 코드인 reentrant code를 공유하여 메모리 공간을 절약 가능하다.
Swapping
- 프로그램의 크기가 실제 물리 공간보다 클 경우에도 동작이 가능하게 하는 기법
- 프로세스의 필요한 부분만 메모리로 올리고 다시 내리는 방식
가상 메모리
- 프로세스의 일부만 메모리에 올린다.
- 프로그램의 용량이 아무리 커도 필요할 때마다 즉각적으로 물리 메모리에 매핑할 수 있다?
가상 메모리 공간
- 프로세스가 메모리에 저장되는 공간
- 논리적인 관점에서의 존재
- 연속적인 메모리로서 표현 됨
Page sharing
- 가상 메모리가 여러 개의 프로세스의 메모리를 공유할 수 있게 해준다.
This post is licensed under CC BY 4.0 by the author.






