라이킷 8 댓글 공유 작가의 글을 SNS에 공유해보세요

You can make anything
by writing

C.S.Lewis

8. 업무적 의사소통에서 본 컴퓨터의 작동원리

사회초년생을 위한 사회인 입문벙법

by 개발자 Dec 16. 2024
브런치 글 이미지 1

(1) 컴퓨터의 작동원리

컴퓨터는 매우 빠른 속도로 발전하고 있ㅉ습니다. 일반적으로 컴퓨터의 기본구성은 아래와 같습니다.

컴퓨터의 구성컴퓨터의 구성

컴퓨터는 하드웨어 부분만으로는 "단순한 상자"에 불과하며, 소프트웨어가 있어야만 작동할 수 있습니다. 하드웨어 부분에는 입력장치, 출력장치, 주기억장치, 제어장치, 연산장치등이 있습니다. 소프트웨어는 크게 기본소프트웨어와 응용소프트웨어로 구분됩니다. 기본 소프트웨어 중 프로그램 실행, 입출력제어, 데이터관리등을 수행하는 것이 조작계입니다. 최근 조작계는 화면에 여러 개의 윈도우를 뛰워 여러가지 응용 소프트웨어의 동작을 볼 수 있습니다.

응용 소프트웨어는 문서 작성 소프트웨어, 표계산소프트웨어, 통신소프트웨어등이 있습니다.


(2) 하드웨어 기초지식

하드웨어라고 하면 어렵게 느낄 수 있지만, 소프트웨어도 하드웨어가 있어야만 작동할 수 있습니다. 컴퓨터의 하드웨어는 반도체라는 측면에서 보면 처리속도, 소형화, 신뢰성, 경제성등에서 비약적인 발전을 이루었습니다. 하지만, 하드웨어가 입력부, 출력부, 기억부, 제어부, 연산부의 5가지 기본 부분으로 구성되어 있다는 구도는 노이만이 컴퓨터를 개발한 이후 지금까지도 같은 생각이라고 해도 과언이 아닙니다. 이번에는 컴퓨터를 이해하는데 필요한 하드웨어 대해 알아봅니다.


① 컴퓨터의 구조

- 컴퓨터의 기본구성

컴퓨터는 작지만 제대로 된 컴퓨터입니다. 따라서 아래와 같은 5가지 기능이 있습니다.


㉠ 입력기능: 외부에서 컴퓨터로 정보를 입력하는 기능

㉡ 출력기능: 컴퓨터에서 외부로 사람이 이해할 수 있도록 정보를 내보내는 기능

㉢ 연산기능: 산술연산을 비롯하여 정보를 필요에 따라 가공하는 기능

㉣ 기억기능: 입력한 정보나 연산기능에 의해 가공된 정보를 기억하는 기능

㉤ 제어기능: 프로그램을 분석하여 ㉠부터 ㉣의 기능을 제어하는 기능


그리고 컴퓨터는 위 기능을 실현하기 위해 입력장치, 출력장치, 연산장치, 저장장치, 제어장치 등의 하드웨어로 구성되어 있습니다. 기억장치는 주기억장치와 보조기억장치로 나뉩니다. 연산장치와 제어장치를 합쳐서 마이크로프로세서(중앙처리장치)라고 부릅니다.

컴퓨터의 기본구성컴퓨터의 기본구성


- 컴퓨터의 계산원리

실제 컴퓨터의 작동원리를 살펴봅시다. 컴퓨터의 주요 부분은 집적회로(LSI)로 이루어져 있습니다. 그 중에서도 중심이 되는 것은 CPU라고 불리는 마이크로프로세서(중앙처리장치)입니다. 그리고 이를 중심으로 주기억장치를 담당하는 읽기/쓰기 가능한 기억장치인 RAM(Random Access Memory)과 읽기전용 기억장치인 ROM(Read Only Memory)으로 구성되어 있습니다. 또한, 주변장치와 데이터를 주고받기 위한 입출력 포트가 있습니다.

컴퓨터에 '3+6'계산을 시키는 경우 제어(지시)와 데이터의 흐름컴퓨터에 '3+6'계산을 시키는 경우 제어(지시)와 데이터의 흐름

3+6 계산을 컴퓨터로 할 경우 아래와 같은 구조로 동작합니다.

브런치 글 이미지 5


② 컴퓨터 본체

컴퓨터 본체는 마이크로프로세서(중앙처리장치), 주기억장치, 입출력포트 및 버스로 구성되어 있습니다.


- 마이크로프로세서: 중앙처리장치(CPU, Central Processing Unit)

마이크로프로세서(중앙처리장치)는 컴퓨터의 핵심적인 부분으로 연산장치와 제어장치로 구성됭 ㅓ있습니다.


연산장치(ALU, Arithmetic and Logic Unit): 연산장치는 각종 연산을 담당합니다. 수학에서 사용하는 사칙연산이나 논리연산을 고속으로 수행합니다.

제어장치(Control Unit): 제어장치는 컴퓨터전체를 제어하는 부분입니다. 주기억장치 내에 있는 명령어를 순차적으로 꺼내어 해독하고 컴퓨터내의 각종 장치를 제어하고 실행합니다.


- 주기억장치(Main Storage)

컴퓨터가 데이터를 고속으로 처리하기 위해서는 마이크로프로세서(중앙처리장치)가 필요한 데이터나 프로그램을 빠르게 불러올 수 있어야 합니다. 주기억장치는 데이터나 프로그램을 저장하고 마이크로프로세서(중앙처리장치)와 고속으로 데이터를 교환하는 장치입니다. 주기억장치는 1바이트를 단위로 데이터를 저장하고 불러오는 역할을 합니다. 그리고 이런 관리를 원활하게 하기 위해 바이트 단위로 번호(주소)를 부여하여 데이터를 저아확하게 처리하고 있습니다.


- 입출력포트(I/O, Input Output Controllers Unit)

입출력 포트는 주변기기와 정보를 교환하기 위한 출입구입니다. 컴퓨터에서 주변장치와의 데이터 교환은 바이트단위로 이루어집니다. 이는 주기억장치의 경우와 매우 유사합니다. 또한 입출력 포트에는 여러 개의 데이터 신호를 동시에 병렬로 전송하는 병렬 입출력포트와 데이터를 1ㅂ바티씩 순차적으로 전송하는 직렬 입출력포트가 있습니다. 병렬 입출력포트가 더 빠른 통신이 가능하지만, 직렬 입출력 포트가 배선이 적고 간단한 회로로 구성할 수 있습니다. 최근 PC에서는 USB포트나 Serial ATA등 시리얼입출력포트를 통한 데이터교환이 주류를 이루고 있습니다.


- 버스(Bus)

버스는 컴퓨터 본체의 장치들 간에 정보를 교환하기 위한 통로입니다. 흐르는 정보의 종류에 따라 메모리의 데이터를 주고받는 데이터버스, 메모리 주소를 보내는 주소버스, 각 장치의 제어신호를 주고받는 제어버스등의 종류가 있습니다.


③ 보조기억장치

보조기억장치는 주기억장치의 보조적인 역할을 하며, 당장 사용하지 않는 프로그램이나 데이터를 저장하는 장치입니다. 주기억장치는 빠른 속도로 정보를 두고받을 수 있지만, 그만큼 고가의 장치입니다. 따라서 당장 사용하지 않는 정보를 주기억장치에 저장하는 것은 비경제적입니다. 그래서 고속성을 다소 희생하여 다량의 정보를 저렴하게 저장하기 위한 장치가 보조기억장치입니다.

범용기기의 메모리 계층화범용기기의 메모리 계층화

- 보조기억장치의 액세스유형

보조기억장치는 크게 2가지 접근유형으로 나뉩니다. 랜덤액세스타입(Random Access Type)과 시퀀셜 액세스타입(Sequential Access Type)입니다. 랜덤 액세스 타입은 임의의 순서로 데이터를 읽고 쓸 수 있기 때문에 원하는 데이터를 바로 꺼낼 수 있는 특성을 가지고 있습니다. 대표적인 장치로 하드디스크, SSD등을 들 수 있습니다. 순차적 접근 방식은 데이터를 순서대로 읽고 쓰는 방식입니다. 따라서 쓴 순서대로만 읽기와 쓰기가 가능합니다. 하지만 구조가 단순하기 때문에보다 저렴하게 정보를 저장할 수 있습니다. 대표적인 장치로 자기테이프를 들 수 있습니다.



(3) 소프트웨어란?

컴퓨터로 작업을 하려면 반드시 소프트웨어가 필요합니다. 소프트웨어가 없다면 컴퓨터는 단순한 상자에 불과할 것입니다. 따라서 컴퓨터를 능숙하고 효율적으로 사용하기 위해서는 소프트웨어가 어떤 것인지 이해하는 것이 중요합니다. 이 항목에서 소프트웨어의 기본적인 지식과 기술을 이해해 봅시다.


① 소프트웨어 작동 원리

여기서는 소프트웨어의 의의와 발전과정을 살펴봅시다.


- 프로그램과 기계어

컴퓨터를 움직이기 위해서는 앞에서 살펴본 하드웨어만으로는 부족하고 소프트웨어가 필요합니다. 소프트웨어 중에서도 중심적인 역항을 하는 것이 프로그램입니다. 프로그램은 컴퓨터가 수행할 동작을 미리 기술한 것입니다. 프로그램은 최종적으로 컴퓨터를 작동시키는데 필요한 기계어라는 2진수 숫자코드로 변환되는 것이 일반적입니다. 이 기계어는 CPU에 내장된 명령어에 대응하기 때문에 인간이 직관적으로 이해하기 힘든 구조로 되어 있습니다. 이때문에 여러가지 방법이 고안되어 왔습니다.


- 부팅 프로그램과 프로그래밍 언어

컴퓨터의 전원을 켜면 메모리(소프트웨어)와 CPU가 정상적으로 작동하는지 확인하고 사용자가 사용할 수 있도록 환경을 준비하는 작업이 필요합니다. 이 작업을 자동으로 수행하는 것이 바로 부팅 프로그램입니다. 시작 프로그램은 주기억장치의 특정 위치에 배치되어 전원을 켠 후, 반드시 실행됩니다. 부팅 프로그램에서 다음 프로그램으로 제어권을 넘기도록 한 것입니다. 전원을 켤 때 메모리를 점검하거나 하드웨어에 이상이 있을 때 소리를 내는 것도 이 부트 프로그램의 역할입니다.


- 운영체제와 응용소프트웨어

컴퓨터가 실무에서 사용되기 시작하면서 주변기기가 보급되기 시작했습니다. 그리고 어떤 프로그램에서든 주변기기에 대한 권리와 절치를 쉽게하기 위한 목적으로 탄생한 것이 운영체제(OS, Operating System)입니다. 과거 주류였던 DOS(Disk Operating System)는 이름처럼 플렉서블 디스크나 하드디스크를 관리하는 것이었습니다. 반면에 현재 주류인 Windwos나 macOS는 메모리, CPU, 화면그리기, 네트워크등 컴퓨터 전체에 대한 자원을 효율적으로 관리하게 되었습니다. 이 운영체제의 관리하에 움직이는 것이 바로 애플리케이션 소프트웨어입니다. 애플리케이션 소프트웨어는 컴퓨터 자체를 관리하는 것이 아니라, 워드프로세서, 스프레드시트처럼 사용자의 목적, 용도, 업무를 위해 사용됩니다. 업무용을 비롯해 영상, 통신, 게임, 특정업무용(ERP, 회계등) 다양한 종류가 있습니다.


- 기본소프트웨어와 응용소프트웨어

소프트웨어는 아래 그림처럼 기본소프트웨어와 응용소프트웨어로 구성됩니다. 기본소프트웨어에는 ㉠컴퓨터 자체를 제어하는 기능, 즉 프로그램실행, 입출력제어, 데이터관리등을 수행하는 운영체제, 그리고 ㉡프로그램을 번역하는데 필요한 언어 프로세서등이 있습니다. 언어 프로세서는 전세계적으로 방대한 종류가 존재하지만 대표적인 것으로는 어셈블리, C, Java, Python, JavaScript등이 있습니다. 유틸리티 프로그램은 소프트웨어(프로그램)을 생성하기 위해 픨요한 것으로 라이브러리, 정렬-병합, 디버거, 링커등으로 구성됩니다. 응용 소프트웨어는 ㉠급여관리, 인사관리등 사용자가 직접 개발한 것을 사용자 프로그램이라고 합니다. 또한 ㉡ 정보검색용. 통계용등 업체 자체적으로 개발한 것을 범용소프트웨어라고 합니다. 또한 인터넷등을 연결하기 위해서는 통신 소프트웨어가 필요합니다.

소프트웨어의 분류소프트웨어의 분류

② 운영체제는 무엇인가?

- 운영체제의 목적

운영체제의 목적은 사용자가 컴퓨터를 쉽게 사용할 수 있도록 하는데 있습니다. 예를 들어, 디스플레이나 프린터를 다른 제품으로 교체했을 때 간단한 설정만으로 이전과 동일한 애플리케이션을 사용할 수 있습니다. 또한, 프로그램의 실행관리등도 운영체제가 담당하고 있습니다. 과거 워드프로세서는 인쇄하는 동안 사용자가 아무것도 할 수 없는 상태가 되기도 했지만, 현재의 운영체제는 인쇄하는 동안 사용자가에게 대기 시간을 주지 않고 컴퓨터를 사용할 수 있습니다. 운영체제가 다양한 자원을 관리함으로써 컴퓨터를 효율적으로 활용할 수 있는 것입니다.


- 운영체제 아키텍처

아래 그림은 운영체제의 위치를 보여줍니다. 이 그림처럼 운영체제는 응용소프트웨어와 하드웨어의 중간에 위치하며 하드웨어, 더나아가 컴퓨터 전체를 효율적이고 효과적으로 동작하게 하는 지휘실이라고 할 수 있습니다.

브런치 글 이미지 8

운영체제를 구성하는 소프트웨어(프로그램)은 매우 많지만, 아래 그림처럼 크게 관리프로그램과 처리프로그램으로 나뉩니다. 운영체제의 기본적인 작동원리는 아래와 같습니다.


㉠입력제어

㉡스케줄링

㉢데이터관리

㉣작업관리

㉤소프트웨어, 하드웨어 자원할당

㉥기타


컴퓨터 운영체제는 각 프로그램을 효율적으로 관리하며 컴퓨터의 핵심적인 기능을 담당하고 있습니다. 여기서 좁은의미의 운영체제는 관리프로그램을 의미하는 경우도 있습니다. 이른바 운영체제의 중심이 되는 프로그램이 바로 이 관리 프로그램입니다. 사용자측의 운영체제에 대한 처리요청 접수, 각 처리 프로그램의 실행관리, 처리과정에서 필요한 데이터의 관리, 입출력 장치 및 저장장치에 대한 쓰기 및 읽기 제어등을 수행합니다. 한편, 언어 프로세서, 유틸리티 프로그램등으로 구성된 프로그램은 이 관리 프로그램의 감시하에 실행됩니다. 

운영체제의 기본구성운영체제의 기본구성

③ 소프트웨어 라이프사이클

집도 라이프사이클이 있듯이 소프트웨어도 라이프사이클이 있습니다. 즉, 집에 설계, 시공, 입주라는 과정을 거치는 주기가 있듯이 소프트웨어의 라이프사이클은 아래와 같습니다.

브런치 글 이미지 10

- 요구사항 분석

집을 신축할 때 건축설계사무소에 평면과 구조의 기본윤곽을 제시합니다. 이를 바탕으로 건축사무소는 상세하게 분석하여 요구주택모델을 작성합니다. 또한, 건설사에 지시하기 위한 요구사양서도 작성합니다.

소프트웨어 개발도 마찬가지로 요구사항 분석에서는 사용자의 요구사항을 분석하여 객관적인 문서 형태로 만듭니다. 요구사항 분석은 요구사항과 사양으로 나뉩니다. 요구사항은 사용자가 특정 처리를 결정하는 것입니다. 사양은 그 요구사항을 받아 이를 구체화하여 소프트웨어를 설계, 제작하는 사람에게 그것을 할 수 있도록 명확한 지시를 내리는 것입니다.

브런치 글 이미지 11

㉠ 니즈분석: 사용자의 요구사항을 분석하여 사용자 요구사항으로 정리하는 작업을 지시합니다.

㉡ 요구모델: 사용자 요구사항을 기초로 하여 요구사항에 맞는 소프트웨어 제작의 실현가능성을 고려하여 요구모델을 작성합니다. 요구모델은 위 각단계, 즉, 사용자 요구사항의 추상화에 기본이 되는 추상화 개념의 추출을 수행합니다. 다음으로 추출된 사용장 요구사항의 추상적 개념을 구체화합니다.

㉢ 요구사항의 명세화: 다음으로 작성된 요구모델을 일정한 형식에 따라 문서활하여 요구사양서를 작성합니다.


- 설계 

집의 경우 설계도를 건축회사에 전달하여 신축할 수 있는 형태로 만드는 것을 설계라고 합니다.

소프트웨어의 설계 역시 사용자의 요구사항 분석결과, 어떤 목적으로 소프트웨어를 제작할 것인지에 대한 과정을 구체적으로 구체화하는 단계입니다. 이를 바탕으로 제작된 것을 설계서라고 하는데 크게 2가지로 분류됩니다. 아래 그림과 같이 개략적으로 기술한 것을 개요설계서, 상세하게 기술한 것을 상세설계서라고 합니다.

브런치 글 이미지 12

- 프로그래밍

집의 경우, 건축설계도면을 바탕으로 목수가 집을 신축하기 위한 건축, 시공작업에 들어갑니다. 이 경우, 투바이법, SXL법등 어떤 공법으로 시공할 것인지, 또는 어떤 도구를 사용할것인지도 포함해서 검토하고 구체적으로 건축 및 시공작업에 착수합니다. 소프트웨어도 마찬가지로 설계한 내용을 프로그래밍 언어로 작업하는 단계에 들어갑니다. 프로그래밍 언어를 선택시 목적, 사용경험등을 고려한 알맞은 언어를 선택합니다.


- 검사(Test)

개발한 소프트웨어가 앞서 언급한 사용자의 요구사양서를 충분히 만족하는지 확인합니다. 만약 이런 항목 및 조건을 충족하지 못하면 이를 추가해야 합니다. 또한, 프로그램이 정상적으로 동작하는지 이른바 검증작업을 수행하여 프로그램이 제대로 동작하는지 검사합니다. 이를 디버그(debug)작업이라고 합니다.

 

- 유지보수

출하후, 소프트웨어에 운영상 부적절한 부분이 발생하면 이를 제거 및 개선하여 항상 소프트웨어를 유효하고 유용한 상태로 유지 및 운영해야 합니다. 프로그램 보전을 효과적으로 수행하기 위해서는 프로그램 작성 단계에서 다음과 같은 것들을 작성 및 저장해 두어야 합니다.


㉠ 사용자 설명서: 프로그램의 목적, 사용법, 사용상의 주의사항등을 기록한 설명서

㉡ 레퍼런스 매뉴얼: 사용중인 언어의 문법서

㉢ 요구사양서

㉣ 개요 설계서

㉤ 상세 설계서

㉥ 소스파일 및 컴파일 목록

㉦ 소스모듈 및 로드 모듈


- 폐기

소프트웨어가 보전등 소규모개선으로는 사용자의 요구수준을 만족시킬 수 없게 되었을 경우, 해당 소프트웨어를 완전히 폐기하고 다시 새로운 소프트웨어를 개발하는 단계입니다.


 

(4) 유지보수

① 데이터 표현방법

- 데이터종류

컴퓨터를 이용하여 데이터를 처리하기 위해서는 컴퓨터가 이해할 수 있는 형태로 정보를 다시 표현해야 합니다. 컴퓨터 내부에서 표현되는 데이터의 종류는 아래 그림처럼 분류할 수 있습니다. 정보를 표현하기 위한 기초 체계를 부호(코드)라고 합니다. 이런 숫자나 문자에 대해서는 통일을 위해 각종 공적 기관에서 일정한 부호 체계화가 이루어지고 있습니다.


- 10진법과 2진법, 8진법과 16진법

기수(radix)가 n인수를 n진수라고 합니다. 컴퓨터에서는 n = 2, 8, 10, 16진수가 사용되고 있습니다. 컴퓨터에서 정보 표현의 최소 단위를 비트(bit)라고 하는데 현재는 일반적으로 8비트(=1바이트)의 조합으로 문자를 표현하고 있으며 n비트로 표현할 수 있는 문자의 종류는 2n개입니다.


㉠ 2진법(binary notation): 0과 1의 2숫자 조합으로 정보를 표현하는 방식

㉡ 8진법(octal notation): 0부터 7까지 8개의 숫자조합으로 정보를 표현하는 방식

㉢ 10진법(decimal notation): 0부터 9까지의 숫자조합으로 정보를 표현하는 방식

㉣ 16진법(hexadecimal notation): 0부터 F까지 16개의 숫자조합으로 정보를 표현하는 방식


② 데이터분류

컴퓨터의 기본 데이터는 2진수로 표현됩니다. 그리고 이 2진수로 숫자를 비롯해 문자등 모든 정보를 표현합니다. 데이터는 '비트길이'에 따른 분류와 '의미'에 따른 분류로 나뉩니다.


- 단순행수(비트길이)에 따른 분류

우선 데이터의 의미등과 무관하게 단순하게 아래와 같은 호칭이 있습니다.


㉠ 비트: 2진수 한줄

㉡ 바이트: 8비트 길이의 데이터를 1바이트라고 함

㉢ 워드: 2바이트 또는 4바이트 길이의 데이터를 1워드라고 함


- 데이터에 부여하는 의미에 따른 분류 

컴퓨터의 데이터를 크게 나누면 수치데이터와 비수치데이터로 나눌 수 있습니다. 수체데이터는 고정 소스점, 부동소수점으로 나뉩니다. 또한 정확도에 따른 구분이 있으며, 비수치 데이터에는 문자, 논리값, 포인터가 있습니다.


③ 복잡한 구조의 데이터

기본적인 데이터의 조합부터 복잡한 구조를 가진 데이터가 있습니다.


- 배열 : 같은 타입의 데이터를 일직선으로 배열한 것임

- 다차원 배열: 배열과 같은 의미로 데이터를 평면이나 입체적인 이미지로 배열 한 것임, 메모리 내에 있는 데이터는 실제로 평면이나 입체적으로 배열되어 있는 것이 아니라 적절한 처리를 통해 메모리 내에 연속적으로 할당됨

- 리스트: 하나 이상의 기본데이터와 하나의 포인터를 조합하여 이미지적으로 연결한 것임

- 복잡한 구조의 리스트: 리스트와 같지만 포인터가 2개 이상 있는 리스트


© 2024 ZeR0, Hand-crafted & made with Damon JW Kim.

Profile: https://gaebal.site

AI/LLM개발 및 강의/컨설팅 문의: https://naver.me/GalVgGKH


이전 07화 7. 사회학적 고찰 연습하기

브런치 로그인

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari