티스토리 뷰

컴퓨터 구조

[Arch] 1. Project1 설명

hezma 2020. 4. 16. 04:40

1.0 Intro-반드시 알아야 하는 리눅스 상의 커맨드/기능

이 프로젝트1을 하면서 반드시 알아야 하는 리눅스 상의 커맨드를 정리해보았다.

1.0.1 ls

- 지금 directory에 있는 파일들의 목록을 보여주는 커맨드

그냥 ls 커맨드 자체만 쳐주면 현재 디렉토리에 무슨 파일들이 있는지를 보여준다. 여기서 파일이란 우리가 실제로 다루는 파일과 디렉토리를 모두 포함한 개념이다.

예를 들어 밑의 그림0을 보면 vagrant 디렉토리에 dinocpu라는 파일/디렉토리 가 있는 것을 확인할 수 있다. (실제로 project에서 dinocpu는 디렉토리이다. )

<그림0>

1.0.2 cd: change directory

-현재 위치한 directory를 바꾼다.

예를 들어 위의 <그림0>에서 현재 vagrant 폴더에 위치해있고, dinocpu에 들어가고 싶다면

cd dinocpu

를 치면 된다. 그러면 다음 <그림1>과 같이 접속 디렉토리가 바뀐 것을 볼 수 있다.

<그림1>

이런 경우는 현재 위치한 경로에 대한 상대 경로를 입력한 경우고, 절대 경로를 입력해 줄 수 있다.

1.0.3 touch something.xyz

-touch command 뒤의 something.xyz 파일을 만들어주는 커맨드

그냥 비어있는 something.xyz 파일을 만들어준다.

1.0.4 rm something

something 을 삭제

1.0.5 Vim editor

-리눅스 상의 기능 좋은 메모장. vim 텍스트파일이름 으로 사용한다.

이건 설명하려면 너무 끝이 없어서 밑에서 진행하며 사용방법을 설명했음. 정석으로 알고 가고 싶으면 밑의 링크 참고.

Vim editor 설명: https://www.tutorialspoint.com/vim/index.htm

1.0.6 cat something

파일의 내용물을 보는 커맨드. vim으로 파일의 내용물을 보는 건 좀 귀찮을 때가 많음. 파일의 내용물을 굳이 수정해야 할 때가 아니고 간단히 확인만 하는 작업이 필요하다면 cat something 을 치면 파일의 내용이 출력된다. text file 외에 써도 출력이 되는 것으로 알고 있음.

1.1 Vagrant 부팅(windows기준)

이전에 dinocpu를 등록했던 환경에서(vagrant init dinocpu 커맨드를 입력해 dinocpu 파일이 있는 directory) 커맨드 창을 열고

  • vagrant up(vagrant 부팅)
  • vagrant ssh(vagrant 가상 환경 접속)

을 진행한다.

그러면 다음 <그림2>와 같이 가상 환경에 잘 접속한 것을 볼 수 있다.

<그림2>

이제 가상 환경의 내용물을 살펴보려 ls를 쳐보면 상기 ls 설명에 있는 <그림1> 처럼 dinocpu라는 것 하나만 떡하니 있는 것을 볼 수 있다. 이 dinocpu에 들어가보자. cd dinocpu를 입력하면 된다. 그러면 접속 directory가 dinocpu로 바뀌는데 이 폴더 안의 내용물을 살펴보기 위해 다시 ls를 입력해보면 다음<그림3>과 같은 결과물을 확인할 수 있다.

<그림3>

이 때 나는 이 폴더의 내용물을 보고 이 경로-dinocpu폴더-가 dinocpu.box를 설치하고 vagrant init dinocpu를 한 환경이라는 것을 알게 되었다. 따라서 우선 다음과 같은 중요한 결론을 내릴 수 있다.

  • 가상 환경의 dinocpu directory는 dinocpu.box를 설치한 환경과 같으며 디렉토리의 내용물을 실제 환경과 공유하고 있다.

그러면 이제 프로젝트 파일을 어디에 넣어서 진행해야 할 지 알 수가 있다.

1.2 Vagrant 환경에서 실습 환경 만들기

위에서 내린 결론으로, vagrant와 공유하고 있다던 directory에 proj1_hw 를 압축 해제하여 놓으면 된다는 것을 알 수 있다. 다음 <그림4>와 같이 말이다.

<그림4>

그렇게 내용물을 풀어놓고 dinocpu에서 ls를 입력하면 다음 <그림5>와 같이 proj1_hw가 잘 있는 것을 확인해볼 수 있다.

<그림5> 

이제 프로젝트를 진행하는 내내 proj1_hw안의 것들만이 필요하므로 cd proj1_hw를 이용해 이 폴더 안으로 이동해놓자.

이제 우리가 코드를 작성해야하는 가장 큰 일이 남았다. 코드를 작성해야 하는 디렉토리(경로)는 문제의 요구에 의해 proj1_hw/src/main/scala 이고 그 경로에 simple.scala라는 코드 파일을 만들어서 그 파일에 코드를 작성하면 된다. 따라서 우선 다음 커맨드를 proj1_hw의 경로에서 입력하자.

  • touch src/main/scala/simple.scala

이로써 해당 경로에 simple.scala라는 파일이 만들어졌다. 이제 이 파일을 열어서 코드를 작성하면 되는데, 해당 src/main/scala로 cd를 통해 이동해서 vim으로 열고 작업해도 되지만 후술할 작업들에 의해 그냥 이 경로에서 이동하지 않는 것이 낫다. 따라서 다음과 같이 src/main/scala/simple.scala를 열 수 있다.

  • vim src/main/scala/simple.scala

그러면 이제 다음 <그림6>과 같이 깔끔한 텍스트 파일 안을 볼 수 있을 것이다.

<그림6>

이제 vim을 처음 보는 사람이라면 키보드를 막 쳐도 아무것도 입력이 안 되는 것을 확인할 수 있을 것이다. 입력 모드로 가려면 이 상태에서 i버튼을 누르면 된다. 그럼 다음 <그림7>과 같이 --INSERT--라고 왼쪽 밑에 뜨고 입력할 수 있는 상태가 된다. 막 입력한 다음에 다시 입력 불가한 상태로 만들고 싶으면 ESC를 입력하면 된다. 우선 다음 <그림7>에 있는 커맨드를 입력해보자. 어차피 입력해야한다.

<그림7>

이제 입력을 다 했다면 저장하는 방법을 알아보자. ESC를 누르고 밑에 --INSERT--가 뜨지 않는 상태가 되면 :wq! 를 입력하고 엔터를 누르면 된다. (wq!가 정확히 뭔지 나도 잘 모름) 콜론을 포함하여 입력해야 한다. 그러면 vim이 종료되고 다시 파일 탐색창이 뜬다. 이 상태에서

  • cat src/main/scala/simple.scala

를 쳐보자. 만약 vim에서 한 입력이 유효하다면 cat명령어 아래에 simple.scala의 내용이 쭉 출력되는 것을 확인해볼 수 있다.

이제 코드를 작성하고 저장하는 방법을 알게 됐다.

1.3 프로그램 작성

주의해야 할 점과 팁만 적고 감

1) reg1과 reg2에 초기값 1,0이 존재해야 한다는 점 안 넣고 테스트 돌려보니 이상한 쓰레기 값들이 들어가서 계산되었음(이건 내가 잘못한 걸수도)

2) printf(p"reg1: $reg1, reg2: $reg2, success: ${io.success}\n") 를 simpleSystem 맨 밑에 넣어놓으면 compile이 잘 된 경우 어떻게 돌아가는지 보여줌

3) pdf의 요구사항 그림을 보면 이 system(module)이 output이 존재하는 건지 의문이 드는데 상기 2)를 보면 io.success라고 되어있다. 따라서 SimpleSystem에 output으로써 success가 존재해야 하는 것 같다. sueccess가 단순히 mux의 output을 나타내는 변수는 아닌 것 같다. 이 말이 이해 안 되면 넘겨도 좋다.

1.4 Test 환경 만들고 검사 해보기

이제 코드를 열심히 작성했으면 돌려봐야 한다. 우선, 아까의 proj1_hw경로에서 다음의 커맨드를 입력하여 test환경으로 접속하자

  • singularity run library://jlowepower/default/dinocpu

그러면 다음 <그림9>와 같은 환경이 나와야 한다. 이 환경에서 test 커맨드를 입력해보자.

<그림9>

우선, compile이 진행되는, 문법적으로 문제 없는 코드라면 중간에 다음 <그림10>과 같이 Done compiling이 나온다. compile이 안되면 이 메세지도 안 뜨고 왜 컴파일이 안 되었는지 에러 메세지가 뜨니까 잘 읽어보자.

<그림10>

이렇게 컴파일 성공한 프로그램을 가지고 시뮬레이션을 돌려보는데 모두 통과한다면 최종적으로 다음<그림11>과 같은 화면이 떠야한다. 이게 뜨면 끝났다.

<그림11>

1.5 제출하고 제출 확인하기

현재 검사를 끝내고 sbt:dinocpu> 커맨드 창에서 ctrl+C를 누르면 나올 수 있다. 그러면 다음 커맨드를 입력하자. vagrant에 접속한 환경에서 해야한다!!!!!

  • scp -r -P 40404 <업로드할 src 디렉토리 주소> arch-<학번>@147.46.114.111:~

예를 들어, 내가 지금 접속한 proj1_hw경로에서는 다음과 같이 쳐주면 된다.

  • scp -r -P 40404 src arch-2020-12345@147.46.114.111:~

그러면 password치라고 나올텐데 dinocpu가 초기 비밀번호니까 입력하면 된다. 그러면 막 파일들이 업로드 될 것이다.

이제, 제출이 제대로 되었는지 확인해보기 위해 해당 서버에 직접 접속해서 조교들이 마련한 테스트 프로그램을 돌려보자. 현재 접속한 vagrant 환경은 linux환경이기 때문에 다음과 같은 ssh 커맨드를 입력하여 다른 서버에 접속할 수 있다. 학번이 2020-12345인 경우는 다음과 같이 입력하면 된다.

비밀번호 입력하라는 창이 뜨면 비밀번호 입력을 하고 (초기: dinocpu) 제대로 접속이 되었다면 다음<그림12>와 같은 환경이 보여야 한다. 여기서 ls를 입력해보면

<그림12>

  • PLACE_YOUR_SRC_DIRECTORY_HERE src submit_test

    의 세개의 파일이 나와야 하고 여기서 submit_test는 프로그램이므로 이를 실행해보면 된다.

  • 리눅스에서 파일의 실행은 ./file_name으로 한다!

따라서 ./submit_test를 입력했을 때 제대로 제출하였다면 다음 메세지가 출력되어야 한다.

  • info: submission succesfully done.

이게 떴으면 정말 끝

-이 계정의 비밀번호를 바꾸고 싶다면?

접속한 상태에서 passwd 커맨드를 입력하면 된다.

댓글