전체 글 691

메모리, 캐시

메모리란? - 데이터의 상태, 명령어를 기록하는 장치 - CPU(일꾼)가 계산을 담당하고, 메모리(작업장)은 기억을 담당 메모리의 계층 - RAM : 하드디스크로 부터 일정량의 데이터를 복사하여 임시저장하고, 이를 필요시마다 CPU에 빠르게 전달하는 역할 - 차수별 저장장치 (1) 1차 저장장치 : 휘발성 저장장치(레지스터, 캐시, 메인메모리) (2) 2차 저장장치 : 보조기억장치 (3) 3차 저장장치 : 백업 사본을 저장하기위해 다른 장치에 저장하는것(cd-rom, blue-ray) 캐시 1. 정의 - 데이터를 미리 복사해놓은 임시저장소. 빠른장치와 느린 장치의 속도차이에 따른 병목현상을 줄이기 위한 메모리 - 레지스터는 CPU와 램사이에 있는 캐시계층이고 램은 캐시메모리와 보조기억장치 사이에 있는 캐..

CS/운영체제 2023.02.04

CPU 구성요소 및 연산과정

CPU란? - CPU는 제어장치, 레지스터, 산술논리연산장치로 구성되어 있는 컴퓨터 장치를 말하며 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석하는 일꾼. * 제어장치(CU: Control Unit) : 프로세스 조작을 지시하는 CPU의 한 부품 * 레지스터 : 레지스터는 CPU내부의 매우 빠른 임시기억장치를 가르킴. CPU와 직접 연결되어 있어 연산속도가 메모리보다 수십~수백배 빠름. CPU는 자체적 데이터 저장방법이 없으므로, 레지스터 거쳐 데이터 전달 * 산술논리연산장치 : 덧셈, 뺄셈 등 두 숫자의 산술연산과 베타적 논리합, 논리곱은 논리연산을 계산하는 디지털 회로 인터럽트 - 컨트롤러가 장치드라이버에게 작업이 완료됐다는 것을 알리고, CPU에게 이를 처리시키기 위해 CPU를 중지 시키는..

CS/운영체제 2023.02.03

linux(centOS)특정 버전 pip설치하기

보통의 경우, python을 설치하면 그에 따른 pip는 자동으로 설치된다. 하지만 환경설정등의 실수로 pip를 사용할 수 없을 경우 수동으로 pip를 설치해야한다. 특정버전 pip설치하기 1. pip설치 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3.X get-pip.py 2. pip확인 위에서 설치한 파이썬 버전 3.x에 대한 pip가 설치된다. pip3.X로 필요한 패키지A를 설치하고, python3.X로 파이썬을 실행하면 패키지A가 실행된다. * 패키지 A를 설치하지 않은 다른 파이썬 버전 python3.Y로 파이썬을 실행하면 패키지 A가 실행되지 않음 pip3.X -V

CLI/터미널 2023.01.28

centos에 python 설치

yum update yum update 리눅스 개발환경 세팅 yum groupinstall "Development Tools" 파이썬 설치 //파이썬 설치 압축파일 다운(다른 버전을 다운받을 시 3.9.7대신 다른 버전을 넣으면 된다) wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz //압축파일 압축 해제 tar xvfz Python-3.9.7.tgz //설치된 파이썬 디렉토리로 이동 cd Python-3.9.7 빌드 및 환경설정 - 파이썬관련 라이브러리나 프로그램 설치시 다시 빌드 및 환경설정을 수행해주어야 한다. //파이썬 소스파일 환경설정 ./configure //소스 컴파일 make //설치파일 실행 make altinstall 설치확..

CLI/터미널 2023.01.28

시스템콜, modebit

시스템콜 이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저프로그램이 운영체제의 서비스를 받기위해 커널함수 호출시 사용 => 이 과정을 통해 컴퓨터자원에 대한 직접접근차단, 프로그램을 다른 프로그램으로 부터 보호함 => 응용프로그램과 커널을 이어주는 시스템. 유저모드상의 응용프로그램이 커널함수를 사용하고자 할 때 커널모드로 전환하고 커널함수를 수행한후 다시 유저모드로 전환할 때 사용 MODEBIT 시스템콜이 작동할 때 유저모드와 커널모드로 구분하는 플레그. 카메라, 키보드등 I/O디바이스를 운영체제를 통해서만(커널모드) 사용할 수 있게 하여 해킹으로 부터 사용자 장비를 보호 유저모드 : 유저가 접근할 수 있는 영역에 제한을 주어 컴퓨터자원에 함부러 침범하지 못하게 하는 모드 커널모드 : 컴퓨터의 모..

CS/운영체제 2023.01.28

운영체제의 역할과 구조

동찬찬과 함께하는 신나는 운영체제 스터디를 위한 기초공부 운영체제 박사가 되자운영체제의 역할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