전체 글 354

반도체 기억장치 (semiconductor memory) 방식의 분류에 대한 이해

현대의 Computer 들은 반도체(semiconductor)를 사용해 다수의 기억장치를 구성하고 있다. 흔히 언급되는 CPU 레지스터(Register), 캐시(Cache) 메모리, 주기억장치(Main Memory), SSD 등이 이와 같은 기억장치들이다. 이전의 Computer 들은 기억 장치로 magnetic drum, magnetic core memory 등을 사용하기도 했다. 대부분 사라졌으나 현재까지도 HDD 와 같은 기억장치는 자기(magnetic) 방식 사용하고 있다. 개인적으로 RAM이라 함은 주기억장치로 동일한 의미로 인지하고 있었고, Cache 나 CPU Register 와 같은 기억장치는 별개의 방식으로 구성된 기억장치로 생각하였다. ROM 또한 BIOS 정도로만 인지하였고, SSD ..

카테고리 없음 2019.10.19

컴퓨터 기억 장치들의 종류 및 특징

컴퓨터 내부에는 다양한 기억 장치들이 존재하고 있고, 대표적으로 다음과 같이 장치들이 있다. CPU 레지스터(Register) : CPU 내 위치한 고속 메모리로 극소량의 데이터를 저장할 수 있다. 캐시(Cache) : SRAM 으로 구성되었으며, CPU Core 외에 존재하여 주기억장치와 CPU 간 속도차를 극복하기 위해 사용된다. 주기억장치(Main Memory) : DRAM 으로 구성되었으며, CPU가 직접 접근하여 데이터를 사용할 수 있다. 보조기억장치(HDD, SSD) : CPU가 직접 접근할 수 없고, device controller 등을 통해 접근이 가능하다. 다 같이 기억(저장)한다는 점에서 유사할 텐데 이렇게 다양한 기억장치들이 한 컴퓨터 내에 존재하는 이유는 무엇일까. 하나의 종류로 저..

Python - configparser, 기본적인 설정파일을 다루는 모듈

configparser.ConfigParser() configparser 모듈은 ConfigParser class 를 제공하고, ConfigParser class 는 Microsoft Windows의 INI 와 같은 형식의 설정파일 구조를 다룰 수 있다. [sample.ini] [KeyList] # Set Key Value Key1 = 10 Key2 = 20 Key3 = 30 Key4 = 40 Key5 = 50 [NameList] # Set Name Value Name1 = abc Name2 = bcd Name3 = cde Name4 = def Name5 = efg 위와 같은 형태의 설정 파일을 읽기 위해서 다음과 같은 코드를 사용할 수 있다. from configparser import ConfigPa..

Language/Python 2019.10.11

Android Studio / Github 연동

Android Studio IDE 로 작업을 하면서 코드 형상 관리를 위해 Github 를 사용하는 경우가 있다. Android Studio 와 Github 를 연동하는 방법은 다음과 같다. 확인 진행한 환경 : Android Studio 3.5 git version 2.23.0.windows.1 (git 미설치시 [Windows 내 git 설치] 참고) 현재 작업 중인 프로젝트를 처음으로 github에 연동하는 경우 불필요한 파일을 연동에서 제외 시키기 위한 파일 (.gitignore) 작성 .gitignore 생성을 위한 ".ignore" plugin 설치 제외 파일/폴더 정의를 위한 .gitignore 자동 생성 "Share Project on Github" 를 통한 연동 기타 Trouble sho..

Android 2019.10.08

CPU 레지스터 (Register) 의 이해 및 종류

CPU 레지스터 : 중앙처리장치(CPU) 내에 위치한 기억장치로 많은 수의 레지스터를 CPU내에 포함시키는 것은 어렵기 때문에 특수 목적용 레지스터들과 몇몇 일반 목적용 레지스터만 존재한다. 대표적인 레지스터의 종류 : PC (Program Counter) : 다음 인출(Fetch) 될 명령어의 주소를 가지고 있는 레지스터 AC (Accumulator) : 연산 결과 데이터를 일시적으로 저장하는 레지스터 IR (Instruction Register) : 가장 최근에 인출된 명령어(현재 실행 중인 명령어)가 저장되어 있는 레지스터 SR (Status Register) : 현재 CPU 의 상태를 가지고 있는 레지스터 MAR (Memory Address Register) : PC 에 저장된 명령어 주소가 사용..

CPU 클럭 주파수 (Clock Frequency)

CPU clock frequency 는 CPU 동작 속도를 의미하고, '초당 사이클'을 의미한다. (단위는 Hz) (사이클은 명령어가 요구하는 동작들을 수행하는 단위) Clock Frequency 1초 기준 사이클의 수 1 사이클 기준 걸리는 시간 1 Hz 1초에 1개의 사이클을 수행 1개의 사이클을 수행하는데 걸리는 시간은 1초 100 Hz 1초에 100개의 사이클을 수행 1개의 사이클을 수행하는데 걸리는 시간은 1/100 초 즉, Hz가 높을 수록 더 빠르게 처리하는 것을 알 수 있다.

하이퍼바이저 (hypervisor) 의 이해

하나의 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적인 플랫폼을 의미한다. 여기서 대상이 되는 컴퓨터는 호스트 컴퓨터라고 한다. 하이퍼바이저는 Type 에 따라 다음과 같이 두가지 형태로 나뉜다. Type - 1 : Native 혹은 Bare-metal hypervisor Hardware 위에서 바로 Hypervisor가 실행되는 구조 Type - 2 : Hosted hypervisor Type - 1 과 달리 Hardware 와 Hypervisor 사이에 호스트 운영체제가 존재하는 구조

OS 2019.09.16

Python - 지능형 리스트 (List Comprehension)/제너레이터 표현식 (Generator expression) 의 이해 및 비교

지능형 리스트 (List Comprehension) : Python 에서는 리스트 구성을 위해 항목을 하나하나 나열하는 방식외에 구문을 통해 sequence 형태의 데이터를 가공하여 리스트를 구성하는 방법을 제공하고 있다. 지능형 리스트를 사용하게 되면 코드가 간결해지고 상황에 따라서는 성능이 좋은 코드를 작성할 수 있다. 제너레이터 표현식 (Generator expression) : 지능형 리스트 (List Comprehension) 과 유사하지만 별도의 리스트는 생성하지 않고, iterator 를 생성하여 항목을 하나씩 처리할 수 있도록 한다. 지능형 리스트를 만든 후 하나씩 항목을 처리하여도 되지만 별도의 메모리 공간을 차지하지 않는다는 차이점이 있다. 지능형 리스트의 경우 대괄호 [] 를 사용하는..

Language/Python 2019.09.13

[Notepad++] '자동 완성' 기능 끄기

Notepad++ 을 사용하다 보면 앞서 나온 단어를 바탕으로 자동 완성 기능이 동작해 불편한 경우가 있다. Code 짤 때는 같은 변수를 사용하는 경우가 많아 유용할지 모르지만 일반 글을 작성할 때는 불편하여 해당 자동 완성 기능 종료가 필요하였다. 아래 화면과 같이 환경 설정 메뉴를 실행한다. [F10 > 설정 > 환경 설정] 환경 설정 팝업창을 보면 자동 완성 항목을 볼 수 있다. 아래와 같이 필요하지 않은 기능들을 모두 끄고 '닫기'를 선택한다. 이후 설정에서 빠져 나와 글을 작성해 보면 더 이상 자동 완성이 동작하지 않는 것을 볼 수 있다.

[CA] Pipelined Instruction 수행시 발생할 수 있는 Hazard 종류

Pipelined Instruction 수행시 발생할 수 있는 Hazard 의 종류 Sturcuctural Hazard Data Hazard Freezing the pipeline Forwarding Compiler Scheduling Control Hazard Optimized branch processing Branch prediction Delayed branch 1) Structural Hazard : 동일 자원(Resouce : Memory or register)에 대해 pipelined 된 다중 instruction이 동시에 접근하는 문제 (기본적으로 하나의 자원에는 하나의 instruction 만이 접근하여 사용할 수 있다.) 즉, 동일 Cycle에 서로 다른 instruction 에서 동일..

카테고리 없음 2019.09.08