[SHLAB] Abstract

두비니

·

2020. 12. 11. 23:56

 

2021.11.09 추가

 

  SHLAB을 포함해서 ATTACKLAB 등등 보호글을 공유해줄 수 있는지 개인적으로 연락을 주시는 분들이 생겨서 글을 남깁니다. 결론적으로 안됩니다. 죄송합니다. 이 카테고리에 있는 대부분의 글이 실제 학교 과제였으며, 무엇보다 교수님이 제공해주신 자료이기 때문에 이 자료를 제가 임의적으로 공개하는건 옳지 않다고 판단하고 있습니다. 이 점은 양해 부탁드립니다.

  마지막으로 한 가지 덧붙이자면 누구나 충분히 구글링을 통해 충분히 과제를 완료할 수 있으니 포기하지 마시고 저를 실제로 아시는 분이라면 간단한 질문은 받아줄 수 있으니 차라리 카톡으로 연락하세요.ㅎㅎ 다들 열공하시길 바랍니다.

 


 

컴퓨터구조설계이론 수업의 마지막 과제였다.

직접 shell을 구현하는 과제였는데, 그 과제를 하면서 "먼저 찾아봤으면 좋았을걸"하는 생각이 들었었는데, 어차피 미루면 안하니깐 얼른 쓴다.

 

 

우선 Shell이란 무엇일까?

 

개인적으로는 포너블을 공부하면서 "shell을 딴다"의 문장 등에서 "shell"이라는 단어를 먼저 접했기 때문에, 단순히 권한 정도를 생각하고 있었다. 그러나 shell의 진짜 뜻은 다음과 같다.

 

(shell, 문화어: 쉘, 자령해석프로그램)은 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 셸(껍데기의 영어 단어)은 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름이 붙었다.
셸은 일반적으로 명령 줄과 그래픽 형의 두 종류로 분류된다. 명령 줄 셸은 운영 체제 상에서 명령 줄 인터페이스(CLI)를 제공하는 반면에, 그래픽 셸은 그래픽 사용자 인터페이스(GUI)를 제공한다.

-According to Wikipedia-

 

그니깐 한 줄 요약하자면 사용자와 커널을 연결해주는 아이를 shell이라고 칭한다는 것이다. 그래서 단순히 리눅스 커널에서 치는 ls, grep 등을 실행해주는 CLI(명령 줄 인터페이스)도 shell의 일종이고, 그냥 윈도우상에서 클릭을 해서 파일을 열람할 수 있게 해주는 GUI를 가진 그래픽 shell등 종류도 나뉘는 것 같다.

 

이렇게 리눅스상에서도 확인할 수 있다

 

해야 하는 것?

 

아무튼 이런 shell(tsh)을 구현하고자 하는 것이 이 shell lab의 목적이다.

 

 

다음과 같이 make clean; make를 통해 모든 프로그램을 컴파일링 한 뒤 tsh를 실행시킨 뒤 특정 명령어들을 수행할 수 있도록 tsh.c를 수정해야한다. 나는 이미 코드를 다 작성한 상태에서 실행시킨 뒤라 저렇게 나오지만, 처음 실행시키면 어떤 명령어를 실행시켜도 어떤 명령도 실행되지 않는다. 이제 그걸 코드로 채워넣으면 된다.

 

그럼 결국 해야하는일들은 trace*.txt를 모두 확인하고, 각 파일들이 요구하는 일들을 수행하면 된다.

 

 

다음은 trace06.txt의 내용이다. 

주석처리의 내용을 보면 알 수 있듯이 SIGINT를 실행할 수 있는지 확인한다. 보면 단순히 ./myspin 4를 실행시킨다는 뜻이다.

 

 

내가 잘 만들었는지 확인을 하기 위해서는 make를 사용하면 된다. make rtest06을 할 경우 답지인 tshref를 이용해서 확인해주기 때문에 저걸 답지로 삼으면 된다. 위 사진에서는 잘 코드를 작성했기때문에 실행이 잘 되는걸 볼 수 있지만, 만약 잘못 짰다면 뭔가 실행이 안되거나 make rtest처럼 실행되지 않는다.

 

아무튼 이런식으로 trace끝까지 성공하면 된다!

 

 

 

참고 : oslab.kaist.ac.kr/shellprogramming/

ko.wikipedia.org/wiki/%EC%85%B8

'SYSTEM HACKING > COMPUTER ARCHITECTURE' 카테고리의 다른 글

[SHLAB] trace01 ~ trace05  (0) 2020.12.13
[SHLAB] full code  (0) 2020.12.12
[ATTACK LAB] PHASE 5 Write-Up  (0) 2020.11.25
[ATTACK LAB] PHASE 4 Write-Up  (0) 2020.11.25
[ATTACK LAB] PHASE 3 Write-up  (0) 2020.11.24