
Shell이란 무엇인지 알아봅시다. 쉘(Shell)은 사용자의 명령을 처리해 주는 응용 프로그램입니다. 다음의 그림으로 쉘과 유저, 쉘과 커널의 관계에 대해 이해해봅시다. 즉 쉘을 통해서, 유저는 커널에 명령을 내리고 커널은 수행결과를 쉘을 통해 유저에게 보여주게 되는 것입니다. 조금 더 거시적인 관점에서 설명하면 하드웨어 커널 쉘 유저의 형태로 서로 communicate하는 것입니다. Shell의 종류로는 sh - Original Unix Bourne Shell, csh - BSD UNIX C Shell, tcsh - Enhanced C Shell, bash - Bourne-Again Shell이 있습니다. 앞으로 설명에서 사용될 Shell은 Bash Shell입니다. 쉘에서 처리할 수 있는 명령어는 ..

시스템 프로그래밍 수업의 3번째 Lab인 Shell Lab을 수행하기 위한 기초 지식을 정리하기 위해 작성한 글입니다. 먼저, 이 장에서 사용될 용어들에 대한 정의부터 알아봅시다. 제어흐름 (flow of control) 제어흐름이란, CPU는 한 번에 한 가지 명령(Instruction)을 처리하는데, 이 Instruction의 순차적 처리를 flow of control이라고 합니다. BombLab을 수행하신 분들은 아시겠지만, 컴퓨터는 Assembly 수준에서 순차적으로 명령어들을 처리하다가 function을 call해야 한다거나, Branch 하는 등의 명령을 만나면 current Instruction 수행 후 잠시 다른 주소로 넘어가 subroutine 명령을 수행하고 다시 돌아와 next ins..