CS 43

테스트 코드 작성

목적: 자동화된 테스트 코드 작성 사람의 눈으로 결과를 확인하는 수동 테스트는 반복하기 힘들고, 실수 가능성이 크고, 시간도 오래 걸린다. 테스트 코드의 필요성 테스트 코드를 작성함으로써 얻는 장점은 너무나 많다. 기능 추가 및 수정으로 인한 부작용을 줄일 수 있고, 디버깅을 쉽게 해주고, 반복적인 작업들을 하지 않도록 도와주며, 전체적으로 재사용성이 좋은 코드 작성을 가능하게 한다. 하지만, 테스트 코드를 작성하지 않는 프로젝트들이 아직 많이 존재한다. 대부분의 이유는 아래 사진과 같이 개발 초기에 테스트 코드를 작성하는 것이 비효율적이라고 생각하기 때문이라고 추측한다. 하지만, Breakeven 지점을 지나면 테스트 코드를 작성함으로써 생기는 단점은 전혀 없다고 생각한다. 테스트 원칙 소프트웨어 테스..

CS/기타 2022.03.25

폰 노이만 구조

목표 폰 노이만 구조를 이해할 수 있다. 폰 노이만 구조의 장단점을 이해할 수 있다. 1. 애니악(ENIAC) 폰 노이만 구조가 나오기 전에는 애니악이라는 컴퓨터가 주로 이용되었습니다. 애니악은 계산을 할 때마다 손으로 직접 진공관의 회로 스위치를 다시 조정하여 새 입력을 처리하는 하드웨어 프로그램 방식입니다. 2. 폰 노이만 구조 폰 노이만 구조는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성되어 있습니다. CPU와 메모리는 서로 분리되어 있고 둘을 연결하는 버스를 통해 명령어 읽기, 데이터 읽기 및 쓰기가 가능합니다. 메모리 안의 프로그램과 데이터 영역은 물리적 구분이 없기 때문에 같은 메모리와 버스를 사용합니다. 따라서 CPU가 명령어와 데이터에 동시 접근할 수 없습니다. 폰 노이만..

CS/운영체제 2021.01.21

TCP와 UDP

목표 TCP 개념을 이해할 수 있다. UDP 개념을 이해할 수 있다. TCP와 UDP의 차이점을 설명할 수 있다. 이번 글에서는 네트워크의 계층 중 전송 계층에서 사용하는 프로토콜에 대서 알아보도록 하겠습니다. 전송계층은 데이터의 전달을 담당하는 계층이며 이를 위해 사용하는 대표적인 프로토콜은 TCP와 UDP입니다. 그렇다면 TCP와 UDP는 어떠한 프로토콜인지, 둘의 차이점이 무엇인지 하나씩 파악해보도록 하겠습니다. TCP(Transmission Control Protocol) 일반적으로 TCP는 IP와 함께 사용합니다. IP는 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할을 하며, TCP는 데이터가 성공적으로 전송될 수 있도록 데이터의 흐름을 조절하는 역할을 합니다. 따라서 TCP는 연결형..

CS/네트워크 2021.01.16

동기와 비동기, 블로킹과 논블로킹

목표 동기와 비동기의 개념을 이해할 수 있다. 블로킹과 논블로킹의 개념을 이해할 수 있다. 동기/비동기와 블로킹/논블로킹의 차이점을 설명할 수 있다. 동기/비동기 동기/비동기는 작업을 수행하는 주체 간의 시간적 연관성과 관련된 작업입니다. 이때 작업을 수행하는 주체 사이에 시간적 연관성이 있으면 동기, 연관성이 없으면 비동기입니다. 동기(Synchronous) 요청과 그 결과가 동시에 일어나는 작업입니다. 여기서 말하는 동시란 요청하는 순간 결과가 바로 나와야 한다는 뜻이 아니라 요청과 결과가 한 자리에서 동시에 일어남을 의미합니다. 작업을 수행하는 주체들이 서로 동시에 수행하거나, 동시에 끝나거나, 하나의 수행 결과가 다른 수행 결과의 시작점이 되는 작업입니다. 비동기(Asynchronous) 요청과 ..

CS/운영체제 2021.01.07

스케줄링이란?

목표 장기, 중기, 단기 스케줄러를 설명할 수 있다. 스케줄링의 비교 척도를 이해할 수 있다. 선점 스케줄링과 비선점 스케줄링의 차이점을 설명할 수 있다. 다양한 스케줄링의 장단점을 설명할 수 있다. 스케줄링이란? 스케줄링의 넓은 의미는 자원을 효율적으로 사용하기 위해 자원을 사용하는 순서를 결정짓는 작업입니다. 대부분 스케줄링이라고 하면 프로세스의 순서를 결정짓는 작업이라고 생각하는데 이는 스케줄링 중 단기 스케줄링에 해당하는 설명이다. 그렇다면 장기, 중기 스케줄링은 무엇인지 알아보도록 하겠습니다. 장기 스케줄러(Long-Term) 메모리와 디스크 사이의 스케줄링을 담당합니다. 실행할 작업을 준비 큐에서 꺼내 메인 메모리에 적재합니다. 메인 메모리에 적재된 프로세스의 양을 판단하여 조절하는 역할을 합..

CS/운영체제 2021.01.06

식사하는 철학자 문제(Dining Philosopher Problem)

목표 식사하는 철학자 문제를 해결할 수 있다. 식사하는 철학자 문제란? 철학자 다섯 명이 원형 식탁에 앉아 밥을 먹으려고 합니다. 그들의 양쪽엔 각각 젓가락 한 짝씩 놓여 있고, 밥을 먹으려 할 땐 다음의 과정을 따릅니다. 왼쪽 젓가락부터 집어 듭니다. 다른 철학자가 이미 왼쪽 젓가락을 쓰고 있다면 그가 내려놓을 때까지 대기합니다. 왼쪽을 들었으면 오른쪽 젓가락을 듭니다. 들 수 없다면 대기합니다. 두 젓가락을 모두 들었다면 일정 시간 동안 식사를 합니다. 식사를 마쳤으면 오른쪽 젓가락을 내려 놓은 후 왼쪽 젓가락을 내려놓습니다. 다시 배고프면 1번부터 진행합니다. 철학자는 프로세스 젓가락은 자원으로 가정한 후 모든 철학자가 왼쪽 젓가락을 들은 상황을 가정해봅시다. 그렇다면 모든 철학자는 오른쪽 젓가락을..

CS/운영체제 2021.01.05

교착 상태(Deadlock)

목표 교착 상태 개념을 설명할 수 있다. 교착 상태가 발생하기 위한 필요충분조건을 이해할 수 있다. 교착 상태 해결 방법을 설명할 수 있다. 교착 상태란? 교착 상태란 두 개 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미합니다. 결과적으로 아무것도 완료되지 못하는 상태를 가리킵니다. 교착 상태 필요충분조건 상호배제(Mutual Exclustion) 한번에 한개의 프로세스만 공유 자원을 사용할 수 있어야 한다. 점유와 대기(Hold and Wait) 최소한 하나의 자원을 점유한 상태에서 이미 다른 프로세스에 할당되어 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야합니다. 비선점(Non-preemption) 다른 프로세..

CS/운영체제 2021.01.05

API vs Library vs Framework

목표 API 개념을 설명할 수 있다. Library 개념을 설명할 수 있다. Framework 개념을 설명할 수 있다. API와 Library 차이점을 이해할 수 있다. Library와 Framework 차이점을 이해할 수 있다. API(Application Programming Library) API는 응용 프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다. 아래의 그림을 통해 API를 조금 더 쉽게 설명해보겠습니다. 손님은 웨이터에게 음식을 주문합니다. 웨이터는 손님이 주문한 음식을 셰프에게 요청합니다. 셰프는 완성된 요리를 웨이터에게 전달합니다. 웨이터는 손님에게 음식을 제공합니다. 여기서 웨이터의 역할이 API입니다. 손님은 응용 프로그램, 셰프는 운..

CS/기타 2021.01.02

JDBC와 ODBC

목표 JDBC 개념을 이해할 수 있다. ODBC 개념을 이해할 수 있다. JDBC (Java Database Connectivity) JDBC는 이름에서 유추할 수 있듯이 Java에서 Database에 접근하여 DML을 사용 가능하게 하는 것을 말합니다. 즉 Java가 Database를 사용할 수 있도록 연결해주는 응용 프로그래밍 인터페이스인 Java API입니다. JDBC는 SQL 형태의 데이터베이스 접근 요구 문장을 각 시스템에 맞도록 바꾸는 역할을 합니다. 따라서 Java와 연동되는 DBMS에 따라 그에 맞는 JDBC를 설치할 필요가 있습니다. Java에서 ODBC 형태로 DB에 접근학 위해서는 JDBC-ODBC가 포함되어 있는 제품을 이용하면 됩니다. ODBC (Open DataBase Conne..

OLTP와 OLAP

목표 OLTP 개념을 이해할 수 있다. OLAP 개념을 이해할 수 있다. OLTP(Online Transaction Processing) - OLTP는 사용자들의 데이터베이스에 대한 트랜잭션 처리를 의미합니다. - 데이터의 저장, 삭제, 수정 등의 데이터를 수정하는 작업을 의미하는 용어입니다. - 데이터 자체의 처리가 중점입니다. OLAP(Online Analytical Processing) - OLAP는 DB에 저장되어 있는 데이터를 분석하여 사용자에게 유의미한 정보를 제공하는 분석 기술입니다. - 기능에 중점을 두는 OLTP와는 달리 사용하는 목적과 주제에 중점을 둡니다. - 이미 저장된 데이터를 기반하여 분석합니다. 두 가지 개념 중 선행되어야 할 부분은 OLTP입니다. OLTP작업이 정상적으로 동..