
사용자와 하드웨어 간의 상호작용을 위해 인터페이스를 제공하는 시스템
컴퓨터의 중앙처리장치, 메모리 및 주변 장치 등 하드웨어를 효율적으로 관리

운영체제는
일정 시간동안 처리하는 일의 양을 의미하는 처리능력
사용자의 요청 후 결과가 얻어질 때까지의 시간을 의미하는 반환 시간
요청을 정확하게 처리하는 신뢰도
이용할 수 있는 시스템의 자원이 어느 정도인가를 의미하는 사용 가능도
의 향상을 목적으로 한다.
운영체제(OS)는 프로그램을 실행뿐 아니라, 하드웨어와 소프트웨어 사이에서 모든 자원을 관리
컴퓨터의 핵심 자원인 CPU(프로세스), 메모리, 장치 I/O, 파일 시스템 등이 효율적으로 작동하도록 관리
한정된 자원을 여러 프로그램이 공평하고 효율적으로 사용할 수 있도록 순서와 시간을 분배
LAN 카드, USB 장치, 디스크 등 다양한 주변 하드웨어를 인식하고 제어하여 프로그램이 원활하게 작동하도록 도움
다른 컴퓨터나 서버와 통신할 수 있도록 다양한 네트워크 제어 기능을 제공
데이터를 안전하게 관리하고, 파일이나 네트워크 같은 자원을 여러 사용자가 공유할 수 있도록 지원
중요한 시스템 자원에 허가되지 않은 접근을 막아 시스템의 안전성을 유지
시스템에 문제가 생겼을 때 이를 감지하고, 가능한 경우 원래 상태로 복구하여 중단 없는 서비스를 제공
물리적인 자원을 추상화하여 하나의 자원을 여러 개처럼 보이게 하거나, 여러 자원을 하나처럼 묶어 효율적으로 사용

CPU: 한 번에 하나의 작업만 처리, 입출력(I/O) 중에는 아무것도 못 하고 기다려야 해서 효율이 매우 낮았음
메모리: 한 번에 딱 하나의 프로그램만 올라감
저장장치: 테이프나 카드에 담긴 데이터를 순서대로만 읽기
CPU: 작업 하나가 입출력을 기다릴 때 놀지 않고 다른 작업을 실행하여 높은 사용률
메모리: 여러 개의 프로그램을 동시에 올려두고 관리하기 시작
저장장치: 디스크의 등장으로 데이터에 무작위로 접근(Random Access)이 가능
CPU: 시간을 아주 잘게 쪼개어(Time Slice) 여러 사용자에게 번갈아 할당
메모리: '가상 메모리' 개념이 도입되어 실제 메모리보다 더 큰 프로그램을 실행
저장장치: 운영체제가 파일 시스템을 통해 데이터를 체계적으로 관리
1 ~ 3세대의 기능을 모두 취합한 방식
CPU: 여러 대의 컴퓨터에 있는 CPU들이 네트워크로 연결되어 하나의 거대한 작업을 나누어 처리
메모리: 네트워크를 통해 다른 컴퓨터의 메모리 자원까지 공유하거나 참조
저장장치: 클라우드나 분산 파일 시스템을 통해 물리적 위치와 상관없이 데이터를 저장하고 불러오기
1991년 헬싱키 대학교 시절, 교육용 OS인 미닉스(Minix)를 참고하여 개인용 컴퓨터에서 돌아가는 커널을 개발
GNU 프로젝트
유닉스(Unix)와 호환되는 자유 소프트웨어 운영체제를 만들려던 리처드 스톨먼의 프로젝트.
결합의 이유: GNU는 운영체제에 필요한 대부분의 도구를 만들었으나 핵심인 커널(Kernel) 이 없었고, 리눅스는 커널은 있었으나 응용 프로그램이 부족했음.
GNU 도구들과 리눅스 커널이 합쳐져 비로소 완전한 하나의 운영체제가 탄생함.
가장 엄격
이 라이선스가 적용된 코드를 사용해 프로그램을 만들면, 그 프로그램의 전체 소스 코드도 반드시 공개
완화된 GPL, 주로 라이브러리에 사용
내 프로그램에 이 라이브러리를 '연결(Link)'만 해서 쓴다면 내 소스 코드를 공개할 의무는 없음
소스 코드 공개 의무가 거의 없음
저작권자 표기만 잘 하면 소스 코드를 수정해서 유료 제품으로 팔아도 상관없다
BSD처럼 자유로우면서도, 특허권 관련 분쟁을 방지하는 조항이 명확하게 포함
수정된 파일에 대해서만 소스 코드를 공개해야 하는 정책 (GPL과 BSD의 중간 정도 성격)
파일 단위: 내 소스 전체가 아니라, MPL 코드가 들어있는 '특정 파일'만 공개 의무가 생김
가볍고 제약이 거의 없어 현재 전 세계 오픈소스에서 가장 흔한 라이선스 정책
| 라이선스 | 소스 코드 공개 의무 | 2차 저작물 공개 의무 | 상용 소프트웨어와 결합 | 특징 및 비고 |
|---|---|---|---|---|
| GPL | 강함 | 필수 (GPL로) | 불가 | 가장 엄격한 카피레프트(Copyleft), 리눅스 커널 |
| LGPL | 있음 | 라이브러리만 공개 | 가능 | 라이브러리 연동 시 사용자 소스 공개 의무 완화 |
| BSD | 없음 | 선택 사항 | 가능 | 매우 자유로움, 저작권자 표기만으로 상용화 가능 |
| Apache | 없음 | 선택 사항 | 가능 | 특허권 관련 조항 명시, 안드로이드가 채택 |
| MPL | 있음 | 해당 파일만 공개 | 가능 | 파일 단위 공개 의무 (GPL과 BSD의 중간 형태) |
| MIT | 없음 | 선택 사항 | 가능 | 가장 간결하고 제약이 없음, jQuery/Node.js 등 |
특징 :
종류 :
특징 :
종류 :
특징 :
종류 :
CPU 확인하는 명령
현재 동시에 실행되는 프로세스 확인하는 명령
현재 메모리 현황 확인하는 명령
하드디스크 확인하는 명령어 ( 파티션 확인 )