미새문지

크래프톤 정글 week07, day58 - demand paging, TLB, 추상화 디자인, 잔디심기 본문

크래프톤 정글/TIL

크래프톤 정글 week07, day58 - demand paging, TLB, 추상화 디자인, 잔디심기

문미새 2024. 3. 5. 23:58
728x90

demand paging

  • 운영체제에서 사용하는 메모리 관리 전략 중 하나로, 프로그램 실행 시 모든 메모리를 물리적 메모리에 적재하는 대신, 필요한 페이지만 메모리에 적재하는 방식
  • 프로그램이 실행되기 위해서는 그 프로그램의 모든 코드와 데이터가 물리적 메모리에 적재되어야 하지만, 특정 함수는 실행 중에 한 번도 호출되지 않을 수 있고 또한 프로그램이 크면 모든 데이터를 메모리에 적재하는 것은 메모리 자원을 낭비하게 된다.
    • 이런 문제를 해결하기 위해 demand paging 전략이 사용된다.
  • 이 전략을 프로그램 실행 시 필요한 페이지만 메모리에 적재하고, 나머지 페이지는 디스크에 남겨두며, 이후 필요에 따라 메모리에 적재한다.
    • 이를 통해 메모리 사용량을 줄이고 시스템의 전반적인 효율성을 향상 시킬 수 있다.
  • 프로그램 실행 중 메모리에 없는 페이지에 접근하려고 하면 페이지 폴트(page fault)가 발생하고 이 때, 운영체제는 해당 페이지를 디스크에서 메모리로 적재하게 된다.

 

Design 기법

  • Principle(원칙)
    • 효과적인 디자인을 만드는데 도움이 되는 가이드 라인이나 규칙을 의미한다.
    • 이는 디자인의 방향성을 제시하며, 디자인 결정을 내리는데 필요한 틀을 제공한다.
    • 예시) 일관성, 가시성, 유저 중심성 등
  • Transferable Thought(전이 가능한 생각)
    • 한 문맥에서 배운 개념이나 아이디어를 다른 문맥에 적용하는 능력을 말한다.
    • 디자인에서 이는 새로운 문제에 대한 해결책을 찾는데 유용하며, 기존의 아이디어를 새로운 방식으로 활용하거나, 다른 분야에서 가져온 아이디어를 특정 디자인 문제에 적용하는데 사용된다.

 

TLB(Translation Lookside Buffer)

  • 가상 메모리 시스템에서 빠르게 가상 주소를 물리 주소로 변환하기 위한 하드웨어 캐시
  • 컴퓨터 메모리 관리에서는, 주소 공간을 관리하기 위해 가상 주소를 사용하는데, 프로그램은 이 가상 주소를 사용해 메모리에 접근하지만, 실제 데이터는 물리 메모리에 저장된다.
    • 따라서 가상 주소를 물리 주소로 변환하는 과정이 필요하고, 페이지 테이블이라는 데이터 구조를 사용한다.
  • 그러나 페이지 테이블을 사용해 가상 주소를 물리 주소로 매핑하는 과정을 상당한 시간이 소요되는데, 이를 해결하기 위해 TLB가 도입됐다.
    • TLB는 최근에 사용된 주소 변환의 결과를 저장하며, 필요할 때 빠르게 접근할 수 있게 한다.
    • 이를 통해 가상 주소를 물리 주소로 변환하는 시간을 크게 줄일 수 있다.
  • 필요한 주소 변환 정보가 TLB에 없을 경우, 운영체제는 페이지 테이블을 검색해 해당 정보를 찾아내고, 이를 TLB에 로드한다. 이 후 동일한 주소 변환이 필요할 경우, TLB를 통해 빠르게 변환 정보를 얻을 수 있다.

 

Abstractions Design(추상화 디자인)

  • 추상화 디자인은 복잡성을 관리하는 방법 중 하나로, 복잡한 시스템, 프로세스 또는 개념을 더 단순하고 이해하기 쉬운 형태로 변환하는 것을 의미한다.
    • 이는 사용자가 필요하지 않은 세부 정보로부터 자유롭게 하여, 사용자가 시스템의 핵심 기능에 집중할 수 있도록 돕는다.
    • 예시로는 운영체제가 있는데, 운영체제는 사용자와 하드웨어 사이의 인터페이스 역할을 하며, 사용자가 직접 하드웨어를 제어하는 복잡성을 추상화한다.
      • 이로 인해 사용자는 파일을 저장하거나 프로그램을 실행하는 등의 작업을 하드웨어의 세부 사항을 알지 못해도 수행할 수 있다.
    • 또 다른 예시로는 프로그래밍 언어가 있는데, 프로그래밍 언어는 개발자가 컴퓨터 하드웨어에 직접 명령을 내리는 대신, 더 높은 수준의 언어를 사용해 애플리케이션을 작성할 수 있게 해준다.
  • 추상화의 핵심 목표는 사용자에게 필요한 정보와 동작만을 제공하고, 외의 복잡한 세부 사항은 숨김으로써 단순화하는 것이다. 이는 사용자 경험을 향상시키고, 시스템 사용자가 주요 작업에 집중할 수 있게 돕는 중요한 디자인 기법이다.

오늘의 잔디심기

백준
5338
자바스크립트
브론즈5
마이크로소프트 로고
console.log("       _.-;;-._");
console.log("'-..-'|   ||   |");
console.log("'-..-'|_.-;;-._|");
console.log("'-..-'|   ||   |");
console.log("'-..-'|_.-''-._|");

 

pintOS 학습하느라 잔디를 심기가 애매해서 잔디 끊기지 않게 제일 쉬운 출력 문제 풀었다. 

 

에린씨와 같이 학습한 세마포어를 이용한 timer_sleep은 구현하진 못했지만, 예비군에서 돌아온 재남씨와 에린씨가 같이 개같이 굴러서 timer_sleep을 구현했다. 본인은 pintOS에 대한 지식이 아직 부족해 옆에서 손가락만 빨아버렸다.

그리고 이어서 재남씨가 폭주해서 priority 테스트도 바로 클리어해버렸다. 진짜 멋있는 사람

오늘 걸렸던 부분은 실행중인 스레드와 다음에 올 스레드를 교체해줘야 하는데 그 부분에서 많이 버벅였다가 다른 팀원의 조언으로 해결했다.

오늘 7주차 퀴즈도 봤는데 퀴즈 관련 문제들은 내일 올릴 예정

 

학습 시간 : 9 ~ 24시

728x90