일단 씻고 나가자

23.05.01 본문

Study/닥치는 대로 주워 담기

23.05.01

일단 씻고 나가자 2023. 5. 2. 00:22

2023. 05. 01 월요일

 

- 다중 단계 페이징 시스템이란?

: 기존 페이징 시스템은 인덱스의 접근이므로 사용하지 않는 부분이더라도 4GB의 모든 공간을 페이지로 만들었어야 했지만, (상위 20bit 페이징 번호, 하위 12bit offset) 다중 단계는 외부 페이지 테이블을 만들어 모든 인덱스에 관해선 공간을 만드나, 실제 내부 페이지 테이블에선 빈 공간에 대하여 null로 내버려 두므로 공간적 이득을 볼 수 있다. (상위 10bit 페이지 디렉터리 정보, 10bit 해당 디렉터리의 페이지 테이블, 하위 12bit offset)

, 기존 페이징 시스템은 시간적 이득을, 다중 단계 페이징 시스템은 공간적 이득을 본다. (최초 실행 시간도 단축. 자주 사용하는 부분만 먼저 만들고, 나중 접근 부분은 나중에 생성.)

리눅스는 3단계로 나누었다가, 최근엔 4단계로 나누기도 한다. (32bit -> 64bit)

 

 

- TLB란 무엇이며, CPU의 요청 순서도를 CPU, MMU, TLB, Memory 관점에서 설명?

: Translation Lookaside Buffer. MMU가 매번 memory에 접근하여 물리 주소를 전달하는 것은 많은 클럭을 요하므로 그 시간을 줄이기 위한 캐쉬. 최근에 CPU가 요청한 가상 주소에 대한 물리 주소를 담고 있다.

 

1. CPU가 가상 주소 요청.

2. MMU가 해당 가상 주소가 TLB에 있는지 확인.

3. 없다면 해당 프로세스의 CR3로 메모리에서의 해당 프로세스 페이지 테이블 접근.

4. 가상 주소에 대한 물리 주소 받음.

5. 해당 물리 주소로 접근하여 데이터 접근.

6. CPU에게 데이터 전달.

 

 

- 요구 페이징과 선행 페이징이란? 페이지 폴트?

: Demand Paging / anticipatory paging(prepaging)

선행 페이징이란 프로세스의 탄생 이후 모든 내용을 미리 메모리에 올려놓는 운영체제의 알고리즘이며, 요구 페이징이란 프로세스의 모든 데이터를 메모리에 적재하지 않고 CPU가 해당 정보를 원할 때 필요한 시점에서만 메모리에 올리는 방법이다. (첫 요청 시 올려놓음)

 

페이지 폴트란 요구 페이징 기법에서 메모리에 CPU가 필요한 정보를 올리는 방법과 관련된 인터럽트이다. 페이지 테이블에 valid bit0일 경우 해당 물리 주소가 존재하지 않는다는 뜻이므로 그럴 때 invalid 상태일 때 운영체제에 인터럽트 신호를 보내며, 운영체제는 그때 해당 페이지를 메모리에 올린다. 이후 CPU에게 해당 주소를 다시 요청할 것을 알린다.

 

페이지 폴트가 자주 일어나면 인터럽트가 많이 걸리므로 당연히 시간이 오래 걸려 성능 저하가 생긴다. 근본적인 해결책은 요청할 부분을 미리 메모리에 올려놓는 방법이지만 미래의 일을 알 수 없으므로, 차선으로 페이지 폴트를 적게 수행할 수 있도록 정해놓은 알고리즘이 페이지 교체 정책(page replacement policy)이다.

 

 

- 인터럽트? IDT?

: user mode에서 특정 조건 때에 kernel mode로 바꾸어 운영체제가 처리하도록 하는 알림.

대표적으로 timer interrupt가 있으며, 시간을 계산하는 칩에 의해 kernel mode로 변환시킨다. timer interrupt는 하드웨어 인터럽트이며, 시스템 콜은 소프트웨어 인터럽트이다.

 

운영체제는 인터럽트마다 처리할 내용을 담은 코드를 기록해놓는데, 해당 인터럽트의 종류와 그 종류 때에 처리할 코드가 쓰여 있는 주소가 담긴 곳이 IDT(Interrupt Descriptor Table)이다. 이는 운영체제가 컴퓨터 부팅 시에 최초로 기록한다. (0x80 -> system_call())

 

 

- [Java] a 문자열의 접두사, 접미사가 b인지 확인하는 함수?

: a.ends/startsWith(b)

 

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.05.03  (0) 2023.05.04
23.05.02  (0) 2023.05.03
23.04.28  (0) 2023.04.29
23.04.27  (0) 2023.04.28
23.04.26  (0) 2023.04.28