1. 마이크로 프로세서(MicroProcessor)란?

  "우리가 흔히 쓰는 컴퓨터의 머리는 어디에 해당하는가?"의 질문에 CPU라는 말을 쓴다. 그리고 보통 사람들은 컴퓨터 스펙과 같은 얘기를 할 때, 그래픽이며, CPU라는 말을 쓴다. 이제부터 작성될 내용은 그 CPU에 관한 것, 정확히는 마이크로 프로세서에 관한 것이다.

1) 정의

aaa

[왼쪽: EDVAC - 과거의 CPU, 오른쪽: microprocessor - 현재의 CPU]


  이 두 그림의 공통점은 무엇일까? 두 개 모두 CPU라는 것이다. CPU란 무엇인지에 대한 위키백과의 정의다.

컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하는 가장 핵심적인 컴퓨터의 제어 장치

, 혹은 그 기능을 내장한 을 말한다.
  그러면 마이크로 프로세서는 무엇일까? 이것은 CPU의 기능을 one chip으로 집적해놓은 IC를 말한다.
즉, 우리가 현재 쓰는 범용pc에 들어있는 것뿐 아니라 전자기기에 들어가는 것들은 마이크로 프로세서가 들어있다고 할 수 있다. 
  그러면 마이크로 프로세서 이전에는 CPU가 어땠을까? 그 모습은 하나의 IC에 집적해놓기 전에는 진공관, 트랜지스터를 큰 공간을 차지한 모양이다. 이런 커다란 것이 하나의 ic로 집적되어서 대량생산이 가능해지면서 싸지고, 전기도 적게 사용되고, 고장이 잘 안나게 된 것이다.

2) 마이크로 컴퓨터

  마이크로 프로세서들이 생겨나며 이것을 이용해 컴퓨터를 만든 것을 마이크로 컴퓨터라고 한다. 다시말해, 마이크로 프로세서를 CPU로 사용한 소형 컴퓨터를 말한다.

3) 마이크로 컴퓨터 구성

마이크로 프로세서의 내부구성은 다음과 같다.
- 제어부, 연산부, 레지스터

마이크로 컴퓨터의 구성은 다음과 같다.
- 마이크로 프로세서, 입력장치, 출력장치, 주기억장치, 보조기억장치

2. 마이크로컨트롤러(Microcontroller)란?

1) 정의

  마이크로프로세서가 한 IC에 집적해놓은 것이라고 말했다. 마이크로 컨트롤러는 단일 칩내에 마이크로프로세서의 CPU기능, 한정된 주기억장치와 입/출력 제어회로를 내장한 것을 말한다. 즉, 칩 하나만으로 컴퓨터의 기능을 수행한다.
  이 컨트롤러는 단순화, 저가격화가 가능하고 기본적인 컴퓨터기능을 수행해서 기계제어용으로 사용된다.(세탁기, 전자레인지같은 가전체품, 아두이노 등)
  마이크로 컨트롤러는 IC 1개로 기본적인 컴퓨터구성이 가능하므로 단일칩 마이크로컴퓨터라고도 한다.

2) 구성

  마이크로컨트롤러의 내부구성은 다음과 같다.
- CPU코어, ROM, RAM, DMA제어기, 직렬/병렬포트, 인터럽트제어기, 타이머/카운트, A/D,D/A컨버터

3) 마이크로컴퓨터와 마이크로컨트롤러

 마이크로 컴퓨터/컨트롤러의 차이는 무엇일까? 위에서 설명한대로면 마이크로컨트롤러도 마이크로컴퓨터인가?
그렇다. 마이크로컨트롤러도 일종의 마이크로컴퓨터라고 볼 수 있다. 마이크로컴퓨터는 마이크로프로세서를 CPU로 사용한 컴퓨터라고 했다. 그러니 마이크로컨트롤러도 같은 식으로 사용했으니 맞다. 하지만 컨트롤러도 부르는 것은 하나의 칩에서 기능을 수행하는 것, 코어에 연결되는 수많은 제어들과 기계제어용으로 사용되기 때문이다.



제 블로그의 내용이 도움이 되셨나요?

여러분의 공감댓글이 큰 힘이 됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼


 

  보통 대학4학년 과정에서 배우는 것이 컴파일러다. 컴파일러는 뭐하러 배울까?

나 스스로 대답하길 '컴퓨터 공학(과학)에서의 기초중의 기초야'라는 것이다. 사실 이 물음은 단지 이성적으로 이해하기위한 것일지도 모른다. 마음적으론 컴퓨터에 조금 더 배워보고싶지만, 듣기 않기위한 변명을 찾고 있었는지도 모른다.

  그래도 컴파일러를 뭐하러 배우는지에 대해 조금 더 찾는다면 글쎄...굳이 찾는다면 나중에 도움이 될 수도 있고, 더 나은 프로그래머가 될 수도 있을 것이다. 

  내가 배우는 것은 컴퓨터에 대한 흥미와 궁금증이 크기에 더 깊게는 생각안하고 이제 컴파일러에 대해서 설명해볼까한다.

1. 컴파일러란?

  


  원시 프로그램(원시 코드)는 보통 고급 언어로 작성되어 사람이 이해하기 쉽게 쓰여진 것이다. 컴퓨터가 알아듣게 바꿔야 한다. 그 과정에서 번역이 필요하다. 그 번역해주는 프로그램이 컴파일러이다. 여기서 컴파일러(Complier)는 번역기의 일종이다. 하나의 프로그램에서 다른 프로그램으로 번역해주는 것을 말한다.

  우리가 흔히 아는 C, Java등을 컴파일러를 통하면 결과로 어셈블리어, 기계어코드(실존기계, 가상기계)가 나오는 것이라고 보면 된다.

여기서 C, C++, Java같은 특정 문법에 따라 쓰인 프로그램을 원시 프로그램이라 한다. 결과로 나오는 어셈블리어, 기계어코드는 목적 프로그램이라고 한다.


* 가상기계?

  위키백과의 정의에 의하면 "실제 하드웨어와 통신이 없는 가상의 컴퓨터"라고 적혀있다. JVM(자바 가상머신), VMWARE 그리고 자주 쓰이는 Docker(도커) 등이 있다. 

  자바 가상머신을 예로 들면, 원시 코드 -> 컴파일러 -> JVM -> 인터프리터 -> 목적 코드 이다. 앞쪽을 따서보면 비교하면 다음과 같다.

원시코드 -> 컴파일러 -> 목적코드

원시코드 -> 컴파일러 -> JVM

(왜 자바는 JVM으로 컴파일하는 지에 대해선 다루지 않는다. jvm에 대해서 검색해보면 알 수 있을 것이다.)


2. 번역기의 종류

  번역기는 말 그대로 영어<->국어 와 같이 번역을 하는 것이다. 종류로는 4가지가 있다.


 전처리기


 입력: 원시프로그램

 출력: 확장된 원시 프로그램

 어셈블러


 입력: 어셈블리 원시 프로그램

 출력: 기계어 코드 

 결합기(loader/linker)


 입력: 여러 뭉치의 기계어코드

 출력: 하나로 묶이고 재배치 정보가 확정된 코드 

 해석기(interpreter)


 입력: 원시 프로그램, 중간코드

 출력: 원시 프로그램을 실행시킨 결과


3. 처리 과정

  컴파일러에 의해서 처리되는 과정은 다음과 같다.

원시 프로그램 > 전처리기 > 컴파일러 > 어셈블러 > 로더/링커 > 목적 프로그램


* main이 없으면 어디서 멈출까?

  c, c++등의 언어는 모두 main을 갖추고 있다. 그렇다면 main은 어디서 멈추는게 맞을까? 그건 로더/링커다.

전처리기는 #이 붙은 것을 처리한다. 컴파일러는 말그대로 어셈블리코드로 바꾸는 것을 한다. 

어셈블러는 재배치가능한 목적프로그램으로 바꿔주기만 한다. 하지만 로더/링커에선 다른 c파일들과 하나로 합치고, 라이브러리를 가져오고, 실제 실행가능한 프로그램으로 만들기때문에 기본적으로 파일을 실행할 때, 실행되는 main이 없으면 만들어지지 않는다.

따라서, 로더/링커에서 main이 있는지 검사를 한다고 보면 된다.

4. Linux계열에서의 과정

  Linux계열은 c컴파일을 위해 gcc를 사용한다. 컴파일이 제대로 되었는지 중간중간과정을 확인해보는 방법은 없을까?

gcc프로그램에는 여러가지 옵션이 있다. (gcc컴파일방법 바로가기)

옵션 

결과

 -E

 전처리기의 결과인 확장된 원시프로그램(.i)

 -s

 컴파일러의 결과인 어셈블리프로그램(.s)

 -c

 어셈블러의 결과인 재배치가능한 목적프로그램 (.o)


또한 gcc를 통해서 실행파일(실행가능한 목적프로그램)이 나오기까지의 기록을 보고 싶다면 gcc -v filename.c를 하면 된다.



제 블로그의 내용이 도움이 되셨나요?

여러분의 공감댓글이 큰 힘이 됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼




컴퓨터분야에 있어서 '오픈 소스'라는 말을 많이 들어보셨을 텐데요. 

오늘 포스팅은 오픈 소스사이트로 유명한 github에 가입을 해보고 저장소를 만들어 볼 거에요.


github 바로가기

1. 우선 위의 github사이트로 들어가요.


2. Sign up을 눌러줍니다.



3. 위에서 차례대로 Username: 저장소이름, 

Email address: github에 사용할 아이디인 동시에 자신이 가지고 있는 이메일,

Password: github에 사용할 비밀번호

를 작성하시고 다음 단계로 넘어갑니다.



4. 저희는 따로 기업을 운영하고 있는게 아니여서 Free로 해도 무방해요.

Pro의 경우는 오픈 소스로 노출되어선 안되는 프로젝트 등을 위한 거라고 보면 돼요.



5. 간단한 설문조사입니다. 안하셔도 무방해요. Submit를 눌러줍니다.



6. 그러면 위의 화면처럼 이메일을 확인해달라는 페이지가 나와요.

처음에 github에 사용할 아이디에 인증메일이 가는데요.

이메일로 가서 인증버튼을 눌러줍니다.



7. 자, 버튼을 누르면 위의 화면이 뜨실텐데요. 빨간 버튼의 Start a project를 눌러줍니다.



8. 1번 빨간박스에는 생성할 프로젝트이름, 2번 빨간박스는 공개/개인입니다. 

저희는 일단 예제로 만들 것이니 Public으로 선택해주시고 3번 빨간박스를 눌러줍니다.



9. 그러면 저장소가 만들어졌습니다. 위의 화면에서

BeCreated00 / example이 보이시죠?

'/'앞은 아까 가입하실 때 입력한 Username이 되고요.

뒤는 프로젝트 이름이 돼요.



  이렇게 원격 저장소인 github 가입과 저장소를 만들어 봤습니다. 쉽게 느껴졌는지 모르겠네요. ㅎ

보충 설명을 하자면, 아까 public / private로 저장소를 선택해서 만들 수 있다고 했죠?

public은 말 그대로 사람들에게 공개되어 보여지는 걸 말해요. 사람들이 검색을 하면 나오는 거죠.

private는 유료에서 3인까지 무료로 바뀌었어요. 이건 학교 프로젝트나 소규모 프로젝트에서 사용하면 좋을 거예요.

이상으로 포스팅을 마칠게요. 



제 블로그의 내용이 도움이 되셨나요?

여러분의 공감댓글이 큰 힘이됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼




  스튜디오를 사용하다가 GitHub에 올려져 있는 오픈소스나 예전에 나의 소스, 같이 진행 중인 프로젝트 등이 필요할 때가 있어요.

그럴 때, GitHub에서 복사해서 가지고 와야 하는데요. 그걸 해주는 게 Clone이라는 거예요.

오늘은 제목처럼 GitHub에 있는 자신의 저장소에서 Clone 해오는 것을 해볼 거예요. 가지고 오는 거야 어렵지는 않으니 순서대로만 하시면 될 거예요.



우선 안드로이드 스튜디오를 열어요. 현재 열려있는 프로젝트가 있을 때, File > New > Project from Version Control > git를 누르고요. (현재 아무 프로젝트가 없을 때, 다른 화면일 텐데요. 그 화면에 Project from Version Control > git 을 선택해줘서 열면 돼요.)



하나의 작은 창이 떠요. URL을 작성하는 부분이 보이는데요. 이 공간은 GitHub의 저장소 주소를 가져오는 거예요. 



자신의 저장소로 이동해서 가져올 프로젝트의 주소를 복사해오세요. 



그걸 작은 창에 붙여넣기한 뒤, test를 누르면 success라는 문구가 떴다 사라질 거예요. 됐으면 Clone 버튼을 눌러줘요.



그러면 이런 화면이 뜨는데요. 왼쪽 버튼을 순서대로 현재 프로젝트닫고 열기/새 창에서 열기/취소를 말해요. 

아무거나 선택하셔도 돼요.



프로젝트가 열리면 아래쪽에 위의 빨간 박스처럼 synced successfully라고 떠요.



성공이 됐다면, GitHub에서 프로젝트를 Clone(복사)을 해서 가져온 거예요. 그런데 소스코드만 들고 오는 게 아니라 git 저장소, GitHub에 있던 commit log들, 원격 저장소 주소도 같이 들고 와요. 그래서 Clone을 하시면 따로 GitHub에 설정을 안 주셔도 돼요. 자동으로 연결이 되니까요.

확인을 위해 VCS > Import Into Version Control> Share Project on GitHub에 들어가시면 위 화면처럼 GitHub에 연결되어있는 것을 알 수 있어요. 이렇게 하면 Clone이 완료됐어요.



한번 Clone으로 로컬로 가져오는 것을 해봤는데요. 방법은 무지 쉽죠?

쉽긴 쉬운데 아마 Clone으로 가져오시는 도중에 오류가 뜨시는 분들도 계실 거예요. 다른 사람의 프로젝트를 가져오든, 자신의 팀프로젝트를 가져오든지요. 이 부분은 SDK가 맞지 않거나 경로 오류가 뜨거나 여러 오류들이 있는데요.

이런 오류에 관해서는 따로 찾아보셔서 해결해야 해요. 저도 적어드리곤 싶지만 그 오류들을 다 알 수도 없고, 많기도 하고, 프로젝트마다의 설정을 제가 다 알 수가 없거든요. 

어쨌든 이제 Clone으로 원격 저장소에서 가져올 수 있게 되었네요.  조금이라도 도움이 됐길 바랄게요.



제 블로그의 내용이 도움이 되셨나요?

여러분의 공감댓글이 큰 힘이됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼



  안녕하세요. 이번 포스팅엔 Android Studio와 GitHub연동방법을 소개해드리고자 하는데요.

제가 안드로이드 프로젝트를 진행하다가 Android Studio로 GitHub와 연결할 방법이 있을까~했는데 역시나 있더군요.

하지만 관련 글들을 읽는데 조금 어렵기도 하고, git을 완전히 알고 있지 않았기에 헷갈렸습니다. 

정리도 할 겸 이렇게 작성하게 되엇습니다.


소개에 앞서 이 글은 안드로이드 스튜디오 설치, git설치, github가입된 상태로 보고 진행하겠습니다.

(git을 아예모르시는 분은 먼저 git에 대해 조금은 아시고 하시는게 좋습니다)


  이 글의 작성 당시의 버전은 다음과 같습니다.

 Android Studio

Git

 3.3

 2.20.1


글의 구성은 다음과 같습니다.

1. Android Studio에 git, github 연결

2. 내가 프로젝트를 만들 때

1) Share Project기능으로 Studio내에서 원격저장소를 만들고 연결하는 방법(간접적인 방법)

2) github홈페이지에서 저장소를 만들고 gitBash로 원격저장소를 연결하는 방법(직접적인 방법)



1. Android Studio에 git, github 연결

  Studio메뉴에서 File - Setting을 누르면 창이 하나뜹니다. 

여기서 Version Control - git에 들어갑니다. 그리고 Test를 누릅니다. git의 버전이 뜹니다.

 (안뜨시는 분은 git이 없거나 git이 다른 곳에 설치되어 있다는 것입니다. 수정해서 Test를 합니다.)



이번에는 GitHub로 들어갑니다. 

(처음엔 위 화면과 달리 아무것도 없을 겁니다.)

닫기버튼 아래에 +버튼을 클릭합니다.

GitHub의 아이디와 비밀번호를 작성 후, Log in을 합니다.

그러면 위 화면처럼 GitHub프로필사진과 함께 추가가 됩니다.


여기까지가 완료했으면

이제 Android Studio에 git, github를 사용할 수 있게 됐습니다.(짝짝짝)



이제 Example2프로젝트를 git로컬저장소에 등록할 차례입니다.

VCS - Import to Version Control - Create Git Repository를 누릅니다.



프로젝트안에 git로컬저장소를 만들어야 되니까 

우리가 만든 Example2프로젝트 폴더를 선택후 OK를 누릅니다.



왼쪽 폴더계층도, 코드위의 java, xml 등 파일을 보면 빨간색으로 바뀐걸 볼 수 있습니다.

git과 비교하면 다음과 같습니다.


빨간색 - 새 파일일 때

녹   색 - git에 add되어 있을 때

파란색 - 추적중인 파일이 수정 될 때


2. 내가 프로젝트를 만들 때

  사실 저는 이 부분이 약간 헷갈렸습니다. 처음이다보니 글마다 얘기가 조금씩 달라서 그랬던 것 같습니다.

제가 생각하기로 직접적인 방법과 간접적인 방법 , 이 두가지로 나눠져 있다고 봤습니다. 
이번 부분을 읽으실 때는 1)2)둘 중에 하나를 골라 프로젝트를 GitHub와 연결시키면 됩니다.

1) Share Project기능으로 Studio내에서 원격저장소를 만들고 연결하는 방법(간접적인 방법)

간접적인 방법이라고 부른 이유는 GitHub홈페이지에 들어가지 않고도, 

git콘솔창에 들어가지 않고도 원격저장소를 만들고 연결할 수 있기 때문입니다. 



VCS - Import into Version Control - Shared Project on GitHub을 누릅니다.

그러면 위와 같은 창이 뜰텐데요. 이 창은 공유할 GitHub의 저장소이름을 지정해 주는 창입니다.

Repository name: GitHub의 만들 저장소이름

Remote: origin

으로 해서 Share를 눌러줍니다.


눌러주시면 위와 같은 창이 뜰겁니다.

이 창을 통해 Commit & Push를 해줍니다.

OK를 누릅니다.(작은 창이 뜰텐데 yes/no 아무거나 누릅니다)




잠시 기다리시면 오른쪽 하단에 이런창이 뜹니다.

진짜 되었는지 확인해 봐야겠죠?



GitHub홈페이지에 들어가서 자신의 Repository에 들어가보면

Example2가 생겼는 걸 확인 할 수 있습니다.



2) github홈페이지에서 저장소를 만들고 gitBash로 원격저장소를 연결하는 방법(직접적인 방법)

두번째방법으로 직접적인 방법입니다. 1)이 아닌 1을 하신 뒤에
진행하시면 됩니다. 이 방법은 GitHub홈페이지로 가서 저장소를 만들고, GitBash로 추가적인
작업을 완료해야 합니다. 일일이 다해야 해서 제가 직접적인 방법이다~라고
붙인 겁니다

GitHub홈페이지에서 로그인 한 후 위의 그림처럼 

자신의 repositories로 이동하고 New를 누릅니다.



이 화면이 뜨실텐데요. 여기서 프로젝트명을 Example2로 하고 생성해줍니다.




다음 화면에서 위의 호면처럼 빨간박스를 클릭해서

자신의 저장소 주소를 복사합니다.


안드로이드 프로젝트가 있는 경로로 이동합니다.

폴더에 오른쪽 클릭 - Git Bash Here을 선택합니다.



하나의 창이 뜨실텐데요.

git remote add origin https://github.com/깃허브아이디/Example2.git

를 입력합니다.

(뒤에 주소는 아까 주소복사한 것을 붙여넣기합니다. 오른쪽클릭후 Paste!)


제대로 추가되었는지 확인하기 위해서

git remote -v를 입력합니다.

위와 같이 뜬다면 된 겁니다.


다시 Android Studio로 넘어가서

VCS - Commit을 클릭합니다.

창이 뜨시면 위의 화면에 맞게 입력합니다.

(체크박스, commit Message)


그리고 Commit을 클릭하면 위의 화면처럼 가운데 작은 창이 뜰텐데

Commit을 누릅니다.


여기까지하면 git로컬 저장소에 commit까지 완료된 상태입니다.



이젠 GitHub의 저장소로 commit한 걸 보낼 차례입니다.

VCS - Git - Push를 클릭합니다.



이 창이 뜨시면 바로 Push를 클릭합니다.



GitHub홈페이지로 가서 확인해보면 제대로 된 것을

알 수 있습니다.




여기까지 하셨으면 거의 다된 것입니다.  위에 대로 완료하셨으면 
이제 코드 수정 ->Commit -> Push로 원격저장소로 보낼 수 있게 되었습니다.

더 적을려고 했는데 시간도 너무 지체됬고
내용이 너무 길어져서 다음 포스팅에 적을 예정입니다.



+ Recent posts