분류 전체보기 113

한화시스템 SW캠프 9기 6월 4주차 회고록

1. FACTS[24/06/24(월)]점심 : 버거킹, 어제 비가와서 그런지 날씨 굳!(데이버베이스_개요, MariaDB_개요, MariaDB 설치방법, DB_SCRIPT, select, order_by, where)mariaDB를 컴퓨터에 깔고 더미 데이터를 넣어 여러 조회 방법들을 배웠다. 수업 후, 프로그래머스에서 SQL문 select문제를 몇 개 풀어보며 오늘 배운 것들을 익혔다.[24/06/25(화)]점심 : 본도시락, 4명이서 먹으러 갔는데 매장에 자리가 4개 밖에 없어서 다행이네. 오늘도 날씨가 좋구만(distinct, limit, join, grouping, subquries)어제 다 배우지 못한 SELECT문을 마무리 하고, 하나의 테이블만을 사용하는 것이 아닌 여러 테이블을 사용하여 조..

Chapter 8. 입출력장치

장치 컨트롤러와 장치 드라이버 장치 컨트롤러와 장치 드라이버라는 개념을 통해 다양한 외부 장치가 컴퓨터 내부와 어떻게 연결되고 소통하는지를 알아보겠습니다. 장치 컨트롤러 입출력장치에는 종류가 너무나도 많습니다. 장치가 다양하면 장치마다 속도, 데이터 전송 형식 등도 다양합니다. -> 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기 어렵습니다. 일반적으로 CPU와 메모리 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮습니다. 전송률(Transfer Rate) : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신중개 오류 검출 데이터 버퍼링 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받은 데이터를 버퍼라는 임시 저장 공간에 저장..

Chapter 7. 보조기억장치

다양한 보조기억장치 보조기억장치에는 다양한 종류가 있습니다. 그중 가장 대중적인 보조기억장치 하드 디스크와 플래시 메모리를 이야기해보자 합니다. 하드디스크(HDD : Hard Disk Drive) RPM(Revolution Per Minute) : 분당 회전수 플래터(Platter) : 하드 디스크에서 실질적으로 데이터가 저장되는 곳(동그란 원판) 스핀들(Spindle) : 플래터를 회전시키는 구정요소 헤드(Head) : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소 디스크 암(Disk Arm) : 헤드가 원하는 위치로 이동시킬 수 있도록 도와주는 것 트랙(Track) : 플래터를 여러 동심원으로 나누었을 때, 그중 하나의 원 섹터(Sector) : 하드 디스크의 가장 작은 전송 단위 실린더(Cylin..

Chapter 6. 메모리와 캐시 메모리

RAM의 특징과 종류 주 기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, '메모리'라는 용어는 그 중 RAM을 지칭하는 경우가 많다. RAM의 특징 RAM : 휘발성 저장 장치이고, 보조기억장치는 비휘발성 저장 장치입니다. 휘발성 저장 장치(volatile memory) : 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날라가는 저장 장치 비휘발성 저장 장치(non-volatile memory) : 전원이 꺼져도 저장된 내용이 유지되는 저장 장치 ex) HDD, SSD, CD-ROM, USB.. RAM의 용량과 성능 RAM이 커지면, 프로그램 실행 속도가 증가합니다. 하지만, 어느정도 RAM의 용량이 커지면 프로그램의 속도가 그에 비례하여 증가하지 않습니다. RAM의 종류 DRAM(Dyn..

백준 1890번 : 점프

문제 링크 : https://www.acmicpc.net/problem/1890 문제를 해결하기 위해 처음에 재귀함수만을 사용하여 dfs 풀이로 풀어보았다. 하지만, 재귀를 이용한 dfs로 풀면 메모리 초과가 떠 문제를 해결할 수가 없었다. 메모리 초과가 뜬 코드는 아래와 같다. import java.util.Scanner; public class Main { public static int Move(int[] xy, int[][] Map, int ans){ if(xy[0] >= Map[0].length || xy[1] >= Map[0].length){ return 0; } if(Map[xy[0]][xy[1]]==0){ ans++; return ans; } int[] pos1 = {xy[0]+Map[xy..

Chapter 5. CPU 성능 향상 기법

빠른 CPU를 위한 설계 기법 클럭, 멀티코어, 멀티스레드가 각각 무엇인지 알아보고, 이들이 CPU 속도와 어떤 관계가 있는지 알아보겠습니다. 클럭 클럭은 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위입니다. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 클럭 속도 : 헤르츠(Hz) 단위로 측정 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수 Q) 클럭 신호를 마냥 높이면 CPU가 무지막지하게 빨라질까요? A) 꼭 그런건 아닙니다. 필요 이상으로 클럭을 높이면 발열이 심각해집니다. 코어와 멀티코어 그래서, 클럭 속도를 늘리는 방법 이외에는 뭐가 있을까요? 코어 수를 늘리는 방법('듀얼 코어', '멀티..

Chapter 4. CPU의 작동 원리

ALU와 제어장치 ALU 먼저, ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들입니다. ALU : 연산한 결과값과 플래그를 내보냅니다. 플래그 종류 의미 사용 예시 부호 플래그 연산한 결과의 부호를 나타냅니다. 부호 플래그가 1일 경우 계산 결과는 음수, 0일 경우 계산 결과는 양수를 의미합니다. 제로 플래그 연산결과가 0인지 여부를 나타냅니다. 제로 플래그가 1일 경우 연산 결과는 0, 0일 경우 연산 결과는 0이 아님을 의미합니다. 캐리 플래그 연산 결과 올림수나 빌림수가 발생했는지를 나타냅니다. 캐리 플래그가 1일 경우 올림수나 빌리수가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미합니다. 오버플로우 플래그 오버플로우가 발생했는지를 ..

Chapter3. 명령어

소스 코드와 명령어 모든 소스 코드는 컴퓨터 내부에서 명령어로 변환됩니다. 소스 코드 : 프로그래밍 언어로 만든 코드입니다. 고급 언어와 저급 언어 고급 언어(High-Level Programming Language) : 개발자가 이해하기 쉽게 만든 언어 입니다. 저급 언어(Low-Level Programming Language) : 컴퓨터가 이해하고 실행하는 언어입니다. 기계어(Machine Code) : 0과 1의 명령어 비트로 이루어진 언어입니다. 어셈블리어(Assembly Language) : 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어입니다. 컴파일 언어와 인터프리터 언어 컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어입니다. 인터프리터 언어 : 인터프리트 방식으로 ..

Chapter2. 데이터

[2-1] 0과 1로 숫자를 표현하는 방법 정보 단위 먼저, 컴퓨터는 0또는 1밖에 이해하지 못합니다. 따라서 0과 1을 나타내는 가장 작은 정보 단위를 비트(Bit)라고 합니다. n비트로 2^n가지의 정보 표현 가능합니다. 프로그램은 수많은 비트로 이루어져 있습니다. 비트보다 더 큰 단위를 사용합니다. 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 ... 워드(Word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위 하프 워드(Half Word) : 워드의 절반 크기 풀 워드(Full Word) : 워드 크기 더블 워드(Double Word) : 워드의 두 배 크기 이진법 이진법은 1을 넘어가는 시점에 자리 올림을 하여 0과 1만으로 모든 수를 표현하는 방법입니다. 0과 1로 수를 표..