Cute Running Puppy
반응형

전체 글 131

[혼공컴운] chatper 08. 입출력 장치

08-1. 장치 컨트롤러와 장치 드라이버 장치 컨트롤러 입출력 장치는 너무 다양하다 cpu에 비해 속도가 매우 느리다 이러한 이유로 입출력 장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다 장치 컨트롤러는 입출력 제어기, 입출력 모듈 등으로 다양하게 불린다 위의 문제 해결 방법 cpu와 입출력장치 간의 통신 중계 오류 검출 데이터 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 공간에 저장하여 전송률을 비슷하게 맞추는 방법 장치 컨트롤러의 내부 구조 데이터 레지스터 cpu와 입출력 장치 사이에 주고받을 데이터가 담기는 레지스터 버퍼역할을 함 주고 받는 데이터가 많은 입출력 장치에서는 레지스터 대신 RAM을 사용 상태 레지스터 입출력 작업을 할..

[혼공컴운] chatper 07. 보조기억장치

07-1. 다양한 보조기억장치 하드디스크 자기 디스크의 일종으로 취급하기도 함 자기적인 방식으로 데이터를 저장하는 보조기억장치 탐색 시간: 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간 회전 지연: 헤드가 있는 곳으로 플래터를 회전시키는 시간 전송 시간: 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간 플래시 메모리 USB, SD카드, SSD 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반 저장 장치 07-2. RAID의 정의와 종류 RAID의 정의 여러 개의 물리적 보조 기억장치를 마치 하나의 논리적 보조 기억장치처럼 사용하는 기술 RAID의 종류 구성 방식에 따라 RAID 0~6으로 나뉨 - RAID 0 (striping) 같은 규격의 디스크를 병렬로 연결 (여러 디스크에 동시 접근)..

[혼공컴운] chatper 06. 메모리와 캐시 메모리

06-1. RAM의 특징과 종류 DRAM dynamic RAM 저장된 데이터가 동적으로 변하는(사라지는) RAM 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장) 해야 한다 소비전력이 비교적 낮고, 저렴하고, 집적도가 높기에 일반적으로 사용하는 메모리 SRAM static RAM 저장된 데이터가 변하지 않는 RAM 시간이 지나도 데이터가 사라지지 않음 (데이터를 재활성 할 필요 없음) DRAM 보다 일반적으로 속도가 빠름 SRAM도 전원이 공급되지 않으면 저장된 내용이 날아간다 SDRAM 클럭 신호와 동기화된 발전된 형태의 DRAM DDR SDRAM 최근 가장 흔히 사용되는 램 대역폭을 넓혀 속도를 빠르게 만든 SDRAM 한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM을 SDS..

[혼공학습단 11기] 혼공컴운 2주차 미션

기본 미션 1. P.125 확인 문제 2번 문제 설명에 맞는 레지스터를 보기에서 찾아 빈칸을 채워보세요 [프로그램 카운터, 명령어 레지스터, 플래그 레지스터, 범용 레지스터] (1): 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터 (2): 메모리에서 가져올 명령어의 주소를 저장하는 레지스터 (3): 데이터와 주소를 모두 저장할 수 있는 레지스터 (4): 해석할 명령어를 저장하는 레지스터 정답 (1) 플래그 레지스터 (2) 프로그램 카운터 (3) 범용 레지스터 (4) 명령어 레지스터 해설 반드시 알아야 할 레지스터 프로그램 카운터 (PC) 메모리에서 가져올 명령어의 주소 저장 (== 명령어 포인터) 명령어 레지스터 메모리에서 읽어 들인 명령어를 저장하는 레지스터 제어장치는 명령어 레지스..

[혼공 컴운] chapter 05. CPU 성능 향상 기법

05-1. 빠른 CPU를 위한 설계 기법 클럭 컴퓨터 부품들을 움직이는 신호 -> 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 더 빠른 박자에 맞추어 움직임 > 클럭 속도 Hz 단위로 측정 CPU로 속도 단위 클럭 속도가 높을수록 CPU의 성능이 좋음 클럭 속도는 일정하지 않다. 유연하게 속도를 변화시킬 수 있다. 오버클럭킹: 최대 클럭 속도를 강제로 끌어올리는 기법 클럭 속도를 무작정 높이면 발열 문제가 심각해짐 클럭 속도만으로 CPU의 성능을 높이는 것은 한계가 있음 코어와 멀티코어 클럭 속도를 높이는 방식 외에 CPU의 성능을 높이는 방법 -> CPU의 코어, 스레드 수 늘리기 > 코어 CPU 내부에서 명령어를 실행하는 부품 > 멀티코어 CPU (== 멀티코어 프로세서) CPU 내에..

[혼공컴운] chapter 04. CPU의 작동 원리

| 참고 도서: 혼자 공부하는 컴퓨터 구조+운영체제 04-1. ALU와 제어 장치 ALU CPU에서 계산을 하는 부품 레지스터를 통해 피연산자와 제어 신호를 받아들인다. 피연산자와 제어신호를 바탕으로 다양한 연산 수행 > ALU의 결과 값을 레지스터에 우선 저장하는 이유 CPU에서 레지스터에 접근하는 속도는 메모리에 접근하는 속도보다 빠르다 접근 속도를 줄여 프로그램의 실행 속도를 높이기 위해 메모리가 아닌 레지스터에 연산의 결괏값을 저장한다. > 플래그 (flag) 연산에 대한 추가적인 상태 정보 부호, 제로, 캐리, 오버플로우, 인터럽트, 슈퍼바이저 플래그 플래그는 플래그 레지스터에 저장된다. 플래그 레지스터를 통해 연산 결과에 대한 추가적인 정보를 얻을 수 있다. 제어장치 제어 신호를 내보내고, 명..

[혼공학습단 11기] 혼공컴운 1주차 미션

[혼공학습단 11기] 스터디 활동과 도서별 커리큘럼 안내 » 혼자 공부하는 책 (hanbit.co.kr) [혼공학습단 11기] 스터디 활동과 도서별 커리큘럼 안내 안녕하세요, 한빛미디어 혼공학습단의 🧙‍♀️혼공족장🧙‍♀️입니다. 혼공학습단 활동과 도서별 커리큘럼 안내 드립니다. 11기 활동 기간 1주차: 1월 2일 ~ 1월 7일 2주차: 1월 8일 ~ 1월 14 hongong.hanbit.co.kr 1주차 기본 미션 1. P.51 확인 문제 3번 다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요 프로그램이 실행되려면 반드시 [ ___ ]에 저장되어 있어야 합니다. 정답 메모리 (P.40 참고) 해설 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 그렇기에 만약 프로그램이 실행되기..

[혼공컴운] chapter 03. 명령어

03-1. 소스 코드와 명령어 고급 언어와 저급 언어 고급 언어: 사람을 위한 언어 저급 언어: 컴퓨터를 위한 언어 예) 기계어, 어셈블리어 기계어: 0과 1의 명령어 비트로 이루어진 언어 고급 언어로 작성된 소스 코드는 반드시 저급 언어(명령어)로 변환되어야 한다 컴파일 언어와 인터프리터 언어 컴파일 방식: 소스 코드 전체를 저급 언어로 변환 -> 목적코드 생성 인터프리터 방식: 소스 코드를 한 줄씩 실행 목적 파일 vs 실행 파일 목적 파일: 목적 코드로 이루어진 파일 실행 파일: 실행 코드로 이루어진 파일 링킹: 목적 코드를 실행 코드로 변환하는 과정 03-2. 명령어의 구조 연산 코드와 오퍼랜드 명령어 = 연산 코드 + 오퍼랜드 연산 코드 (== 연산자): 명령어가 수행할 연산 오퍼랜드 (== 피..

[혼공컴운] chapter 02. 데이터

| 참고 도서: 혼자 공부하는 컴퓨터 구조+운영체제 02-1. 0과 1로 숫자를 표현하는 방법 정보 단위 비트 (bit): 가장 작은 정보 단위 바이트(byte): 8비트 킬로바이트(kB): 1000byte 메가바이트(MB): 1000kB 기가바이트(GB): 1000MB 테라바이트(TB): 1000GB 워드: CPU가 한 번에 처리할 수 있는 데이터의 크기 이진법 이진법: 0과 1으로 모든 숫자를 표현 하는 방법 음수 표현: 2의 보수법 + flag 사용 십육진법 이진법으로 모든 숫자를 표현하면 숫자의 길이가 너무 길어짐 & 이진법으로 변환하기 쉬움-> 십육진법으로 해결 15를 넘어가는 시점에서 올림 0x--으로 표시 이진수 -> 십육진수: 네자리씩 십육진수로 변환하고 이어 붙이기 십육진수 -> 이진수:..

[혼공컴운] chapter 01. 컴퓨터 구조 시작하기

| 참고 도서: 혼자 공부하는 컴퓨터 구조+운영체제 01-1. 컴퓨터 구조를 알아야 하는 이유 컴퓨터 구조 이해를 통해 문제 해결 능력 향상 성능/용량/비용을 고려하여 개발 가능 01-2. 컴퓨터 구조의 큰 그림 컴퓨터 구조 지식 컴퓨터가 이해하는 정보 컴퓨터의 네 가지 핵심 부품 컴퓨터가 이해하는 정보 데이터: 0 과 1로 이루어진 정보 명령어: 데이터를 움직이고 컴퓨터를 작동시키는 정보 => 명령어: 컴퓨터 작동 정보, 데이터: 재료 컴퓨터의 4가지 핵심 부품 중앙처리장치 (CPU) 주기억장치 (메모리 - RAM, ROM, ...) 보조기억장치 입출력장치 1. 메모리 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 => 실행되기 위해서는 반드시 메모리에 프로그램이 저장되어 있어야 한다 주소:..

BFS

Breadth First Search 너비 우선 탐색 가까운 노드부터 탐색하는 알고리즘 큐 자료구로를 사용하는 것이 정석 (인접한 노드를 큐에 넣으면 먼저 들어온 것이 먼저 나가게 되므로 가까운 노드부터 탐색할 수 있다) 사용하는 경우 (유형) 연결된 그래프를 탐색하는 경우 최단 거리(최소 횟수)를 구하는 경우 (현재 노드에서 가까운 곳을 먼저 찾기 때문) 그래프의 규모가 크지 않고 시작 지점으로부터 대상이 멀지 않은 경우 cf) 경로의 특징을 저장하는 경우에는 DFS 사용 (BFS는 경로의 특징을 가질 수 없다) 동작 방식 탐색 시작 노드를 큐에 삽입하고 방문 처리 큐에서 노드를 꺼내 인접 노드 중 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리 2번을 더 이상 수행할 수 없을 때까지 반복 code ..

2468_안전 영역

문제 2468번: 안전 영역 (acmicpc.net) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 접근 방식 1. 상하좌우를 돌며 내린 비의 양보다 높은 곳이 있는지 파악한다 -> DFS 활용 2. 높다면 방문처리 한 뒤 return True 3. 낮다면 return False 이 과정을 가장 높은 지역 크기 만큼 반복 (내리는 비의 양) 주의할 점 1. 재귀 함수 범위에 주의하자 # 재귀 함수 범위를 늘려주는 코드 import sys sys.setrecursionlimit(10**7) 2. 제공된 graph를 ..

algorithm/Baekjoon 2023.04.24

2667_단지번호붙이기

2667번: 단지번호붙이기 (acmicpc.net) 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 접근 방법 상하좌우를 모두 돌며 집이 연결되어 있는지 확인 -> DFS 사용 1. 노드 == 1이면 0으로 변경하고 상, 하, 좌, 우 확인 후 return True 2. 노드 == 0 이면 return False 3. global 변수를 사용하여 상하좌우 확인할 때 집의 개수 추가 주의 할 점 1. 상하좌우를 확인 할 때 범위를 넘어갈 수 있으므로 미리 예외 처리 하기 2. graph 값 int 로 변환하기 정..

algorithm/Baekjoon 2023.04.24

DFS

Depth First Search 깊이 우선 탐색 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘 특정 경로로 탐색하다가 특정 상황에서 최대한 깊숙히 들어가 노드를 방문한 뒤, 다시 돌아가 다른 경로로 탐색하는 알고리즘 다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방법 BFS 보단 느리다 (단순 검색 속도) 백트래킹과 연관된다 DFS를 사용하는 경우 모든 노드를 방문하고자 할 때 순회를 하고자 할 때 경로에 특징을 저장해야 할 때 검색 대상 그래프가 클 때 cf) 최단거리는 BFS가 유리 동작 방식 탐색 시작 노드를 스택에 삽입하고 방문 처리 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를..

android 버튼으로 unity 실행하기

안드로이드 프로젝트에서 버튼을 누르면 유니티가 실행되도록 하는 방법 요약 1. 유니티에서 게임을 export 한다 2. 안드로이드에서 export 한 게임을 Library로 추가한다 3. 추가한 Library를 안드로이드 액티비티와 연결한다 Unity에서 게임 export 하는 방법 1. 유니티 접속 2. file → build setting → android → player setting 위의 사진과 같이 설정해 준다 패키지 이름 변경해주는 것도 잊지 말아야 한다 3. x 로 페이지 나가기 4. export 설정해서 추출하기 export 한 게임을 안드로이드에서 library로 추가하는 방법 build.gradle (project)에 아래 코드 추가 flatDir { dirs "${project(':u..

mobile/android 2023.04.12

[자바의 정석] chapter06. 객체지향 프로그래밍1 (2)

오버로딩 (overloading) 오버로딩이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 ⇒ 메서드 오버로딩 오버로딩의 조건 메서드 이름이 같아야 한다 매개변수의 개수 또는 타입이 달라야 한다 이름이 같더라도 매개변수가 다르기에 메서드가 구분될 수 있다. 조건을 만족시키지 않으면 중복 정의로 간주되어 컴파일 에러가 발생한다 반환 타입을 통해서만 구별되므로 반환타입은 영향을 미치지 않는다 (반환타입만 다르면 함수 중복으로 간주된다) 매개변수의 순서가 다르더라도 오버로딩된다 // 오버로딩 가능 long add (int a, long b); long add (long a, int b); 사용자가 매개변수의 순서를 외우지 않아도 되지만 add(3,3)과 같이 호출할 경우 어느 메서드가 호출된 ..

[자바의 정석] chapter06. 객체지향 프로그래밍1 (1)

객체지향언어 객체지향언어의 역사 기본 이론 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다 객체지향언어 주요 특징 코드의 재사용성이 높다 새로운 코드를 작성할 때 기존의 코들를 이용하여 쉽게 작성할 수 있다 코드의 관리가 용이하다 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다 신뢰성이 높은 프로그래밍을 가능하게 한다 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다 코드의 재사용성이 높고 유지보수가 용이하다라는 특징은 프로그램 개발, 유지보수에 드는 시간과 비용을 획기적으로 개선하였다 재사용성, 유지보수, 중복 코드 제거라는 3가지 관점에서 객체 지..

[자바의 정석] chapter 05. 배열 array

배열 (array) 배열(array)이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 // 5개의 int를 저장할 수 있는 배열 int [] score = new int[5]; // score은 배열을 다루는 데 필요한 참조 변수 O, 저장공간 X 저장공간이 연속적으로 배치되어 있다 배열의 선언과 생성 // 선언 방법 1 // 타입 [] 변수이름; int [] score; // 선언 방법 2 // 타입 변수이름[]; int score[]; 배열의 생성 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간을 만드는 것 매열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다 선언 생성 역할 참조 변수를 위한 공간 할당 값을 저장할 수 있는 공간 할당 방법 타입 ..

[자바의 정석] chapter 04. 조건문과 반복문 (if, switch, for, while, statement)

chap 04. 조건문과 반복문 제어문 (control statement) 프로그램의 흐름을 바꾸는 역할 1. 조건문 - if, switch 조건식 + {}으로 구성 조건식의 연산결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다 1.1 if 문 조건문이 true이면 {} 안의 문장 수행 if (조건식) { // 조건식 == true 일 때 실행 } 조건식 일반적으로 비교연산자와 논리연산자로 구성 등가 연산자 (==) 대신 대입 연산자 (=)를 사용하지 않도록 주의하자 조건식의 결과는 반드시 true, false가 되어야 한다 블럭 {} {}을 사용하여 여러 문장을 하나의 단위로 묶을 수 있다 이것을 블럭이라 한다 } 다음에 ;을 붙이지 않는다는 것에 주의하자 블럭 안의 문장들은 탭으..