. '분류 전체보기' 카테고리의 글 목록 (3 Page)
본문 바로가기

분류 전체보기111

Node.js phase 간단 정리 Node.js 특징 - Single-Thread의 non-blocking I/O 이벤트 기반 비동기 방식으로 작동한다. 하지만 Main-thread만 single일 뿐, 실제 작업은 worker threads pool에 있는 스레드들이 작업한다. 흔히 말하는 event loop가 main thread의 별칭이다 (반대로 libuv는 worker threads pool을 의미한다.). 이 event loop는 non blocking 방식으로 일을 처리하기 때문에 빠른 IO 성능을 가진다. 즉 , Event loop이란, Node.js의 메인 스레드로서, 싱글 스레드로 구성되지만 블로킹 될만한 것을 논블로킹 되게 만들어(worker thread로 작업을 넘겨줘서) node.js가 자원대비 효울적으로 충분히 .. 2021. 5. 2.
디자인 패턴 (작업중...) 0. 인터페이스 ㆍ기능에 대한 선언과 구현 분리 ㆍ기능을 사용하는 통로 인터페이스는 메서드의 선언만 하며, 상세한 구현은 클래스에서 한다. 여기서 예를 들어 보자. 이 밑으로 패턴에 대해서 설명할 때 다음과 같이 설명할 것이다. I. 개요 : 패턴에 대한 한줄 설명 II. 원인 : 패턴이 등장한 이유를 설명 III. 특징 : 패턴의 장점 등을 설명 이 위 3줄 자체는 패턴에 대한 설명이 될 수 없다. 구체적인 내용이 없기 때문이다. 하지만, 이 아래로, 패턴에 관해 설명할 때 I. II. III.들을 각 패턴에 맞게 적어야한다. 이 때, 인터페이스를 기반으로 클래스를 통해 구현하는 것이 된다. 1. 생성 패턴 (추상 객체 인스턴스화) 1) Factory Method I. 개요 : 상위 클래스와 하위 클래.. 2021. 4. 28.
객체 지향 프로그래밍이란 객체 지향 프로그래밍이란? Class와 Object의 차이는? Class : Object를 만들어 내기 위한 템플릿 Object : Class에 data를 투입하여 구현해야할 대상 Instance : Object를 메모리에 할당하여 실제로 사용할 때 Instance라고 한다. (object와 Instance는 본질적으로 같지만, class로 이걸 만들 것이다! 라고 생각했을 때, '이걸'이 의미하는 것은 Object이고, class로 이걸 만들었다! 했을 때, '이걸'이 의미하는 것은 Instance이다. 어렵다. 씁.) field와 method란? Field : class 안에서 선언되는 변수를 말한다. field를 선언할 때는 접근 지정자, field의 type, field의 이름, 이 세가지를 정해.. 2021. 4. 27.
HTTPS (대칭키와 비대칭키) youtu.be/H6lpFRpyl14 1. 클라이언트는 랜덤 데이터를 생성해서 서버로 보낸다. 2. 이를 받은 서버는 자신이 만든 랜덤 데이터와 서버의 인증서를 실어보낸다. -> 핸드셰이킹 통신 완료 3. 이 인증서는 서버의 개인키로 암호화가 되어있기 때문에, 브라우저 안에 내장된 CA의 공개키로 복호화가 가능하다. 이것이 가능하면 해당 사이트는 인증받은 사이트인 것이다. 4. 인증서 안에는 서버의 공개키가 있기 때문에 복호화에 성공하면 클라이언트는 서버의 공개키를 가지게 된다. -> 비대칭키 시스템으로 계속 통신하는 것은 연산의 부담이 심하기 때문에 여기서부터는 대칭키 시스템을 사용한다. 5. 클라이언트는 맨 처음 주고받았던 랜덤 데이터를 활용해서 임시키를 만든다. 6. 이 임시키는 서버의 공개키로 암.. 2021. 4. 22.
파일을 열고 읽어보자 원래 파이썬으로 알고리즘을 풀 때, 직접 입력값을 넣고 하나하나 받아가면서 했지만, 이제 머리 좀 찼으니 멋지게 파일로 받아서 풀어보려고 한다. 그래서 이번 시간에는 파일 생성하기에 대해서 공부해볼려고 한다. 04-3 파일 읽고 쓰기 - 점프 투 파이썬 (wikidocs.net) 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 윗 글에서 보고 배웠다. 파이썬의 open 함수에는 3가지 기능이 있다. 파일 열기 모드 설명 r 파일을 읽기만 할 때 :: 읽기만 가능 w 파일에 쓸 때 :: 기존에 내용이 있어도 다 날리고 새로 씀 a 추가 모드 :: 기존 파일 뒤에 덧붙인다. 여기서 주의해야 할 것은 'w' (귀여운 이모티콘 아님. w임) 일 때, 기존에 내용이 있어도 다 날리고 새롭.. 2021. 4. 19.
[PintOS, Project 4] Buffer Cache 구현 히히히 이걸 언제 다해 ++++ 벌레잡기 ++++ page를 만들지 못한다. 왜일까 이걸 initializer에서 해줄려고 해서 문제일까? (hash가 만들어지기도 전에) hash는 supplemental_page_table에서 해주는데 흠.... cache_init은 스레드만 만들고 페이지를 만드는 것은 여기서 하면 안되는걸까 이걸 함수로 따로 만들고, setupstack할 때, 같이 만들어 봐야겠따. void create_cache_page(void) { list_init(&cache_list); for (int i = 0 ; i < 8 ; i++) { void *tmp = UNDER_STACK - PGSIZE*(i+1); struct cache_entry *entry = malloc(sizeof(s.. 2021. 3. 8.
[PintOS, Project 4] Buffer Cache Modify the file system to keep a cache of file blocks. When a request is made to read or write a block, check to see if it is in the cache, and if so, use the cached data without going to disk. Otherwise, fetch the block from disk into the cache, evicting an older entry if necessary. You are limited to a cache no greater than 64 sectors in size. file block을 cache로 보존하기 위해 file system을 수정하라. bloc.. 2021. 3. 6.
[PintOS, Project 4] File Growth 구현 [PintOS, Project 4] Indexed and Extensible Files (tistory.com) [PintOS, Project 4] Indexed and Extensible Files Indexed and Extensible Files The basic file system allocates files as a single extent, making it vulnerable to external fragmentation, that is, it is possible that an n-block file cannot be alloc.. firecatlibrary.tistory.com 할 일을 정리해보자. 원래는 inode_create()에서 인자로 length (파일의 크기) 를 받았다. 그.. 2021. 3. 5.
[PintOS, Project 4] Directory.c 공부 디렉토리 날새게 날려가요 햄토리 챗바퀴를 돌려봐요 햄토리 제일 좋아하는건~ 닭도리 아싸라비야 고도리 맨손으로 때려잡은 북경오리 이건 너와 나의 연결고리 .... 디렉토리 공부를 시작하자 /* A directory. */ struct dir { struct inode *inode; /* Backing store. */ off_t pos; /* Current position. */ }; directory 구조체이다. 이것만 봐서는 뭘 말하는건지 모르겟다. 단지 inode를 가지고 있을 뿐이다. inode_sector가 아니라 inode를 가리키는 거 보니 이것도 memory에 올리는 놈인가? /* A single directory entry. */ struct dir_entry { disk_sector_t .. 2021. 3. 5.
[PintOS, Project 4] Filesys.c 구현 이번에는 좀 나대보도록 하겠다. 공부와 동시에 바로 구현에 들어간다. /* Initializes the file system module. * If FORMAT is true, reformats the file system. */ void filesys_init (bool format) { filesys_disk = disk_get (0, 1); if (filesys_disk == NULL) PANIC ("hd0:1 (hdb) not present, file system initialization failed"); inode_init (); #ifdef EFILESYS fat_init (); if (format) do_format (); fat_open (); #else /* Original FS */ .. 2021. 3. 4.
[PintOS, Project 4] inode.c 구현 ※ 이 글은 Project 4를 구현중인 불확실과 추론의 영역입니다. 특히 이부분은 다른 곳을 구현하면서 수정할 여지가 높은 곳입니다. 착한 어린이들은 따라하지 마세요. 우선 inode_create부터 만들어보자. 이 함수는 인자로 받은 sector에 찾아가 inode_disk를 sector에 넣고 연속적으로 실제 데이터를 넣을 sector를 확보해놓는 것이다. 여기서 바꿀 곳은 free-map (bitmap)으로 빈 sector를 찾던 것을 FAT free block list로 바꾸고, 실제 data도 비연속할당으로 넣는 것이다. /* Initializes an inode with LENGTH bytes of data and * writes the new inode to sector SECTOR on .. 2021. 3. 4.
[PintOS, Project 4] fat.c 구현 ※ 이 글은 Project 4를 구현중인 불확실과 추론의 영역입니다. 특히 이부분은 다른 곳을 구현하면서 수정할 여지가 높은 곳입니다. 착한 어린이들은 따라하지 마세요. ※ fat.c 공부때랑 좀 달라진 곳이 많다. 혹시나 참고하셨던분들은 죄송합니다. ㅎㅎ;; void fat_fs_init (void) { /* TODO: Your code goes here. */ /* ---------------------------- >> Project.4 FAT >> ---------------------------- */ fat_fs->fat = NULL; fat_fs->fat_length = fat_fs->bs.fat_sectors; fat_fs->data_start = fat_fs->bs.fat_start+fa.. 2021. 3. 4.
[PintOS, Project 4] inode.c 공부 ※ 이 글은 Project 4를 본격적으로 시작하기 전, 추론의 영역입니다. 기존시스템은 bitmap으로 디스크를 관리하고 있다. 그리고 inode.c는 bitmap 기반으로 짜여져있다. 그런데 이제 FAT를 도입했으니 bitmap을 다 지워고 FAT 기반으로 다 깔아야된다. 그 말은 filesys나 file에 관련된 것들을 전부 갈아엎어야한다는 것이다. 심지어 bitmap은 연속할당이었으나, FAT은 연속할당도 아니다. 마치 1x1 레고 블록을 드렸으니 이걸로 도시를 만들어보세요라는 느낌이다. 시발 일단 inode.c부터 공부해보자. /* On-disk inode. * Must be exactly DISK_SECTOR_SIZE bytes long. */ struct inode_disk { disk_se.. 2021. 3. 4.
[PintOS, Project 4] fat.c 공부 ※ 이 글은 Project 4를 본격적으로 시작하기 전, 추론의 영역입니다. /* FAT FS */ struct fat_fs { struct fat_boot bs; unsigned int *fat; unsigned int fat_length; disk_sector_t data_start; cluster_t last_clst; struct lock write_lock; }; FAT FS라고 함은 한 파일 내에서 사용하는 FAT인 것 같다. fat_boot : 전체 파일 시스템의 정보가 담겨있는 것이라고 생각된다. fat_length : FS 안에 들어가있는 sector의 갯수 data_start : 비어있는 첫 sector last_clst : file이 할당받은 cluster 중, 마지막 cluster?.. 2021. 3. 3.