본문 바로가기

CS/운영체제14

[운영체제 OS] Virtual Memory Management Virtual Memory 실제 메모리보다 더 큰 용량을 사용하기 위해 논리주소와 물리주소를 매핑하여 메모리 관리하는 방식 마치 메모리가 무한대인 것처럼 동작하게 하는 Swapping이 핵심이며 여기서는 Paging단위를 사용 Demand Paging 프로세스의 모든 페이지가 아닌 순간순간 필요한 페이지만 메인 메모리에 적재하고, 나머지는 모두 가상 메모리에 적재하는 방식 페이지가 메인 메모리(물리적 메모리)에 적재되어 있는 않은 상태를 Invalid로 표시 Page Fault 지금 필요한 페이지가 실제 메모리에 올라와있지 않을때 발생 과정 1. 논리적 주소 요청이 들어온다. 2. 페이지 테이블에 접근해서 Valid/Invalid 확인했더니 Invalid여서, Trap을 걸어 운영체제에게 요청한다. 3... 2021. 8. 25.
[운영체제 OS] Memory Management (2) Paging 프로세스 단위로 메모리에 적재하는 것이 아닌 더 작은 단위(페이지 단위)로 메모리에 적재하는 방식 장점 연속적이지 않은 공간도 사용가능하므로 외부 단편화 문제를 해결 단점 프로세스 적재시 결국 페이지라는 특정단위로 관리하므로 내부 단편화 문제 발생 페이지 단위를 작게하여 내부 단편화 문제도 해결할 수 있지만, 페이지 매핑과정이 많아져 오버헤드 증가 Segmentation 고정 단위로 메모리에 적재하는 것이 아닌 가변크기의 논리적 단위인 세그먼트 단위로 메모리에 적재하는 방식 장점 가변 크기로 할당하므로 내부에서 낭비되는 공간이 없어 내부 단편화 문제를 해결 단점 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다보면 결국 외부 단편화 문제 발생 위 방법들의 문제를 해결하기.. 2021. 8. 25.
[운영체제 OS] Memory Management (1) Swapping이란? 메인메모리에 적재된 프로세스를 하드디스크나 SSD에 내리고, 다른 하나를 메인메모리에 올리는 것 프로세스를 메인메모리에서 내리는 것이 Swap out, 올리는 것이 Swap in Context Switch가 많이 일어나지만 부족한 메모리 공간을 효율적으로 사용 가능 (마치 메모리가 무한대인 것처럼 동작하며 Virtual Memory Management에서의 핵심) 메모리 단편화란? (Memory Fragmentation) 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용 하지 못할 만큼의 작은 자유공간들을 의미한다. 크게 외부단편화와 내부단편화로 나뉜다. 외부단편화 자유공간들을 모두 합치면 충분한 공간이 있지만, 그것들이 작게 분.. 2021. 8. 25.
[운영체제 OS] Memory 구조 메모리 계층 구조 메모리 공간은 계층 구조를 가지며 다음과 같은 순으로 CPU와 멀어진다. 레지스터 → CPU 캐시 메모리 → 메인 메모리 → 하드디스크 CPU로부터 멀어질수록 데이터를 저장하는 용량이 커지지만 접근 속도는 느려진다. 메모리 공간 요소 메모리는 아래와 같이 크게 총 4가지 영역(Code, Data, Heap, Stack)으로 구분된다. Code 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역 Data 프로그램이 실행될 때 생성되고 프로그램이 종료되면 시스템에 반환되며 전역변수, 정적변수, 배열, 구조체 등이 저장되는 영역 Heap 필요에 의해 메모리를 동적 할당하고자 할 때 사용하는 동적 데이터 영역 Stack 지역변수, 매개변수, 리턴 값 등이 잠시 사용되었다가 사라지는 .. 2021. 8. 25.
[운영체제 OS] Kernel Thread vs User Thread Note 사용자 수준 스레드와 커널 수준 스레드는 생성 주체에 따라 구분된다. 사용자가 라이브러리를 만들고 관리하는지, 운영체제의 커널이 만들고 관리하는지에 따른 차이다. Kernel Thread 커널레벨에서 생성되는 스레드로 커널이 스레드와 관련된 모든 작업을 직접 관리 장점 모든 스레드가 System Call로 구현 가능 커널이 직접 스레드와 관련된 모든 작업을 처리 단점 커널 단 수행시간이 오래걸려 오버헤드가 높음 User Thread 사용자 레벨 라이브러리 통해 구현된 스레드로 커널 영역 위에서 동작 장점 스레드 관련 작업시 커널을 호출하지 않아 오버헤드가 낮음 커널에 독립적으로 스케줄링 가능하여 모든 운영체제에 적용 가능 단점 커널이 스레드 관리에 직접 개입하지 못함 User mode에서 실행되.. 2021. 8. 23.
[운영체제 OS] 동기 VS 비동기 / Blocking vs Non-Blocking Note : 용어가 헷갈릴 수 있기 때문에동기 & 비동기는 시간 관점, Blocking & Non-Blocking은 제어권 관점에서 생각하기 동기 (Synchronous) 요청과 그 결과가 동시에 일어나는 것. 요청 후 결과가 와야만이 그 다음 작업이 이루어지는 방식. 특징 간단하고 직관적 어떠한 일을 처리하는 동안 다른 일을 하지 못함 작업 완료여부를 호출한 쪽에서 신경 씀 비동기 (Asynchronous) 요청과 그 결과가 동시에 일어나지 않는 것. 요청 후 결과가 오는 동안 그 다음 작업이 이루어지는 방식. 특징 동기보다 복잡 어떠한 일을 처리하는 동안 다른 일을 할수 있어 자원을 효율적으로 사용 작업 완료여부를 호출된 쪽에서 신경 씀 Blocking I/O 호출된 함수가 자신의 작업을 모두 끝낼때.. 2021. 8. 23.