1. 하드웨어와 소프트웨어
(1) 하드웨어
[1] 하드웨어란?
- 실제 컴퓨터를 구성하고 있는 물리적 부품을 의미한다.
[2] 하드웨어 종류
- 입력장치(마우스, 키보드 등) / 출력장치(모니터 등) / CPU / 메모리 / 디스크 등이 있음.
[3] 폰 노이만 구조
- 범용적 컴퓨터를 만드는데 엄청 큰 기여를 구조이다.
- 현재의 컴퓨터 즉, 하드웨어 부분은 거의다 폰 노이만 구조를 따르고 있다.
- 기능에 따라 입력장치, 기억 저장장치, 제어장치, 연산장치, 출력장치로 구분이 된다.
(2) 소프트웨어
[1] 소프트웨어란?
- 다양한 장치들을 동작시켜 특정 작업을 해결하는 프로그램
- 각각의 고유한 기능을 수행하는 하드웨어가 언제 어떻게 동작하여 문제를 해결할 수 있는 지시하는 명령어 집합
* 핵심 : 알고리즘을 프로그래밍 언어로 구현한 것이 소프트웨어라고 할 수 있음.
- 소프트웨어의 종류는 크게 "응용 소프트웨어" 와 "시스템 소프트웨어" 로 나누어진다.
[2] 응용 소프트웨어
- 사용자의 업무나 목적에 맞게 문제 해결을 위한 처리 절차를 표현한 명령어 집합
[3] 시스템 소프트웨어
- 하드웨어 제어 및 관리를 해주며, 응용 소프트웨어를 실행할 수 있는 환경을 제공을 해준다.
- 쉽게 말해, 응용 소프트웨어를 실행을 시켜주는 소프트웨어라고 볼 수 있다.
2. 하드웨어의 이해
(1) 입력장치
- 명령과 데이터를 컴퓨터에 전달하는 장치이다.
- 입력장치를 통해 해당 입력장치를 제어할 수 있는 드라이버 즉, 소프트웨어를 통해 2진수 형태로 변환을 해준다.
[1] 입력장치의 종류
- 키보드 / 마우스 / 스캐너 / 터치스크린 등
- 데이터의 유형에 따라 입력장치는 바뀌게 된다.
- 그 밖에, 특수 입력장치 ( 마이오, 립 모션 등)가 있다.
(2) 출력장치
- 정보 처리 결과를 인간이 인식 가능한 형태의 데이터로 내보내는 장치
- 2진수 형태의 데이터를 문자, 숫자, 도형, 음성, 영상 등의 형태로 변환해서 출력을 해준다.
[1] 출력장치의 종류
- 모니터 / 스피커 / 프린터 / 3D 프린터 / 초 지향성 스피커 등
- 그 밖에, 특수 출력장치 HUD(Head-Up Display) , HMD(Head-Mounted Display) 등이 있다.
(3) 기억(저장) 장치
- 명령과 데이터를 기억(저장)하는 하드웨어 즉, 저장 장치에 데이터를 남기는 것을 의미함.
- 역할에 따라 주기억장치와 보조기억장치로 구분
[1] 주기억장치와 보조기억장치 차이
[2] 주 기억(저장)장치의 종류
- ROM : Read Only Memory로 한 번 데이터가 저장이 되면 바꿀 수 없는 메모리이며, 예시로는 메인보드에 ROM이 있으며, 내부에는 바이오스라는 컴퓨터 제어 프로그램이 들어가 있다.
- RAM : Random Access Memory로 임의로 아무곳에나 접근 할 수 있는 저장장치이며, 컴퓨터에서 사람이 보는 정보를 CPU가 RAM에 띄워 실시간으로 보여주고 있는 것이다.
[3] 보조 기억(저장)장치의 종류
- 플로피디스크 / 자기디스크(하드디스크) / 광학디스크 / 플래시 드라이 등이 있다.
[4] 특수 기억(저장)장치
- SSD(Solid State Drive) 가 있으며 빠른 속도, 외부 충격에 강함, 적은 전력소모가 강점이다.
(4) 제어와 연산 장치
- 현대의 컴퓨터는 제어장치와 연산장치가 별도로 구분되어 있지 않고, CPU라는 장치에 합쳐져 있다.
- 손 마디 만한 칩에 트랜지서터가 100억에서 600억개까지 들어가 있는 매우 초소형 칩이다.
- CPU안에는 레지스터, 제어유닛, 연산 논리 유닛 장치가 존재한다.
- 레지스터(register) : 고속으로 동작하는 저장장치 CPU안에 내장 되어있는 저장 공간이기 때문에 접근 속도가 매우 빠름.
- 제어 유닛 : 레지스터에서 명령을 읽고, ALU에 명령어를 전달하는 역할을 한다.
- 연산 논리 유닛(ALU) : 제어 유닛으로 명령을 받으면 레지스터에서 값을 받아와 처리한 뒤 다시 레지스터에 저장한다.
* 제어장치와 연산장치가 어떤 방식으로 유기적인 동작을 하는지 알아보면 좋음.
3. 소프트웨어의 이해
(1) 소프트웨어
- 소프트웨어는 고유한 기능을 수행하는 하드웨어가 언제 어떻게 동작하여 문제를 해결할 수 있는 절차를 지시하는 명령어 집합.
- 크게 응용 소프트웨어와 시스템 소프트웨어 두 가지로 구분이 된다.
(2) 시스템 소프트웨어
- 다양한 장치들을 서로 유기적으로 동작시켜 특정 작업을 수행할 수 있는 환경을 조성하는 프로그램이다.
- 쉽게말해, 실제 하드웨어의 동작을 시켜주는 소프트웨어는 시스템 소프트웨어이며, 컴퓨터 제어 목적으로 사용이 된다.
- 응용 소프트웨어는 시스템 소프트웨어를 통해 메모리에 공간을 할당 받아 실행이 된다.
(3) 시스템 소프트웨어 종류
- 대표적으로는 운영체제(커널) / 컴파일러 / 유틸리티 3가지로 구분이 된다.
[1] 운영체제
- 사용자가 컴퓨터를 효율적으로 운영, 관리, 사용할 수 있도록 하드웨어를 제어하는 소프트웨어이다.
[2] 컴파일러
- 소스코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 소프트웨어이다.
[3] 유틸리티
- 부가적인 기능을 제공하여 사용자가 컴퓨터를 효율적이고 편리하게 관리할 수 있도록 지원해주는 소프트웨어이다.
* 유틸리티는 실제 하드웨어를 제어하지는 않지만 운영체제가 효과적으로 하드웨어를 사용할 수 있도록 보조해줌.
(4) 시스템 소프트웨어 - 운영체제
- 응용 소프트웨어가 효과적으로 작동할 수 있는 환경을 조성을 해줌.
- 컴퓨터의 자원(하드웨어)를 효율적으로 관리하고 응용 프로그램에 자원을 할당함.
- 역할은 사용자 인터페이스 / 프로세스 관리 / 네트워크 관리 / 기억장치 관리 / 입출력장치 관리 크게 5가지로 나뉜다.
[1] 사용자 인터페이스
- 컴퓨터와 사용자를 매개하여 상호작용하는 방법을 제공을 해줌 흔히 UI라고 함.
- 대표적으로는 CLI 방식과 GUI 방식 두 가지로 나뉜다.
- CLI 방식은 커맨드 라인 즉, 텍스트 형식의 명령이고, GUI는 그래픽 즉, 직관적으로 그림을 통해 명령을 내린다.
[2] 프로세스 관리
- 프로세스는 실행되고 있는 상태의 프로그램 즉, 메모리에 올라가 있는 상태를 의미한다.
- 여러 프로그램 실행이 요청되면 한정된 자원(기억장치 등)을 효과적으로 사용하도록 조율을 해주는 역할을 함.
- 그 밖에, 프로그램이 실행되기 위해 메모리에 공간을 할당한 뒤 프로세스를 띄우는데 공간 할당 또한 해준다.
- 이런식으로 운영체제는 프로세스를 자동으로 관리하고 있다.
[3] 네트워크 관리
- 컴퓨터는 네트워크를 통해서 데이터를 교환을 한다. 이러한 데이터를 교환하기 위해 네트워크를 자동으로 관리해준다.
- 전달을 하기 위해서 파일을 운영체제로 전달을 하면 운영체제가 네트워크 연결을 통해 상대방에게 전달을 해주는 방식이다.
- 네트워크 인터페이스 : 응용 프로그램이 통신할 수 있는 환경 제공 및 통신 장치(하드웨어) 관리를 해준다.
[4] 기억장치 관리
- 보조기억장치에 저장된 컴퓨터의 프로그램은 실행되기 위해서 주기억장치에 적재가 되어야 한다.
- 주기억장치의 크기는 보조기억장치의 크기보다 매우 작기 떄문에 효율적 관리가 요구 된다.
- 이러한 것들을 관리해주는 것이 운영체제이다.
[5] 정리
- 운영체제는 하드웨어 장치를 관리해 줌으로써 응용 프로그램의 효율적 실행을 돕는 역할을 한다.
'⚡Python' 카테고리의 다른 글
[Python] 5강 - 순차 구조 및 제어 구조 (0) | 2025.04.15 |
---|---|
[Python] 4강 - 파이썬 시작하기 (0) | 2025.04.14 |
[Python] 개인 컴퓨터에서 파이썬 설치 및 VS Code로 실행하기 (0) | 2025.04.11 |
[Python] 3강 - 파이썬의 이해 (1) | 2025.04.11 |
[Python] 1강 - 컴퓨터의 이해 (2) | 2025.04.09 |