반응형

크래프톤정글/운영체제 27

[OSTEP][가상화] CH23 완전한 가상 메모리 시스템 +대화

발표 날짜 24.11.16 SAT 10시a.m. CH23 완전한 가상 메모리 시스템완전한 가상 메모리 시스템을 구현하기 위해서는 성능, 기능성, 보안을 위한 다양한 특징들이 있다핵심 질문 - 완전한 VM 시스템을 구현하는 방법완전한 가상 메모리 시스템을 구현하기 위해서 필요한 특징은 무엇인가?이러한 특징들은 어떻게 성능을 향상시키거나, 보안을 강화하거나, 혹은 시스템을 개선하는가?우리가 살펴볼 시스템은 1) VAX/ VMS 운영체제와 2) Linux 의 가상 메모리 시스템이다 VAX/ VMS 시스템에서 사용된 기법과 접근법들은 현재에도 사용 중이며 공부할 충분한 가치가 있고 (+ VAX/VMS 운영체제: VAX = 컴퓨터, VMS = 운영체제)Linux 는 가장 확장성이 뛰어난 다중 코어 시스템에서 효과..

[OSTEP] CH22 물리 메모리 크기의 극복 - 정책

CH22 물리 메모리 크기의 극복 - 정책 빈 메모리 공간이 거의 없으면, 운영체제는 메모리 압박 Memory Pressure 을 해소하기 위해 다른 페이지들을 강제적으로 페이징 아웃 Paging Out 하여 공간을 확보한다 내보낼 Evict 페이지(들) 선택은 운영체제의 교체 정책 Replacement Policy 안에 집약되어 있다 핵심 질문 - 내보낼 페이지는 어떻게 결정하는가운영체제는 어떻게 메모리에서 내보낼 페이지(들)를 결정할 수 있을까? 이 결정은 시스템의 교체 정책에 의해서 내려진다교체 정책은 보편 타당한 원칙들을 따르지만 코너 케이스를 피하기 위한 수정 사항들도 포함되어 있다 22.1 캐시 관리 시스템의 전체 페이지들 중 일부분만이 메인 메모리에 유지된다는 것을 가정하면메인 메모리는 시스..

[OSTEP] CH21 물리 메모리 크기의 극복 - 메커니즘

발표 일자 2024.11.12 TUE 10시a.m. CH21 물리 메모리 크기의 극복 - 메커니즘 다수 프로세스들이 동시에 각자 큰 주소 공간을 사용하고 있다고 가정할 때 메모리 계층에 레이어의 추가가 필요하다 큰 주소 공간을 지원하기 위해서 주소 공간 중에 현재는 크게 필요하지 않은 일부를 보통은 하드 디스크 드라이브에 보관한다 메모리 계층에서 크고 느린 하드 디스크 드라이브가 가장 하부에 위치하고, 그 위에 메모리가 있다 핵심 질문 - 물리 메모리 이상으로 나아가기 위해서 어떻게 할까 운영체제는 어떻게 크고 느린 장치를 사용하면서 마치 커다란 가상 주소 공간이 있는 것처럼 할 수 있을까? 과거에 사용되던 메모리 오버레이 Memory Overlay 라는 시스템은 프로그래머가 코드 or 데이터의 일부를 ..

[OSTEP] CH20 페이징 - 더 작은 테이블

발표 일자 2024.11.11 MON 2시p.m. CH20 페이징 - 더 작은 테이블 페이징의 두 번째 문제점은 페이지 테이블의 크기이다 (첫 번째 문제점은 성능 저하) 페이지 테이블이 크면 많은 메모리 공간을 차지하고, 각 프로세스는 자기 자신의 페이지 테이블을 갖는다 핵심 질문 - 페이지 테이블을 어떻게 더 작게 만들까단순한 배열 기반의 페이지 테이블은 (흔히 선형 페이지 테이블이라고 불림) 크기가 크며 일반적인 시스템에서 메모리를 과도하게 차지한다, 어떻게 페이지 테이블의 크기를 줄일 수 있을까? 새로운 자료 구조들은 어떤 비효율성을 갖는가? 20.1 간단한 해법 - 더 큰 페이지 페이지 테이블의 크기를 줄일 수 있는 간단한 방법은 페이지 크기를 증가시키는 것이다 🐣 페이지 테이블은 가상 주소를 ..

[OSTEP] 가상화 CH19 페이징 - 더 빠른 변환 TLB

CH19 페이징 - 더 빠른 변환 TLB 페이징은 주소 공간을 작은 크기로 나누고 각 페이지의 실제 위치 (매핑 정보)를 메모리 내의 페이지 테이블에 저장한다 이 페이지 테이블을 저장하고 관리하기 위해 상당한 메모리 공간이 필요하고,주소 변환을 위해 매번 메모리에서 페이지 테이블을 참조해야 하기 때문에, 페이징은 성능 저하를 유발할 수 있다 핵심 질문 - 주소 변환 속도를 어떻게 향상할까주소 변환을 어떻게 빨리할 수 있을까? 페이징에서 발생하는 추가 메모리 참조를 어떻게 피할 수 있을까? 어떤 하드웨어가 필요할까? 운영체제가 어떤 식으로 개입해야 할까? 운영체제의 실행 속도를 개선하기 위해서 대부분의 경우 하드웨어로부터 도움을 받는다 변환-색인 버퍼 Translation-Lookaside Buffer, ..

[OSTEP] 가상화 CH18 페이징 - 개요

CH18 페이징 - 개요운영체제가 공간 관리 문제를 해결할 때 두 가지 중 하나를 사용한다 1) 가변 크기의 조각들로 분할 공간을 다양한 크기의 청크로 분할할 때 공간 자체가 단편화 Fragmented 될 수 있고, 할당은 점점 어려워진다( + 가상 메모리의 세그멘테이션 Segmentation 의 문제를 해결하기 위해 페이징이 나왔다 )2) 동일 크기의 조각으로 분할하는 것 - 페이징 Paging  가상 메모리를 페이지 Page 라는 고정 크기 단위로 나누어서,물리 메모리도 페이지 프레임 Page Frame 이라고 불리는 고정 크기의 슬롯의 배열이라고 생각한다 페이지 프레임 각각은 하나의 가상 메모리 페이지를 저장할 수 있다핵심 질문 - 페이지를 사용하여 어떻게 메모리를 가상화할 수 있을까세그멘테이션의 ..

[OSTEP] 병행성 CH33 - 34

CH33 이벤트 기반의 병행성 - 고급 멀티 쓰레드 기반 프로그래밍이 어려운 이유는 아래 두 가지이다 1) 멀티 쓰레드 기반 프로그래밍은 어렵다 자료 구조를 락으로 보호하는 것을 잊을 수 있고, 교착 상태나 혹은 다른 문제들이 발생할 수 있다 2) 개발자가 쓰레드 스케줄링에 대한 제어권을 가지고 있지 않다 멀티 쓰레드 프로그래밍에서는 운영체제가 CPU 스케줄링에 대한 전권을 갖는다 핵심 질문 - 어떻게 쓰레드 없이 병행 서버를 개발할까쓰레드 없이 병행 서버를 구현할 때, 어떻게 병행성을 유지하면서 각종 문제들을 피할 수 있을까?33.1 기본 개념 - 이벤트 루프 이벤트 기반의 병행성은 특정 사건, "이벤트" 의 발생을 대기하고, 사건이 발생하면, 사건의 종류를 파악한 후 추후 작업을 진행한다 이 과정에서..

[OSTEP] 병행성 CH31 - CH32

CH31 세마포어 Semaphore다양한 범주의 병행성 문제 해결을 위해서는 락과 조건 변수가 모두 필요하다 (이 사실을 Dijkstra 가 발견함)Dijkstra 와 동료들이 모든 다양한 동기화 관련 문제를 한번에 해결할 수 있는 기법을 개발해 보면서 세마포어가 탄생했다 세마포어는 락과 컨디션 변수로 모두 사용할 수 있다 🐣 세마포어는 자원의 사용 가능 여부를 숫자로 관리하여 여러 쓰레드가 안전하게 공유 자원에 접근할 수 있도록 제어하는 역할을 한다 🐣 세마포어는 일종의 추상 자료형이고, 자원의 개수를 나타낼 수 있다, 공유 자원을 획득하고 반납하는 방식을 나타낼 수 있음 핵심 질문 - 세마포어를 어떻게 사용하는가락과 컨디션 변수 대신에 세마포어를 사용하는 방법은 무엇인가? 세마포어의 정의는 무엇인..

[OSTEP] 병행성 CH29 - CH30

CH29 락 기반의 병행 자료 구조 자료 구조에 락을 추가하면 해당 자료 구조를 경쟁 조건으로부터 안전한, 쓰레드 사용에 안전 (쓰레드 안전, Thread Safe) 자료 구조로 만들 수 있다 핵심 질문 - 자료 구조에 락을 추가하는 방법 특정 자료 구조가 주어졌을 때, 어떤 방식으로 락을 추가해야 그 자료 구조가 정확하게 도작하게 만들 수 있을까? 다수의 쓰레드가 해당 자료 구조를 동시에 접근토록 해서 (병행성) 성능을 향상시키려면 어떤 일을 해야할까? + 병행성 - 뮤텍스 락, 세마포어, 컨디션 변수 락 - 공유하는 자원에 락을 걸어서 하나만 접근 세마포어 - 자원에 접근하는 쓰레드 개수를 제한을 둔다, 1개 이상 접근 가능컨디션 변수 - 재운다, 깨운다 + 교착 상태 - 서로가 서로의 자원을 기다리..

[OSTEP] 병행성 CH28 락 Lock

CH28 락 Lock 여러 개의 명령어들을 원자적으로 실행하고 싶지만, 단일 프로세서의 인터럽트 등으로 인해 겪는 어려움을 락 Lock 을 이용해 해결해 보고자 한다, 프로그래머들은 소스 코드의 임계 영역을 락으로 감싸서 해당 영역이 하나의 원자 단위 명령어처럼 실행되도록 한다 🐣 원자성 Atomicity - 원자적으로 실행된다는 것은 그 작업이 중단되지 않고 한 번에 완료된다는 의미, 즉, 작업이 진행되는 동안 다른 작업이 개입할 수 없고, 결과는 항상 일관성을 유지해야 한다는 말이다, 그리고 CH26 P315에 아래와 같은 말이 있다연속된 동작들을 원자적으로 만든다는 개념은 간단하게 "전부 아니면 전무" 라고 표현할 수 있다수행하려는 모든 동작이 모두 다 처리된 것처럼 보이거나 실행되다가 동작을 묶..

반응형