📌 컴퓨터 구분
- 컴퓨터는 크게 2가지로 구분할 수 있다.
- 물리적으로 만질 수 있는 하드웨어 ( 키보드, 모니터, 본체안의 CPU, 메모리 등)
- 물리적으로 존재하지 않는 소프트웨어 (시스템 소프트웨어, 응용 소프트웨어)
📌 소프트웨어 구분
- 소프트 웨어는 크게 운영체제(Linux, MacOS, Windows 등) 와 그 위에 설치되는 프로그램인
응용 프로그램( Excel, Chrome, PowerPoint 등 ) 으로 다시 나눌 수 있다.
📌 운영체제의 구분
- 운영체제는 커널(Kernel)과 시스템 프로그램으로 구분된다.
📌 커널의 역할
- Kernel 의 사전적인 의미는 "알맹이, 핵심" 이라는 뜻을 가진다.
- 커널은 "운영체제의 핵심부로서 컴퓨터 자원(System Resource)들을 관리하는 역할"을 수행한다.
* 컴퓨터 자원(System Resource) : CPU, 메모리, 파일, 네트워크, 입출력 장치 등 |
- 즉, 커널은 항상 컴퓨터 자원만 바라보고 있기에, 사용자와의 상호작원은 전혀 지원하지 않는다.
- 이때, 등장하는 것이 바로 시스템 프로그램인데, 대표적으로 쉘(shell)이 있다.
* 쉘(shell) : 사용자가 컴퓨터에게 전달하는 명령을 해석하는 프로그램으로서, 커널과 사용자간 중간 다리 역할을 수행한다. |
- 사용자는 쉘을 통하여 커널에게 명령을 내릴 수 있다.
📌 컴퓨터의 구조 세분화
* 컴퓨터(Computer) > 하드웨어(Hardware) (예 : 컴퓨터 본체, 모니터, 키보드 등) > 소프트웨어(Software) -> 응용 프로그램 (예 : MS Office, Chrome, VSCode 등) -> 운영 체제(OS, Operating System) (예 : Windows, MacOS, Linux 등) --> 시스템 프로그램 (예 : 쉘(Shell) 등) --> 커널(Kernel) : 운영체제의 핵심부 |
📌 추상화
- 커널은 컴퓨터의 자원을 관리하는 역할을 수행한다.
- 그 중 가장 큰 역할은 컴퓨터의 물리적 자원(하드웨어)과 추상화 자원을 관리하는 것이다.
- 추상화란, 일반적으로 우리가 컴퓨터를 사용할 때 여러 사용자를 등록하여 사용할 수 있는데, 이렇게 여러 사용자를 등록하여 사용할 때 마치 하나의 하드웨어를 독점하여 활용하는 것처럼 느끼게 된다.
- 이처럼 하나인 하드웨어를 마치 여러 개 처럼 보여지도록 하는 기술을 추상화라고 한다.
- 커널을 이를 위해 하나의 하드웨어 자원을 여러 사용자들을 위한 여러개의 추상화된 객체로 관리한다.
- 커널이 물리적인 자원을 추상화하면 용어가 달라지는데 매칭하면 아래와 같이 대응된다.
물리적 자원 이름 | 추상화한 자원 용어 |
CPU | 테스크 (Task) |
메모리(Memory) | 페이지(Page), 세그먼트(Segment) |
디스크(Disk) | 파일(File) |
네트워크(NetWork) | 소켓(Socket) |
- 커널은 컴퓨터의 물리적인 자원과 추상화 자원을 '관리'한다.
- 따라서 커널은 5가지 관리자들로 구성되어 있다.
📌 커널의 5가지 관리자
1. 테스크 관리자 : 물리적인 자원인 CPU를 추상자원인 테스크로 제공
2. 메모리 관리자 : 물리적인 자원인 메모리를 추상자원인 페이지나 세크먼트로 제공
3. 파일 시스템 관리자 : 물리적 자원인 디스크를 추상자원인 파일로 제공
4. 네트워크 관리자 : 물리적 자원인 네트워크 장치를 추상자원인 소켓으로 제공
5. 디바이스 드라이버 관리자 : 각종 외부장치 (프린터, GPU 등) 에 대한 접근을 제공
- 커널이 이런 자원들을 관리하는 이유는 " 사용자가 물리적인 하드웨어에 접근하고 사용할 수 있도록 매개하기 위해서" 이다.
- 즉, 커널은 사용자가 하드웨어에 접근하고 통신하기 위한 중간 다리 역할을 수행한다고 볼 수 있다.
'IT - Introduction to Computer Science' 카테고리의 다른 글
[IT지식] 네트워크와 인터넷 개념 (0) | 2023.08.23 |
---|---|
[IT지식] 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍 (0) | 2023.08.23 |
[IT지식] 디자인 패턴[Design pattern]이란? (0) | 2022.06.23 |
[IT지식] FTP (File Transfer Protocol) 란? (0) | 2022.06.14 |
[IT지식] 샌드박스[sandbox]란? (0) | 2022.06.10 |