컴퓨터시스템은 하드웨어, 운영체제, 응용프로그램, 사용자로 구분할 수 있다.
그림출처: https://en.wikipedia.org/wiki/Operating_system
하드웨어: CPU(중앙처리장치), 메모리, 입출력(I/O) 장치로 구성되어 기본 계산용 자원을 제공한다.
응용 프로그램: 컴파일러, 어셈블러, 텍스트 에디터, 데이터베이스 시스템 등과 같은 자원이 어떻게 사용될지를 정의한다.
운영체제는 하드웨어 자원을 관리하여 응용 프로그램에 편리한 서비스를 제공하고,
응용 프로그램과 컴퓨터 하드웨어 간의 인터페이스 역할을 하는 프로그램이다.
운영체제의 목적
1. 사용자에게 프로그램을 효율적이고 편리하게 실행할 수 있는 환경을 제공한다.
2. 컴퓨터 자원을 공정하고 효율적인 방식으로 할당한다.
3. 응용 프로그램의 실행을 감독하여 오류를 방지하고 입출력 장치를 관리한다.
운영체제와 커널(Kernel)
커널은 운영체제의 핵심부분으로서, 운영체제의 실질적인 모든 작업을 관리한다.
운영 체제는 커널 공간과 사용자 공간으로 구성되어,
일부 유용한 응용 프로그램과 유틸리티가 커널에 추가된 완전한 패키지가 OS가 된다.
예를 들면,
리눅스는 파일 시스템 유틸리티, 텍스트 편집기 등과 같은 응용 프로그램을 포함하지 않기 때문에 커널이라고 말할 수 있다.
그렇기에 여러 회사가 리눅스 커널을 통해 이러한 종류의 응용 프로그램을 추가하였고
리눅스 커널을 기반으로 한 우분투, centOS, redHat 등과 같은 운영 체제가 나오게 되었다.
참고 도서: Operating System Concepts 9th
'Development knowledge' 카테고리의 다른 글
컨텍스트 스위칭 (Context Switching) (0) | 2018.11.24 |
---|---|
프로세스(Process)란 (0) | 2018.11.24 |
함수 호출방식 (call-by-value, call-by-reference) (0) | 2018.11.21 |
메모리 구조 (Code, Data, Stack, Heap) (0) | 2018.11.21 |
static과 const (0) | 2018.11.21 |