-
[컴퓨터구조] 123a 2022. 6. 30. 09:22반응형
1. 컴퓨터의 개념
컴퓨터는 계산을 수행하는 장치다. 컴퓨터가 사용하는 자료를 데이터라고 하는데, 컴퓨터는 데이터를 입력받아 처리(process)한 후 출력하거나 저장한다. 컴퓨터가 데이터를 처리하면 의미 있는 자료가 되는데, 이를 정보(information)라고 한다. 그러므로 정보 기술(information technology, IT)은 데이터를 가공하여 가치있는 정보로 만드는 모든 기술을 의미한다. 일반적으로 정보기술과 통신 기술을 연관관계가 있기 때문에 정보 기술과 통신 기술은 합쳐 '정보통신 기술'이라고 한다.
2. 컴퓨터의 동작 원리
컴퓨터는 하드웨어와 소프트웨어로 구성되며, 하드웨어는 다시 CPU, 메인메모리, 입력 장치, 출력 장치, 저장 장치 등 다섯 가지 요소로 구성된다.
컴퓨터에서 같은 데이터라도 어떻게 처리하느냐에 따라 문서, 음악, 사진, 동영상 등 다른 정보가 된다.
주방 모습은 마치 컴퓨터가 데이터를 처리하는 과정과 같다. 주방을 총괄하는 주방장은 CPU, 요리를 하는 작업대는 메인메모리, 재료를 보관하는 창고는 저장 장치에 비유할 수 있다.
주방에서 요리에 쓸 재료는 창고에 보관하지만 재료를 가져와 손질하고 요리하는 과정은 작업대에서 한다. 컴퓨터도 평소에는 저장 장치에 데이터를 보관해 두고 필요할 때마다 메인 메모리로 불러와 작업한다.
즉, 모든 작업은 메인메모리(Main memory)에서 한다. 메인 메모리는 CPU가 사용하는 유일한 작업 공간이다. 메인메모리에 있는 모든 데이터는 전원이 꺼지면 사라지기 때문에 데이터는 저장 장치에 보관한다.
3. 임베디드 시스템
특정 기계에 포함된 작은 컴퓨터를 임베디드 시스템(embeded system)이라고 한다. 반면에 일반 컴퓨터는 문서 작업, 사진 편집 등 다양한 작업이 가능하므로 범용 컴퓨터(general purpose computer)라고 한다.
2) 하드웨어
컴퓨터 하드웨어는 cpu, 메인메모리, 입력 장치, 출력 장치, 저장 장치로 구성된다.
1. CPU
CPU는 주어진 명령에 따라 데이터를 계산하고 주변 장치에 데이터 입출력 명령을 내리는 장치이다.
CPU는 데이터를 처리(processing)하기 때문에 프로세서(processor)라고도 한다.
컴퓨터 프로세서는 CPU 외에 GPU와 AP가 있다. AP는 GPU,CPU, 무선통신 시스템을 하나의 칩(chip)에 구현한 제품이다.
하나의 칩으로 구현했기 때문에 단일 칩 시스템(System On Chip, SOC)라고도 한다. AP는 스마트폰이나 임베디드 시스템에 사용한다.
2. 입력 장치
입력장치는 데이터를 받아들이는 장치로 키보드, 마우스, 스캐너 등 기본 입력 장치 외에도 다양한 센서를 이용한 입력 장치가 있다.
- 기본 입력 장치
기본 입력 장치로는 키보드와 마우스, 스캐너, 마이크, 조이스틱, 카메라 등이 있다. 초기 터치스크린은 한 손가락만 인식했다. 지금처럼 손가락 여러 개를 인식하는 터치스크린은 애플 아이폰에서 처음 사용했다.
3. 출력 장치
출력장치에는 모니터, 프린터, 스피커, 헤드폰이 있다.
모니터는 색을 내는 방식에 따라 PDP, LCD, OLED로 나뉜다. 화면 비율은 주로 4:3을 사용했으나 지금은 16:9가 일반적이다.
3)소프트웨어와 인터페이스
1. 소프트웨어의 필요성
인간이 어떤 행위를 할 때 신체만으로는 부족하다. 신체를 움직이는 여러 규칙과 절차가 필요하다. 예를 들어 누군가에게 정보를 전달하려면 언어를 배워야 하고, 일을 하거나 사회생활을 할 때도 여러 가지 규칙과 절차가 필요하다.
컴퓨터 또한 하드웨어를 움직이는 소프트웨어가 필요하다. 소프트웨어는 하드웨어를 사용하여 특정 목적을 달성하는 데이터 처리 방법을 모아 놓은 집합이다.
2. 소프트웨어의 종류
소프트웨어는 응용 소프트웨어와 시스템 소프트웨어로 나눈다.
- 응용 소프트웨어
특정한 작업을 할 때는 필요한 소프트웨어를 따로 사용해야 한다. 예를 들어 문서를 작성할 때는 한글같은 소프트웨어를 사용하고, 인터넷을 할 때는 익스플로러나 크롬을 사용한다. 발표자료를 만들 때는 파워포인트를 사용한다. 이렇게 특정한 작업을 할 때 사용하는 소프트웨어를 응용 소프트웨어(application software)라고 한다.
-시스템 소프트웨어
응용 소프트웨어 여러 개를 작업할 때는 키보드, 마우스, 모니터, 메모리 등 하드웨어가 필요하다. 모든 소프트웨어가 하드웨어를 차지하려고 싸운다면, 컴퓨터는 엉망이 될 것이다.
이러한 혼란을 막는 컴퓨터 전체를 관리하고 운영하는 소프트웨어가 있는데, 이를 운영체제(Operating System, OS)라고 한다. 집에서 사용하는 컴퓨터용 운영체제로 윈도우가 있으며, 애플이 만든 매킨토시 컴퓨터에는 맥OS가 설치된다. 스마트폰용 운영체제로 안드로이드와 iOS가 있다.
운영체제는 하드웨어를 작동하는 기본 규칙과 절차를 규정한 소프트웨어이며, 컴퓨터 내 모든 하드웨어는 운영체제가 관리한다. 응용 프로그램에 특정 하드웨어가 필요할 때는 운영체제에 허락을 받은 후에야 사용할 수 있다. 따라서 모든 응용 프로그램은 운영체제에 허락을 받은 후에만 하드웨어 접근할 수 있다.
운영체제가 하는 작업이 많기에 일부 기능을 다른 소프트웨어에 맡기기도 한다. 대표적인 경우가 바이러스를 막는 백신 프로그램이다. 이렇게 운영체제를 도와 시스템을 관리하는 소프트웨어를 유틸리티(utility)라고 한다. 하드웨어에 대한 막대한 권한을 가진 운영체제와 시스템을 관리하는 유틸리티를 합쳐 시스템 소프트웨어(system software)라고 한다.
3. 사용자 인터페이스(UI)
운영체제는 커널(kernel)과 인터페이스(interface)로 나뉜다. 커널을 운영체제 핵심 기능을 담아 놓은 소프트웨어다. 인터페이스는 사용자와 운영체제의 커널을 연결시켜 주는 역할을 담당한다. 사용자나 응용 프로그램이 커널에 명령을 내리거나 반대로 커널에서 작업 결과를 받는 일을 한다.
커널은 자동차로 치면 엔진에 해당하고, 인터페이스는 자동차의 시동 버튼, 액셀러레이터, 브레이크, 핸들에 해당한다. 자동차는 엔진과 바퀴로 움직이지만, 사용자는 시동 버튼을 눌러 시동을 걸고, 액셀러레이터를 밟아 차를 움직이고, 핸들로 방향을 조절하고 브레이크로 차를 세운다. 사람의 다양한 명령을 커널에 보내는 것을 인터페이스가 담당한다.
4) 프로그래밍과 알고리즘
1. 프로그래밍의 개념
컴퓨터가 일반 계산기와 다른 점은 프로그래밍(programming)을 할 수 있다는 것이다. 프로그래밍은 컴퓨터에 작업을 지시하는 것이다. 일반적으로 사람에게 작업을 지시할 때는 언어를 사용한다. 컴퓨터에게 프로그래밍을 할 때에는 프로그래밍 언어를 사용한다.
2. 프로그래밍과 알고리즘
알고리즘은 어떤 문제를 해결하는 동작을 하나로 모은 것이다. 컴퓨터에 작업을 내리는 과정을 정리해 보자.
(1) 알고리즘 작성 : 컴퓨터가 어떻게 작업할지 결정하는 알고리즘을 짠다.
(2) 프로그래밍 : 작성한 알고리즘을 토대로 컴퓨터에 프로그램을 작성한다.
(3) 실행 및 테스트 : 작성한 프로그램이 작동하는지 테스트한다.
(4) 디버깅 : 오류가 발견되면 프로그램을 수정한다.
5) 컴퓨터의 역사
컴퓨터 발전에서 주의 깊게 살펴볼 것은 주변기기다. 컴퓨터 발전은 주변기기 발전과 일치한다.
1. 컴퓨터 탄생 (1940년대)
컴퓨터가 탄생하기 전에는 미사일의 발사각과 방향 계산을 사람이 손으로 했다. 에니악은 펜실베니아대학의 모클리와 에커트 교수가 만들었다. 에니악은 규모가 30톤인 거대한 계산기로, 사람이 주판으로 7시간 걸렸던 미사일 탄도 계산을 단 3초 만에 끝냈다. 에니악은 진공관 1만 8,000개를 빼곡히 집어넣고 전선을 여러 잭에 꽂아 회로를 연결하여 현대의 프로그램을 만들었다.
키보드, 마우스, 모니터 등 주변기기가 없었기 때문에 계산된 결과는 진공관을 통해서만 확인할 수 있었다. 진공관이 켜지면 1, 꺼지면 0으로 판단했다. 이것이 컴퓨터가 2진법을 사용하는 이유다.
초기 컴퓨터는 키보드로 프로그래밍을 할 수 없어 선을 연결하여 논리회로를 구성했다. 이를 하드 와이어링(hard wiring)방식이라고 한다.
하드 와이어링은 전선으로 논리회로를 구성하여 원하는 결과만 얻는 방식이다. 하드 와이어링 방식에서 다른 계산이나 수식을 사용하려면 전선을 다시 연결해야 하는 불편함이 있었다.
2. 일괄처리시스템 - batch processing system (1950년대)
컴퓨터는 기술이 발전하면서 트랜지스터를 사용하게 되었다. 트랜지스터 여러 개를 하나로 만든 IC(Integrated circuit)이라는 칩이 개발되었다. IC칩은 진공관과 전선으로 만든 논리회로를 매우 작은 크기로 구현한 것이다.
이 IC칩으로 컴퓨터를 만들면서 현대적인 모습의 컴퓨터가 제작되었다. 입력 장치로 천공 카드 리더(punch card reader)를 사용했고, 출력 장치로 라인 프린터(line printer)를 사용했다.
천공 카드 리더는 OMR(Optical Mark Reader)의 원조다. 천공 카드는 OMR과 비슷하게 구멍을 뚫어 문자나 숫자를 표현한다. 라인 프린터는 문자만 출력하는 프린터이다.
3. 대화형시스템 - interactive system (1960년대)
1960년대 초반 키보드와 모니터가 등장했다. 키보드는 타자기 자판과 유사하게 만들었으며, 초기 모니터는 컬러가 아닌 단색이었다. 키보드와 모니터의 등장은 단순 작업 시스템인 작업 방식을 획기적으로 바꾸어 놓았다.
기존 일괄처리시스템에서는 작업 중간에 새로운 값을 입력하거나 데이터를 변경하는 것이 불가능했다. 그래서 천공 카드를 수천 장 뚫어서 프로그래밍 한 후 카드를 읽어 실행 시켰는데, 라인 프린터에 'ERROR'가 표시되면 그야말로 낭패였다.
키보드와 모니터가 개발되면서 작업이 진행되는 중간에 입력을 받거나 중간 결과 값을 보여 줄 수 있게 되었다. 또 중간 결과 값을 출력하여 프로그램에 이상이 있는지, 프로그램을 정상적으로 진행하고 있는지 확인도 가능해졌다.
프로그램 진행 중간에 사용자에게서 입력을 받을 수 있게 되면서 입력 값에 따라 작업 흐름도 바꿀 수 있었다.
4. 다중사용자시스템(1960년대 후반)
다중 프로그래밍 기술은 하나의 CPU로 여러 작업을 동시에 실행한다. 한 번에 하나의 작업만 하는 일관 처리 시스템에 비해 여러 작업을 동시에 처리할 수 있어서 시스템 효율이 높다. 한 컴퓨터에서 음악을 들으며 문서 편집도 할 수 있는 것이다.
작업을 여러 개 조금씩 처리하게 되는데, 이러한 시스템을 시분할 시스템(time sharing system)이라고 한다.
이즈음 다중 작업과 다중 사용자를 지원하는 운영체제로 유닉스 운영체제가 개발되었다.
5. 개인용 컴퓨터(1970년대 후반)
애플 2 컴퓨터는 개인용 컴퓨터의 시초다. 저장 장치로 카세트테이프를 사용한 이 컴퓨터는 이후 플로피디스크를 저장 장치로 사용했고, 하드디스크가 보급되면서 소프트웨어 복사는 더 빠르고 쉬워졌다. 게임 외의 문서 작성기, 엑셀, 그림 제작 프로그램, 음악 제작 프로그램 등 다양한 소프트웨어를 만들기 시작했다.
당시 대형 컴퓨터를 만들던 IBM이 뒤늦게 개인용 컴퓨터 시장에 발을 들였다. 1981년에 XT를 출시했지만, xt용 소프트웨어가 부족하였다. 고민하던 IBM은 개방 정책으로 돌파구를 마련했다.
지금까지 애플은 폐쇄 정책을 사용했다. 애플 제품은 자신만 생산할 수 있는 것이다. 그러나 IBM의 개방 정책에 따라 삼성이나 LG에서도 개인용 컴퓨터를 만들 수 있게 되었다. 이렇게 만든 컴퓨터를 'IBM 호환 컴퓨터'라고 한다. 개방 정책으로 하드웨어 가격은 싸지고 소프트웨어는 풍부해지면서 IBM 호환 컴퓨터 판매는 급증했다.
컴퓨터에는 꼭 필요한 것이 두 가지 있다. 바로 CPU와 운영체제이다. IBM 호환 컴퓨터는 CPU로 인텔을 사용하고, 운영체제로 마이크로소프트의 MS-DOC를 사용한다. 누가 IBM 호환 컴퓨터를 만들든지 인텔 CPU와 MS-DOC는 꼭 필요했다.
그래서 인텔과 마이크로소프트는 세계적인 기업으로 성장할 수 있었다. 이에 비해 IBM은 비싼 가격 때문에 잘 팔리지 않아 개인용 컴퓨터 시장에서 철수했다.
IBM 호환 컴퓨터가 인기를 누리면서 애플 컴퓨터 판매량은 급감했다. 잡스는 판매량을 만회하고자 1984년 '매킨토시(Macintosh)' 컴퓨터를 판매하기 시작했다. 제록스 연구소에서 마우스와 GUI를 보고 이를 개인용 컴퓨터에 적용한 것이다.
당시 IBM 호환 컴퓨터들은 문자 기반 사용자 인터페이스를 기반으로 하는 MS-DOC를 사용했었다. MS-DOC가 그래픽 사용자 인터페이스로 변경된 것이 윈도우다.
6. 인터넷과 www(1990년대)
1960년대 미국 ARPA(advanced research project agency)에서는 서로 호환되지 않는 랜(LAN)들을 하나로 묶는 연구를 시작했고, 이 결과로 알파넷(ARPAnet)을 만들었다.
알파넷은 이후 차츰 대중에게 개방해서 현재의 인터넷이 되었다.
1993년에 '모자이크'라는 웹 브라우저가 탄생했다. 천문학과 물리학 종사자들이 자신들의 연구를 세상에 알리려고 만든 프로그램이 모자이크이다.
하늘의 별모양을 말로 설명하기가 너무 어려워 한 화면에 문자와 그림을 한꺼번에 표현할 수 있는 프로그램을 고안한 것이다.
모자이크를 만들던 팀이 따로 회사를 차려 1994년 넷스케이프를 출시했다. 넷스케이프를 따라 만든 프로그램이 마이크로소프트의 익스플로러이며, 구글의 크롬도 있다.
웹 브라우저를 이요한 서비스를 월드와이드웹(WWW)이라고 한다.
chapter4.
1) 컴퓨터 시스템의 개괄
컴퓨ㅓ는 크게 하드웨어와 소프트웨어로 구성된다. 하드웨는 컴퓨터를 구성하는 기계 장치고, 소프트웨어는 하드웨어를 작동하려고 만든 알고리즘을 프로그램 형태로 제작한 것이다.
1. 하드웨어의 구성
하드웨어는 CPU, 메인메모리, 입력 장치, 출력 장치, 저장 장치 다섯 가지 요소로 구성된다. 이 중에서 컴퓨터로 하는 대부분의 작업은 CPU와 메인메모리가 서로 협업하여 진행하기에 CPU와 메인메모리는 필수 장치로 분류하고, 그 외 장치는 주변 장치로 분류한다.
- CPU: 명령어를 해석하여 실행하는 장치
- 메인메모리 : 작업에 필요한 프로그램과 데이터를 저장하는 장소, CPU에 데이터를 넘겨 주고 처리한 데이터를 다시 저장한다.
- 저장 장치 : CPU가 작업에 사용하는 저장공간인 메인메모리는 전기가 끊기면 데이터도 사라지는 특징이 있다. 따라서 전원이 꺼진 이후에도 데이터를 보관할 수 있는 저장장치가 생겨났다. 이러한 장치를 보조 저장 장치(second storage)라고 부른다.
저장장치는 초기에 카세트테이프를 쓰다 플로피디스크, 하드디스크가 등장했다. 요즘은 SSD(Solid State Desk), USB 디스크, SD 카드 등 반도체 메모리를 이용한 저장 장치를 많이 사용한다. 이렇게 반도체 메모리를 이용한 저장 장치를 '메모리 저장 장치'라고 한다.
2. 메인보드와 버스
메인보드는 CPU와 메모리 등 다양한 컴퓨터 부품을 연결시켜 주는 커다란 판이다. 각 부품을 한곳에 고정시키고 고정된 부품 사이에 버스를 연결하여 컴퓨터가 동작할 수 있도록 한다. 메인보드를 자세히 들여가 보면 가는 선들이 복잡하게 엉켜 있는데, 이 선들을 '버스'라고 한다.
3. 폰 노이만 구조
폰 노이만 구조는 CPU, 메인메모리, 입력 장치, 출력 장치, 저장 장치가 버스로 연결되어 있다. 폰 노이만 구조가 등장하기 전에는 전선을 연결하여 회로를 구성하는 하드 와이어링 형태의 컴퓨터였다. 그래서 다른 용도로 사용하려면 전선 연결을 바꾸어야 했다. 이러한 문제를 해결하고자 미국 수학자 존 폰 노이만은 메인메모리로 프로그램이 가능한 컴퓨터 구조를 제안해싿. 즉, 하드웨어는 그대로 둔 채 작업용 프로그램만 교체하여 메인메모리에 올리는 방식이다. 폰 노이만 구조에서 가장 중요한 특징은 '모든 프로그램은 메인메모리에 올라와야 실행할 수 있다.'는 것이다. 예를 들어 워드로 보고서를 작성했다고 하자. 워드 프로그램과 파일은 저장 장치인 하드디스크에 저장되지만 프로그램과 데이터가 저장 장치에서 바로 실행되지는 않는다. 저장 장치에 있는 프로그램을 실행하려면 프로그램이 메인메모리에 올라와야 한다. 컴퓨터를 켜면 바로 실행되는 윈도우와 같은 운영체제도 프로그램이므로 메인메모리에 올라와야 실행이 가능하다.
2) 컴퓨터 시스템의 성능 향상
컴퓨터를 구성하는 하드웨어 중 메인메모리와 CPU는 고속으로 동작하고, 입출력 장치와 저장 장치는 저속으로 동작한다.
1. 입출력 채널
컴퓨터의 주변 장치는 데이터 전송 속도에 따라 저속 주변 장치와 고속 주변 장치로 나뉜다. 저속 주변 장치는 메인메모리와 주변 장치 사이에 오고 가는 데이터의 양이 적어 데이터 전송률이 낮은 장치다. 키보드를 아무리 빨리 타이핑한다고 해도 1초에 1000자를 넘을 수 없어 저속 주변 장치로 분류한다.
고속 주변 장치는 메인메모리와 장치 사이에 대용량의 데이터가 오고 가는 데이터 전송률이 높은 장치다. 출력 장치인 그래픽 카드는 모니터에 그래픽을 초당 수십 장씩 보여 주어야 하기 때문에 고속 주변 장치로 분류한다.
반응형'a' 카테고리의 다른 글
[Mac] brew로 Node.js 설치 (0) 2022.07.04 [git] 기본 변경 사항 반영 방법 (0) 2022.06.30 [docker] 볼륨 사용법 (0) 2022.06.21 [vim] 플러그인 사용하기 (0) 2022.05.11 [C++] 문제 02-1,02-2 (0) 2022.05.10