리눅스 운영체제

매일 공부(ML)·2021년 9월 30일
0

CS 

목록 보기
3/33

목표

  1. OS구성과 Kernel,Shell 역할
  2. 자주 쓰이는 리눅스 명령어 배우기

OS구성과 Kernel 역할

1.OS구성
-제어 프로그램
+)감시 프로그램(Supervisor)
:각종 프로그램의 실행과 처리에 관여.
+) 작업관리 프로그램(Job Management)
: 시스템 스케쥴링 및 자원의 할당을 담당
+)데이터 관리 프로그램(Data Management)
:입출력 데이터 관리 및 수정 그리고 유지보수 기능 제공
-처리 프로그램

+)통신 관리 프로그램(Communication Management)
:CPU와 주변 장치간의 신호교환 원할 통제 및 외부 통신 회선과 통신 제어
+) 언어 번역 프로그램: 저급언어>고급언어(기계어)[컴파일,링커]
+) 서비스 프로그램: 컴퓨터 시스템을 효율적으로 사용하도록 지원
+)문제 프로그램: 특정 업무 및 해결

  • 기능
    1) 자원 관리 기능
    2) 프로세스 관리 기능
    3) 기억장치 관리 기능
    4) 입출력 장치 관리 기능
    5) 파일 관리 기능

    2.Kernel
    : os의 핵심이 되는 컴퓨터 프로그램의 하나로 모든 시스템 통제
    : 보안, 자원관리, 디바이스 인터페이스 추상화 등을 수행

    3.Shell
    -종류
    +)그래픽 기반 GUI
    우리에게 친숙한 windows shell이고 리눅스계열 운영체제들이
    단독 동작이 아닌 Xorg와 함께 사용

    +)텍스트 기반 CLI
    sh와 편의 기능인 bash이 있고 csh, fish,zsh등 다양한 셀을 설치하 여 사용이 가능하고 입맛대로 편의기능 선택 및 꾸미기 가능
    ex) 터미널 에뮬레이터

-셸 스크립트

  • 명령어가 길거나, 명령어 여러 개를 이어서 실행해야 할 때. *
    명령어들을 파일로 묶어서 실행
    한 줄에 한 명령어씩 적어주면 된다,
    #로 시작하는주석을 넣을 수도 있습니다 ##
    텍스트 편집기를 열어 test.sh라는 파일을 만들고 입력.**
    4.프로세스 와 스레드
    +)프로세스(process) : 컴퓨터가 수행할 작업 기록.메모리와 CPU연산 등 컴퓨터 자원 분배
    -메모리 관리: 가상메모리로써 일부만 제공하여 커널 메모리보호로 프로세스 격리라고 한다. 이것때문에 프로세스끼리 소통하려면 IPC라는 기법사용 -CPU자원 관리: CPU연산은 스레드라는 단위를 가진 코어를 사용. +)즉, 프로세스는 메모리를 할당하는 작업단위이고, 스레드는 할당받는 메모리를 활용하는 실행단위
  1. 터미널 과 터미널 에뮬레이터
    -터미널 :입출력만 담당하는 CRT모니터와 키보드로 구성된 기기(과거 정의)

    -터미널 에뮬레이터: 그래픽 화녀경에서 터미널을 모사함

6.시스템 콜(System call)
:프로세스가 커널에게 요청을 전달하는 기능
ex)

kill - 프로세스 제어
mkdir - 폴더 생성
read - 파일 읽기

7.환경 변수(environment variable)
:셸에서 단어 앞에 $가 붙은 것으로 프로세스 단위로 사용하는 변수

8.패키지 관리자(package manager)
:새로운 프로그램 설치 혹은 기존 프로그램 업데이트 편하게 해주는 도구
:프로그램과 라이브러리를 패키지 단위로 설치 및 관리
-apt -get: 공인 저장소에서 패키지를 가져다 설치 혹은 제거

  1. sudo( Switch User Do) 명령어
  • "관리자 권한으로 실행"

10.사용자 그룹
:쉽게 묶어서 관리하는 개념.

  1. 접근 권한
    ls -lah명령: 설정값
    (read,r)- 읽기(소유 사용자,소유 그룹. 기타 사용자)
    (write,w)- 쓰기(소유 사용자)
    (execute,x)- 실행(소유 사용자, 소유 그룹, 기타 사용자)
    d - 해당파일(디렉토리)

12.하드웨어
1)연산장치
+)CPU: 연산 세트를 나타낸다 허나 공정과정이 너무 빡세서 기타 등등의 경제적 물리적인 이유로 단점이 있습니다.
+)GPU: CPU의 문제점을 보완한 그래픽 연산으로 CPU보다 명령어는 훨씬 적지만, 코어 수를 훨씬 늘리는 방법으로 다차원 행렬 연산.
+)TPU
+)ASIC
+)FPGA

2)저장장치
-주 저장장치
+RAM): 비싸고 휘발성입니다.

-보조 저장장치(가격이 저렴하고 비휘발성)
+HDD
+SSD

3) 딥러닝과 저장장치
GPU-->연산이 빨라짐-->속도에 병목지점(제한된 용량이 전체의 용량을 줄게 만드는 현상) 발생 BY(GPU/CPU 처리 속도가 아님)

SSO 변경 혹은 여러개의 스레드를 통해서 RAM메모리 증가->데이터 읽기 시간감소시키기!!

4)클라우드와 가상화
+)클라우드 컴퓨팅
:물리적인 서버를 여러 개의 가상 서버로 쪼갬.

+)가상화
:이처럼 하나의 컴퓨터를 쪼개어 여러 대의 컴퓨터가 있는 것처럼 사용
host:가상화에서 실제 물리적인 서버
guest: 호스트에서돌아가는 가상 서버
-가상머신(Virtual Machine)가상화 : 게스트 자체에 os 돌아감
-컨테이너(Container)가상화: 커널의 기능만 공유할 뿐 간섭X

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

자주 쓰이는 리눅스 명령어

echo: 뒤이어 입력한 내용 출력
pwd: 현재 내가 위치한 디렉토리 위치 출력
cd: 내가 있는 현재의 위치로 이동
ps:현재 터미널과 관련된 프로세스 목록 출력
ps -e:현재 실행중인 프로세스 확인
ps -ef:모든 터미널에서 현재 실행중인 프로세스 목록 및 부가정보 출력
:누구의 권한(UID),파일경로 등등 알 수 있다.
grep:특정 문자열만 포함한 라인만 선택해서 출력/
정규식을 활용해 텍스트 검색
sudo: 이어지는 명령을 최고 권리자 권한으로 실행
find:파일을 찾습니다.
kill: PID에 해당하는 프로세스에 해당하는 시그널 보냄
which: 명령어의 전체 경로 출력
bash:해당 명령어를 실행한 셸
export:셸 변수나 함수를 현재 환경으로 보냄
env:현재 설정된 환경변수 모두 출력
chmod:대상 파일의 권한 변경
less:텍스트 파일의 내용을 자유롭게 조회하고 검색
head: 텍스트 파일의 앞 몇 줄만 출력
tail: 텍스트 파일의 마지막 몇 줄만 출력
cut:텍스트를 구분자에 따라 나눈다
uniq:텍스트 중 중복값들을 제거
wc: 텍스트를 단어,줄,문자등 단위로 셉니다
comm: 텍스트 파일을 비교합니다
zcat: 압축된 텍스트 파일을 출력
sed: 정규식을 활용해 텍스트 변형
awk:텍스트 스캔하고 변형
ln:파일에 대한 링크 생성
touch: 파일 저근 및 수정 시간 변경
tar: 하나의 아카이브 파일로 통합 후 압축
mount:새로운 저장장치를 파일시스템으로 추가
ssh:원격으로 셸에 접속
tmux: 여러 개의 셀 세션 관리 및 유지
watch: 이어지는 명령을 주기적 실행
curl:주어진 URL과 통신
wget: 네트워크를 통해 파일 다운로드
scp:SSH를 통해 원격 파일 전송
ls: 현재 디렉토리 내의 파일 및 폴더 출력
ls --all 실행 시
~ :홈 디렉토리 / .:현재 폴더(숨긴파일 ㅎ) / ..:상위 폴더
ls -l: 각 파일의 자세한 정보 출력
ls -h: 파일 크기를 사람이 볼 수 있는 단위로 표시
ls -t: 파일 수정시간 순으로 정렬해서 출력
ls -r: 정렬 순서를 뒤집어서 출력.

  • 명령어 붙여 쓰기 가능
    ls -alrt
    cat:하나 이상의 텍스트 파일을 순서대로 출력
    chown:대상 파일의 소유 사용자와 그룹 변경
    sort:입력된 텍스트를 줄 단위로 정렬

셸 기능 명령어(터미널 에뮬레이터)

-Crtl+Shift+C, Ctrl+Shift+V : 복사붙여넣기
-위 아래 화살표를 통해 실행 명령 재입력
-history명령:기존 실행 명령 표시./ 셸 명령어 이력 출력
+!번호 : 번호를 참고하여 해당 번호의 명령 다시 실행
-Crtl+A, Crtl+E 를 통해 명령어의 앞,뒤로 커서 이동
-Clear명령어 또는 Crtl+L : 깨끗이 지우기
-Ctrl+z: 프로세스 중지
-fg:다시 재개
-Ctrl+C 또는 Esc 누른 후 :q!입력 후 엔테 :vi편집기 종료

  • | : 앞의 명령어의 결과를 입력 받아서 처리
  • || : 이전 명령이 false를 반환하는 경우에만 다음 명령어 실행
  • && : 이전 명령이 true를 반환하는 경우에만 다음 명령어 실행
  • :명령어의 결과를 파일에 저장

  • : 명령어의 결과가 기존 파일 뒤에 추가

profile
성장을 도울 아카이빙 블로그

0개의 댓글