전체 글
-
[운영체제] 프로그램의 실행(memory load)과 메모리 주소Computer Science/Operating System 2023. 1. 30. 23:54
프로그램의 실행 - 프로그램은 File System에 실행 파일 형태로 저장되어 있고, 이를 실행하면 메모리에 올라가 프로세스가 됨 - 물리적인 메모리에 바로 올라가지 않고 가상 메모리 단계를 추가로 거치는데, 이 때 독자적인 메모리 주소 공간이 형성됨 - 메모리 낭비 방지를 위해 프로그램 중 당장 실행에 필요한 부분만 물리적 메모리에 올라가고, 그렇지 않은 부분은 스왑 영역에 들어감 프로세스의 메모리 주소 공간 Code : CPU에서 실행할 기계어 코드 저장 Data : 전역 변수 등 프로그램에 사용하는 데이터 저장 Stack : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장 커널 주소 공간 Code : 시스템콜, 인터럽트 처리 코드와 자원 관리를 위한 코드 저장 ..
-
[운영체제] DMA(Direct Memory Access) 개념과 동작 방법Computer Science/Operating System 2023. 1. 30. 23:22
기본적인 입출력 제어 방식 - 하드디스크에서 데이터를 꺼낸 후 시스템 버스를 통해 CPU 레지스터에 옮겨지고 다시 시스템 버스를 통해 CPU 레지스터에서 메모리로 이동 - 모든 메모리 접근 연산이 CPU에 의해서만 이루어질 경우 주변 장치가 메모리 접근을 원할 때마다 인터럽트를 통해 CPU의 업무가 방해 받게 되어 사용 효율성이 떨어짐 DMA(Direct Memory Access) 방식 - CPU가 주변 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 방지 - DMA 컨트롤러가 입출력장치에서 데이터를 읽은 후 메모리로 전송하고 전송 완료 신호를 CPU에 송신
-
[운영체제] 동기식 입출력과 비동기식 입출력Computer Science/Operating System 2023. 1. 30. 23:06
입출력 (I/O) : 컴퓨터 시스템이 컴퓨터 외부의 주변 장치들과 데이터를 주고 받는 것을 의미 동기식 입출력 (Synchronous I/O) : I/O 요청 후 입출력 작업이 완료된 후 제어가 사용자 프로그램에 넘어감 (순차적) ex. 프로그램이 디스크에서 어떤 정보를 읽어서 처리를 해야 하는 경우 구현 방법 1. - 입출력이 끝날 때까지 인터럽트를 기다렸다가 끝나면 사용자 프로그램에 CPU의 제어권이 넘어가 다음 명령어 수행 가능 - 매 시점마다 하나의 CPU만 일을 하며, 하나의 입출력만 일어날 수 있음 ➡️ CPU 낭비 구현 방법 2. - 입출력이 완료될 때까지 해당 프로그램에서 CPU의 제어권을 빼앗음 (해당 프로그램은 봉쇄 상태) - 입출력 처리를 기다리는 줄에 해당 프로그램을 세우고 다른 프..
-
[Java Spring] Spring Security의 개념 및 처리 과정Programming/Java 2023. 1. 24. 17:00
들어가기에 앞서 인증(Authentication)과 인가(Authorization) - 인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정 - 인가(Authorization) : 해당 사용자가 요청하는 자원을 실행할 수 있는 권한이 있는가를 확인하는 과정 ➡️ Spring Security는 인증 절차를 거친 후 인가 절차를 진행 ➡️ Principal을 아이디로 Credential을 비밀번호로 사용하는 Credential 기반 인증 방식 사용 Principal(접근 주체) : 보호 받는 Resource에 접근하는 대상 Credential(비밀번호) : Resource에 접근하는 대상의 비밀번호 Spring Security란? : Spring 기반의 어플리케이션 보안(인증과 ..
-
[컴퓨터 구조] CPU의 구조 및 CPU VS GPUComputer Science/Computer Architecture 2023. 1. 24. 16:00
CPU란? : 명령어를 해석, 연산, 결과를 저장하는 등의 수행을 하는 유닛 Core란? : CPU 역할을 수행하는 블록 - 한 개의 CPU 칩에 한 개의 코어가 있으면 싱글코어, 코어 개수에 따라 prefix가 달라짐(듀얼코어 등) Core의 구성요소 1. 제어 장치 (CU, Control Unit) : 명령어 레지스터(메모리)에 저장된 명령어를 가져와 해석 후 명령어 실행을 지시할 제어 신호 생성 - 프로그램 계수기(프로그램 순서 제어), 명령 레지스터(명령어 임시 기억), 명령해독기(레지스터의 명령을 해독하여 수행 장치에 제어 신호를 보냄)로 구성 2. 연산 장치 (ALU, Arithmethic Login Unit) : 제어 장치의 지시를 받아 산술, 논리, 비트 연산 등 실제 연산을 수행하는 장치..
-
[Docker] Docker의 기본 개념 및 실행 흐름Dev Ops/Docker 2023. 1. 21. 19:00
Docker란? : 컨테이너 기반의 오픈소스 가상화 플랫폼 - 다양한 프로그램, 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포와 관리를 단순화 - 백엔드 프로그램, 데이터베이스 서버, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화 가능 - 조립PC, AWS, Azure, Google cloud 등 어디서든 실행 가능 Docker Container : 격리된 공간에서 프로세스가 동작하는 가상화 기술 중 하나 📍참고: 기존의 가상화 방식 1) OS 가상화 - 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용(VMware, Virtual Box) - 사용법이 간단하지만 무겁고 느려 운영환경에서 사용 불가 2) HVM(CPU 가상화), 반가상화 - 게스트 OS가 필요하지만 ..
-
[CI/CD] Jenkins 기본 개념 및 구성 요소Dev Ops/CI-CD 2023. 1. 21. 18:28
Jenkins란? CI/CD 전반적인 흐름을 관장하는 툴 - 서브버전, Git과 같은 버전 관리 시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정 가능 Jenkins 구조 1. Jenkins Master (Server) : Jenkins 서버이자 Jenkins 파이프라인으로 정의된 모든 흐름을 관장하는 컨트롤 서버 - 각 Jenkins Slave들에게 각자의 할 일을 정해주고 분배 [ Jenkins 작업 ] ① Git 등의 리파지토리에서 푸쉬되어 받은 자료를 정기적으로 Jenkins가 확인 ② Jenkins 테스트 과정을 다양한 Jenkins Agent에서 실행시키면서 독자적 테스트 환경을 만듦 ③ Jenkins Agent 통해 얻은 결과물을 Jenkins..
-
[CI/CD] CI, CD, CI/CD 파이프라인 기본 개념Dev Ops/CI-CD 2023. 1. 21. 16:09
CI (Continous Integration, 지속적 통합) : 빌드/테스트의 자동화 과정을 의미 - 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합됨 - 커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경해 서로 충돌할 수 있는 문제를 해결 - CI/CD 파이프라인의 첫 번째 단계 CD (Continuous Delivery / Deployment) Continuous Delivery, 지속적 서비스 제공 : 개발자가 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동 업로드되는 것을 의미 - 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포 가능 - 귀찮은 push 작업 없이 최소한의 노력..