✅ 핵심 요약
운영체제는 최고관리자의 권한을 위임받아 각각의 어플리케이션에 연산 자원을 적절히 분배하여 운영하고, 서로 권한을 침범할 수 없도록 관리하는 역할을 맡는다.
출처 : https://en.wikipedia.org/wiki/Kernel_(operating_system)
위 그림에서 커널에 해당하는 위치가 운영체제의 위치이다. 하지만 커널과 운영체제가 완전히 같은 것은 아니다. 커널은 운영체제의 가장 핵심적인 구성요소 이다.
CPU, Memory, SDD 등 각 종 디바이스를 통합관리하는 자리에 있는 것이 바로 커널(Kernal) 이다.
커널 (Kernal)
- 하드웨어를 직접 제어하는 UNIX의 가장 핵심적인 부분
- 쉘에서 명령을 받아 수행하는 역할
- 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입/출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행
운영체제의 내부는 알맹이인 커널과 껍데기인 쉘(Shell) 로 이루어져있다. 여기서 쉘 이란 사용자나 응용프로그램이 운영체제와의 의사소통을 하기 위해 필요한 것 을 말한다.
쉘 (Shell)
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
- 쉘이 존재해야 커널에세 명령을 전달할 수 있음
- sh, ash, bash, csh 와 같은 다양한 쉘이 존재하고 cmd창도 쉘의 일종
쉽게 말해, 운영체제의 핵심구성요소는 커널이지만 기계적인 부분이 많기 때문에 사용자가 직접 커널을 제어하기 어렵다. 따라서 사용자가 내린 명령을 커널 부분인 이해할 수 있도록 번역해주는 역할을 하는 것이 쉘이다.
리눅스 (Linux) 는 UNIX 운영체제를 본따서 만든 커널이다. 따라서 우분투와 같은 리눅스 운영체제는 리눅스를 커널로서 사용하는 운영체제를 말한다.
우분투에서 Ctrl+Alt+T
를 사용해 텍스트 화면이 들어있는, 흔히 터미널 또는 콘솔 이라고 부르는 창이 열릴 것이다. 이것은 정확히는 그래픽 환경에서 터미널을 모사하는 터미널 에뮬레이터 이다.
터미널 (Terminal), 터미널 에뮬레이터 (Terminal-emulator)
터미널은 텍스트 입출력 환경, tty(teletypewriter, 전기 타자기) 라고도 불린다. 부팅시 GUI로 시작하지 않고 CLI 로 진입한 경우를 터미널이라고 하고, GUI 환경에서 창을 띄워 터미널을 사용할 수 있는 것을 터미널 에뮬레이터라고 한다.
다음은 터미널에서 자주 사용하는 기본적인 명령어들이다. 특히 더 자주 쓰이고 중요한 명령어는 굵은 글씨로 강조하였다.
셀 환경
history
: 셀 명령어 이력을 출력man
: 프로그램의 메뉴얼 페이지를 출력텍스트 처리
echo
: 뒤이어 입력한 내용을 출력cat
: 하나 이상의 텍스트 파일을 순서대로 출력sort
: 입력된 텍스트를 줄 단위로 정렬less
: 텍스트 파일의 내용을 자유롭게 조회, 검색head
: 텍스트 파일의 앞 몇 줄만 출력tail
: 텍스트 파일의 마지막 몇 줄만 출력cut
: 텍스트를 구분자(delimiter)에 따라 나눔uniq
: 텍스트 중 중복 값들을 제거grep
: 정규식을 활용해 텍스트를 검색wc
: 텍스트를 단어, 줄, 문자 등 단위로 셈파일 제어 및 이동
ls
: 현재 디렉토리 내의 파일 및 폴더들을 출력cd
: 해당 폴더로 내가 있는 쉘의 현재 위치를 이동cp
: 파일을 복사mv
: 파일을 이동rm
: 파일을 삭제 (-r
: 폴더 삭제, -f
: 폴더 내부까지 삭제)chown
: 파일의 소유 사용자와 그룹을 변경chmod
: 파일 권한을 변경find
: 파일을 검색pwd
: 현재 내가 위치한 디렉토리 위치 출력시스템 및 프로세스 제어
sudo
: 이어지는 명령을 최고 관리자 권한으로 실행apt-get
: APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치, 제거ps
: 현재 프로세스 목록을 출력kill
: PID에 해당하는 프로세스에 시그널을 보냄기타
ssh
: 원격으로 쉘에 접속tmux
: 여러 개의 쉘 세션을 관리, 터미널 접속이 끊어지더라도 쉘 세션 유지watch
: 이어지는 명령을 주기적으로 실행하여 표시curl
: 주어진 URL 과 통신wget
: 네트워크를 통해 파일을 다운로드scp
: SSH를 통해 원격으로 파일을 전송위의 명령어 말고도 더 다양한 명령어들이 존재하지만 필요한 기능의 명령어들을 그때그때 검색해서 사용하면서 사용법을 익히면 될 것이다.