[Python] 2강 - 컴퓨터의 구성

2025. 4. 9. 17:33·⚡Python

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
'⚡Python' 카테고리의 다른 글
  • [Python] 4강 - 파이썬 시작하기
  • [Python] 개인 컴퓨터에서 파이썬 설치 및 VS Code로 실행하기
  • [Python] 3강 - 파이썬의 이해
  • [Python] 1강 - 컴퓨터의 이해
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (143) N
      • 🎓방송통신대학교 (25) N
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (10) N
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (2)
      • ☕Java (13) N
        • 📝Java Programming (12) N
        • 🧩Java Design Pattern (1)
      • 🌳Spring (9)
        • 🌱Spring Framework (6)
        • 🌱Spring Security (1)
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    컴퓨터의 이해
    Python
    방송통신대학교
    방통대
    다형성
    세계화
    컴파일러
    클래스
    파이썬
    스프링
    유비쿼터스 컴퓨팅
    유비쿼터스 컴퓨팅개론
    Java
    유비쿼터스
    Spring Framework
    방송대
    클라우드
    spring
    자바
    함수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[Python] 2강 - 컴퓨터의 구성
상단으로

티스토리툴바