Why is'Linux' so special?
리눅스의 기술적 특징
① 모놀리딕 커널 = Monolithic kernel, 모놀리식 커널, 단일형 커널
('Monolithic'단어 뜻이 모든 것이 단단히 짜여 하나에 묶여있는 것 ~> Monolithic아키텍처 개념도 있다)
: OS가 제공하는 서비스(HW자원관리)를 하나의 커널(Kernel)로 구현하여 제공하는 방식
- 단점 : 커널의 일부 기능 수정 시 커널을 다시 컴파일해야함
ㄴ 단점보완 : 동적 로드가 가능한 '커널모듈' & 동적 설정을 위한 '프로퍼티 기능'을 제공 >> 커널의 유연성 확보
- 모놀리딕 커널과 다른 커널들의 비교 이미지 ↓
② 장치의 파일화
- "리눅스는 시스템의 자원을 모두 파일로 다룬다"
- 1) 파일
1.1) 디렉터리
1.2) 일반 파일
1.3) 특수 파일
ㄴ1.3.1) 장치 파일 : (장치유형에 따라) '1.3.1.1) 문자 장치 파일' / '1.3.1.2) 블록 장치 파일' 로 나뉨.
ㄴ1.3.2) 파이프 파일 : 프로세스 간 통신을 위해 제공
ㄴ1.3.3) 소켓 파일 : 응용프로그램이 소켓 프로그래밍이 가능하도록 제공
③ 다양한 파일시스템의 지원
- 리눅스 자체 파일시스템(ext2,3,4) 지원
- 윈도우용 파일시스템(FAT32, NTFS), NW파일시스템(SMB, CIFS) 등도 지원
- 시스템 충돌, 전원문제 시 복구 가능한 '저널링 파일시스템(journaling file system)' 지원
④ 가상메모리
- 프로세스들이 접근하는 메모리를 가상메모리에 매핑하고, 가상 메모리는 페이지¹를 통하여 물리메모리에 매핑
- 시스템에서 동작 중인 프로세스가 사용하는 메모리만 물리메모리에 로드하고, 사용빈도가 낮은 메모리는 디스크에 저장함 >> '요구 페이징(Demand Paging)'방식
- 물리적인 메모리의 크기를 극복하기 위한 메모리 관리 기법
- 각 페이지에 대한 '보호 메커니즘' & 넓은 '주소 공간' & '메모리 매핑' : 이미지와 데이터 파일을 프로세스 주소 공간에 매핑 & 프로세스 간 '공유 메모리 기능' 제공
+) 페이지¹ : 가상메모리를 최소 단위로 쪼개어 일정한 크기인 블럭 cf) 페이징기법
⑤ 스왑 = Swap
: 물리 메모리 사용량이 가득 차 프로그램을 메모리에 로드할 수 없는 경우, 실행 빈도 접근이 낮은 데이터나 프로그램을 디스크로 옮기고 물리메모리 확보해 프로그램 로드하는 과정
ㄴ 전원 꺼지면 휘발성 메모리 사라지므로 비휘발성인 디스크에 데이터 저장이 필요
- Swap out(스왑 아웃) : 실행 빈도 접근이 낮은 데이터나 프로그램을 디스크로 옮기는 동작
- Swap in(스왑 인) : 디스크에서 다시 메모리로 옮기는 동작
- Swap space(스왑 스페이스) : 스왑을 위한 디스크상의 공간이며 전용 파일이나 전용 파티션↓이 존재햐야 함.
- Swap partition (스왑 파티션) : 스왑 스페이스 전용 파티션 (최대 절전 기능을 사용하기 위해서 필요)
- Swap 빈도 변경하기 : /etc/sysctl.conf 내 sm.swapiness를 설정 ex) 10설정 시, 메모리 가용량 10%일 때 swap함
- Swap 용량 확인하기 : free 명령어 (+메모리 상태도 확인 가능)
- 장점 : 물리메모리 한계를 극복하고 효율적으로 메모리 공간을 활용
- 단점 : 동적으로 크기 조절할 수 없어 하드디스크의 공간을 차지함
⑥ 동적 라이브러리와 정적 라이브러리
- 동적 라이브러리 : 메모리에 한 번 적재하고 나면 여러 프로세스가 공용으로 사용가능
장점 : 실행 프로그램 크기가 작음 / 메모리 효율적 사용가능
단점 : 실행 속도가 느림 / 배포에 제약 존재
- 정적 라이브러리 : 실행 프로그램이 컴파일될 떄 링크되어 프로세스가 실행될 때 함께 메모리에 로드된다.
↓장단점 동적 라이브러리의 반대
장점 : 실행 속도가 빠름 / 배포에 제약 없음
단점 : 실행 프로그램 크기가 큼 / (프로세스마다 메모리 적재되어 중복 상주 가능해) 메모리 비효율적 사용 가능
⑦ 파이프 = Pipe
: 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 받을 수 있는 프로세스 간 통신 방식
⑧ 리다이렉션 = Redirection
- 프로세스의 표준 입출력을 파일, 화면, 장치 등에서 입출력으로 받을 수 있도록 재지정할 수 있는 매커니즘.
⑨ 가상 콘솔 = Virtual console
: 하나의 화면에서 여러 개의 콘솔을 사용할 수 있는 기능 ex) 터미널, X윈도우 등등
- 리눅스는 총 6개의 콘솔 제공
+) 콘솔 생성 : ctrl + alt + F(1~6)
ㄴcf) X윈도우 콘솔 생성 : : ctrl + alt + F7
콘솔 간 전환 : alt + F(1~6)
[출처]
- Monolithic : ahea.wordpress.com/2018/04/26/msa-1-monolithic-architecture-%EB%9E%80/
- 모놀리식 커널 : ko.wikipedia.org/wiki/%EB%AA%A8%EB%86%80%EB%A6%AC%EC%8B%9D_%EC%BB%A4%EB%84%90
- 페이지 : https://godkyu.tistory.com/10
- 페이징 ; jhnyang.tistory.com/290
[책] 리눅스마스터 1급 기본서(2020) | 저자 김윤수, 최정현|영진닷컴 |2020.03.25
http://book.naver.com/bookdb/book_detail.nhn?bid=16317946