sw사관학교 정글 28

[React Native]URL 배너 생성 시 re-rendering 속도 최적화

후.. 또 어찌어찌 문제 하나 해결해냈다. 이번 건 꽤나 끙끙 앓았던 문제여서 그런지 해결하고 나니 엄청 속이 시원해지는 magic.. 1. Introduction: What is the problem? 지난 번 만들었던 라이브 커머스 방송에 접속했을 때 화면을 클릭하면 채팅창과 하트 날리는 버튼이 가려졌다 나타나는 기능에 더해, 실제 라이브 커머스 스트리밍에서 꼭 필요한 기능인 배너 이미지(하단 이미지 참조)를 만들었다. 스트리머가 URL을 입력하면 해당 URL로부터 이미지와 타이틀, description에 대한 메타데이터를 크롤링해 아래와 같이 배너가 만들어진다. 이를 해결하기 위해 react-native-url-preview 오픈 소스를 가져다가 사용했다. 문제는 오픈 소스로 제공하는 컴포넌트를 뜯..

React Native 2022.02.18

PintOS Project 4 - WIL(정글사관학교 92일차 TIL)

이번 주에는 설날도 겹치고 번아웃도 오고 여러 면에서 집중을 잘 못했다. 사실 다 변명이지..반성할 건 반성하고 털어낼 건 오늘 이 시간에서 털어내도록 하자. 이번주에 공부한 것들은 아래와 같다. 반효경 교수님 운영체제 강의 운영체제 - File system (1) File system 운영체제 - File system (2) File system implementation 운영체제 - File system (3) File system implementation 2 PintOS Project 4 - File Systems (1) Indexed and Extensible Files PintOS Project 4 - File Systems (2) Extensible Files Start 주말 하루는 푹 쉬기..

운영체제 - File system (3) File system implementation 2 (정글사관학교 87일차 TIL)

Page Cache and Buffer Cache page cache VM의 페이징 시스템에서 사용하는 페이지 프레임을 캐싱 관점에서 설명하는 용어 memory-mapped I/O를 쓰는 경우 file I/O에서도 page cache 사용! Memory-mapped I/O File 일부를 vm에 매핑 매핑시킨 영역에 대한 메모리 접근 연산은 파일 입출력을 수행하게 한다. Buffer cache 파일 시스템 통한 I/O 연산은 메모리 특정 영역인 buffer cache 사용 파일 사용의 locality 활용 한번 읽어온 블록에 대한 후속 요청시 버퍼 캐시에서 즉시 전달 모든 프로세스가 공용으로 사용하는 캐시! Replacement algorithm 필요(LRU, LFU 사용 가능 → 모든 정보를 운영체제에..

PintOS Project 3 - WIL(정글사관학교 84일차 TIL)

이번주에는 Pintos의 가상 메모리를 구현하는 작업을 수행했다. 공부 및 작업한 것들은 아래와 같다. 1. 진행 상황 운영체제 (4) 메모리 관리 - 1, 2 운영체제 (5) 메모리 관리 - 3 PintOS Project 3 - Virtual Memory (1) Memory Management PintOS Project 3 - Virtual Memory (2) Anonymous Page PintOS Project 3 - Virtual Memory (3) Stack Growth PintOS Project 3 - Virtual Memory (4) Memory Mapped Files PintOS Project 3 - Virtual Memory (5) mmap() 및 page fault 관련 추가 정리 Pin..

PintOS Project 3 - Virtual Memory (4) Memory Mapped Files (정글사관학교 81일차 TIL)

0. Memory Mapped files 개념 정리 이전 파트에서 다뤘던 anonymous page는 특정 파일에 매핑되지 않은 페이지를 다뤘다면, 이번에는 특정 파일과 매핑된(==file-backed) 페이지를 다룬다. 따라서 memory-mapped file은 곧 file-backed page와 연결된 파일을 뜻한다. 이 페이지 안의 내용은 이미 디스크에 존재하는 파일의 데이터를 복제하기 때문에 page fault가 발생했을 때 즉시 디스크->프레임에 할당된다. 메모리가 해제되거나 swap-out되면 메모리 내 변경 사항은 파일로 반영된다. 깃북 설명 링크는 여기. 여기서는 mmap과 munmap 함수를 구현한다. mmap은 이전에 malloc 공부할 때 잠시 다루기도 했는데, 그때는 단순히 페이지 ..

PintOS Project 3 - Virtual Memory (3) Stack Growth (정글사관학교 80일차 TIL)

하..현재 (2)에서 올 fail이 뜨는 상황이다..(혹시나 말하건대 제 글을 참조하며 코드를 짜는 분이 있다면 그러지 말라고 말씀을...그냥 개념 공부만 참조하세요..코드 다 터집니다..) 뒷 내용을 미리 땡겨 쓰다보니 터지지 않았을까 하는 작은 희망으로 무소의 뿔처럼 우직하게 일단 가본다. Gitbook 정리는 여기 링크에 해뒀다. 1. Stack Growth 정리 이번 과제는 stack growth. 이전 글(개노답글)에서도 잠깐 써놨지만, 프로젝트 2까지는 유저 스택이 고정된 크기를 지녔다. 이는 코드를 보면 알 수 있는데 #ifndef VM ... /* Create a minimal stack by mapping a zeroed page at the USER_STACK */ bool setup_..

나만의 무기 프로젝트 소개: 런칫챗(Lunchit-chat)

소셜 개더링(social gathering)을 위한 사내/외 직장인 대상 1대1 블라인드 런치 톡 서비스 1. 프로젝트 개요: 관심사 기반 매칭 방식의 블라인드 데이팅 앱 사내/외 구성원을 대상으로 점심 약속(식사 or 커피챗)을 주선해주는 매칭 기반 블라인드 데이팅 서비스 기본 골조는 데이팅 앱 형식(틴더 참조)을 따름. 데이팅 앱은 아니기에 성별 기반 매칭은 하지 않음(남남/여여/남녀 모든 조합 가능) 1) 가입 이메일 인증 방식으로 가입 구현(앱 특성상 회사 이메일 인증 필수) - 해당 회사 인증해야만 가입 가능 인증을 완료하면 프로필 설정으로 넘어감. 자신을 직접적으로 드러내는 사진/이름은 설정할 수 없으며 대신 간접적으로 관심사/취향을 사전에 입력 ->추후 추천 시스템 알고리즘에 반영할 계획 관..

PintOS Project 3 - Virtual Memory (2) Anonymous Page (정글사관학교 79일차 TIL)

바로 2번째 과제 달린다. 이번에는 Anonymous Page를 구현하는 것이 과제 목표. Gitbook 정리는 아래 노션 링크를 통해 참고하도록 하자. Part 2: Anonymous Page Anonymous: 어떤 파일과도 연결되지 않은 페이지를 뜻함. 주로 stack or heap에 사용된다. woony.notion.site 0. Anonymous page 정리 전에 권영진 교수님 강의 말미에서 잠깐 나왔던 개념인데, 드디어 다루게 되다니 감개무량하다. 페이지에는 크게 두 가지 종류가 있다. 1. Anonymous page: 어떤 파일과도 연결되지 않은 페이지 2. File-backed page: 파일과 매핑된 페이지(즉, 페이지 안에 파일이 들어있는) 어차피 File-backed page는 나중..

PintOS Project 3 - Virtual Memory (1) Memory Management (정글사관학교 78일차 TIL)

첫 번째 과제는 supplemental page table 구현이다. 이를 위해 supplemental page table이 무엇인지 먼저 간단히 살펴보자. supplement page table은 이전에 정리했던 개념인 다단계 페이지 이제 과제 개요를 살펴본다. 0. 과제 개요 Implement supplemental page table management functions in `vm/vm.c`. 우리의 핀토스는 pml4라는 페이지 테이블을 갖고 있는데 얘는 가상 메모리와 물리 메모리 간 매핑을 관리한다. 하지만, 이것으로 충분치 않음. 이전 섹션에서 논의했듯, 우리는 page fault와 자원 관리를 다루기 위해서 각각 페이지에 대한 추가 정보를 들고 있는 supplementary page tabl..

운영체제 (5) 메모리 관리 - 3(정글사관학교 77일차 TIL)

한동안 TIL 정리가 많이 밀렸다. 다시 정신차리고 가보자!! 메모리 관리 3 Multilevel Paging and Performance address space가 커지면 다단계 페이지 테이블이 필요하다. (why? 사용하지 않는 공간을 엔트리로 넣어야 하니 페이지 테이블이 커져서 비효율 증가) 이러면 페이지 테이블에 여러 번 접근해야 한다. ex) 4단계 페이지 테이블이면? 4번 접근해야 한다. 그런데도 다단계 페이지 테이블을 쓸 수 있는 이유는? TLB! ex) 메모리 접근 시간이 100ns, TLB 접근 시간이 20ns이고 TLB hit ratio = 98%라면? effective memory access time = 0.98 * 120(100*1 + 20*1) + 0.02 * 520(100*4 ..