권소라 저자의 2025 이기적 리눅스마스터 2급 도서를 기반으로 정리한 글입니다.
SECTION 01 리눅스의 개요
1. 리눅스의 특징 및 장단점
특징
1) 오픈 소스 운영체제
2) 멀티유저(다중 사용자), 멀티태스킹(다중 작업) 운영체제
- 멀티유저: 여러 사용자가 동시에 동일한 시스템에 접근 가능
- 멀티태스킹: 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능, 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업 실행 가능
3) 다중 스레드를 지원하는 네트워크 운영체제
- 하나의 프로세스 내에서 여러 개의 네트워크 작업(요청)을 동시에 처리할 수 있기 때문에 강력한 네트워크 지원 가능
- 네트워크 서버로 사용이 가능하며 인터넷과 이더넷에 안정적으로 연결 가능
- 웹 브라우저, 메일, 뉴스, 웹 서버 등의 모든 인터넷 서비스 기능을 갖추고 있음
스레드(Thread)란?
스레드는 CPU에 작업 요청을 하는 실행 단위를 말한다.
프로세스가 생성되면 CPU 스케줄러는 CPU에게 해야 하는 일을 전달하고, CPU가 그 일을 하게 된다. 이때 CPU가 받는 일을 스레드라고 한다.
결국 운영체제 입장에서 작업의 단위는 프로세스지만, CPU 입장에서는 스레드가 되는 것이다.
프로세스(Process)와 스레드(Thread)의 차이
예를 들어, 밥 먹기, 공부하기, 운동하기를 오늘 해야 한다고 가정했을 때, 오늘 밥을 못 먹었다고 공부할 수 없는 것은 아니며, 운동을 못해도 공부는 할 수 있다. 즉, 각각 서로 다른 일인 것이다.
하지만 밥을 먹기 위해 해야 하는 순서인 1. 밥 짓기 2. 반찬 준비하기 3. 수저 놓기 중 하나를 하지 못했다면 밥 먹기라는 일은 수행할 수 없다.
이때 밥 먹기, 공부하기 같은 일은 프로세스에 해당이 되고, 밥을 먹기 위해 식사 차리는 작업은 스레드에 해당된다.
또한 밥을 먹기 위한 작업인 밥 짓기, 반찬 준비하기 등 여러가지 일을 동시에 처리하는 것을 멀티스레드라고 한다.
결국 프로세스와 스레드의 가장 큰 차이점은 독립성으로, 각각의 프로세스는 다른 프로세스에 영향을 미치지 않지만, 스레드의 작업은 다른 스레드에 영향을 미칠 수 있다.
4) 여러 종류의 파일 시스템을 지원하는 운영체제
- 리눅스의 기본 파일 시스템인 ext2, ext3, ext4, DOS의 FAT16, Windows의 FAT32, NTFS, 네트워크 파일 시스템 SMB, CIFS, NFS 등도 지원
※ 파일 시스템
- 리눅스 파일 시스템: 리눅스에서 파일을 저장하고 관리하는 체계
- 네트워크 파일 시스템: 네트워크를 통해 파일을 공유하는 시스템
장단점
1) 리눅스는 유닉스와 완벽하게 호환 가능
- 리눅스는 POSIX(Portable Operating System Interface) 규격을 따름
- POSIX: 유닉스 운영체제에 기반을 두고 있는 표준 운영체제 인터페이스
- 저작권과 라이선스 문제, 자유로운 배포를 위해 유닉스 소스코드를 전혀 사용하지 않고 개발됨
- POSIX 규격을 따르므로 유닉스용 프로그램은 별도의 수정 없이 리눅스에서 동작 가능
2) 리눅스는 PC용 운영체제보다 안정적
- 일반 PC는 업무가 끝나면 전원을 끄지만 리눅스는 네트워크 사용을 전제로 설계되었기에 특별한 사항을 제외하고 항상 켜 놓아도 안정적으로 운영됨
- 리눅스 시스템은 네트워크 기반하의 멀티유저, 멀티태스킹이 가능하여 많은 작업자가 동시에 사용해도 안정적인 시스템 운영이 가능
3) 하드웨어 기능을 효과적으로 사용
- 다른 운영체제보다 적은 양의 메모리를 필요로 함
- SWAP 방식을 통해 램(RAM)이 부족한 경우 Swap 영역을 늘려 메모리의 효율성을 높일 수 있음
※ Swap 공간은 보조 저장 장치(HDD, SSD)에 위치하기 때문에 물리적 메모리에 접근하는 것보다 훨씬 느려, 과도한 스와핑은 시스템의 성능 저하를 초래할 수 있다.
4) 리눅스는 오픈 소스 운영체제
5) 공개 운영체제이기 때문에 문제점 발생 시 기술 지원을 받는 데 한계가 있음
- RHEL과 SUSE와 같은 몇몇 엔터프라이즈용 리눅스들은 기술 지원이 유료로 제공되고 있으나, 대부분은 예상치 못한 오류 발생 시 개발자들의 기술 지원을 직접적으로 받는 것이 불가능
6) 한글 지원이 미흡
- 배포판마다 별도의 한글 지원 패키지를 설치한 후 사용해야 한다는 불편함 존재
2. 운영체제의 구조와 기능
1) 디렉터리: 파일 저장소를 의미하며, 리눅스 디렉터리는 최상위 디렉터리(/)를 기준으로 하위 디렉터리들이 존재하는 계층적 트리 구조로 구성
▶ 리눅스 디렉터리
2) 디렉터리 간에는 부모와 자식의 관계를 가지므로 상위 디렉터리와 하위 디렉터리는 부모 디렉터리와 자식 디렉터리로 구분
3) 디렉터리별 저장 내용
▶ 리눅스 (상위) 디렉터리 종류와 특징
- 디렉터리 /proc (process)
- 가상 파일 시스템
- 시스템에서 운영되고 있는 다양한 프로세스들에 관한 내용과 프로그램에 대한 정보를 포함
- 디렉터리에서 볼 수 있는 것은 실제 드라이브가 아니라 메모리 상에 저장되어 있음
- 사용자가 /proc이나 하위 파일에 접근할 때마다 커널에서 파일 내용을 동적으로 만들어 냄
- 각 프로세스는 고유의 식별자를 가지고 있으며, 이 식별자를 가진 디렉터리 밑에 정보를 저장
- 디렉터리 /lib
- 동적 공유 라이브러리를 저장
- 공유 라이브러리에는 많은 프로그램에서 공통으로 사용하는 함수들이 들어있어 디스크의 공간을 절약할 수 있으며, 프로그램마다 동일한 코딩을 할 필요가 없음
- 라이브러리 공유 방법에는 정적 라이브러리와 동적 라이브러리 두 가지 방법이 있음
- 정적 라이브러리는 컴파일 과정에서 공유 라이브러리의 루틴을 사용하지 않고 프로그램 내에 라이브러리 루틴의 복사본을 갖도록 컴파일함
- 동적 라이브러리는 실행 파일 내부에 라이브러리를 넣어두지 않고 프로그램을 실행할 때 가져와 사용하므로 메모리의 효율성이 높음
- 디렉터리 /dev
- 하드디스크, 프린터, 입출력장치 등과 같은 장치들을 파일화하여 관리, 따라서 특정 장치를 실행하기 위해서는 해당 장치 파일을 실행해야 함
- 장치 파일(device file) 또는 특수 파일(special file)은 장치 드라이버임
- 블록 장치 파일(block device)은 하드디스크, CD/DVD, 플로피 디스크와 같은 저장 장치들이며, 문자 장치 파일(character device)은 키보드, 마우스, 테이프, 모니터, 프린터 등의 같은 입출력 장치들임
- 리눅스의 표준 입력장치는 키보드이며, 표준 출력장치는 모니터임
- 디렉터리 /etc
- 시스템 환경설정 파일과 부팅 관련 스크립트 파일들이 저장되어 있는 디렉터리임
- 사용자 정보 및 암호 정보 파일, 보안 파일 등을 저장
- 디렉터리 /usr
- 시스템이 아닌 일반 사용자들이 사용하는 디렉터리
- 공유 가능한 프로그램들이 설치되며 네트워크를 이용해서 여러 개의 시스템을 연결할 경우 이 디렉터리를 공유해서 설치된 프로그램들을 활용할 수 있음
- /usr 디렉터리는 읽기 전용으로 마운트 되어야 하며, 가변 자료들은 /var 디렉터리에 저장한 후, 프로그램이 /usr 내에 접근해야 하는 경우 해당 경로에 심볼릭 링크를 생성하여 /var의 데이터를 사용할 수 있도록 하는데, 이를 통해 프로그램이 /usr를 수정하는 것처럼 보이지만, 실제로는 /var에서 데이터를 관리하게 됨
- 디렉터리 /var
- 시스템에서 사용되는 가변적인 파일들을 저장하는 디렉터리
- 가변적인 파일들로는 로그 파일, 스풀링(spooling), 캐싱(caching) 등이 있음
- 디렉터리 /lost+found
- 파일 시스템의 이상 유무를 진단하고 복구하는 fsck에 의해서 사용되는 디렉터리
- 손상된 파일이나 디렉터리를 /lost+found 디렉터리로 연결한 뒤에 오류를 수정하게 되며 평상시에는 null 파일 링크에 의해서 비어있는 상태로 존재
- 리눅스 파일 시스템 ext2에 의한 fsck.ext2 프로그램도 이 디렉터리를 사용
※ 용어 설명
- /: 최상위 디렉터리 = 루트 드렉터리, 여기서 루트 디렉터리는 /root를 의미하는 것이 아님
- sticky bit: 파일이나 디렉터리에서 파일 삭제 권한을 제한하여, 오직 파일 소유자만 해당 파일을 삭제할 수 있도록 설정하는 특수한 권한
- 마운트: 논리적인 시스템과 디렉터리를 연결하여 해당 논리 시스템을 사용할 수 있도록 조정하는 작업
- fsck: file system check의 약자로, 리눅스 파일 시스템에서 파일을 체크하고 수리하는 도구
- 스풀링 파일: 입출력 장치(I/O) 속도 차이를 보완하기 위해 데이터를 임시 저장하는 파일
심볼릭 링크란?
심볼릭 링크는 특정 파일이나 디렉터리를 가리키는 가상적인 경로로, 원본 파일의 위치를 참조하여 접근할 수 있도록 하는 기능이다.
윈도우의 '바로가기'와 비슷하며, 링크를 통해 실제 파일이나 폴더를 사용하는 것처럼 동작한다.
ln -s /var/logs /usr/logs
▶ ln -s 명령어: 하드 링크를 생성하는 ln 명령어에 심볼릭을 의미하는 -s 옵션을 통해 심볼릭 링크 생성
위 명령어를 실행하면 /usr/logs를 열 때 실제로는 /var/logs의 내용을 보게 된다.
하드 링크 vs 심볼릭 링크
하드 링크
하드 링크는 원본 파일과 동일한 inode(아이노드)를 가지는 링크이다. 이 뜻은, 원본 파일이 두 개의 파일(원본 파일, 하드 링크 파일)로 서로 다른 이름으로 존재하지만 같은 파일 정보를 가지게 되는 것이다.
따라서 원본 파일이나 하드 링크 파일에서 변경사항이 적용되면, 자동으로 서로에게 반영되는 동기화가 된다.
심볼릭 링크
심볼릭 링크는 원본 파일의 이름을 가리키는 링크이다. 하드 링크와는 다르게 원본 파일이 사라지면 기존의 역할을 수행할 수 없다.
이러한 심볼릭 링크는 명령어의 호환성 유지 및 깊이가 깊은(경로가 복잡한) 디렉토리에 보다 빠르고 쉽게 접근하기 위해 사용한다.
※ inode: 각 파일에 대한 정보를 기억하는 120바이트의 고정된 크기의 구조체
3. 리눅스 배포판
특징
1) 리눅스 배포판은 리눅스 전체 시스템을 구성하는 소프트웨어 패키지 형태
2) 리눅스 커널, GNU 소프트웨어 및 여러 가지 자유 소프트웨어로 구성된 운영체제
- 운영체제는 리눅스 커널과 GNU 프로젝트에서 가져온 라이브러리와 유틸리티, X 윈도우 시스템의 그래픽으로 구성되며, 워드프로세서, 스프레드시트, 미디어 플레이어, 데이터베이스 등 여러 가지 소프트웨어 애플리케이션들도 포함
3) 전 세계에 300여 가지의 배포판이 있으며, 배포판을 구성하는 소프트웨어도 자유롭게 구성되어 있음
- 용량을 맞춰서 X 윈도우를 빼거나 용량이 작은 GNU 유틸리티를 선택하기도
4) 대표적인 배포판은 슬랙웨어, 데비안, 레드햇 등이 있음
- 페도라(Fedora)는 레드햇(Red Hat), openSUSE는 노벨(Novell), 우분투(Ubuntu)는 캐노니컬 등의 기업이 관리하는 배포판
- 데비안(Debian)이나 젠투(Gentoo)는 리눅스 커뮤니티 기반의 배포판
종류
1) 슬랙웨어 리눅스(Slackware Linux): 배포판 가운데 가장 먼저 대중화된 배포판으로 1992년 패트릭 볼커딩에 의해 출시
- 최근 패키지 관리의 문제점으로 인하여 인기가 다소 떨어진 상태
- 구조가 간결하고 파악하기 쉽기 때문에 유닉스 학습에 리눅스를 사용하고 싶어 하는 사용자들에게 적합
2) 데비안(Debian): 데비안 프로젝트에서 만들어 배포하는 공개 운영체제로 GNU의 공식적인 후원을 받고 있는 유일한 배포판
- 1994년 이안머독(Ian Murdock)에 의해 비영리 조직으로 데비안 프로젝트를 설립
- 리눅스(Linux) 커널을 탑재한 데비안 GNU/리눅스, GNU 허드(GNU Hurd) 커널을 탑재한 데비안 GNU/허드, FreeBSD 커널을 탑재한 데비안 GNU/KFreeBSD, NetBSD 커널을 탑재한 데비안 GNU/NetBSD 등으로 나뉘며 현재 이 가운데 정식판이 존재하는 것은 데비안 GNU/리눅스 뿐임
- 데비안은 패키지 설치 및 업그레이드의 과정이 단순
- 인스톨 후 패키지 매니저인 apt 등을 이용하면 소프트웨어의 설치나 업데이트에서 다른 패키지와의 의존성 확인, 보안 관련 업데이트 등을 자동으로 해줌
3) 우분투(Ubuntu): 데비안 GNU/리눅스(Debian GNU/Linux)에 기초한 운영체제
- 고유한 데스크탑 환경인 유니티를 사용하는 리눅스 배포판
- 영국에 기반을 둔 회사인 캐노니컬의 지원을 받고 있음
- 여섯 달마다 새 버전이 하나씩 배포, GNOME의 새 버전이 나오는 시기와 비슷
- 사용자 편의성에 초점
4) 레드햇: 미국의 레드햇사가 개발하던 리눅스 배포판
- 현재는 레드햇사가 유료로 기술지원을 하는 기업용 레드햇 엔터프라이즈 리눅스(RHEL, 알헬)와 페도라 프로젝트에서 개발하고 있는 페도라로 나위어 있음
- 레드햇은 기업용 유료 리눅스 배포판인 RHEL의 개발을 지원
5) RHEL(Red Hat Enterprise Linux): 레드햇이 개발하여 판매하고 있는 상용 리눅스 패포판으로 18~24개월에 한 번씩 새로운 버전이 공개되며 라이선스는 별도로 판매하지 않음
- 서브스크립션(구독)의 형태로 요금을 지불하는 방식으로 계약
- 기술 지원은 버전마다 출시 시점으로부터 7년 동안 제공
- 계약기간 중에는 추가 비용 없이 업그레이드및 다운그레이드를 자유롭게 실시할 수 있음
- 상업용 패키지는 구입해야 하지만 소스코드는 레드햇의 FTP 사이트를 통해 공개
6) 페도라: 리눅스 커널에 기반한 운영체제와 레드햇의 후원과 개발 공동체의 지원 아래 개발된 배포판으로 6개월 간격으로 새로운 버전이 배포되며 지원 기간은 각 버전마다 13개월임
- 리눅스 커널에 기반한 운영체제와 레드햇의 후원과 개발 공동체의 지원 아래 개발된 배포판
- 일반적인 목적을 가진 RPM(RedHat Package Manager, 패키지 설치 관리 도) 기반의 소프트웨어가 결합된 운영체제
- 6개월 간격으로 새로운 버전이 배포되며 지원기간은 각 버전마다 13개월
- 소프트웨어 개발이 안정적으로 이루어지기 위해서는 새 버전으로 계속 교체되어야 한다는 문제점이 있음
7) CentOS: 업스트림 소스인 레드햇 엔터프라이즈 리눅스와 완벽하게 호환되는 무료 기업용 컴퓨팅 운영체제
- 플랫폼을 제공할 목적으로 만들어진 리눅스계 운영체제
- 자체 커뮤니티에 의해 관리되고 있음
- 기본적으로 포함되는 소프트웨어와 업데이트되는 소프트웨어를 아울러 이전 파일에 대해 상위판과 100%에 최대한 가까운 호환성을 유지하는 것을 원칙으로 하고 있음
- 레드햇의 기술 지원은 받지 않음
8) 수세(SuSe): 독일에서 출시된 배포판으로 유럽에서 인기를 누리고 있음
- 풍부한 기능과 안정성, 보안 기능을 포함
- 정기적인 배포판이 존재한다기보다는, 언제든지 새로운 버전이 출시되면 업데이트가 가능한 롤링 릴리즈(rolling release) 방식을 사용
- 오픈 수세, 수세 엔터프라이즈 리눅스로 나뉨
※ pull하는 쪽이 downstream, pull 당하는 쪽이 upstream
SECTION 02 리눅스의 역사
▶ 리눅스 역사를 BSD 계열과 System V로 분류하여 나타낸 것
- BSD 계열: 버클리 대학의 연구소를 중심으로 운영체제 연구 진행
- System V: 벨 연구소를 중심으로 운영체제 발전
1960년대 후반
1) 1965년 MIT, AT&T 벨 연구소, General Electric에서는 Multics라는 실험적인 운영체제를 공동으로 개발하는 프로젝트 진행
2) 이 프로젝트 팀은 멀티태스킹, 멀티유저를 지원하는 초기 형태의 시분할 운영체제를 만듦
3) 1969년 프로젝트에 참여했던 벨 연구소 연구원 켄 톰슨(Ken Thompson)이 초기 형태의 UNIX를 개발, 이때 초기 형태의 UNIX는 어셈블리 언어로 만들어졌기에 호환성에 문제가 있었음
1970년대
1) 1971년 벨 연구소의 데니스 리치(Dennis Ritchie)가 C언어를 개발함으로써, 어셈블리 언어로 되어 있던 UNIX가 C언어로 재작성됨
2) C언어로 개발된 UNIX는 이식성과 호환성 있는 시스템으로 발전
- 소스(source) 프로그램이 공개되어 있었던 UNIX는 Berkeley Unix(BSD)와 SYSV로 분열되어 발전하게 됨
1980년대 초중반
1) MIT 연구소의 연구원이었던 리처드 스톨먼(Richard Stollman)은 소스를 공개하지 못하도록 하는 분위기와 기술을 상업화하려는 조류에 대한 반감으로 GNU(GNU is Not Unix) 프로젝트를 시작
2) 1985년 리처드 스톨먼은 FSF(Free Software Foundation, 자유 소프트웨어 재단)라는 비영리 단체를 설립 후 'GNU 선언문(Manifesto)'을 발표
- 개발이 진행된 프로그램들은 GNU 프로그램들의 배포 라이선스인 GPL하에서 판매됨
3) 1987년 앤드루 타넨바움(Andrew Tanenbaum)은 미닉스(MINIX)를 개발
- 미닉스(MINIX)는 자유/오픈 소스 소프트웨어로 교육용 유닉스 계열 운영체제
1990년대 초중반
1) 핀란드의 헬싱키 대학의 리누스 토발즈(Linux Torvalds)가 Minix의 커널 소스를 고쳐 GNU 시스템에 적합한 커널을 개발
2) 스톨먼과 FSF는 유닉스 커널과 호환 가능한 커널인 리눅스를 GNU 시스템의 커널로 채택
3) 1994년에 리눅스 커널 버전 1.0을 발표
4) 1996년에 리눅스 커널 버전 2.0을 발표
SECTION 03 리눅스 라이선스
GNU(GNU's Not UNIX)
1) 리처드스톨만이 자유 소프트웨어 재단에서 진행하며 유지 중인 운영체제 프로젝트
2) 리처드 스톨만이 1983년에 GNU 개발을 처음 시작
- GNU는 'GNU(그누)는 유닉스가 아니다(GNU's Not UNIX).'의 약자
3) GNU 프로젝트를 통하여 개발한 유닉스 계열 컴퓨터 운영체제로 '완전한 유닉스 호환 소프트웨어 시스템'이 되는 것이 목표
자유 소프트웨어 재단(FSF, Free Software Foundation)
1) 1985년 리처드 스톨만이 설립한 재단
2) 자유 소프트웨어는 사용자가 소프트웨어를 실행하고, 복제하고, 배포하고, 학습하고, 개작하고, 향상시킬 수 있는 소프트웨어
3) 자유 소프트웨어의 특징
- 어떤 목적이든 원하는 대로 프로그램을 실행시킬 수 있는 자유
- 무료 또는 유료로 프로그램 복제물을 재배포할 수 있는 자유
- 필요에 따라 프로그램을 개작할 수 있는 자유
- 공동체 전체가 개선된 이익을 나눌 수 있게 개작한 프로그램을 배포할 수 있는 자유
4) 자유는 금전적인 측면과 관계가 없기 때문에 자유 소프트웨어를 유료로 판매할 때 문제가 생기지는 않음
오픈 소스 소프트웨어(Open Source Software)
1) 1998년 일부 커뮤니티에서 '자유 소프트웨어' 대신 '오픈 소스 소프트웨어'라는 용어를 사용하기 시작
2) 이것은 자유가 가진 무료라는 의미가 일으키는 혼동을 피하기 위함임
GNU GPL(General Public License)
1) GPL은 Free Software Foundation(FSF)에서 만든 Free 소프트웨어 라이선스임
2) 1989년 1차 버전, 1991년 2차 버전, 2007년 3차 버전까지 발표되었음
3) 기본적으로 어떤 프로그램을 개발할 때, GPL 코드를 일부라도 사용하게 되면 해당 프로그램은 GPL이 되며, GPL을 가진 프로그램을 유료로 판매하는 것은 가능하지만, 반드시 전체 소스코드는 무료로 공개
4) GPL 코드를 사용한 소프트웨어를 내부적인(개인, 기관, 단체 등) 목적으로만 사용할 때에는 소스코드를 공개할 필요가 없지만 어떤 형태(유료 혹은 무료)로든 외부에 공표, 배포할 때에는 전체 소스코드를 공개해야 함
5) GPL 전문: 만일 배포하고자 하는 프로그램의 특정 부분이 GPL 코드로부터 파생된 것이 아닌 독립적인 저작물일 경우에는 독립 저작물 모듈의 개별적인 배포에는 GPL이 적용되지 아니하(코드 공개할 필요 X)지만, 프로그램을 전체(GPL 코드에서 파생된 모듈 + 독립 저작물 모듈)적으로 배포할 때에는 GPL을 따라야 함
GNU LGPL(Lesser General Public License)
1) LGPL은 GPL보다는 훨씬 완화된(lesser) 조건의 공개 소프트웨어 라이선스임
2) LGPL이 적용된 라이브러리를 이용하여 개발하였을 경우 프로그램 소스코드는 공개하지 않아도 됨
3) LGPL 코드를 사용했음을 명시만 하면 됨
4) LGPL 코드를 단순히 이용하는 것이아니라 이를 수정한 또는 이로부터 파생된 라이브러리를 개발하여 배포하는 경우에는 전체 코드를 공개해야 함
BSD(Berkeley Software Distribution) 라이선스
1) 버클리 캘리포니아 대학의 자유 소프트웨어 저작권의 한 가지임
2) BSD 계열의 소프트웨어를 포함한 많은 프로그램에서 사용함
3) 소스코드 공개의 의무가 없으며 상용(상업적) 소프트웨어에서도 무제한 사용 가능한 라이선스임
- 해당 소프트웨어는 아무나 개작할 수 있고, 수정한 것을 제한 없이 배포할 수 있음
- 수정본의 재배포는 의무적인 사항이 아니므로 상용 소프트웨어에서도 사용할 수 있음
- GPL은 파생된 소프트웨어여도 GPL과 같은 라이선스를 갖도록 의무화하고 있다는 것에 BSD와 차이를 둠
4) OpenCV는 BSD 라이선스를 따름
아파치(Apache) 라이선스
1) 아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 라이선스 규정
2) 아파치 2.0 라이선스는 누구나 해당 소프트웨어에서 파생된 프로그램을 제작할 수 있으며 저작권을 양도, 전송할 수 있는 라이선스 규정
- 누구든 자유롭게 아파치 소프트웨어를 다운로드 받아 부분 또는 전체를 개인적 혹은 상업적 목적으로 이용할 수 있음
- 재배포 시 원본 소스코드 또는 수정한 소스코드를 반드시 포함시켜야 하는 것은 아니지만 아파치 라이선스 버전 2.0을 포함시켜야 하며, 아파치 소프트웨어 재단에서 개발된 소프트웨어라는 것을 명확하게 밝혀야 함
MIT(Massachusetts Institute of Technology) 라이선스
1) 미국 매사추세츠 공과 대학교에서 본교의 소프트웨어 공학도들을 돕기 위해 개발한 허가서
2) BSD 라이선스를 기초로 작성된 BSD 계열 라이선스 중의 하나임
3) 해당 소프트웨어는 누구나 개작할 수 있고, 수정본 재배포시 소스코드 비공개가 가능
4) 이 라이선스가 적용된 소프트웨어에는 X Window System, JQuery, Node.js 등이 있음
5) 소프트웨어를 개조한 제품을 반드시 오픈 소스로 배포해야 한다는 규정이 없으며, GNU 일반 공중 허가서의 엄격함을 피하려는 사용자들에게 인기가 있음 GNU 일반 공중 사용 허가서(GPL) 등과 달리 카피 레프트는 아니며, 오픈 소스 여부에 관계없이 재사용을 인정하고 있음
6) MIT 허가서를 따르는 대표적 소프트웨어로 X 윈도우 시스템(X11)이 있음
MPL(Mozilla Public License)
1) 오픈 소스와 자유 소프트웨어 라이선스
2) 1.0판은 넷스케이프 커뮤니케이션즈 코퍼레이션의 변호사로 일하고 있던 미첼 베이커에 의해 작성되었고, 1.1판은 모질라 재단이 작성
3) MPL은 변형 BSD 사용 라이선스와 GNU 일반 공중 사용 라이선스의 혼합적 성격을 띠고 있음
4) 모질라 어플리케이션 스위트, 모질라 파이어폭스, 모질라 선더버드 및 그 외의 모질라 소프트웨어들에 적용되었음
5) MPL의 특징은 소스코드와 실행파일의 저작권을 분리했다는 점임
6) 수정한 2차 소스코드는 MPL로 공개하고 원저작자에게 수정한 부분에 대해 알려야 하지만, 실행 파일은 독점 라이선스로 배포할 수 있음
7) 사용한 MPL 소프트웨어와 수정한 MPL 소프트웨어에 대한 공개 의무만 가지며, 별도의 소스코드와 실행 파일은 독점 라이선스를 가질 수 있음
▶ 주요 오픈 소스 SW 라이선스 비교
참고자료
https://www.youtube.com/watch?v=YWz5YsgFyxg&list=PL6i7rGeEmTvp_MYm0zuiFe7COrM3endfu
https://simple-ing.tistory.com/67
쓰레드(Thread)의 기본개념
프로그램과 프로세스 우리가 프로그램을 실행하려고 하면, 실행을 위해 운영체제에서 메모리 공간을 할당받아오게 되며, 그 공간에 프로그램이 올려져 실행되게 된다. 즉 프로세스는 실행중인
simple-ing.tistory.com
리눅스 구조 (메모리 관리)
메모리 부족 > 리눅스의 메모리는 커널의 메모리, 비어 있는 메모리, 프로세스용 메모리로 이루어졌다. 메모리 사용량이 증가하면 비어 있는 메모리가 줄어든다. 이러한 상태가 되면 메모리 관
velog.io
https://m.blog.naver.com/zzang9ha/222160014402
[Linux] - 하드 링크(hard link), 심볼릭 링크(symbolic Link)
하드 링크(hard link), 심볼릭 링크(hymbolic Link) 리눅스에서 하드링크와 심볼릭 링크란 무엇일까? Win...
blog.naver.com
https://dreamcode.tistory.com/270
git/github upstream이란?
Upstream/Donwstream 단어 뜻 그대로 생각하면 상류와 하류이다. 이와 마찬가지로 물은 상류에서 하류로 흐듯이 pull하는 쪽이 downstream, pull 당하는 쪽이 upstream이라고 생각하면 된다. 즉 upstream과 downstre
dreamcode.tistory.com