Computer Science
아두이노 소개
아두이노 우노(UNO): 1번째 버전 우노(UNO)란 1번이라는 의미(이태리어) 아주 간단한 형태의 하드웨어 8비트 RISC CPU 칩이 붙어 있음(286컴퓨터 성능과 비슷) 위 그림에서는 가운데 UNO 글씨 아래 네모난 칩이 CPU 286 컴퓨터(인텔 80286을 탑재한 16비트 컴퓨터)(1982년에 IBM이 개발) 8비트 CPU만 있어서 할 수 있는 영역이 적다(운영체제 설치 불가능) 여러 핀이 있어서 납땜 없이 브레드 보드에 쉽게 꽂을 수 있다. 14개 디지털 핀 6개 아날로그 핀 오픈소스 하드웨어로 하드웨어 회로도가 전부 공개되어 있다. 따라서 누구나 똑같이 아두이노 하드웨어를 만들 수 있다. 그래서 이를 이용한 정품 보다 저렴한 호환 제품이 많다. 아두이노 쉴드를 이용해 여러가지 기능을 구현할 ..
[CSAPP] 8.5 Signal(시그널)
8.5 Signal(시그널) 지금부터 프로세스가 커널을 통해 다른 프로세스에게 인터럽트를 보내는 Linux signal로 알려진 ECF(Exceptional control flow)에 대해 알아 볼 것이다. signal은 시스템에서 특정 유형의 이벤트가 발생했음을 프로세스에 알리는 작은 메시지이다. 위 그림은 Linux 시스템에서 지원되는 30가지 유형의 signal이다. 각 signal 유형은 일종의 시스템 이벤트이다. low-level의 하드웨어 exception는 커널의 에외 핸들러에 의해 처리되며 일반적으로 사용자 프로세스에는 표시되지 않는다. 반면, signal은 예외의 발생을 사용자 프로세스에 노출하는 메커니즘을 제공한다. divide by zeros를 한 프로세스에서 수행할 경우, 커널이 S..
[백준] 2504번: 괄호의 값_JAVA
문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다. ‘()’ 인 괄호열의 값은 2이다. ‘[]’ 인 괄호열의 값은 3이다. ‘(X)’ 의 괄호값은 2×값..
[백준] 2941번: 크로아티아 알파벳_JAVA
문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 입력 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있..
[CSAPP] 7.9 Loading Executable Object Files(실행 가능한 객체 파일 로딩)
7.9 Loading Executable Object Files(실행 가능한 객체 파일 로딩) executable object file prog를 실행시키기 위해서 Linux shell의 command line에 아래와 같이 하면 된다. linux> ./prog prog는 내장된 shell 명령어가 아니기 때문에 shell은 prog가 executable object file이라고 가정한다. 이것은 loader라고 알려진 memory resident OS code에 의해서 실행이 된다. 모든 Linux 프로그램은 execve 함수를 호출해서 loader를 실행할 수 있다. loader는 executable object file에 있는 code와 data를 disk에서 메모리로 복사한다. 그리고 첫번째 명..