운영체제(OS)
운영체제(OS)는 프로그램들을 실행하는 메인 프로그램이다.
프로그램들을 실행시키기 위해서는 CPU, 메모리 등 하드웨어 Resource가 필요하다. 이때, 이러한 하드웨어 Resource와 응용 프로그램 사이 관리를 수행하는 것이 바로 운영체제(OS)이다.
컴퓨터 시스템의 핵심적인 부분으로, 누가 어떤 시스템을 어떻게 사용할 것인지를 전반적으로 관리한다.
하드웨어의 작업 순서와 워크로드 등을 계획하고 할당하는 일련의 복잡한 명령을 통해, 프로그램의 실행은 물론 파일 접근, 응용 프로그램 구동, 하드웨어 제어와 같은 작업 또한 처리할 수 있도록 도와준다.
또한 네트워크상에서 다른 컴퓨터와의 상호 작용을 제어하는 등의 통신 역할을 수행하기도 한다.
전 세계에서 가장 많이 쓰이는 OS는 Linux이다. 거의 대부분의 IT 관련 필드에서는 이러한 Linux OS를 기반으로 업무를 수행한다.
우리가 흔히 사용하는 구글의 Android OS 또한 Linux OS를 기반으로 만들어졌으며, 이 외에도 Ubuntu OS, Cent OS 등이 유명한 Linux 기반 OS이다.
운영체제는 여러가지 구성요소로 나뉘는데, 그중 대표적인 것이 바로 커널(Kernel)이다.
커널은 위에서 설명한 '프로그램의 중재' 역할을 수행하는 주체 격의 존재로, 하드웨어의 Resource를 이용해 프로그램을 관리한다.
보통 운영체제를 만들 때는 이 커널을 Base로 해서 그 위에 다른 기능적 요소를 추가하게 된다.
하드웨어(Hardware)
컴퓨터의 중앙처리장치(CPU), 기억장치(Memory Unit), 입출력 장치(I/O) 등과 같은 전자 기계 장치 그 자체를 의미한다.
이와 대비되는 개념은 소프트웨어(Software)라고 한다. 보통 컴퓨터 전공에서 다루는 내용은 소프트웨어이지만, 하드웨어의 개념을 잘 알아야 적절하게 활용하여 최적의 서비스를 만들 수 있기 때문에 하드웨어를 잘 아는 것은 중요하다.
1) CPU (Central Process Unit)
CPU 는 컴퓨터의 시스템을 통제하고, 프로그램 동작에 필요한 계산 전반을 담당한다.
대표적인 하드웨어 중 하나로, 컴퓨터 유닛의 핵심을 담당한다.
사용자로부터 입력받은 명령어를 해석, 연산하여 그 결과를 출력하는 역할을 하며, 인간으로 치면 뇌와 같은 존재라고 할 수 있다. 모든 프로그램의 동작에 CPU가 관여한다고 생각해도 무방하다.
최근에는 하나의 칩에 CPU와 함께 GPU(Graphic Process Unit) 등 각종 장치가 함께 들어가는 경우가 많아 점점 하드웨어 장치로서의 의미에서 기능의 하나로 바뀌는 경향을 보이고 있다.
코어수, 클럭, 쓰레드 등 CPU 성능에 관여하는 개념이 많으니 꼭 한 번씩 찾아보도록 하자.
2) 메모리 (Memory Unit)
메모리 는 전기적인 신호를 내부에서 임시적으로 저장하는 역할을 수행하는 주기억장치로, 운영체제와 CPU 사이에서 정보를 주고받을 때 해당 정보를 저장하고 관리한다.
보통 메모리라고 하면 RAM(Random Access Memory)이라고 불리는 휘발성 메모리를 지칭한다. CPU와 HDD 사이 속도 차이에 의한 병목 현상을 줄여주는 반도체 소자로, 데이터의 읽기와 쓰기가 자유롭다.
메모리의 대표적인 역할을 정리하자면 다음과 같다.
- CPU의 계산 결과를 저장해준다.
- CPU가 계산을 수행하여 도출된 결과를 임시로 저장하고 이를 다시 CPU가 필요로 할 때 이용할 수 있도록 도와준다.
- 프로그램이 실행되는 공간을 제공해준다.
- 프로그램이 실행될 때, 이는 프로세스(Process)의 형태로 메모리 위에 올라가게 된다. 이후 프로그램이 종료되면 해당 프로세스는 메모리에서 삭제된다.
메모리의 용량이 크다는 것은 그만큼 많은 정보를 처리할 수 있다는 것을 의미하며, 더 많은 프로그램을 실행시킬 수 있음을 의미한다. 여담으로, 크롬은 메모리 잡아먹는 괴물이라고 불릴 정도로 메모리 소모량이 엄청나므로 사용하지 않는 창은 닫아주는 것이 좋다. 만약 프로그래밍을 하고자 한다면, 최소 16GB의 메모리는 확보하도록 하자.
3) 디스크 드라이브 (Disk Drive)
디스크 드라이브 는 휘발성 저장장치인 메모리와 달리, 정보를 영구적으로 저장하는 역할을 한다.
메모리가 프로그램이 실행되는 과정을 담당한다면, 디스크는 프로그램을 컴퓨터에 저장하는 과정을 책임진다.
하드 디스크 드라이브인 HDD가 대표적인 디스크 드라이브로, 플래터(platter)라고 하는 자기 디스크를 물리적으로 회전시켜 데이터를 읽고 쓰는 자기 디스크이다. 당연히 물리적인 제약 때문에 반도체 소자인 CPU나 메모리보다는 처리 속도가 한참 느리지만, 더 많은 용량을 저장할 수 있으며, 비휘발성이라는 장점이 있다.
하지만 아무리 CPU나 메모리가 좋아도 디스크 드라이브가 느리면 전반적인 성능의 향상이 이루어지기 어려운데, 이러한 문제점을 해결하기 위해 대안으로서 등장한 것이 SSD(Solid State Drive)이다.
SSD는 HDD와 달리 자기디스크가 아닌 반도체 방식으로 동작하며, 따라서 속도가 빠른 것은 물론 작동 소음이 없고 전력 소모가 적다는 장점을 가진다.
입력 받은 명령어를 해석, 연산하여 그 결과를 출력하는 역할을 하며, 인간으로 치면 뇌와 같은 존재라고 할 수 있다. 모든 프로그램의 동작에 CPU가 관여한다고 생각해도 무방하다.
최근에는 하나의 칩에 CPU와 함께 GPU(Graphic Process Unit) 등 각종 장치가 함께 들어가는 경우가 많아 점점 하드웨어 장치로서의 의미에서 기능의 하나로 바뀌는 경향을 보이고 있다.
코어수, 클럭, 스레드 등 CPU 성능에 관여하는 개념이 많으니 꼭 한 번씩 찾아보도록 하자.
2) 메모리 (Memory Unit)
메모리 는 전기적인 신호를 내부에서 임시적으로 저장하는 역할을 수행하는 주기억장치로, 운영체제와 CPU 사이에서 정보를 주고받을 때 해당 정보를 저장하고 관리한다.
보통 메모리라고 하면 RAM(Random Access Memory)이라고 불리는 휘발성 메모리를 지칭한다. CPU와 HDD 사이 속도 차이에 의한 병목 현상을 줄여주는 반도체 소자로, 데이터의 읽기와 쓰기가 자유롭다.
메모리의 대표적인 역할을 정리하자면 다음과 같다.
- CPU의 계산 결과를 저장해준다.
- CPU가 계산을 수행하여 도출된 결과를 임시로 저장하고 이를 다시 CPU가 필요로 할 때 이용할 수 있도록 도와준다.
- 프로그램이 실행되는 공간을 제공해준다.
- 프로그램이 실행될 때, 이는 프로세스(Process)의 형태로 메모리 위에 올라가게 된다. 이후 프로그램이 종료되면 해당 프로세스는 메모리에서 삭제된다.
메모리의 용량이 크다는 것은 그만큼 많은 정보를 처리할 수 있다는 것을 의미하며, 더 많은 프로그램을 실행시킬 수 있음을 의미한다. 여담으로, 크롬은 메모리 잡아먹는 괴물이라고 불릴 정도로 메모리 소모량이 엄청나므로 사용하지 않는 창은 닫아주는 것이 좋다. 만약 프로그래밍을 하고자 한다면, 최소 16GB의 메모리는 확보하도록 하자.
3) 디스크 드라이브 (Disk Drive)
디스크 드라이브 는 휘발성 저장장치인 메모리와 달리, 정보를 영구적으로 저장하는 역할을 한다.
메모리가 프로그램이 실행되는 과정을 담당한다면, 디스크는 프로그램을 컴퓨터에 저장하는 과정을 책임진다.
하드 디스크 드라이브인 HDD가 대표적인 디스크 드라이브로, 플래터(platter)라고 하는 자기 디스크를 물리적으로 회전시켜 데이터를 읽고 쓰는 자기 디스크이다. 당연히 물리적인 제약 때문에 반도체 소자인 CPU나 메모리보다는 처리 속도가 한참 느리지만, 더 많은 용량을 저장할 수 있으며, 비휘발성이라는 장점이 있다.
하지만 아무리 CPU나 메모리가 좋아도 디스크 드라이브가 느리면 전반적인 성능의 향상이 이루어지기 어려운데, 이러한 문제점을 해결하기 위해 대안으로서 등장한 것이 SSD(Solid State Drive)이다.
SSD는 HDD와 달리 자기디스크가 아닌 반도체 방식으로 동작하며, 따라서 속도가 빠른 것은 물론 작동 소음이 없고 전력 소모가 적다는 장점을 가진다.
'컴퓨터 공학 기본 > 개발배경지식' 카테고리의 다른 글
개발배경지식5) API와 REST API (0) | 2021.11.07 |
---|---|
개발배경지식4) 네트워크 (0) | 2021.11.05 |
개발배경지식3) 라이브러리와 프레임워크 (0) | 2021.11.04 |
개발배경지식2) 프로그램과 프로그래밍 (0) | 2021.11.03 |
댓글