Linux Kernel Map
Shell쉘(shell): 사용자와 컴퓨터 하드웨어 또는 운영체제간 인터페이스
사용자의 명령을 해석해서, 커널에 명령을 요청해주는 역할
관련된 시스템콜을 사용해서, 프로그래밍이 작성 되어 있다.
쉘 종류
Bourne-Again Shell(bash): GNU 프로젝트의 일환으로 개발됨, 리눅스 거의 딜폴트 shell
Bourne Shell(sh)
C Shell(csh)
Korn Shell(ksh): 유닉스에서 가장 많이 사용된다.
실제 운영체제의 이해(총정리)
- process management
응용 프로그램은 여러개의 process로 관리됨
process scheduler
process 실행, 종료 관리
인터럽트 처리 관리
- memory management
가상메모리
page 기반 메모리 관리
- IO device management
VFS(Virtual File System)
file, Device drivers, Network 관리
- 시스템 프로그램
핵심은 쉘(shell)
bash(Bourne-again shell)
내부는 시스템콜을 호출하도록 구현
각 프로그래밍 언어(운영체제별로 구현), 시스템콜도 프로그래밍 별로 API가 필요함
필요시 해당 운영체제의 시스템콜 호출
라이브러리/시스템콜과의 관계
Android기본적으로 리눅스 kernel이 설치 되어 있기 때문에 shell(터미널) 등 사용가능
안드로이드는 Java 기반이기 때문에 Java VM등이 필요
Application Framework가 Android의 형태를 갖추게 함
안드로이드는 OS가 아닌 Linux위에 구현되는 Framwork이다.
참고) IoT
IoT(사물인터넷, Internet of Things)
각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술
RasberryPi 와 같은 초소형 CPU는 OS 기능을 최소화 해야 한다.(Linux도 버거움)
간단한 업무만 처리하면 되기 때문에 OS의 모든 기능을 구현할 필요가 없다.
TinyOS
multitasking, protection ring, virtual memory, virtual file system 등 모두 필요없다.