정의
- 기본정의: 운영체제 커널의 일종인 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
- 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적
- 프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정
- 장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행
- 시스템 호출 및 보안: 프로세스의 서비스 요청을 수신
구조
-
스토리지 (저장소)
- DAS (Direct Attached(area) storage): 케이블로 연결된 저장소
- NAS (Network attached(area) storage): 네트워크에 연결된 저장소
- SAN (storage area network)
- Das 와 nas의 단점을 보완
- 서로 다른 종류의 데이터 저장장치를 네트워크 상에 저장 공유, 서버에 연결 LAN과 별도 네트워크 구성 관리
-
local 로컬
-
내부망 ⇒ 인터넷을 사용하지 않는 내 컴퓨터
-
기본 ⇒ 자기 자신
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 쉘 다운
- 쉘 확인
쉘의 구동 순서
- ( ~,$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 : 출력 명령
- $ : 변수 호출
- ~ : 홈 디렉토리
- 쉘 구동 방법
- /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 로컬
-
내부망 ⇒ 인터넷을 사용하지 않는 내 컴퓨터
-
기본 ⇒ 자기 자신
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 (뻗다) 를 방지