본문 바로가기

전체 글38

[Optimizing Java] JVM 이야기 Optimizing Java를 읽고 정리한 게시글 입니다. 1. 인터프리팅과 클래스 로딩 JVM이란 스택 기반의 해석 머신입니다. ( 일부 결과를 실행 스택에 보관하며 맨 위의 값을 가져와 계산) 해석을 진행할때는 평가스택을 이용하여 중간값을 담아두는 방식을 채택합니다. 이는 가장 마지막 실행된 명령어와 독립적으로 프로그램을 구성하는 옵저버를 하나씩 순서대로 처리함을 의미합니다. " 자바 가상 환경 구성 → 스택 머신 초기화 → (유저가 작성한) 클래스 파일 실행 " 을 순서로 진행합니다. 클래스 로딩 매커니즘은 쉽게 아래와 같습니다. 자바 프로세서 초기화 → 클래스 로더 차례로 작동 클래스 로더 순서 : 부트스트랩 클래스(java.lang.Object, Class, ClassLoader) → 자바 런타.. 2022. 12. 17.
[네트워크 1장] DNS 서버 DNS 란 TCP/IP 네트워크에서 사용되는 네임 서비스의 구조 리졸버란? DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을한다. 네임 서버란? 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하다 이러한 정보를 가지고 있는것을 네임서버라고한다 - 저장, 관리 - Ip 찾아줌 - 요청 처리 응답 구현 - 모든 ipsms Root DNS 서버가 있다. DNS 동작 과정 1. Client 에서 Query 요청 dns 클라이언트와 dns 서버는 dns 쿼리를 교환 해당 쿼리는 반복적( Iterative Query) 또는 재귀적 ( Recursive Query )으로 구분된다. 2. 이전에 방문한적 있는지 (Cache 여부 ) 확인 브라우저 캐시 확인 os 캐시 확인 .. 2022. 9. 27.
[운영체제 14~15강] 프로세스 메모리 할당 그리고 파일 상태 14장 메모리 할당 당신의 노트북 메모리가 몇인가 나는 16기가 이다. 그렇다면 나는 얼마나 쓰고있을까 11기가를 쓰고있다. 근데 만약 프로그램을 전체 다 올린다고 생각했을때 카카오톡만 해도 약 1.3기가 이다. 정작 위 그림을 보았을떄는 700메가 정도만 사용중이다 이것이 어떻게 가능한 것일까 그리고 내가 많은 어플을 틀었는데도, 16기가에 모두 담을수 있던 이유는 뭘까 스와핑 이를 가능케 하는것중 하나는 스와핑이라는 기능이다 메모리에 적재할 프로세스는 모두 필요한것이 다니다 안쓰는건 보조 기억장치에 넣으면 된다. 즉 쓰는건 스왑 인 안쓰는건 스왑 아웃 메모리 할당 방법 할당방법은 여러가지가 있는데 1. 순서대로 넣는 최초 적합 2. 빈공간을 찾아서 넣는 최적 적합 3. 빈공간을 찾아서 가장 큰 공간을.. 2022. 9. 20.
[운영체제 11장] CPU 스케쥴링 각 프로세스는 CPU ( 자원 ) 을 이용하려고 한다. 이때 프로세스에게 CPU 사용권을 어떻게 공정하게 나눠줄것인지에 대하여 알고리즘 방법을 정리해 둔다. 0. 현재 리눅스에서 사용하는 CPU 스케쥴링 방식은? CFS ( Completely Fair Scheduler ) RSDL ( Rotating Staircase Deadline ) 스케쥴러를 기초로한 RB-트리의 구조를 가진 O(log N ) 의 성능을 가진 스케쥴러이다. CFS는 실제 하드웨어 상에서 이상적이고 정확한 다중 태스킹(multi-tasking)을 모델로 하며 대화형 태스크의 성능을 저해하지 않으면서 CPU 자원을 공정하게 분배하려는 목적으로 만들어졌다. 아울러 CFS는 시간단위로 나노초를 사용하여 종래의 타임 슬라이스 개념을 없애고 .. 2022. 9. 18.
[운영체제 10장] 프로세스 메모리 구조 그리고 스레드 프로세스란? 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱 이라고 하며 같은 시간에 여러 의프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 프로세스 관리는 운영 체제의 중요한 부분이 되었다. - 위키백과 프로세스의 메모리 영역 프로세스는 생성시에 커널영역에 PCB가 생성된다. PCB는 쉽게 생각해서 프로세스가 생성되었을때의 정보를 저장해 놓은 장소이다. 이때 사실 커널도 일종의 프로그램으로 볼 수 있는데, 이는 중요하여 아예 따로 메모리 관리를 한다. 따라서 Application / Kernel은 따로 봐도 일단은 무방하다... 2022. 9. 16.
[운영체제 1~2장] 파이썬과 자바가 속도차이가 나는 이유 인터프리터 언어 vs 컴파일 언어 인터프리터 언어: 한줄씩 해석되어 구현된다. 컴파일 언어: 전체를 해석하여 Object 코드로 변환하여 실행한다. 파이썬은 과연 인터프리터 언어일까? 파이썬은 인터프리터 언어의 특징을 가졌다. 이는 언어의 특징을 가진것이지 이를 분류할수는 없다. 책에서도 말했듯, 특정언어가 딱 컴파일언어! 인터프리터 언어! 로 나눠져있지는 않다고 말한다. 다들 알듯 파이썬은 한줄치면 바로 대답해준다. 그래서 인터프리터 언어의 특징을 가지고 있다고 한다. 그렇다면 파이썬 동작은 어떻게 이루어지나? 위 설명의 인터프리터 언어처럼 파이썬이 동작한다면 너무 많은 리소스를 낭비하게 된다 왜냐하면 소스코드 -> 기계어 로 변환 (해석)하는 것이 가장 비용이 많이 들기 때문이다. 따라서 파이썬은 1.. 2022. 9. 15.
[알고리즘 분석 #3] BFS 대표 문제 풀기( 1697, 1926, 2178, 4179, 7576 ) 바킹독님의 BFS 대표 예제 문제 풀이 https://www.youtube.com/watch?v=ftOmGdm95XI&list=PLtqbFd2VIQv4O6D6l9HcD732hdrnYb6CY&index=10 문제 1 - 그림 https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 해결 방법 1. 방문 여부, 범위 벗어나지 않기, 조건 삼박자가 맞아야한다. 2. 가장 큰 그림 ( 가장 넓은 범위 ), 그림의 갯수 찾는 부분을 나누었다. 나는 함수가 깊어질수록 .. 2022. 9. 6.
[알고리즘 분석 #2] BOJ 4949 균형잡힌 세상( python3 ) 바킹독님 강의 보고 먼저 풀어본 내용입니다. https://www.youtube.com/watch?v=cdjjk-ryPKc&list=PLtqbFd2VIQv4O6D6l9HcD732hdrnYb6CY&index=9 스택을 활용를 수강하였다. 나온 예제로는 () -> true ( { ) } -> false 를 출력하는 문제이다 . 문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 해결 방법은 stack을 이용하는것이다. FIF.. 2022. 9. 5.
[Docker] 개발중인 Django Postgresql 프로젝트에 Dockerfile 생성 및 docker-compose 적용하기 Djnago로 구성된 앱 docker 구성하기 온통 Djnago app 만들면서 한 것 밖에 없어서 쓴 글 프로젝트 구성 1. pipenv를 통해 가상환경에서 로컬을 적용. 2. pipfile, pipfile.lock 을 통하여 환경 관리. 3. postgresql 사용 . 폴더 최상단 ㄴ server ㄴ ㄴ settings ㄴ ㄴ ㄴ Dockerfile-dev ㄴ ㄴ ㄴ .env ㄴ docker-compose ㄴ Pipfile ㄴ Pipfile.lock Dockerfile 프로젝트 소스코드 & 소스코드가 돌아가게 하기 위하여 환경 설정 두가지를 내용을 담은 image 생성을 위한 파일 # syntax=docker/dockerfile:1 FROM python:3.8-slim-buster as base .. 2022. 8. 25.