[Linux] 리눅스의 기본 개념

:)·2024년 4월 12일
0

Linux

목록 보기
1/17
post-thumbnail

정의

  • 기본정의: 운영체제 커널의 일종인 Linux 커널, 또는 Linux 커널을 사용하는 운영체제이자 소스 코드가 공개되어 있는 대표적인 오픈 소스 프로젝트
  • 리눅스: 사용자 설정이 자유로운 windows 와 다른 OS
    • UNIX 의 개인화 소형화 OS
    • 무료 , 사용자 설정이 자유로운 OS
    • opensource OS
    • 안드로이드OS → 리눅스 커널
  • CNU 자유소프트웨어 ->ubuntu
    • 컴퓨터 = 아주 빠른 계산기
    • 대형 UNIX 컴퓨터 고성능 계산기
  • 오픈소스 라이선스
    • BSD = 아무렇게나해도 상관없는 라이센스
    • GPL = General Public License 자유소프웨어 정책, 상업적으로 사용시 모든 소스코드를 공개
    • LGPL = 모듈 및 라이브러리만 사용할경우 상업적 사용시 소스코드 공개할필요 없음
    • MIT = copyright(참조) 와 license에 대한 정보만 표기하면 자유롭게 사용할 수 있는 라이센스
    • GNU = (GNU NOT UNIX) 자유소프트웨어 재단

(GPL 제한된 자유소프트웨어 LGPL 라이센스)

구조

  • 커널: 하드웨어와의 통신을 담당
  • 디스플레이 서버: 클라이언트와의 입출력을 담당하며 화면을 표시하는 기초적인 부분(X11, Wayland 등)
  • 윈도우 매니저: 커널과 창, 그리고 창과 창 사이의 통신을 관리
  • 디스플레이 매니저: 디스플레이 서버와 데스크톱 환경을 시동시키고 사용자 로그인을 관리, 사용자가 디스플레이 서버나 데스크톱 환경을 선택할 수 있도록 옵션을 제공
  • UI/UX 툴킷: 유저 인터페이스 UI를 구성하기 위해 사용되는 프로그래밍 툴.일반적으로 GUI 응용 프로그램을 만들 때 이를 사용
  • 데스크톱 환경: 사용자가 위와 같은 기술적인 내용을 몰라도 사용할 수 있게끔 세트로 묶고 일관된 경험을 제공, 일반적으로 운영체제를 설치하고 볼 수 있는 것들

Kernel

  • 정의: HW와 SW를 연결해주는 중계 프로그램/ 메모리 관리- 주소 관리, OS와 통신
  • 시스템 해석 구조
    • HW < kernel(OS) < shell < 사용자
      • kernel => OS의 핵심 프로그램 , 메모리 및 시스템 자원 관리 , HW와 SW연결
      • shell => 껍데기 , 사용자의 명령을 해석해서 kernel에게 전달 , 사람과 kernel 연결 (명령어 해석기)
  • (거꾸로: user → 명령어 → shell (해석기) → kernel(OS) → 하드웨어)
**유지보수비용 → 리눅스 상용화 (이로 인해 레드헷이 많이 쓰임)*

기능(redhat)

https://www.redhat.com/ko/topics/linux/what-is-the-linux-kernel

  1. 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적
  2. 프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정
  3. 장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행
  4. 시스템 호출 및 보안: 프로세스의 서비스 요청을 수신

구조

  • 스토리지 (저장소)

    • DAS (Direct Attached(area) storage): 케이블로 연결된 저장소
      • 서버 자체에 케이블로 외부 저장장치를 연결
    • NAS (Network attached(area) storage): 네트워크에 연결된 저장소
    • SAN (storage area network)
      • Das 와 nas의 단점을 보완
      • 서로 다른 종류의 데이터 저장장치를 네트워크 상에 저장 공유, 서버에 연결 LAN과 별도 네트워크 구성 관리
  • local 로컬

    1. 내부망 ⇒ 인터넷을 사용하지 않는 내 컴퓨터

    2. 기본 ⇒ 자기 자신

      domain ⇒ 도메인 (영역)

디렉토리 구조

디렉토리 ⇒ directory 폴더

directory ⇒ 정보 저장소

/ ⇒ 최상위 디렉토리 (root, 최상위) == $ c:

/boot ⇒ 부팅파일 저장소 (lilo=> linux loader ,grub[부트로더]) $ boot.ini (부팅파일)

/bin, /sbin ⇒ binary(2진수,프로그램)

/bin 기본 명령어 저장소 ⇒ == $ c:\windwos\system32 , c:\windwos\wow64

/sbin ⇒ 시스템 명령어 저장소

/home ⇒ 사용자 홈 디렉토리 집합소(저장소) == $ c:\users

  • 홈디렉토리 의미: 1. 계정 접속위치 / 2. 계정 전용 공간

/root ⇒ 관리자 홈 디렉토리

/home/사용자명 ⇒ 사용자 홈 디렉토리 == $ c:\users\사용자명

/etc ⇒ 나머지 , 서버 관리 및 시스템 설정파일 저장소 [ bin=명령어(binary) <==> /etc= 설정파일,스크립트(ascii) ]

/dev ⇒ device 장치 파일 저장소 GUI/TUI →

  • GUI ⇒ Graphic User Interface (눈으로 볼 수 있음, 느림 ), 자동 장치 연결(PnP - plug&play)
  • TUI ⇒ Text User Interface (빠름), 수동 장치 연결 (mount)

/media ⇒ 자동 장치 연결 시 기본 장치가 연결되는 장소 (local device ⇒ 키보드,마우스, HDD, CD-ROM)
/mnt ⇒ 자동 장치 연결 시 원격 장치가 연결되는 장소 (remote device ⇒ 리모콘, 블루투스, 무선 마우스, wifi)

/usr ⇒ 응용프로그램 저장소 ,용량이 큼 ( /usr/sbin, /usr/bin => 응용프로그램 명령어)

/proc (휘발성 volatlity) ⇒ proccess 동작중인 프로그램 정보 저장소 (kernel, 가상화, 프로그램 동작 running중인 모든 프로그램)

/var (비휘발성 non-volatlity) ⇒ 자주 변경되는 누적 파일 저장소 , 로그 파일 저장소 (메일, 시스템 에러 메세지, 상태 메세지)

로그 : 컴퓨터 일기장

/lib ⇒ 언어 관련 파일 저장소 (컴파일러,모듈) == $dll => Dynamic Link library (동적 언어 연결)

/tmp ⇒ 임시 저장소 (기본 1000개)

swap ⇒ 가상 메모리 (ex: 게임상의 체력 실드 ) PC의 overflow (뻗다) 를 방지

SHELL

  • shell => 조개껍데기 => 명령어 해석기 (kernel에게 명령 전달) 💡 user → shell → kernel → OS

  • 종류
    • /bin/sh 본쉘 커널기본쉘(복구쉘(커널쉘)
    • /bin/bash linux 리눅스 기본쉘(기능쉘) sh+ksh →(리차드스톨만)
    • /bin/ksh unix 기본쉘
    • /bin/csh C 프로그래밍쉘
    • /bin/tcsh C++,java 언어 확장쉘
    • /bin/dash debian 계열 쉘
    • /sbin/nologin 시스템쉘
    • /bin/zsh 칼리쉘, bash,sh,ksh,csh 통합된 쉘
  • 네트워크 간의 연결 = 버스 인터페이스
  • cpu = 계산 , 메모리 주소 관리
  • 연결
    • OS <-> kernel <-> cpu
      • OS : operating system 조작시스템 ( 인터페이스 제공 ) →SW
      • OS : 시스템을 제어 ->SW
      • Kernel : HW/SW를 OS가 제어할 수 있도록 연결해주는 중계 프로그램 (자원메모리관리 )
      • shell : 사용자가 kernel과 의사소통 할 수 있도록 연결해주는 명령어 도구(해석기)
  • 기본 프로그램 : /bin ->기본적으로 설치
  • 응용 프로그램 : /usr/bin -> 추가 설치
    • /bin : 명령어 저장소
      • /bin (==) /usr/bin (응용프로그램)
    • /etc : 설정파일 저장소
  • csh 쉘 다운
    • dnf install csh
  • 쉘 확인
    • cat /etc/shells
    • chsh -l

쉘의 구동 순서

  • ( ~,$HOME : 로그인한 사용자 홈 디렉토리)
    • 순서
      • /etc/csh.cshrc => /etc/csh.login(로그인시만) => $HOME/.cshrc
      • /etc/profile => $HOME/.bash_profile => $HOME/.bashrc=> /etc/bashrc
        모든기본쉘 로그인시 계정배쉬쉘구동 모든배쉬쉘구동
💡         전체 설정				 개인 설정

로그인 : /etc/csh.cshrc => /etc/csh.login => $HOME/.cshrc
쉘구동 : /etc/csh.cshrc => $HOME/.cshrc

  • echo : 출력 명령
    • echo $PATH (단축 경로)
  • $ : 변수 호출
  • ~ : 홈 디렉토리
  • 쉘 구동 방법
    • /bin/bash or bash = bash쉘 구동

env ( 시스템 환경 변수 확인 )

  • 대표적인 시스템 변수
    • $USER = 계정명
    • $HOME = 홈 디렉토리
    • $SHELL = 쉘
    • $PWD = 현재 디렉토리
  • /etc 는 전역 설정
  • ~/.bash_profile 나 ~/.bashrc는 계정 별로 따로 운영 ->홈디렉토리를 설정함
  • POINT :
    • 시험에서는 .bash_profile 환경 변수를, .bashrc 는 alias 와 같은 명령어 추가 → 실제로는 둘 다 상관없음

  • 스토리지 (저장소)

    • DAS (Direct Attached(area) storage): 케이블로 연결된 저장소
      • 서버 자체에 케이블로 외부 저장장치를 연결
    • NAS (Network attached(area) storage): 네트워크에 연결된 저장소
    • SAN (storage area network)
      • Das 와 nas의 단점을 보완
      • 서로 다른 종류의 데이터 저장장치를 네트워크 상에 저장 공유, 서버에 연결 LAN과 별도 네트워크 구성 관리
  • local 로컬

    1. 내부망 ⇒ 인터넷을 사용하지 않는 내 컴퓨터

    2. 기본 ⇒ 자기 자신

      domain ⇒ 도메인 (영역)

디렉토리 구조

디렉토리⇒ directory 폴더

directory⇒ 정보 저장소

/⇒ 최상위 디렉토리 (root, 최상위) == $ c:

/boot⇒ 부팅파일 저장소 (lilo=> linux loader ,grub[부트로더]) $ boot.ini (부팅파일)

/bin, /sbin⇒ binary(2진수,프로그램) , ascii (문자,문서파일)

/bin 기본 명령어 저장소 ⇒ == $ c:\windwos\system32 , c:\windwos\wow64

/sbin ⇒ 시스템 명령어 저장소

/home ⇒ 사용자 홈 디렉토리 집합소(저장소) == $ c:\users


  • 홈디렉토리 의미: 1. 계정 접속위치 / 2. 계정 전용 공간

/root ⇒ 관리자 홈 디렉토리

/home/사용자명 ⇒ 사용자 홈 디렉토리 == $ c:\users\사용자명

/etc ⇒ 나머지 , 서버 관리 및 시스템 설정파일 저장소 [ bin=명령어(binary) <==> /etc= 설정파일,스크립트(ascii) ]

/dev ⇒ device 장치 파일 저장소 GUI/TUI →

  • GUI ⇒ Graphic User Interface (눈으로 볼 수 있음, 느림 ), 자동 장치 연결(PnP - plug&play)
  • TUI ⇒ Text User Interface (빠름), 수동 장치 연결 (mount)

/media ⇒ 자동 장치 연결 시 기본 장치가 연결되는 장소 (local device ⇒ 키보드,마우스, HDD, CD-ROM)
/mnt ⇒ 자동 장치 연결 시 원격 장치가 연결되는 장소 (remote device ⇒ 리모콘, 블루투스, 무선 마우스, wifi)

/usr ⇒ 응용프로그램 저장소 ,용량이 큼 ( /usr/sbin, /usr/bin => 응용프로그램 명령어)

/proc (휘발성 volatlity) ⇒ proccess 동작중인 프로그램 정보 저장소 (kernel, 가상화, 프로그램 동작 running중인 모든 프로그램)

/var (비휘발성 non-volatlity) ⇒ 자주 변경되는 누적 파일 저장소 , 로그 파일 저장소 (메일, 시스템 에러 메세지, 상태 메세지)

로그 : 컴퓨터 일기장

/lib ⇒ 언어 관련 파일 저장소 (컴파일러,모듈) == $dll => Dynamic Link library (동적 언어 연결)

/tmp ⇒ 임시 저장소 (기본 1000개)

swap ⇒ 가상 메모리 (ex: 게임상의 체력 실드 ) PC의 overflow (뻗다) 를 방지

profile
:) GITHUB: https://github.com/YJ2123412

0개의 댓글