728x90

OS 94

TLB(Translation Lookaside Buffer)

TLB(Translation Lookaside Buffer) 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시이다. 최근에 일어난 가상 메모리 주소와 물리 주소의 변환 테이블을 저장한다. CPU가 가상 주소로 메모리에 접근하려고 할 대, 우선 TLB에 접근하여 가상 주소에 해당되는 물리 주소를 찾고 TLB에 매핑이 존재하지 않으면 MMU가 페이지 테이블에서 해당되는 물리 주소로 변환한 후 메모리에 접근한다. 프로세스가 바뀔 경우, TLB를 모두 flush 해줘야 한다는 문제가 있다.

Computer/CS 2024.03.22

페이지 테이블(Page Table)

Page Table Paging address space를 연속적으로 할당하지 말고, 페이지라는 단위로 쪼개서 사용하는 것이다. 먼저, 프로세스의 메모리를 page 단위로 자르고, 실제 physical 메모리도 page 단위로 쪼갠다. 이 때 쪼개진 physical memory를 page나 page frame이라고 부른다. 그리고 이 virtual address의 page를 physical memory의 frame으로 mapping하는 방법이다. Page Table VPN(Virtual Page Number)를 PFN(Physical Frame Number)로 매핑해주는 table 각각의 프로세스는 자신만의 page table을 독립적으로 가지고 있으며, 각 프로세스의 page table이 저장되어 있는..

Computer/CS 2024.03.22

가상 메모리(Virtual Memory)

Virtual Memory 운영체제는 메모리가 실제 메모리보다 많아 보이게 하는 기술인 가상 메모리를 제공한다. 가상 메모리는 시스템이 프로그램을 실행시키는데 최소한 얼마만큼의 메모리가 필요한가에 대한 접근 방식으로, 실행에 필요한 일부분만 메모리에 로드하고 나머지는 디스크에 두고서 필요할 때마다 교체하면서 쓰는 방식으로 구현된다. Demand Paging 현재 필요한(요구되어지는) 페이지만 메모리에 올리는 것을 Demanding Paging(요구 페이징)이라고 한다. CPU 이용률과 처리율이 높아지고, 더 많은 사용자를 수요할 수 있다. Page table에서 해당 page가 메모리에 있는지를 나타내는 valid-invalid bit를 사용한다. bit가 invalid인 경우 페이지가 물리적 메모리에 ..

Computer/CS 2024.03.22

24.03.21 운영체제

운영체제 23. 컨디션 변수 쓰레드가 실행을 계속하기 전에, 특정 조건의 만족 여부를 검사해야 하는 경우가 있다. 그런 대기문은 어떻게 구현할까? 쓰레드가 특정 조건이 참이 될때까지 잠자면서 기다리는 방법이 좋다. 23.1 컨디션 변수의 개념과 관련 루틴 쓰레드 실행시, 특정 조건이 만족될 때까지의 대기를 위해 컨디션 변수(Conditional variable)라고 불리는 개념을 사용할 수 있다. 컨디션 변수는 일종의 큐 자료 구조이다. 컨디션 변수는 쓰레드 실행에서 어떤 상태(또는 어떤 조건)가 원하는 것과 다를 때 조건이 만족되기를 대기하는 큐이다. 다른 쓰레드가 실행되어 시스템의 상태를 변경시키고, 해당 조건이 만족되었을 때, 대기중인 쓰레드(하나 이상의 쓰레드가 깨어날 수도 있다.) 를 깨워 실행..

운영체제 22. 락 기반의 병행 자료 구조

22. 락 기반의 병행 자료 구조 자료구조에 락을 추가하면 해당 자료구조를 경쟁 조건으로부터 안전한 쓰레드 사용(thread safe) 자료 구조로 만들 수 있다. 락이 어떤 방식으로 추가되었느냐에 따라 그 자료구조의 정확성과 성능이 좌우된다. 22.1 병행 카운터 카운터는 가장 간단한 자료구조 중 하나이다. 보편적으로 사용되는 구조이면서 인터페이스가 간단하다. 간단하지만 확장성이 없다. 이 병행이 가능한 카운터는 간단하지만 정확하게 동작한다. 사실 이 카운터는 가장 간단하고 가장 기본적인 병행 자료 구조의 보편적인 디자인 패턴을 따른다. 자료구조를 조작하는 루틴을 호출할 때 락을 추가했고, 그 호출문이 리턴될 때 락이 해제되도록 하였다. 이 방식은 모니터(monitor)를 사용하여 만든 자료구조와 유사..

책/운영체제 2024.03.19

운영체제 21. 락

21. 락 프로그래머들은 소스코드의 임계영역을 락으로 둘러서 그 임계영역이 마치 하나의 원자단위 명령어인것 처럼 실행되도록 한다. 21.1 락 : 기본개념 락은 둘 중 하나의 상태를 갖는다. 첫 번째는 사용가능(available) 상태 (unblocked 또는 free) 이다. 즉, 어떤 쓰레드도 락을 소유하고 있지 않다. 두 번째는 사용 중(acquired) 상태이다. 즉, 임계영역에서 정확히 하나의 쓰레드가 락을 획득한 상태이다. lock과 unlock 루틴의 의미는 간단하다. lock() 루틴 호출을 통해 락 획득을 시도한다. 만약 어떤 쓰레드도 락을 갖고 있지 않으면 그 쓰레드는 락을 획득하여 임계영역 내로 진입한다. 이렇게 락을 획득한 쓰레드를 락 소유자(owner)라고 부른다. 만약 다른 쓰레..

책/운영체제 2024.03.18

24.03.17 운영체제, PintOS

운영체제 20. 병행성 : 개요 하나의 쓰레드의 상태는 프로세스의 상태와 매우 유사하다. 쓰레드는 프로그램 카운터와 연산을 위한 레지스터들을 가지고 있다. 만약 두 개의 쓰레드가 하나의 프로세서에서 실행 중이라면 실행하고자 하는 쓰레드는 반드시 문맥교환을 통해 실행중인 쓰레드와 교체 되어야 한다. 프로세스의 쓰레드들의 상태를 저장하기 위해서는 하나 또는 그 이상의 쓰레드 제어블럭(TCB : thread control block)이 필요하다. 프로세스와의 가장 큰 차이는 프로세스의 경우와 달리 쓰레드간의 문맥 교환에서는 주소공간을 그대로 사용한다는 것이다.(사용하고 있던 페이지 테이블을 그대로 사용하면 된다.) 쓰레드와 프로세스의 또 다른 차이는 스택에 있다. 고전적 프로세스 주소 공간과 같은 모델(단일 ..

운영체제 20. 병행성 : 개요

20. 병행성 : 개요 하나의 쓰레드의 상태는 프로세스의 상태와 매우 유사하다. 쓰레드는 프로그램 카운터와 연산을 위한 레지스터들을 가지고 있다. 만약 두 개의 쓰레드가 하나의 프로세서에서 실행 중이라면 실행하고자 하는 쓰레드는 반드시 문맥교환을 통해 실행중인 쓰레드와 교체 되어야 한다. 프로세스의 쓰레드들의 상태를 저장하기 위해서는 하나 또는 그 이상의 쓰레드 제어블럭(TCB : thread control block)이 필요하다. 프로세스와의 가장 큰 차이는 프로세스의 경우와 달리 쓰레드간의 문맥 교환에서는 주소공간을 그대로 사용한다는 것이다.(사용하고 있던 페이지 테이블을 그대로 사용하면 된다.) 쓰레드와 프로세스의 또 다른 차이는 스택에 있다. 고전적 프로세스 주소 공간과 같은 모델(단일 쓰레드 프..

책/운영체제 2024.03.17

운영체제 19. 완전한 가상 메모리 시스템

운영체제 19. 완전한 가상 메모리 시스템 19.1 VAX/VMS 가상 메모리 VMS는 컴퓨터의 구조적 결함을 소프트웨어로 보완한 훌륭한 사례다. 운영체제가 이상적인 개념과 환상을 제공하기 위해 하드웨어에 의존하지만, 하드웨어가 모든것을 해내지 못할 경우도 있다. 하드웨어 결함에도 불구하고 시스템이 효과적으로 작동하기 위해서 VMS 운영체제가 무엇을 하였는지 볼 것이다. 메모리 관리 하드웨어 VAX-11은 프로세스마다 512바이트 페이지 단위로 나누어진 32비트 가상주소 공간을 제공한다. 가상주소는 23비트 VPN과 9비트 오프셋으로 구성되어있다 VPN의 상위 두 비트는 페이지가 속한 세그멘트를 나타내기 위해서 사용되었다. 이 시스템은 하이브리드 구조를 갖고 있다. 주소공간의 하위 절반은 ‘프로세스 공간..

책/운영체제 2024.03.16

24.03.15 운영체제, PintOS

운영체제 18. 물리 메모리 크기의 극복 : 정책 빈 메모리 공간이 거의 없으면 운영체제는 메모리 압박(memory pressure)을 해소하기 위해 다른 페이지들을 강제적으로 페이징 아웃(Paging out)하여 활발히 사용중인 페이지들을 위한 공간을 확보한다. 내보낼(evict) 페이지 선택은 운영체제의 교체정책(replacement policy) 안에 집약되어 있다. 18.1 캐시관리 캐시 히트와 미스의 횟수를 안다면 프로그램의 평균 메모리 접근 시간(AMAT : average memory access time)를 계산할 수 있다. AMAT = TM + (PMISS - TD) TM : 메모리 접근 비용 TD : 디스크 접근 비용 PMISS : 캐시에서 데이터를 못 찾을 확률 메모리의 데이터를 접근하..

728x90