리눅스 운영체제 구조
1. 운영체제(Operating System)란
- 하드웨어 자원들을 관리하고 소프트웨어들을 실행하기 위한 서포트를 해주는 시스템 소프트웨어
리눅스는 운영체제의 하나로 크게 커널, 쉘, 유틸리티 등으로 이루어져 있음
2. 커널(Kernel)
- 메모리 상주 프로그램(memory resident program)으로, 부팅 시 가장 먼저 메모리에 올라오며 항상 메모리에 상주함
3. 유틸리티(Utility)
- 디스크 상주 프로그램(disk resident program)으로, 항상 디스크에 상주해 있다가 필요할 때만 메모리에 올라왔다 내려감
- command와 동일어(유저 요청 시 메모리에 올라옴)
4. 쉘(Shell)
- 유틸리티가 메모리에서 언제 올라오고 내려가야 하는지 교통정리(job control)를 해주는 프로그램
- 쉘은 사용자와 커널 사이의 인터페이스이며 사용자로부터 명령을 받아 여러 프로그램이나 명령을 실행
5. 커널-쉘-유틸리티의 관계
- 디스크에 커널, 유틸리티, 쉘이 있다가, 부팅 시 커널이 가장 먼저 메모리에 올라감
- 유저A가 터미널을 켜면 커널의 프로세스에 의해 해당 터미널 위에 쉘이 메모리에 올라감
- 유저B가 터미널을 켜면 커널의 프로세스에 의해 해당 터미널 위에 쉘이 메모리에 올라감
- 쉘은 유저의 커맨드 입력을 기다리다, 유저B가 커맨드 입력 시(ex:ppt) 커맨드에 대응되는 유틸리티를 디스크로부터 가져와 실행(ex:ppt 실행)
6. 번외 : Linux와 GNU 시스템
자유 소프트웨어 재단의 리처드 스톨먼 같은 사람들은 GNU/Linux와 Linux라는 용어를 구분해서 지칭해야 한다고 말한다. 리눅스 그 자체는 커널을 의미하며, 커널이 운영체제의 핵심 부분이라는 것은 사실이지만, 그것만으로 운영체제의 역할을 수행할 수 있는 것은 아니라는 것이다.
즉, 리눅스라는 용어는 커널 만을 의미하며, 리눅스 운영체제 자체를 지칭할 때는 '리눅스 기반의 GNU 시스템(GNU/Linux)'이라고 불러야 한다는 것이다.
그러나 이미 GNU/Linux와 Linux를 거의 구분하지 않고 사용하고 있기 때문에 용어를 엄격하게 구분할 필요는 없는 것 같다. 다만 GNU/Linux와 Linux에 차이가 있다는 것을 알고 있으면 될 것 같다.
[참고]
https://olc.kr/course/course_online_view.jsp?id=35&s_keyword=Kernel&x=0&y=0
https://www.elprocus.com/linux-operating-system/
https://www.gnu.org/gnu/linux-and-gnu.ko.html
'Linux' 카테고리의 다른 글
CentOS 7 & Window hostname 영구변경 (0) | 2019.04.11 |
---|---|
CentOS 7에서 enp0s3을 eth0로 변경 (0) | 2019.03.28 |
방화벽 관련 명령어 (0) | 2019.03.08 |