◎ Linux의 역사
- 1991년 :핀란드 대학원생 LinusTorvalds
- Minix를 기반으로 version0.01개발
- Paging, timer interrupt, device driver, file system, …
- 1992년 :리눅스 배포판 등장
- 리눅스 배포판 = 리눅스 커널 + 응용 프로그램
- 1993년 : 커널 안정화
- 지속적인 version 발표, 2022년에는 version 6.1 발표함
◎ Linux의 장점
- Unix 특징
- 멀티 테스킹 (Multi-Tasking) 지원
- 다중 사용자 접근(Multi-User access) 지원
- POSIX 1003.1 standard 지원
- 운영체제의 인터페이스 표준을 만족하기 때문에 다른 OS와의 호환이 좋다.
- 이외 특징
- 다양한 파일시스템 지원 : EXT, JFS, ReiserFS, NFTS, ...
- 다양한 네트워크 프로토콜 지원 : TCP/IP, SLIP, PPP, ...
- 다양한 아키텍처 지원 : 80*86, SPARC, ARM, PPC, ...
- 멀티 프로세서(Multi-processor) 지원
◎ Liunx(Unix)의 구성
-
Application Programs
- 사용자가 직접적으로 명령하거나 코드로 입력하는 영역
- Library를 통해서 System call을 요청할 수도 있고, 직접적으로 System call을 사용할 수도 있다.
- ex) Shell script를 통한 명령(ls, chmod, ...), C언어를 통한 프로그램 실행
-
Library
- System call을 호출하는 역할
- 사용자가 간편하게 System call을 사용할 수 있도록 도와준다.
-
System call
- Application과 operating System과의 interface
- System call이 호출되면 kernel code가 수행됨
-
Kernel
- system resource를 효율적으로 사용하도록 관리함
- process/memory/file/IO management들을
◎ Program execution
kernel mode와 user mode가 계속적으로 전환됨
-
kernel mode
- privileged mode : 하드웨어에 접근 권한이 있는 모드
- 시스템에 있는 여러 디바이스를 직접 제어 가능
- 주변 장치와 직접적으로 연결되어 있음
-
user mode
- 시스템 자원 접근 권한이 없음
- 할당되어 있는 영역에서만 허용됨
- 하드웨어 자원과 직접적으로 연결되어 있지 않음
- 독립적인 프로세스로 동작함
- 고유의 공간을 할당받고 각각의 프로세스를 간섭받지 않는다.
- 어느때던지 interrupted 받을 수 있다.