정글사관학교 개발일지 89

[LeetCode][Java/Python]53. Maximum Subarray

Java Solution class Solution { public int maxSubArray(int[] nums) { //Solution 1: my solution /** Runtime: 9 ms, faster than 5.84% of Java online submissions for Maximum Subarray. Memory Usage: 74.1 MB, less than 41.86% of Java online submissions for Maximum Subarray. 시간복잡도: O(n) - 아래 나올 Solution 2와 동일한 시간복잡도이나 매번 dp 값을 갱신하기 위해 참조해야 하는 점에서 중간에 품이 들어가는 듯. 공간복잡도: O(n) - dp array를 n개 원소만큼 생성해야 함 */..

[나만의 무기 3일차] 1주차 정리 + NodeJS 개념 정리(정글사관학교 95일차 TIL)

왐마..진짜 정신없이 한 주가 지나갔다. 1. 나만의 무기 0주차 소회 핀토스가 끝나고 본격적으로 나만의 무기 프로젝트에 들어갔다. 우리는 처음에 내놓은 아이디어였던 런치챗을 더 디벨롭시키기로 하고 아이디어 회의를 시작했다. 하지만 시작부터 난관에 부딪혔는데, 바로 이 서비스를 왜 써야 하는가?가 명확하지 않았기 때문이다. 왜 굳이 사내 다른 직원 혹은 사외 직원을 익명으로 만나서 밥먹어야 하나. 명확히 커리어 관련 문제를 해결하겠다는 목적도 아니고, 그렇다고 아예 소개팅도 아닌 어정쩡한 포지셔닝임을 깨닫고 고민에 빠졌다. 그러다 나온 아이디어는 "재택 직장인이라면 얘기가 다르지 않을까?"였다. 처음에 제시한 솔루션이 비타민이었다면 재택근무 하는 직장인이 겪는 식사 문제는 pain point였다. 식비는..

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 주말 하루는 푹 쉬기..

PintOS Project 4 - File Systems (2) Extensible Files(91일차 TIL)

간만에 잘 쉬다 왔다! 가서 텅 비우고 왔으니 다시 꽉꽉 채워보자! 0. 과제 관련 개념 정리 저번 글에서 첫번째 과제를 다 구현한 것처럼 적어놨지만, 사실은 반쪽만 구현해놓은 상태이다. 저번 과제에서는 기존에 연속 할당으로 디스크에 저장하는 방식을, FAT 테이블을 구현하고 디스크 내 클러스터 위치를 테이블에 저장하는 방식으로 변경하는 작업(Indexed Files)을 수행했다. 과제에서는 이어서 File growth를 구현하라고 했다. 이는 무엇인가? 확장 가능한 파일을 구현해라. 기본 파일 시스템에서, 파일 크기는 파일이 생성될 때 정해진다. 하지만 대부분 현대 파일 시스템에서는 파일은 처음에 사이즈 0으로 생성되고 매 시간 write가 완료될 때마다 크기가 확장된다. 우리의 파일 시스템은 반드시 ..

PintOS Project 4 - File Systems (1) Indexed and Extensible Files(정글사관학교 88일차 TIL)

Gitbook 정리는 요기! Indexed and Extensible Files 기본 파일 시스템은 파일을 단일한 범위(연속 할당한다는 의미인듯)로 파일을 할당하는데, 이는 외부 단편화에 취약하다. 즉, 이는 n개의 블록이 가용 상태임에도 n개 블록을 점유해야 하는 파일 woony.notion.site 0. 과제 개요 이번 과제에서는 FAT 파일 시스템을 구현하는 것이 목표이다. Gitbook 설명을 보면 현재 파일 시스템 구조는 연속 할당 방식이라는 것을 알 수 있다. 이전 글에서도 설명했듯, 연속 할당 방식은 하나의 파일이 디스크 상에 연속적으로 저장되는 방식을 뜻하며 이는 외부 단편화에 취약한 구조이다. 이를 FAT file system으로 변환하면, FAT에 파일 위치 정보를 저장하고 이를 메모리..

잠깐의 소회(정글사관학교 87일차 TIL)

번아웃이 온 건가.. 요근래 아침에 제대로 일찍 일어나본 적이 없다. 심지어 어제는 뭘 잘못 먹었나 계속 근육통에 배도 아프고 하지를 않나..반대로 말하면 정글에 끝이 다가오고 있다는 뜻이기도 하다. 사람 몸이란게 참 간사한 게, 만약 지금이 정글 중반이었다면 그것대로 긴장이 빡 들어있었을 텐데, 10개월짜리 캠프면 10개월에 맞춰서, 5개월이면 그것대로 맞춰서 긴장이 느슨해지나 싶다. 어제는 같이 공부하는 형이랑 상담을 빙자해 긴 대화를 나눴다. 꼭 정글이라서가 아니라, 사실 이런 류의 프로그램에 오랜 기간 머무르게 되면 반드시 생길 수밖에 없는 문제가 있다. 이른바 "세계관의 축소"인데, 예전에 쓴 글에도 이와 관련된 내용이 있다. 사람이 성장하는 데 있어 그릇의 크기를 결정하는 파라미터는 세계관이다..

운영체제 - 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 사용 가능 → 모든 정보를 운영체제에..

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

File system Implementation 1 파일 접근 방법(Access Method) 파일 접근 방법은 시스템이 제공하는 파일 정보의 접근 방식을 뜻한다. 디스크가 파일에 접근하는 방식은 순차접근과 직접 접근 두 가지 방식이 있다. 1) 순차 접근(sequential access): 카세트 테이프를 사용하는 것처럼 접근하는 방식이다. a-b-c 순으로 정보가 저장되어 있다고 하면, a, c만 접근하고 싶다고 해도 c에 접근하기 위해서는 반드시 b를 거쳐가야 한다. 2) 직접 접근(direct access, random access): LP 레코드판과 같이 해당 위치에 다이렉트로 이동해 접근하는 방식을 뜻한다. 임의로 접근한다기보다 어디에 있든 해당 위치로 바로 접근하는 방식을 뜻한다. 예컨대 1..

운영체제 - File system (1) File system (정글사관학교 85일차 TIL)

오늘은 file system 이론 공부를 진행했다. 공부자료는 반효경 교수님의 운영체제(갓효경..) https://woony.notion.site/File-system-9cb913a86d3a435fa92b8b9fe24fa687 File system File and File system woony.notion.site File system File이란? 파일은 하드디스크에 저장하는 정보의 단위(A named collection of related information)이다. 메모리가 주소를 통해 접근하는 장치라면 파일은 이름을 통해 접근하는 정보 단위로, 관련 정보를 파일 이름을 가지고서 저장한다. 파일은 일반적으로 비휘발성 보조 기억 장치에 저장한다. 리눅스의 경우, 파일이라는 형태를 단순히 데이터 저장..

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..