1. 운영체제란?
- 응용프로그램의 실행을 제어하고 유저와 컴퓨터 하드웨어 사이의 인터페이스 역할은 하는 프로그램
- Resource Manager : 메모리, 파일시스템, 프로세스/스레드, I/O 디바이스, 네트워크 인터페이스
- Window, Linux, MacOS, iOS, Unix, Android etc...
2. 유닉스
- 멀티유저, 멀티태스킹이 가능한 운영체제.
- 컴파일러가 탑재
- Dennis Ritchie, Ken Thompson이 1969년 발명
- 크게 SVR5 계열과 BSD계열로 나눌 수 있다.
3. GNU
- GNU is Not Unix
- 1983년 Richard Stallman이 시작한 프로젝트
- 완벽한 유닉스 호환 소프트웨어 시스템을 만드는 것이 목표
- 현재 유닉스의 많은 라이브러리, 컴파일러, 에디터, 쉘 등의 많은 프로그램들을 개발함
4. Linux
- 1991년 핀란드의 Linus Tovalds가 Unix 베이스로 개발.
- FTP서버를 통해 무료배포 시작
- X Window System 이 1992년 0.95버전에 탑재됨
- 대부분의 해커가 사용하는 OS
- 다양한 버전들이 있으며 Ubuntu, Debian, CentOS, Fedora 등의 버전이 있다.
1) Design Principle
- 유닉스의 멀티유저, 멀티태스킹 시스템 툴을 사용
- Unix의 파일시스템을 사용
- Unix의 Networking 모델을 그대로 사용
- 속도, 효율, 표준화에 초점을 맞춤
- POSIX(System Call standards)에 기반한 설계
- SVR4 보다 BSD계열의 인터페이스에 더 가깝다.
2) Components
- Kernel : Device와 Software사이의 통신을 관리하며, System Resource를 관리한다. Low level 의 하드웨어와 소프트웨어를 추상화 하는 역할을 한다.
- System Library : Application이 커널과 상호작용하는 기능을 정의해놓은 표준 라이브러리. 커널의 권한을 전부 얻을 필요없이 OS의 기능을 사용할 수 있다. 대표적으로 GNU C Library(glibs) 가 있다.
- System Utilities : 리눅스 시스템 관리에 도움이 되는 각종 소프트웨어. System Libarary를 이용하며, 프로세스 관리, 파일시스템 네비게이션, 프로그램 실행, 네트워크 설정들을 가능하게 해준다.
3) Linux 의 기본적인 특징들
- Portable : 다른 하드웨어에서도 동작한다.
- Open Source
- Multi-User
- Multi Programming : 메모리에 프로그램을 여러개 탑재하여 여러 프로그램을 한번에 동작시킨다.
- Hierarchical File System
- Shell
- Security
4) Linux Architecture
- Hardware Layer
- Kernel
- Shell : 커널 함수를 사용해 커널과 통신
- Utilities
5) Responsibilities of Kernel
- Process management & Inter-Process Comunication
- Memory & Virtual Memory Management
- File System Management
- Device Management
- Network Management
- System Calls/ Interrupt Handling
- Security