FUNDAMENTAL | 02. Linux 운영체제

20210908 😂



1. OS

커널: CPU, Memory, SDD 등 각종 디바이스를 통합관리하며, 연산 자원을 어플리케이션들에게 분배하는 역할.
우리는 쉘을 통해 커넬과 소통

GUI(Graphical User Interface) shell:
Windows shell, Aqua(MacOS), GNOME, Unity(Linux)

CLI(Command Line Interface) shell:
cmd.exe, PowerShell, sh, bash






프로세스

운영체제는 프로세스 단위로 메모리와 CPU연산 등 컴퓨팅 자원 분배



메모리 관리

프로세스 격리(process isolation):
OS는 프로세스가 가상메모리(virtual memory)로써 일부만 떼어서 제공도록 하여 다른 프로세스의 메모리나 커널 메모리를 볼 수 없도록 함.

IPC 기법(Inter-Process Communication): 프로세스들간 소통하기 위해 별도로 허용된 프로세스간 통신 기법



CPU 자원 관리

메모리는 주소로 프로세스에 제공
CPU 연산의 경우 코어 단위로 프로세스에 제공
스레드(thread): 프로세스가 코어를 사용할 때 사용하는 단위



프로세스와 스레드

프로세스: 운영체제가 메모리를 할당하는 작업단위
스레드: 프로세스가할당받은 메모리를 활용하는 실행 단위






2. Linux OS



환경변수(environment variable)

환경변수는 운영체제가 프로세스 단위로 사용하는 변수.
셸이 프로그램을 실행할 때 참조할 경로들을 나타냄.
셸에서 단어 앞에 $를 붙여 나타냄.

export: 셸 변수나 함수를 현재 환경으로 내보낸다.

$ echo $PATH
$ export PATH=/aiffel:$PATH
$ echo $PATH



패키지 관리자(package manager)

공인 저장소에서 프로그램과 라이브러리를 패키지 단위로 설치하고 관리할 수 있도록 하는 프로그램
우분투 패키지 관리자: APT(Advanced Package Tool)
cf. 파이썬은 PIP(Python Package Installer)



사용자와 권한

모든 권한은 사용자를 기준으로 인증.

최고 관리자(superuser): 보안 및 시스템 안정성을 위해 완전한 권한을 가짐
(윈도우: administrator / 유닉스 계열: root)

sudo: Switch User Do. 관리자의 권한으로 실행

chmod: 대상 파일의 권한을 변경






3. 하드웨어

기계어 & 컴파일

CPU는 기계어를 통해 명령 처리.
기계어는 비효율적이고 복잡함.
컴파일: 프로그래밍 언어를 기계어로 번역하고 최적화 하는 과정



CPU, 메모리

CPU 32bit ? 64bit?
→ CPU가 한번에 읽고 쓸 수 있는 데이터의 크기
→ 사용 가능한 메모리 주소의 범위에 영향

클럭(clock): 초당 처리 속도 기준



GPU(Graphical Processing Unit)

  • 상대적으로 이해할 수 있는 명령어는 적음
  • 코어수를 늘려 다차원 행렬 연산에 특화
  • 그래픽 연산, 딥러닝에 많이 사용

TPU(Tensor Processing Unit): 구글에서 만든 딥러닝 전용 칩

ASIC:작업에 맞게 직접 설계하여 생산하는 어플리케이션 특화 집적회로.

FPGA: 필요할 때 회로를 직접 프로그래밍해서 사용



저장 장치

RAM: 주 저장장치. 용량을 쉽게 늘리기 어렵고 전원이 꺼지면 데이터가 사라지는 특징

HDD, SDD: 보조 저장장치. 가격이 저렴하고 전원이 꺼져도 데이터는 그대로 보존되는 특징

데이터를 읽어오는 데에 시간이 많이 소요된다면 저장장치를 보조 저장장치로 변경하는 방법을 사용해볼 수 있음.



클라우드 가상화

가상화(virtualization): 하나의 컴퓨터를 나눠 여러 대의 컴퓨터가 있는 것처럼 사용하는 기술
호스트(host): 가상화에서 실제 물리적인 서버
게스트(guest): 가상 서버

가상머신(Virtual Machine) 가상화: 게스트 자체에 운영체제 실행
컨테이너(Container) 가상화: 게스트들이 호스트의 운영체제 커널을 공유(커널 기능 공유. 프로세스나 자원 등은 분리)

도커(Docker): 컨테이너 가상화를 손쉽게 제공하는 프로그램.
여러 개의 독립된 작업 환경을 구분하는 데에 사용.






4. shell

편리한 기능

Ctrl+Shift+C, Ctrl+Shift+V: 복사, 붙여넣기
history: 기존에 실행한 명령 표시
!번호: 해당 번호의 명령이 다시 실행
Ctrl+A, Ctrl+E: 커서 이동
clear, Ctrl+L: 출력 기록 삭제
Ctrl+z: 프로세스 중지
fg:프로세스 재개
vi 편집기에서 나올 때는 Ctrl+C Esc 누른 후:q!입력
sudo apt install curl, curl parrot.live: 춤추는 앵무새 🐦

좋은 웹페이지 즐겨찾기