배꼽파지 않도록 잘 개발해요

방송대 파이썬 프로그래밍 기초 - 2강. 컴퓨터의 구성 본문

방송대 컴퓨터과학과/파이썬 프로그래밍 기초

방송대 파이썬 프로그래밍 기초 - 2강. 컴퓨터의 구성

꼽파 2023. 4. 6. 12:32


  • 1. 하드웨어와 소프트웨어

  • 2. 하드웨어의 이해

  • 3. 소프트웨어의 이해


  • 1. 하드웨어와 소프트웨어

    컴퓨터의 구성요소

    하드웨어 (물리적 장치) :

    - 컴퓨터를 구성하고 있는 물리적 부품

    - ex. CPU, 키보드, 모니터 → 사람의 신체

    소프트웨어 (논리적 장치) :

    - 다양한 장치들을 동작시켜 특정 작업을 해결하는 프로그램

    - 전기적, 자기적 신호로 이루어져 있어서 만질 수 없음.

    - ex. 어도비, 윈도우즈 등 사람의 영혼 또는 지적 능력


    사람의 문제해결 과정

    사람이 수학식을 처리하는 과정 :

    입력 - 제어 - 연산 - 기억&저장 - 출력

    Q : 3 + 4 x 6

    1) 입력 : 사람의 신체 기관을 통해 입력됨.

    2) 기억&저장 : 수식이 머릿속에 기억됨.

    3) 제어

    - 어떤 계산을 먼저하고 나중에 해야 하는지 정해야 하므로 문제 푸는 과정을 먼저 찾은 후 문제를 풀기 시작함.

    - 제어를 통해 순서를 마련함. 

    ex. 4 x 6 → 3 + 10 

    4) 연산 : 순서대로 연산을 실행함.

    ex. 4 x 6 = 24,  3 + 24 = 27

    5) 출력 : 결과값을 출력함.

    ex. A: 27

    → 사람의 문제해결과정과 컴퓨터의 정보처리과정은 유사함.


    하드웨어

     기능에 따라 입력장치, 기억·저장장치, 제어장치, 연산장치, 출력장치로 구분
     폰노이만 구조 :

    - 폰노이만이 사람의 문제해결과 유사하게 만든 현대 컴퓨터의 기본 골격임.

    - CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조

    폰노이만 구조 (출처: 강의록)

    입력장치를 통해서 컴퓨터 내부로 데이터가 들어감.

    프로그램과 데이터가 기억장치에 의해 컴퓨터 내부에 일시적으로 저장됨.

    제어장치가 명령을 읽어다가 기억장치의 어느 위치에서 데이터를 처리해야 하는지 명령을 내림.

    연산장치가 기억장치의 데이터를 읽고 쓰면서 연산을 함.

    그 결과를 다시 기억장치에 저장한 후 처리 결과를 출력장치를 통해 내 보냄.

    * 해당 그림에서 화살표 방향이 중요, 제어장치에서 나오는 화살표 추가함.


    소프트웨어

     각각의 고유한 기능을 수행하는 하드웨어가 언제 어떻게 동작하여 문제를 해결할 수 있는지 지시하는 명령어 집합

     알고리즘을 프로그래밍을 통해 구현한 결과

    · 응용 소프트웨어 : 사용자의 업무나 목적에 맞게 문제 해결을 위한 처리 절차를 표현한 명령어 집합

    ex. 메일, 메신저, 스프레드시트, 워드프로세서

    · 시스템 소프트웨어 : 하드웨어를 제어·관리하여 응용 소프트웨어를 실행할 수 있는 환경을 제공

    ex. 윈도우즈, 맥OS, 리눅스 - 개발자나 인프라 담당하는 사람들이 사용함.


    2. 하드웨어의 이해

    입력장치

     명령과 데이터를 컴퓨터에 전달하는 장치
     컴퓨터가 처리할 수 있는 2진수 형태로 변환함.

     

    입력장치의 종류

    ·키보드 : 문자 숫자 특수기호 등을 컴퓨터에 전달 → 아스키 코드표에 맞게끔 2진수로 컴퓨터 내부에 저장함.

    ·마우스 : 실제 위치 데이터를 모니터 내부에 전달하는 기능
    ·스캐너 : 이미지, 그림 등을 바로 컴퓨터 내부에 넣어주는 기능
    ·터치스크린 : 사람이 화면에 터치한 위치을 전달주는 역할

     

     특수 입력장치(동작인식 장치)의 종류
    ·마이오(Myo) :

    - 근육의 움직임을 센싱해서 컴퓨터에게 전달하는 팔찌 형태의 입력장치로, 팔 둘레에 따라 늘어남.

    - 팔을 지나가는 신경기관들의 전기신호를 인식하는 금속센서가 붙어 있음.

    - 충전 케이블, 마이오 본체와 PC간 데이터를 주고 받을 수 있는 USB동글이 있음.

    - 전용 앱스토어에서 관련 유틸리티를 다운로드 받아 설치 후 마이오가 팔 근육을 인식하고 있는 상태를 알 수 있음.

    - 중지와 엄지를 두번 부딪히면 클릭, 주먹을 쥐고 오른쪽으로 손목을 돌리면 화면을 확대할 수 있음.

    ·립 모션(Leap Motion) :

    - 두 손과 열 손가락의 여러 움직임을 감지하여 그 움직임을 통해 컴퓨터를 제어할 수 있게 도와주는 장치

    - 손가락 두 개 정도 굵기로, 마우스 없이 위치를 전달하는 장치

    - 위에는 두 개의 적외선 센서, 측면에는 PC와 연결을 위한 USB포트가 있는 단순한 구조

    - 다른 동작 인식 장치보다 인식 상태가 매우 정교하여 한 손 뿐만 아니라 두 손도 동시에 인식이 가능함.

    - 오픈 API 정책을 도입하고 자체 앱스토어를 운영해서 다양한 소프트웨어를 개발 및 배포 가능함.


    출력장치

     정보 처리 결과를 인간이 인식 가능한 형태의 데이터로 내보내는 장치
    → 2진수 형태의 데이터를 문자, 숫자, 도형, 음성, 영상 등의 형태로 변환

     

     출력장치의 종류 
    ·모니터 : 정지영상 또는 동영상의 영상 신호를 그림 형식으로 표시하는 출력 장치(디스플레이 장치)

    ·스피커 : 전기 신호를 소리로 바꿔 주는 전자기계의 변환기

    ·초 지향성 스피커 : 특정 방향으로만 소리를 전달할 수 있는 특수한 형태의 스피커

    ·프린터 : 연결된 컴퓨터에 저장된 데이터의 복사본(종이에 인쇄되는 텍스트 혹은 그래픽)를 만드는 컴퓨터 출력 장치

    ·3D 프린터 : 실제 3차원 모형을 전달해주는 프린터, 자유창작공간인 메이커 스페이스에서 제작 가능함.

     

     특수 출력 장치 [중요]
    ·HUD(Head-Up Display) :

    - 자동차, 항공기 등의 앞 유리창에 정보를 표시해주는 증강현실 장치

    - 기계를 볼 때 고개를 숙여서 내려다 볼 필요 없이 사용자가 전방을 주시할 수 있도록 시야의 전면에 정보를 제공함.

    현실에 대한 정보가 가상의 정보와 같이 들어옴. → 가상정보 + 현실정보

    - 증강현실(AR, Augmented Reality)을 동작하기 위한 장치

    ·HMD(Head-Mounted Display) :

    - 안경 또는 헬멧과 같은 장치로, 사용자의 머리에 장착하여 눈 앞에 직접 영상을 제시할 수 있는 디스플레이 장치

    현실세계에 대한 정보 없이 가상 세계 정보만을 표현해주기 위핸 장치 → 가상정보

    가상현실(VR, Virtual Reality)을 동작하기 위한 장치


    기억(저장)장치

     명령과 데이터를 기억(저장)하는 하드웨어
     역할에 따라 주기억장치보조기억장치로 구분

       문헌에 따라 주기억장치를 기억장치, 보조기억장치를 저장장치라고 하기도 함.

     

    주기억장치(기억장치)와 보조기억장치(저장장치)의 비교 [중요]

    항목 기억장치 (주기억장치) 저장장치 (보조기억장치)
    접근속도 빠름 느림
    제조단가 높음 낮음
    용량 작음
    전원 차단시 ROM : 기억내용 보존 기억내용 보존
    RAM : 모든 내용 초기화

     보조기억장치가 중요하게 사용되는 이유 : 제조단가더 저렴하기 때문에

    - 주기억장치는 대략적으로 1GB를 담기 위해 1~5만원 비용을 지불해야 함.

    - 보조기억장치 GB당 500원만 지불하면 되니까 상대적으로 저렴함.

    - 자주 쓰지 않는 것은 보조기억장치에 두고, 빨리 처리해야 될 것만 주기억장치에 저장하는 방식으로 기억장치를 계층화해 둠.

     

    * 기억장치 속도와 가격비교 [참고]

    - 속도 : 레지스터 > 주기억장치(메인메모리) > 보조기억장치(HDD)
    - 가격 : 보조기억장치(HDD) > 주기억장치 > 레지스터
    - 레지스터가 매우 비싸서 주기억장치로 만들 수는 없음.

     

     기억(저장)장치의 종류

    - 주기억장치 : RAM, ROM

    - 보조기억장치 : 플로피디스크, 자기디스크, 광학디스크, 플래시 드라이브

     

    주기억장치

    ·ROM(Read-Only Memory) : 

    - 읽기 전용 메모리, 한번 저장하면 수정 및 변경 불가능

    - BIOS와 같은 가장 기본적인 정보 데이터만 저장해 놓음.

    - 컴퓨터 시스템의 기본 입력/출력 및 부트스트랩 프로세스와 같은 중요한 시스템 작업을 위해 사용됨.

    - 컴퓨터 전원이 소실되어도 안에 있는 데이터가 보존됨.

    ·RAM(Random Access Memory) : 

    - 현재 실행중인 프로그램 및 데이터를 일시적으로 저장하는 데 사용되는 메모리

    - 컴퓨터에서 주로 사용하는 메모리로, 일반적으로 컴퓨터의 작동 속도와 성능에 큰 영향을 줌.

    - 컴퓨터 전원이 소실되면 안에 있는 모든 데이터도 같이 소실되는 단점이 있음.

     

    * BIOS(Basic Input Output System) [참고]
    - 컴퓨터에서 전원을 켜면 맨 처음 컴퓨터의 제어를 맡아, 가장 기본적인 기능을 처리해 주는 프로그램

    - 롬 바이오스라고도 하며, 소프트웨어의 계층 중 가장 낮은 계층에 해당함.

     

     보조기억장치 

    ·플로피디스크(Floppy Disk) :

    - 자기 회전 디스크(회전할 수 있는 원판)를 사용하여 정보를 저장함.
    ·자기디스크(Magnetic Disk) :

    - 자기 회전 디스크(회전할 수 있는 원판)를 사용하여 정보를 저장함.

    - 플로피디스크와 하드디스크 두 가지 형태가 있음.

    ·광학디스크(Optical Disk) :

    - 빛을 이용하여 데이터를 읽고 쓰는 디스크

    - ex. CD, DVD, 블루레이
    ·플래시 드라이브(Flash Memory) :

    - 전기적인 상태가 변화하는 것으로 정보를 기록하고 저장함.

    → 플로피디스크, 자기디스크, 광학디스크는 전력이 차단되어도 데이터가 소실되지 않음.

     

     특수 기억(저장) 장치

    - RAM을 이용한 저장장치
    - 빠른 속도, 외부 충격에 강함, 적은 전력소모가 강점
    - 최근 하드디스크를 대체할 저장장치로 각광받음.
    ·SSD(Solid State Drive)

    - 플래시 메모리 기술을 사용하여 정보를 저장하고 읽는 기능을 제공함.

    - 하드디스크와 다르게 회전하는 부품 없이 전자적으로 정보를 처리함.

    - 소형화가 가능하고, 내구성이 좋고, 전력을 적게 소비하여 이동성이 요구되는 장치에 많이 사용함.

    - 컴퓨터의 전체적인 성능 향상에 기여함.


    제어와 연산 장치

    명령어와 데이터를 읽고 데이터를 연산 또는 처리하는 장치

     현대의 컴퓨터는 제어장치와 연산장치가 구분되지 않음.

    CPU 내부에 제어와 연산장치를 모두 기능하도록 해둠.

    CPU의 작동원리 (출처: 강의록)

    • CPU(Central Processing Unit) :

    - ex. RYZEN, 인텔, M2칩(100~600억 사이 트랜지스터 내장)

    - CPU는 대부분 세 가지 유닛을 갖추고 있음.

    ·레지스터(Register)

    - CPU 내부에서 초고속으로 데이터를 저장하거나 읽고 쓰는 저장 장치

    - CPU에서 처리해야 하는 데이터나 연산에 필요한 값들을 임시로 저장하는 역할을 함.

    - 가격이 메모리보다 훨씬 비싸서 정말 소형으로만 씀.

    - 주기억장치보다 고속으로 동작함하며, CPU 속도 향상을 위해 사용함.

    ·제어유닛(CU, control unit)

    - CPU의 동작을 제어하는 역할을 함.

    - CPU에서 발생하는 예외 상황을 처리하거나, 명령어의 실행 순서를 제어함.

    ·연산논리유닛 (ALU, arithmetic and logical unit) :

    - 입력 받은 데이터로 수학적 연산 및 논리 연산을 실행한 후 결과를 출력함.

     

    • CPU의 작동원리

    - 레지스터에서 명령을 읽은 후 가져와서 제어유닛(CU)에서 해당 명령어를 해석함.

    제어유닛(CU)는 해석된 명령어를 레지스터에 있는 데이터와 함께 연산논리유닛(ALU)에 전달함.

    연산논리유닛(ALU)가 연산을 수행하여 출력함.

    제어유닛(CU)이 출력된 값을 레지스터에 저장함.

    제어유닛(CU)가 다음 실행할 명령어를 결정하고, 해당 명령어를 가져옴.


    3. 소프트웨어의 이해

    소프트웨어

    고유한 기능을 수행하는 하드웨어가 언제 어떻게 동작하여 문제를 해결할 수 있는지 절차를 지시하는 명령어 집합
    · 응용 소프트웨어 : 사용자의 업무나 목적에 맞게 문제 해결을 위한 처리 절차를 표현한 명령어 집합

    ex. 메일, 메신저, 스프레드시트, 워드프로세서

    · 시스템 소프트웨어 : 하드웨어를 제어·관리하여 응용 소프트웨어를 실행할 수 있는 환경을 제공

    ex. 윈도우즈, 맥OS, 리눅스 - 개발자나 인프라 담당하는 사람들이 사용함.


    시스템 소프트웨어

     다양한 장치들을 서로 유기적으로 동작시켜 특정 작업을 수행할 수 있는 환경을 조성하는 프로그램

      시스템 소프트웨어의 종류 : 운영체제(커널), 컴파일러, 유틸리티

    · 운영체제(커널)

    - 사용자가 컴퓨터를 효율적으로 운영 관리 사용할 수 있도록 하드웨어를 제어하는 소프트웨어

    - 커널(kernel) : 운영체제의 핵심,  메모리에 상주하는 운영체제의 부분

    - ex. Ms Windows 11, Apple macOS 12

    · 컴파일러 :

    - 소스코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 소프트웨어
    · 유틸리티 : 

    - 부가적인 기능을 제공하여 사용자가 컴퓨터를 효율적이고 편리하게 관리할 수 있도록 지원해주는 소프트웨어
    - ex. 메모장, 계산기, 하드디스크 저장소 검사기(실제 하드웨어를 제어하지 않지만 베드섹터를 검사 가능)

    - 엄밀히 따지면 유틸리티와 응용 소프트웨어의 구분이 명확하지 않음.


    운영체제

    운영체제의 개념 : 응용 소프트웨어가 효과적으로 작동할 수 있는 환경을 조성

     

    ex. 작업A와 작업B를 동시에 처리하고 싶은 상황

     작업A = 음악 스트리밍

    · 필요한 명령어 : 사용자 작업A 처리 명령어 + 시스템 관리 명령어 + 장치 제어 명령어

    - 사용자 작업A 처리 명령어 : 음악 재생 위해 데이터에 따라 어떤 음을 만들지 문제를 처리하는 명령어

    - 시스템 관리 명령어 : 인터넷을 통해 음악 데이터가 들어와서 저장해야하지만 메모리 공간이 부족할 경우, 음악이 아닌 또 다른 프로그램이 사용하는 데이터를 보조기억장치로 보내야 하는 시스템 관리를 위한 명령어

    - 장치 제어 명령어 : 음악을 만들어 내라고 실제 장치인 스피커에 내리는 명령어

    → 하나의 소프트웨어가 기능하기 위해서는 3개 명령어가 함께 동작해야함.

     작업B = 문서 작업

    · 필요한 명령어 : 사용자 작업B 처리 명령어 + 시스템 관리 명령어 + 장치 제어 명령어

     

     작업A와 작업B를 수행할 때 각 소프트웨어의 시스템 관리에 해당되는 명령과 장치를 제어하기 위한 명령이 같음.

     각각의 소프트웨어마다 이 공통된 명령어가 있으면 용량 증가, 설치 시간 소모 등 문제점이 발생함.

    '시스템 관리 + 장치 제어'만 수행하는 시스템 소프트웨어(운영체제)를 별도로 제작함. 

          각각의 작업에 대해서는 필요할 때마다 설치해서 사용할 수 있도록 함.

     

    운영체제의 역할 :

    - 컴퓨터의 자원(하드웨어)을 효율적으로 관리하고 응용 프로그램에 자원을 할당

    - 사용자 인터페이스(UI), 프로세스 관리, 네트워크 관리, 기억·저장장치 관리, 입출력장치 관리

     

    사용자 인터페이스(UI, User Interface)

    - 컴퓨터와 사용자를 매개하여 상호작용하는 방법을 제공

    - 방식에 따라 CLI와 GUI로 분류함. [중요]

     

    ·CLI(Command Line Interface) : 

    - 텍스트 기반으로 작동하며, 사용자가 명령어를 입력하여 컴퓨터에게 작업을 수행하도록 지시함.

    - 파일 복사, 디렉토리 이동, 시스템 설정 변경 등의 작업을 수행함.

    - ex. Windows 운영체제의 Command Prompt, Unix/Linux 운영체제의 Terminal 등

    - CLI 기반 운영체제 : Unix, Linux 등

     

    ·GUI(Graphic User Interface) : 

    - 주로 그래픽 기반으로 작동하며, 사용자가 버튼, 창, 메뉴 등을 클릭하여 작업을 수행하도록 지시함.

    - 사용자가 마우스, 키보드 등을 사용하여 컴퓨터와 상호 작용함.

    - ex.  Windows 운영체제에서 제공하는 탐색기, 그래픽 편집기, 웹 브라우저 등

    - GUI 기반의 운영체제 : Windows, MacOS, Linux, BeOs 등

     

    * Linux는 CLI와 GUI를 모두 지원하는가? [참고, 수업X]

    - Linux는 CLI와 GUI 모두를 지원하는 유연한 운영체제이므로 필요에 따라 적절한 인터페이스를 선택하여 사용가능함.

    - 기본적으로 Linux는 CLI 기반의 운영체제로 시작되었고, 이후 X Window System과 같은 그래픽 서버 및 다양한 그래픽 데스크톱 환경을 지원하여 GUI 기반의 인터페이스 제공함.

    - 대부분의 Linux 배포판은 기본적으로 그래픽 데스크톱 환경을 제공하며, 이를 통해 마우스 및 키보드를 사용하여 GUI 기반의 애플리케이션을 실행할 수 있음.

    - Linux에서는 터미널 애플리케이션을 사용하여 CLI 기반의 작업을 수행할 수 있음.

     

    * BeOs [참고, 수업X]

    - 미국 회사 Be Incorporated에서 BeBox 컴퓨터를 위해 개발한 멀티미디어에 특화된 운영체제

    - 윈도 OS보다 훨씬 가벼운 운영체제로서, 멀티태스킹, 멀티스레드(multi-thread), 64비트 파일 시스템, 및 SMP 등 선진적 기능으로 멀티미디어 콘텐츠 동작 특성이 우수함.

    - PowerPC 플랫폼이나 인텔 x86 프로세서에서 실행됨.

    - 생산이 중단되어 현재 쓰이지 않고, 영상 기술 발전의 중요한 역사적 단계 중 하나임.

     

    • 프로세스 관리

    - 프로세스를 생성, 제거, 일시 중지, 재개 등의 작업을 관리

    - 요청에 따라 프로세스를 생성하여 프로그램을 실행하고, 한정된 시스템 자원(CPU 시간, 메모리, 입출력 등)을 효율적으로 사용하도록 각 프로세스에 할당하고 조율함. 

    - 프로세스 간의 자원 공유, 동기화, 통신 등을 관리함.

     

    * 프로그램과 프로세스의 차이점 [참고]

    ·프로그램(Program) :

    - 실행 가능한 코드와 데이터의 집합

    - 보조기억장치에 저장된 형태로, 실행되려면 입력장치 통해 주기억장치로 올라와야 됨 ( = RAM에 상주해야 함.)

    - ex. 사용자가 작성한 소스코드를 컴파일하여 생성된 실행 파일, 인터프리터 언어를 사용하여 실행하는 스크립트 등

    ·프로세스(Process) :

    - 운영체제에 의해 메모리에 로드되어 실행 중인 상태의 프로그램

    프로그램은 디스크에 저장되어 있을 뿐이지만, 프로세스는 메모리에 로드되어 실행 중인 프로그램을 의미함.

     

    • 네트워크 관리

    - 응용 프로그램이 통신할 수 있는 환경 제공 및 통신 장치(하드웨어) 관리

    - 컴퓨터는 네트워크를 통한 상호 데이터 교환이 필요하므로, 운영체제는 네트워크 인터페이스를 제공하여 컴퓨터와 다른 장치나 네트워크 간의 통신을 가능하게 함.

    네트워크 인터페이스(Network Interface) : 컴퓨터와 네트워크 간의 물리적 연결을 의미

     

    • 기억·저장장치 관리

    - 운영체제는 파일 시스템을 조직화하여 파일들이 디스크에 효율적으로 저장되도록 관리하며, 파일의 접근 권한과 보안을 관리함.

    - 보조기억장치에 저장된 컴퓨터의 프로그램은 실행되기 위해서 주기억장치에 적재되는데, 이때 주기억장치의 크기는 보조기억장치의 크기보다 매우 작기 때문에 효율적 관리가 요구됨.

     

    • 입출력장치 관리

    - 다양한 입출력장치(키보드, 마우스, 모니터, 프린터 등)를 관리하여 컴퓨터와 사용자 간의 상호작용과 데이터의 입력 및 출력을 처리함.

    - 방법으로는 장치 드라이버, 인터럽트 처리, 입출력 장치 스케줄링, 버퍼링 등이 있음.

    728x90