Home 6장 입출력과 네트워킹
Post
Cancel

6장 입출력과 네트워킹

저수준 I/O

가장 단순한 I/O는 CPU가 읽거나 쓸 수 있는 비트에 물건을 연결한 형태의 I/O이다.

1) I/O 포트

2) 버튼을 눌러라

3) 빛이 있으라

어떤 종류든 디스플레이가 포함된 장치가 많이 있다. (알람 시계나 식기 세척기의 디스플레이 같은) 이런 디스플레이를 제어하기 위한 소프트웨어는 아주 간단하다. 필요한 것은 숫자와 그에 따라 세그먼트의 어느 LED를 켤지 연관시켜주는 표뿐이다.

이 디스플레이가 작동하게 하기 위해 사람의 시각의 잔상효과를 활용한다. 사람들이 디스플ㄹ이가 켜져 있는 것으로 인식하게 하기 위해 디스플레이를 계속 켜둘 필요는 없다. 우리의 눈과 두뇌는 1/24초보다 짧은 간격으로 깜빡거리는 경우, 빛이 켜져있는 것으로 인식한다.

4) 빛 동작 그리고 상호 연동

5) 밝기 조절

디스플레이의 듀티 사이클을 조절함으로써 밝기를 조절할 수 있다.

6) 그레이의 2ⁿ가지 그림자

센서를 읽어서 모터, 바퀴 같은 회전축의 위치를 알아내야 하는 경우가 있다. 이 때 회전축의 스위치를 넣거나 광센서가 읽을 수 있는 흰색과 검은색 점을 사용해 위치를 알아낼 수 있다. 어떤 접근 방법을 사용하든 축의 위치를 2진수로 인코딩해야 한다.

인코더가 간단해 보이지만 기계적인 내성이 있다. 제대로 그려진 인코더를 사용한다고 해도 여전히 회로가 각 비트를 읽으면서 발생하는 전파지연으로 인한 문제가 생긴다. 프랭크 그레이는 이 문제를 살펴보다가 각도가 달라질 때 비트가 하나씩만 달라지는 다른 인코딩 방법을 발명했다. 3비트 인코더에서 그레이의 이름을 딴 ‘그레이 코드’로 각도를 표현하면 쉽게 2진 코드로 바꿀 수 있다.

7) 쿼드 러처

2비트 그레이 코드를 약간 뒤틀면 위치가 변했는지와 어떤 방향으로 변했는지를 알 필요가 있는 경우에 써 먹을 수 있다. 이런 변형에는 모두 네 가지 상태가 존재하기 때문에 이를 쿼드러처 인코딩이라고 부른다. 쿼드러처에서는 2비트 그레이 코드 패턴이 여러번 반복된다.

8) 병렬 통신

병렬 통신은 LED를 켜는 회로를 확장한 것이다. 병렬이라는 말은 LED 컴포넌트 하나하나마다 별도의 선이 있기 때문에 동시에 모든 컴포넌트를 제어할 수 있다는 뜻이다. 병렬 인터페이스는 I/O 핀, 커넥터 핀, 선이 많이 필요하기 때문에 가격이 비싸다.

9) 직렬 통신

1900년대 초 전신이 타자기와 결합하면서 텔레타이프가 생겼다. 텔레타이프는 한 곳에서 타이핑한 내용을 멀리 있는 프린터에서 출력하는 기계를 말한다. 전송할 데이터는 직렬 프로토콜을 통해 신호선 하나로 전달되며 돌아오는 선이 하나 더 필요하다.

또 반이중 연결이라는 것이 있다. 이는 송신자와 수신자가 같은 선을 공유한다. 어느 한 순간에는 한 쪽만 말할 수 있고, 둘이 동시에 말하면 의미가 통하지 않는 메시지가 생긴다.(예.무전기) 반대로 전이중 통신은 선이 2개여서 각기 다른 방향으로 동시에 통신이 가능한 경우를 뜻한다.

10) 파동에 올라타라

마크-스페이스 방식의 신호에는 큰 문제가 있는데, 이로 인해 장거리 통신에는 마크-스페이스 방식이 적합하지 않다. 우주에는 다양한 파장이 가득 차 있고 가장 근본적인 파장은 사인파다. 다른 모든 파형은 사인파를 조합해 만들 수 있다.

사인파의 높이를 진폭이라고 하고, 매초 같은 방향으로 0을 지나치는 횟수를 주파수(헤르츠)라고 한다. 같은 방향으로 0을 지나는 연속된 두 지점 사이의 거리를 파장이라고 부른다.

11) 범용 직렬 버스(USB)

USB는 좀더 사용하기 어렵고 호환성이 떨어지는 커넥터를 사용하며 데이터 전송보다는 장치 충전에 더 중요한 역할을 한다. 또 음향과 비디오를 등시성 전송을 통해 처리할 수 있다.

네트워킹

네트워크는 일반적으로 두 가지로 구분한다. 근거리 네트워크(LAN) 집이나 사무실 같이 좁은 지리적 영역을 묶는다, 광역 네트워크(WAN)은 더 넒은 지리적 영역을 묶는다.

초기 컴퓨터 네크워크는 반자동 지상환경의 일부분으로 전화 네트워크와 모뎀을 사용해 각 지점 사이의 통신을 수행했다. 벨 연구소에서 개발된 UUCP라는 일련의 컴퓨터 프로그램이 배포되고 이를 사용하여 컴퓨터가 다른 컴퓨터에게 데이터를 전송하거나 원격에서 프로그램을 실행할 수 있었다. 그리고 1990년대 인터넷이 진화되었다. 인터넷은 네트워크와 다른 네트워크의 사이라는 뜻으로 인터넷은 네트워크들로 이뤄진 네트워크다. 즉 인터넷은 여러 LAN을 하나로 연결해주는 WAN이다.

1) 최근의 LAN들

미국의 전기 엔지니어인 밥 멧칼프는 이더넷을 발명했는데, 이는 LAN이다. 최초의 이더넷은 반이중 시스템이었다. 모든 장치가 같은 선에 연결됐다. 각 장치의 네트워크 인터페이스에는 MAC 주소라는 유일한 48비트 주소가 부여됐고 요즘도 여전히 MAC이 쓰인다.

이더넷은 요즘도 여전히 쓰이지만 반이중 버전은 아니고 각 장치가 라우터라는 장치에 연결되며 라우터는 어떤 장치가 어떤 선에 연결되어 있는지를 기억하고 패킷을 정확히 배달해준다.

2) 인터넷

인터넷은 물리적인 네트워크가 아니라 여러 계층으로 이뤄진 프로토콜의 집합이다.

  • TCP/IP - IP는 패킷을 한 곳에서 다른 곳으로 옮겨주며, 이 패킷을 데이터그램이라고 부른다. TCP는 IP 위에 만들어졌고 패킷이 제대로 배달됐는지를 확실히 보장해준다.
  • IP주소 - 인터넷상의 각 컴퓨터에는 IP주소라는 유일한 주소가 할당되어 있다. IP주소는 하드웨어에 묶여 있지 않아서 변경될 수도 있다. 대부분 IPv4에서 이뤄지고 옥텟 표기를 사용한다.
  • 도메인 이름 시스템 - DNS로 불리며 IP주소를 찾아준다.
  • 월드 와이드 웹 - 여러 프로토콜이 있는데 가장 많이 사용하는 프로토콜이 HTTP이다. 이는 하이퍼 텍스트 전송 프로토콜의 약자로 단순 텍스트를 전송하는 것을 뜻한다. HTTP 표준은 웹 브라우저가 웹 서버와 상호작용하는 방법을 정의한다.

아날로그 처리 방법

우리가 실제로 겪는 소리나 빛은 연속적이지만 컴퓨터에는 연속적인 대상을 저장할 방법이 없다. 그래서 데이터의 샘플을 취해야 한다. 이 말은 시간이나 공간상 일정한 간격으로 값을 읽어야 한다는 뜻이다.

1) 디지털을 아날로그로 변환

디지털 숫자를 사용해 아날로그 전압을 만들 방법으로는 DA 변환기를 사용하는 것이다.

2) 아날로그를 디지털로 변환

AD 변환기는 DAC보다 더 복잡하다. 값을 측정할 수 있도록 아날로그 신호의 현재 값을 흔들리지 않게 안정적으로 잡아내는 것이 중요하다.

3) 디지털 오디오

샘플링을 하면 일정 시간 간격으로 신호의 진폭이나 높이를 측정하여 오디오를 디지털화할 수 있다. 일정한 샘플링 주파수로 사각파를 얻을 수 있고, 상승 에지마다 A/D를 사용해 신호의 높이를 기록할 수 있다.

샘플이 있으면 이를 D/A에 공급해서 재구성할 수 있어야 한다.

푸리에 변환을 수행하면 주파수에 따른 진폭을 그래프로 그릴 수 있다.

푸리에 분석의 응용 중 하나로 해먼드 B-3 오르간이 있다.

또 미디어 플레이어의 기능으로 그래픽 이퀄라이저도 있다. 이것을 사용하면 입맛대로 소리를 조절할 수 있다. 그래픽 이퀄라이저는 조절 가능한 필터의 집합이다. 필터는 전이 함수와 비슷하지만 전압이나 빛 대신 주파수에 대한 함수라는 점이 다르다. 그리고 필터에는 낮은 주파수를 통과시키는 ‘로우패스’와 높은 주파수를 통과시키는 ‘하이패스’가 있다. 이 둘을 조합하면 정해진 최저 주파수와 최대 주파수 사이를 벗어난 나머지 주파수를 모두 무시하는 ‘밴드패스’ 필터나 특정 주파수만 제외시키는 노치를 만들 수 있다.

적절히 필터링을 적용하면 샘플링이 작동하는 것처럼 보이게 된다. 스웨덴 전기 엔지니어 해리 나이퀴스트는 신호를 제대로 잡아내기 위해서는 적어도 최고 주파수의 2배의 샘플링 비율로 샘플을 얻어야 한다는 법칙을 발견했다. 나이퀴스트 비율에 근접해 샘플링한 신호로부터 원래의 주파수와 진폭을 재구성할 수는 있지만 위상은 재구성할 수 없다. 위상은 시간축 위에서 약간씩 신호가 옮겨간 것처럼 생각하면 된다.

위상이 중요한 이유는 위상차는 왼쪽과 오른쪽 귀에 도달하는 신호 사이의 시간차로 인해 발생하며, 사람은 이를 통해 공간에서 소리가 발생한 위치를 인식한다. 주파수가 높으면 귀 사이의 거리보다 파장이 더 짧기 때문에 위상차를 더 잘 알아챌 수 있다.

스테레오 사운드를 듣는 경우 스피커에서 나오는 두 음이 만들어내는 위상차를 이미지라고 부르며, 이는 연주하는 사람이 공간상 어디에 위치하는지를 볼 수 있는 능력을 뜻한다. 위상이 정확하지 않으면 이미지가 탁해진다. 오디오에는 많은 데이터가 들어있고, 따라서 데이터를 압축해서 공간을 적게 차지하게 만들기 위해 압축을 한다. 압축에는 무손실 압축, 손식 압축이 있다. 무손실 압축은 원래 데이터를 그대로 유지해 준다. 유명한 무손실 압축으로 FLAC가 있다. 그에 반해 손실 압축은 MP3, AAC 등으로 일부 세부 사항이 사라진다. 이는 연구자들이 사람들이 들을 수 없는 소리가 있다는 사실을 알게 되어 이런 소리를 없애기 때문에 더 높은 압축률을 제공한다.

4) 디지털 이미지

시각 이미지는 2차원 공간을 샘플링 해야 하기 때문에 오디오보다 더 복잡하다. 디지털 이미지는 그림 요소 또는 픽셀로 이뤄진 직사각형 배열로 표현된다. 컬러 이미지에서 각 픽셀은 빨간색, 녹색, 파란색의 조합으로 표현된다. 일반적인 디스플레이에서 각각의 색의 8비트를 사용하고 컴퓨터는 가산 혼합 색 시스템을 사용하여 색을 표현한다.

이미지 샘플링 작업은 이미지 앞에 모눈이 달린 창을 놓고 각 네모칸의 색을 기록하는 것과 비슷하다. 더 자세하고 높은 해상도를 사용하면 샘플링한 이미지가 더 보기 좋다. 하지만 해상도가 높아질수록 데이터의 양도 크게 늘어난다. 현재 가장 일반적인 이미지 압축 방법은 JPEG로 어려운 수학 변환을 통해 이뤄진다. 손실 오디오 압축 방식과 비슷하게 사람의 인지 방법에 대한 지식을 활용한다.

5) 비디오

비디오는 2차원 이미지를 일정한 시간 간격으로 샘플링한 시퀀스다. 필요한 시간 간격은 사람의 시각 시스템의 기능에 따라 결정된다. 프레임이 변할 때 이미지 중 일부분만 변했음을 알 수 있다. 변경된 영역의 데이터만 필요하다면 더 적은 데이터를 저장하거나 송신할 수 있다. 이런 기법을 움직임 보상 이라고 한다.

비디오를 원본 이미지로부터 변화된 내용의 집합으로 표현하는 방식의 문제는 데이터가 왜곡될 수 있다는 문제가 발생한다. 데이터를 복구할 수 있는 방법이 필요한데 정기적으로 데이터에 키프레임을 추가하는 방식으로 이를 해결한다. 키프레임은 오염된 데이터가 누적되면서 생긴 이미지가 손상된 경우라도 다음 키프레임에 전체 이미지를 복구할 수 있다.

휴먼 인터페이스 장치

1) 터미널

과거에는 종이에 특별히 정해진 코딩 양식으로 데이터나 프로그램을 기록해야만 컴퓨터와 의사소통 할 수 있었다. 이런 코딩 양식을 키펀치를 사용하여 펀치카드 뭉치로 만들면 그것을 컴퓨터 오퍼레이터에게 건냈고, 오퍼레이터는 카드를 카드 리더에 넣어 컴퓨터가 읽게 해서 프로그램을 실행시켰다.

시간이 흐르고 사람들은 컴퓨터를 텔레타이프에 연결하기 시작했다. 텔레타이프는 선 끝에 연결됐기 때문에 터미널이라고 불렸다. 그리고 이런 작은 컴퓨터를 계속 바쁘게 돌리기 위해 시분할이 발명됐다. 시분할 시스템에는 운영체제가 들어있었고 운영체제는 컴퓨터의 여러 자원을 각 사용자에게 배정해준다. 그리고 사용자가 많아서 스레싱이 발생하면 시분할 시스템이 아주 느려진다.

2) 그래픽 터미널

그래픽 터미널은 흔해 CRT라고 부르는 음극선관이라는 진공관의 변형으로 만들어졌다. 오늘날의 CRT는 액정 디스플레이로 대체되었다.

3) 벡터 그래픽

벡터 그래픽은 선 또는 벡터로 그림을 그리는 방식이다. 벡터 그래픽은 이리저리 선을 그려서 그림을 만들어낸다. 그림은 디스플레이 목록에 의해 그려진다. 이 목록은 그림을 그리는 명령어로 이뤄진 목록이고 마지막 명령어에는 1단계부터 다시 시작이라는 명령어가 있다. 화면상에서는 이미지가 빠르게 사라지기 때문에 계속 그림을 다시 그려야 한다.

4) 레스터 그래픽

벡터 그래픽과 완전히 다른 접근 법으로 텔레비전이 작동하는 방식이 래스터 방식이다. 래스터는 왼쪽 위에서 출발해 화면을 지난다. 그 후 수평 리트레이스를 통해 다시 화면 왼쪽 다음 줄 위치로 이동한다. 마지막 줄을 그린 다음에는 수직 리트레이스를 통해 그리기를 시작했던 왼쪽 위로 다시 이동한다.

5) 키보드와 마우스

터미널은 데이터를 출력하는 역할을 할 뿐만 아니라 데이터를 받아들이는 역할도 한다. 키보드의 경우 여러 스위치와 논리 회로를 묶은 것으로 일반적으로 키보드를 만드는 방법은 키 스위치들을 격자상에 놓고 멀티플렉싱하는 것이다. 마우스는 쿼드러처 인코더를 사용하면 만들 수 있다. 터치 장치는 키보드와 비슷하게 행 스캐닝과 열 스캐닝을 하되 훨씬 더 미세한 단위로 스캔하는 장치다.

This post is licensed under CC BY 4.0 by the author.

5장 컴퓨터 아키텍처와 운영체제

7장 데이터 구조와 처리