본문 바로가기

분류 전체보기

(249)
처음 본 개발자용 블로그 플랫폼. Velog 우연찮게 지나가다가 처음 봤다. 내세운 컨셉 자체도 개발자를 위한 블로그 플랫폼이다. 지나간 겸 흥미로워 보여서, 계정 계설까진 안하고 그냥 눈에 보이는 것만 캡쳐해서 기록해본다. 메인 페이지는 다음과 같이 뜬다. 포스팅 하나 들어가봤다. 왼쪽 상단에 박혀있는 Velog 로고. 포스팅 상단에는 글쓴이의 정보와 간단한 소개글 글 오른쪽엔 ToC (Table of Content) 마크다운으로 써야 아마 ToCBot 같은 애들이 Content 텍스트를 잡아올텐데, 아마 마크다운으로 필히 써야하는 듯 768px 의 포스팅 공간 (Container) 포스팅 공간의 폰트는 뚜렷한 명조체 그 외 Series? 같이 목록리스트를 제공 아마 이런 비슷한 느낌의 위젯들이 더 있지 않을까 싶다. 좋은데? 음... 해외에서 ..
빽 투더 기본기 [OS 8편]. 가상 메모리 관리 1. 가상 메모리 개념 1.1. 등장 배경 프로그램을 실행하는 동안, 우리는 프로그램이 필요로 하는 모든 메모리를 동시에 사용하지 않는다. 즉, 현재 프로세스가 필요로 하는 메모리만, 메인 메모리에 로드하고, 추후 실행될 영역은 보조 메모리에 저장해둔다. 필요할 때만 Swapping (메인 메모리 보조 메모리) 하면 되는 셈. 이렇게 하면, 메인 메모리보다 큰 프로그램을 실행시킬 수 있다. 이렇게, 보조 메모리를 활용한 메모리 시스템을 가상 메모리 시스템이라고 한다. 1.2. Demand Paging 1) 개념 요구 페이징(Demand Paging) 은 페이징 시스템에 Swapping을 결합한 것. 위에서 설명한 것과 같다. Swapping 을 요구 될 때만 하기 때문에, lazy swapper 라고도 ..
빽 투더 기본기 [OS 7편]. 메모리 관리 2 1. 페이지 테이블 구현 1.1. 페이지 테이블과 메모리 이슈 페이지 테이블도 메모리에 저장되어있다. 기준 레지스터 Page Table Base Register (PTBR) 페이지 테이블의 시작 주소가 저장되어있다. CS(Context Swithching) 시 페이지 테이블 교체 비용이 적다 PTBR 값만 변경 메모리 접근 시간 문제 메모리 접근시간 2배 하나의 메모리 접근을 위해 페이지 테이블을 거쳐야 하므로, 메모리를 2번 읽게 되고, 결과적으로 접근시간은 2배 걸림 TLB (Translation Look-aside Buffer) 페이지 테이블의 캐싱으로 해결 1.2. TLB 메모리에 있는 페이지 테이블과 다르게, 캐시 메모리(하드웨어)에 별도로 (페이지 넘버 - 프레임 넘버)에 대한 매핑 정보를 담..
빽 투더 기본기 [OS 6편]. 메모리 관리 1 0. 들어가기 전, 알아야 할 상식 운영체제의 선수과목인 시스템 프로그래밍 내용 중, 운영체제와 매우 밀접하게 연관된 내용이 있는데, 이 부분을 먼저 알아야 한다. 바로 컴파일러, 어셈블러, 링커, 로더에 대한 기본 이해다. 먼저 이 개념을 명확히 하고가자. 내용은 https://seohs.tistory.com/259 을 참고했다. 먼저, 하나의 코드가 프로그램이 되고, 프로그램이 프로세스가 되는 과정은 다음과 같다. 코드 작성 -- (컴파일) --> 오브젝트 파일 -- (링킹) --> 실행 파일(=프로그램) -- (로드) --> 메모리 적재 및 수행(=프로세스) 컴파일러 ​ 사용자가 작성한 원시코드를 컴퓨터가 읽을 수 있는 형태의 오브젝트 파일로 만드는 프로그램 어셈블러 ​ 어셈블리어 코드를 기계어 코..
Catboost 주요 개념과 특징 이해하기 비교적 가장 최근에 등장한 Catboost 에 대해 관심이 생기던 찰나, 최근에 Medium Article 로 Catboost 를 잘 정리해놓은 글이 있어, 이를 참고하여 Catboost 에 관한 내용들을 정리해본다. (참고가 아니라 사실상 거의 번역일 거 같다...) Catboost 하면 그냥 데이터에 범주형 변수 많을 때 유용한 모델 정도로만 알고 있었는데, 이 Article 에서 개념부터 특징까지 잘 설명해주고 있으니, Catboost 에 대해 관심이 있으셨던 분들도 같이 읽어보시면 좋을 것 같다. 글의 구성은 Catboost 이 기존 부스팅 기법과 다른점 위주로 설명하면서, 이러한 다른점으로 인한 특징과 장점을 설명하는 방식이 되겠다. 1. 기존의 부스팅 기법 1.1. 방법 기존의 부스팅 기법을 ..
블로그에 toc 를 달았다. 가뜩이나 마크다운으로 쓰면서 구조적으로 쓰려고 노력하는데, 이런 글에는 toc 가 있으면 좋을 것 같아서 달아놨다. 있어서 좋긴하지만, 아무래도 레이아웃이 비대칭이다 보니 뭔가 ... 맘에 걸리긴 한다. 처음엔 오른쪽에 뒀는데, 왼쪽보다 눈이 덜가긴 하지만 뒷목이 아파서(?) 왼쪽에다가 달았다. 눈과 목이 덜 아프기는 하지만... 그래도 느낌상 뭔가 별로인게 있다. 미니멀리즘 스타일링을 추구하는 블로그였는데... 더 이쁘게 달아볼 순 없을까 생각이 든다. UI 공부하시는 분이 이 글을 보신다면, 해결책좀 알려주세요... 개인 블로그에 달고 싶으신 분은 아래 링크를 참고하시면 됩니다. Tocbot Tocbot builds a table of contents (TOC) from headings in an H..
matplotlib.pyplot 좀 더 복잡한 레이아웃 1 from matplotlib import gridspec fig = plt.figure() gs = gridspec.GridSpec(1, 2) gs00 = gridspec.GridSpecFromSubplotSpec(2, 1, subplot_spec=gs[0]) gs01 = gridspec.GridSpecFromSubplotSpec(1, 2, subplot_spec=gs[1]) ax1 = fig.add_subplot(gs00[0]) ax2 = fig.add_subplot(gs00[1]) ax3 = fig.add_subplot(gs01[0]) ax4 = fig.add_subplot(gs01[1]) ax1.plot([1,2,3], [1,2,3]) 이렇게 배워 갑니다... (추후 한 번에 정리할 예정) 아무래도..
빽 투더 기본기 [OS 5편]. 뮤텍스와 세마포어 이 글에서는 저번 글에 이어, 동기화 기법 중 하나인 뮤텍스와 세마포어에 대해 적어본다. 1. 뮤텍스 (MUTual Exclusion) 1.1. 뮤텍스란? 뮤텍스는 상호배재라는 뜻으로, 이전 글에서와 마찬가지로 동기화 기법 중 하나이다. 뮤텍스는, 쓰레드 간 임계 영역의 동기화를 위한 기법이다. 1.2. 어떻게 구현하는가? lock 과 unlock 의 개념이 등장한다. 임계 영역에 먼저 들어가는 쓰레드가 lock 을 걸면, 이 쓰레드가 unlock 을 할 때 까지, 다른 쓰레드들은 임계 영역에 들어가지 못하도록 하는 것이다. 즉, 임계 영역에 들어가는 쓰레드는 임계 영역 앞뒤에 lock 과 unlock 을 해야한다. v = 1; def lock(): while v != 1 # 2. 이미 다른 쓰레드에 의..