전체 702

운영체제의 역할과 구조

동찬찬과 함께하는 신나는 운영체제 스터디를 위한 기초공부 운영체제 박사가 되자운영체제의 역할1. CPU 스케쥴링 : CPU소유권을 어떤 프로세스에 할당할지 2. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리 3. 프로세스 관리 : 프로세스 생성과 삭제 자원할당 및 반환을 관리 4. I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터간에 데이터를 주고받는 것을 관리 5. 디스크파일 관리 : 디스크파일을 어떠한 방식으로 보관할지 관리 운영체제의 구조- 기본구조유저프로그램 GUI=> 운영체제시스템콜커널드라이버(하드웨어를 제어하기위한 소프트웨어)하드웨어

CS/운영체제 2023.01.28

HTTP(HTTP 1,2,3, HTTPS)

HTTP란? 인터넷 상에서 정보를 주고받는 규칙 및 프로토콜 HTTP/1.0 - 하나의 연결당 하나의 요청만 처리하도록 설계 - RTT(패킷이 목적지에 도달하고 다시 출발지로 돌아오기 까지 걸리는 시간)이 증가함 - 이를 해결하기위해 이미지 스플리팅, 코드압축, Base64인코딩 등의 기법을 사용 * 이미지 스플리팅 : 이미지가 합쳐있는 하나의 이미지를 다운로드 받는것 * 코드압축 : 코드의 빈칸, 개행을 없애는 것 * base64인코딩 : 64진법 문자열로 인코딩 하는 방법. 이미지에 대한 서버에 HTTP요청을 할 필요 없어짐. 하지만 크기가 커진다. * 인코딩 : 정보의 형태나 형식을 표준화, 보안, 처리속도향상, 저장공간 절약을 위해 다른 형태나 형식으로 변환하는 것 HTTP/1.1 - Keep-a..

CS/네트워크 2023.01.24

TCP/IP(Transmission Control Protocol)

정의 - 네트워크에서 사용되는 통신 프로토콜의 집합 - 네트워킹 범위에 따라 네게의 추상화된 계층으로 구성 - OSI계층과 비교를 통한 그림 계층별 설명 1. 에플리케이션 계층 - 응용프로그램이 사용되는 계층. 웹서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층 - FTP : 장치와 장치간 파일을 전송하는데 사용하는 프로토콜 - SSH : 보안되지 않는 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜 - HTTP : WWW을 위한 네트워크통신의 기초이자 웹사이트를 이용하는데 사용되는 프로토콜 - SMTP : 전자메일전송을 위한 인터넷 표준 통신 프로토콜 2. 전송계층 - 송신자와 수신자를 연결하는 통신서비스 제공 - 어플리케이션과 인터넷 계층사이의 데이터가 전달..

CS/네트워크 2023.01.23

네트워크 토폴로지(topology)

네트워크 토폴로지 - 노드가 어떻게 배치되어 있는지에 대한 방식 및 연결 형태 - 병목현상을 올바르게 해결하기 위해 알아야 함 * 병목현상(bottle nect) : 전체시스템의 성능이나 용량이 하나의 구성요소로 제한받는 현상. 서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목현상이 생겨 사용자는 웹사이트로 갈 수 없음. 트리토폴로지 - 계층형 토폴로지, 트리형태로 배치한 네트워크 구성 - 노드의 추가삭제가 쉬우며 특정노드에 트래픽이 집중될 때 하위노드에 영향 버스토폴로지 - 중앙회선 하나에 여러개의 노드가 연결되어 공유하는 네트워크 구성. 근거리통신망(LAN)에서 사용함 - 설치비용이 적고 신뢰성이 우수하며 중앙통신회선에 노드를 추가하거나 삭제하기 쉬움 - 스푸핑..

CS/네트워크 2023.01.22

네트워크, 처리량, 대역폭

네트워크란? 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체 처리량, 대역폭, 지연시간 - 처리량(throughtput) : 링크를 통해 전달되는 단위시간당 데이터(bits per second) - 대역폭(bandwidth) : 주어진 시간동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 - 지연시간 : 요청이 처리되는 시간, 메시지가 두 장치사이를 왕복하는데 걸리는 시간

CS/네트워크 2023.01.22

함수형, 객체지향형, 절차지향형의 차이

1. 함수형(선언형) 프로그래밍 - 선언형 : 무엇을 풀어내는가에 집중하고, 프로그램은 함수로 이루어져 있다는 패러다임 - 함수형 프로그래밍 : 순수함수들을 블록처럼 쌓아서 로직을 구현하고, '고차함수'를 통해 재사용성을 높인 패러다임 * 순수함수 : 출력이 입력에만 영향을 받는 함수 * 고차함수 : 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는것. 해당언어가 일급객체라는 특성을 가져야 함 * 일급객체 : 변수에 함수를 할당할 수 있고 함수안에 함수를 매개변수로 받고, 반환하는것이 가능한 언어 2. 객체지향형 프로그래밍 2.1 네가지특성 - 추상화 : 복잡한 시스템으로 부터 핵심적인 개념또는 기능만 간추리는 것 - 캡슐화 : 객체의 속성과 메소드를 하나로 묶고 일부를 감추어 은닉화 - 상속..

디자인 패턴(대표적인 디자인패턴)

디자인 패턴 이란? - 프로그램 설계 시 발생했던 문제점들을 상호관계 등을 이용하여 해결할 수 있도록 규약형태로 만들어 놓은 것 싱글톤 패턴 - 하나의 클래스에 하나의 패턴을 가짐 - 데이터베이스 연결모듈에 많이 사용 - 하나의 인스턴스를 만들어 놓고 다른모듈들이 공유하며 사용하므로 비용이 줄어듦 - 의존성이 높아지는 단점 -> TDD테스트 어려움 -> 디커플링을 통해 의존성 주입 * 의존성 주입 원칙 : 상위모듈은 하위모듈의 어떤것도 가져와선 안됨. 추상화에 의존해야 하며 추상화는 세부사항에 의존 x 팩토리 패턴 - 객체생성부분을 떼어내 추상화 한 패턴 - 상속관계의 두 클래스에서 상위 클래스가 중요한 뼈대 결정, 하위클래스에서 구체적인 내용을 결정하는 패턴 전략패턴(정책패턴) - 객체의 행위를 바꾸고..

docker compose

docker compse(도커 컴포즈) - 단일 서버에서 여러 컨테어너를 프로젝트 단위로 묶어서 관리해 주는 것 - yml(YAML)파일을 통해 명시적으로 관리 - 프로젝트 : 도커 컴포즈에서 다루는 워크 스페이스 단위(서비스 컨테이너의 묶음) - 서비스 : 도커컴포즈에서 컨테이너를 관리하는 단위. scale을 통해 컨테이너 수 확장 yml파일 형식 - 최상위 키는 version, services, networks, volumes 총 네가지로 구성 - version : yaml파일의 버전. 도커엔진의 호환성 메트릭스를 참고해야 함 - services : 컨테이너들을 묶는 단위 docker-compose 명령어 - 도커 컴포즈 run하는 것 docker-compose up docker-compose up ..

도커 2023.01.16

도커데몬 디버깅용 docker system

docker system 도커데몬 디버깅을 위한 system 명령어들을 알아 본다. - 도커 이벤트 확인 명령어. 도커 이벤트가 발생하면 스트리밍으로 이벤트 발생순간 동작과정을 확인할 수 있다. docker system event - 도커 이미지, 컨테이너의 자원사용량을 확인할 수 있다. docker system df docker system df -v //좀더 자세히 - 중지된 컨테이너, 사용하지않는 컨테이너등등을 삭제 docker system prune - 컨테이너들의 CPU사용량, 메모리사용량 등을 확인가능 docker stats

도커 2023.01.16

Dockerfile 문법

docker file 문법 # 베이스 이미지 결정 FROM node:1 # 이미지의 메타데이터 label description="this is node.js" label maintainer="dong" # working 디렉토리 설정 WORKDIR /app # 호스트 OS의 파일을 컨테이너에 working dir에 복사 COPY my_files ./ #위에서 wokring dir을 /app으로 했으므로, app에 복사 # 도커이미지상에서 실행되는 명령어(도커이미지, /app에서 실행) RUN npm install # 현재디렉토리의 모든 파일을 도커이미지 디렉토리에 복사 copy . . # 8080포트를 사용한다고 명시용(run할떄 -p 옵션을 사용해야 실제로 8080포트 사용가능) EXPOSE 8080 ..

도커 2023.01.15

이미지생성

현재컨테이너 commit을 통한 이미지 생성 기존 컨테이너기반 commit을 통한 이미지 생성 docker commit [option] [conatiner] [image_name]:[tag] docker commit -m "first_commit" -a "dong" now_container my_ubuntu:v1 dockerfile을 이용한 이미지 생성 docker build -t [imagename]:[version] -f [path(Dockerfile이 있는 폴더)] ./ * 빌드명령 수행시 빌드 컨텍스트(현재 디렉토리)를 도커 데몬에게 전달하여 빌드가 정상적으로 수행되도록 한다.

도커 2023.01.15

도커 로그

도커 로그확인 docker logs [container] //전체로그 확인 docker logs --tail [n] [container] //마지막 로그 n줄 docker logs -f [container] //실시간 로그 스트림 확인 docker logs -f -t [container] //로그마다 타임스탬프 표시 호스트 로컬에 도커 로그 저장경로 cat /var/lib/docker/containers/[container_id]/[container_id]-json.log run 수행시 옵션값으로 로그용량 제한하기 docker run\ -d\ --log-driver=json-file \ //로그 드라이버 설정 --log opt max-size=3m \ 한 로그파일당 최대메모리, 3mb --log op..

도커 2023.01.15

도커 볼륨

도커 볼륨 도커가 제공하는 볼륨 관리 기능 이용. 기본적으로 /var/lib/docker/volumes/[volume-name]/_data 위치에 데이터 저장 * 볼륨생성 docker volume create --name db * 도커의 web-volume 볼륨을 Nginx의 웹 루트 디렉토리로 마운트 docker run -d\ --name my-mysql\ -v db:/var/lib/mysql \ -p 3306:3306\ mysql:5.7 호스트 볼륨 docker run -d\ --name [container_name]\ -v [host_path]:[container_path]\ [image] *읽기전용 옵션(:ro) docker run -d\ -v [host_path]:[container_path]:..

도커 2023.01.15

도커 run 주요옵션

도커 run 주요옵션 -기본 docker run \ -i -t\ -> i:호스트 표준입력을 컨테이너와 연결, t:TTY할당 -d\ -> 백그라운드 모드로 실행, 만약 포그라운드로 실행한 상태에서 빠져나오고싶으면 ctrl+p+q --name {name}\ -> 사용자지정 이름으로 컨테이너 이름 설정 -p {host port:contaner port}\ -> 포트바인딩 --rm\ -> 도커 컨테이너 실행종료 후 자동 삭제 my-command\ -> 컨테이너 내에서 실행할 명령어 ( ex)docker run ubuntu ls ) - 환경변수 docker run -e 변수=입력값\ -> 환경변수 --env-file {file_path} -> 환경변수(파일) - 엔트리포인트(도커컨테이너가 실행될 때 고정적으로 실..

도커 2023.01.14