프로그래머가 반드시 이해하고 넘어가야 할 process와 thread, 파일시스템을 중심으로 운영체제의 특성을 파악한다.
- | 목차 | ⏲ 210분 |
---|---|---|
3-1 | 터미널로 배우는 리눅스 운영체제 | 5분 |
3-2 | 떠나자 디지털 월드로! (1) pwd | 10분 |
3-3 | 떠나자 디지털 월드로! (2) ls | 10분 |
3-4 | 떠나자 디지털 월드로! (3) cd | 10분 |
3-5 | 운영체제 일반 개론 (1) 운영체제란 | 5분 |
3-6 | 운영체제 일반 개론 (2) 커널 | 5분 |
3-7 | 운영체제 일반 개론 (3) 셸 | 5분 |
3-8 | 운영체제 일반 개론 (4) 프로세스와 스레드 | 5분 |
3-9 | 리눅스 기반 운영체제 (1) 터미널 | 10분 |
3-10 | 리눅스 기반 운영체제 (2) 프로세스 관리와 시스템 콜 | 10분 |
3-11 | 리눅스 기반 운영체제 (3) 프로그램과 환경변수 | 10분 |
3-12 | 리눅스 기반 운영체제 (4) 패키지 관리자 | 10분 |
3-13 | 리눅스 기반 운영체제 (5) 사용자와 권한 | 10분 |
3-14 | 기타 (1) 약간의 하드웨어 1: 연산장치 | 10분 |
3-15 | 기타 (2) 약간의 하드웨어 2: 저장장치 | 10분 |
3-16 | 기타 (3) 클라우드와 가상화 | 10분 |
3-17 | 셸 심화 (1) 편리한 기능 | 10분 |
3-18 | 셸 심화 (2) 셸 스크립트 | 10분 |
3-19 | 셸 심화 (3) 명령어 모음 및 추천자료 | 15분 |
3-20 | 셸 심화 (4) 연습문제 | 40분 |
- 운영체제의 구성과 커널의 역할에 대해 이해합니다.
- 터미널과 터미널 에뮬레이터, 셸의 차이점을 이해합니다.
- 기본적인 리눅스 명령어들을 배우고 사용해 봅니다.
- ❤️: 필수로 꼭 알아두어야 하는 가장 기본적인 명령어입니다.
- 👍️: 사용법을 기억해두면 편리한 명령어입니다.
- 👌️: 이런 명령어가 있다는 것만 알아두고 필요할 때마다 검색해서 사용하면 충분합니다.
- 하드웨어
- 연산장치
- CPU(Central Processing Unit, 중앙처리장치)
- 기계어: CPU 칩이 처리할 수 있는 명령어
- 컴파일: 프로그래밍 언어 -> 기계어 번역
- CPU를 구분할 때에는 32bit와 64bit로 구분
- CPU가 한 번에 읽고 쓸 수 있는 데이터의 크기
- 사용 가능한 메모리 주소의 범위에 영향
- CPU 판단 척도: 클럭(clock)
- GPU(Graphical Processing Unit)
- CPU보다 이해할 수 있는 명령어는 훨씬 적지만, 코어 수를 훨씬 늘리는 방법으로 다차원 행렬 연산에 특화
- TPU(Tensor Processing Unit)
- 구글에서 딥러닝 전용으로 개발
- ASIC(Application-Specific Integrated Circuit, 어플리케이션 특화 집적회로)
- 작업에 맞게 직접 설계하여 생산
- FPGA(Field-Programmable Gate Array)
- 그때그때 회로를 직접 프로그래밍해서 사용
- CPU(Central Processing Unit, 중앙처리장치)
- 저장장치
- 주 저장장치(휘발O): RAM(Random Access Memory)
- 보조 저장장치(휘발X): HDD(Hard Disk Drive), SSD(Solid State Drive)
- 데이터를 읽어오는 시간이 길다면 저장장치를 SSD로 변경, 여러 개의 스레드를 사용하여 RAM 메모리에 올려두는 방법으로 해결
- 연산장치
- 클라우드와 가상화
- 클라우드 컴퓨팅
- 아마존 웹 서비스(Amazon Web Services)
- 수요에 따라 그때그때 서버를 빌렸다가 반납하는 서버 임대업
- 한 대의 물리적인 서버를 여러 개의 가상 서버로 쪼개어 판매
- 아마존 웹 서비스(Amazon Web Services)
- 가상화(virtualization)
- 하나의 컴퓨터를 쪼개어 여러 대의 컴퓨터가 있는 것처럼 사용하게 하는 기술
- 서버
- 실제 물리적 서버: 호스트(host)
- 그 안에서 돌아가는 가상 서버: 게스트(guest)
- 종류
- 가상머신(Virtual Machine) 가상화: 게스트 자체에서 운영체제가 실행됨
- 컨테이너(Container) 가상화: 게스트들이 호스트의 운영체제 커널만 공유함(프로세스, 자원 격리됨)
- 도커(Docker)
- 컨테이너 가상화를 손쉽게 제공하는 프로그램
- 컨테이너 구성 -> 클라우드로 가져가서 실행 or 내 컴퓨터에서 여러 개의 독립된 작업 환경을 구분해서 사용
- 도커(Docker)
- 파이썬 가상환경
- 아나콘다(Anaconda)
- VirtualEnv
- 클라우드 컴퓨팅
- 명령어 모음
- 셸 환경
- 👍history: 셸 명령어 이력을 출력합니다.
- 👍man: 프로그램의 매뉴얼 페이지를 출력합니다.
- 👌which: 명령어의 전체 경로를 출력합니다.
- 👌export: 셸 변수나 함수를 현재 환경으로 내보냅니다.
- 👌env: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.
- 텍스트 처리
- ❤️echo: 뒤이어 입력한 내용을 출력합니다.
- ❤️cat: 하나 이상의 텍스트 파일을 순서대로 출력합니다.
- 👍sort: 입력된 텍스트를 줄 단위로 정렬합니다.
- 👍less: 텍스트 파일의 내용을 자유롭게 조회하고 검색합니다.
- 👍head: 텍스트 파일의 앞 몇 줄만 출력합니다.
- 👍tail: 텍스트 파일의 마지막 몇 줄만 출력합니다.
- 👍cut: 텍스트를 구분자(delimiter)에 따라 나눕니다.
- 👍uniq: 텍스트 중 중복 값들을 제거합니다.
- 👍grep: 정규식을 활용해 텍스트를 검색합니다.
- 👍wc: 텍스트를 단어, 줄, 문자 등 단위로 셉니다.
- 👌comm: 텍스트 파일을 비교합니다.
- 👌zcat: 압축된 텍스트 파일을 출력합니다.
- 👌sed: 정규식을 활용해 텍스트를 변형합니다.
- 👌awk: 텍스트를 스캔하고 변형합니다.
- 파일 제어 및 이동
- ❤️ls: 현재 디렉토리 내의 파일 및 폴더들을 출력합니다.
- ❤️cd: Change Directory의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동시킵니다.
- ❤️cp: 파일을 복사합니다.
- ❤️mv: 파일을 이동합니다.
- ❤️rm: 파일을 삭제합니다. 폴더를 삭제하기 위해서는 -r (recursive) 옵션을, 빈 폴더가 아니더라도 내부까지 삭제하려면 -f (force) 옵션을 함께 사용해야 합니다.
- 👍chown: 대상 파일의 소유 사용자와 그룹을 변경합니다.
- 👍chmod: 대상 파일의 권한을 변경합니다.
- 👍find: 파일을 찾습니다.
- 👍pwd: Present Working Directory의 약자입니다. 현재 내가 >위치한 디렉토리 위치를 출력합니다.
- 👌ln: 파일에 대한 링크를 생성합니다.
- 👌touch: 파일 접근 및 수정 시간을 변경합니다. 빈 파일을 만드는데도 사용할 수 있습니다.
- 👌tar: 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축합니다.
- 👌mount: 새로운 저장장치를 파일시스템으로서 추가합니다.
- 👌rename: 여러 파일들의 이름을 규칙에 따라 한번에 변경합니다.
- 👌df: 파일시스템의 남은 용량을 표시합니다.
- 시스템 및 프로세스 제어
- ❤️sudo: 이어지는 명령을 최고 관리자 권한으로 실행합니다.
- ❤️apt-get: APT 패키지 관리자를 통해 공인 저장소에서 패 >키지를 가져다 설치하거나 제거합니다.
- 👍ps: 현재 프로세스 목록을 출력합니다.
- 👍kill: PID에 해당하는 프로세스에 시그널을 보냅니다.
- 👌fg: 배경에서 실행되는 작업을 전경(foreground)으로 가져옵니다.
- 👌bg: 작업을 배경(backgound)으로 보냅니다.
- 👌jobs: 전경 및 배경 작업의 목록을 표시합니다.
- 기타
- ❤️ssh: 원격으로 셸에 접속합니다.
- 👍tmux: 여러 개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지합니다.
- 👍watch: 이어지는 명령을 주기적으로 실행하여 표시합니다.
- 👍curl: 주어진 URL과 통신합니다.
- 👍wget: 네트워크를 통해 파일을 다운로드합니다.
- 👍scp: SSH를 통해 원격으로 파일을 전송합니다.
- 👌ssh-keygen: SSH 공개키 비밀키 쌍을 생성합니다.
- 👌ssh-copy: SSH 공개키를 해당 서버에 등록합니다.
- 👌rsync: 원격으로 파일을 동기화합니다.
- 👌xarg: 명령어를 구성하여 실행합니다. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능합니다.
- 👌cron: 주기적으로 실행될 명령을 등록합니다.
- 👌htop: 프로세스 목록 및 자원 사용량을 시각적으로 표시합니다.
- 셸 환경