← 바이브코딩 아카데미컴퓨터공학 · 프로젝트 사례집PCB 실습실 ↗

ACADEMY / COMPUTER SCIENCE

배운 개념을
만드는 일에 연결합니다.

데이터베이스부터 네트워크까지, 실제 강의 18개를 초보자도 따라 읽을 수 있게 정리했습니다. QT-LST와 운하명리는 강의 개념을 대입해 보는 별도 사례로 소개합니다.

8과목18강한국어 강의 기록마지막 기록 2026.10.24
PROJECT 01 · QT-LST

강의가 기기와 웹 화면을
이해하는 데 쓰이는 곳

데이터 저장, 탐색, 바이트와 통신, 작업 순서를 실제 웹앱 화면과 연결해 읽습니다.

적용 사례와 스크린샷 보기 →
PROJECT 02 · 운하명리

입력값이 명식 화면으로
이어지는 과정

양력·음력 변환, 시간 모름, 대운 계산과 화면 상태를 서비스의 공개 흐름으로 살펴봅니다.

운하명리 코너 보기 →

LECTURE ARCHIVE

컴퓨터공학 강의 노트

과목을 고르거나 제목·개념을 검색해 보세요. 강의 날짜는 수강 기간이 아닌 개별 기록의 날짜입니다.

18 NOTES

18개 강의를 보여 줍니다.

DB / 5강

데이터베이스

데이터베이스

데이터베이스의 발전과 기본 정의

파일 시스템에서 여러 DBMS 모델로 발전한 흐름을 살피고, 데이터베이스를 이루는 네 가지 데이터와 일반적 특성, 자료 추상을 배운 기록입니다.

기억할 세 가지
  • 파일 시스템은 파일을 저장하는 기본 방식이지만, 여러 사람이 각자 복사본을 고치면 중복과 버전 불일치가 생깁니다. 파일 구조가 바뀔 때 프로그램도 영향을 받는 종속성도 문제입니다.
  • 통합된 데이터는 흩어진 정보를 함께 관리한다는 뜻입니다. 같은 정보를 무조건 없애는 대신, 필요한 경우 중복을 통제합니다.
  • 실시간 접근은 필요할 때 데이터를 조회할 수 있다는 뜻입니다. 계속적인 변화는 날씨·기사·교통정보처럼 값이 수시로 갱신된다는 뜻입니다.
강의 내용 펼치기
01

파일에서 여러 DBMS 모델로

  • 파일 시스템은 파일을 저장하는 기본 방식이지만, 여러 사람이 각자 복사본을 고치면 중복과 버전 불일치가 생깁니다. 파일 구조가 바뀔 때 프로그램도 영향을 받는 종속성도 문제입니다.
  • 1960년대의 계층형 DBMS는 부모·자식 관계를 트리로 표현합니다. 자식 노드가 다시 다른 노드의 부모가 될 수 있지만, 트리 안에서 순환은 생기지 않습니다.
  • 1970년대의 네트워크형 DBMS는 오너·멤버 관계로 데이터를 연결하는 그래프형 모델입니다. 한 항목이 여러 관계에 참여할 수 있고 순환하는 연결도 표현합니다.
  • 관계형 DBMS는 데이터를 표(테이블)로 다룹니다. 오라클, MySQL, MSSQL이 강의에서 든 예입니다. 구조가 익숙하고 표준화가 잘되어 실무에서 널리 쓰입니다.
  • 1990년대의 객체지향 DBMS는 이미지·영상·지도·CAD처럼 복잡한 대상을 객체로 다루는 모델입니다. 클래스·상속 등의 개념이 필요하고 호환성과 개발 난도가 보급의 장벽이 될 수 있습니다.
  • 객체관계형 DBMS는 관계형의 테이블에 객체 기능을 더합니다. 오늘날에는 클라우드 운영, 빅데이터 분석, 데이터마이닝에도 데이터베이스를 활용합니다.
02

데이터베이스를 정의하는 네 가지 데이터

  • 통합된 데이터는 흩어진 정보를 함께 관리한다는 뜻입니다. 같은 정보를 무조건 없애는 대신, 필요한 경우 중복을 통제합니다.
  • 저장된 데이터는 종이 문서가 아니라 저장 장치에 디지털 형태로 기록된 데이터입니다.
  • 운영 데이터는 학교의 학사 정보처럼 조직의 실제 업무에 필요한 데이터입니다.
  • 공용 데이터는 여러 사용자와 응용 프로그램이 함께 쓰는 데이터입니다. 함께 쓰는 동안에도 값의 일관성과 무결성을 지켜야 합니다.
03

데이터베이스의 일반적 특성

  • 실시간 접근은 필요할 때 데이터를 조회할 수 있다는 뜻입니다. 계속적인 변화는 날씨·기사·교통정보처럼 값이 수시로 갱신된다는 뜻입니다.
  • 동시 접근은 여러 사용자가 함께 이용한다는 뜻입니다. 병행제어는 이때 생길 수 있는 충돌을 조정해 데이터의 일관성을 지킵니다.
  • 내용 기반 참조는 저장 위치를 알지 못해도 값으로 찾는 방식입니다. 예를 들어 점수가 90점 이상인 행을 검색합니다.
04

자료 추상

  • 자료 추상은 디스크의 트랙·섹터나 내부 저장 방식을 감추고, 사용자가 필요한 데이터와 기능만 보게 하는 것입니다. 강의에서는 이를 개념화·일반화와 연결해 설명했습니다.
  • 사용자는 데이터가 디스크 어디에 있는지 몰라도 응용 프로그램이나 질의로 데이터를 사용할 수 있습니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 같은 파일을 여러 사람이 따로 고쳤을 때 어떤 버전 불일치가 생기는지 그림으로 나타내 봅니다.
  2. 계층형·네트워크형·관계형·객체지향·객체관계형 모델의 자료 구조와 관계 표현 방식을 비교합니다.
  3. 학교 또는 기업 데이터를 통합·저장·운영·공용 데이터로 나누어 예를 들어 봅니다.
  4. 정규화와 역정규화에서 중복을 줄이는 이점과 조회 성능의 차이를 비교합니다.
  5. 여러 사용자가 동시에 값을 수정할 때 잠금·트랜잭션이 왜 필요한지 사례를 만듭니다.
  6. 이미지·지도 데이터가 관계형과 객체형 모델에서 어떻게 표현되는지 비교합니다.
  7. 24시간 운영을 위해 백업·장애 복구·모니터링에 무엇이 필요한지 적어 봅니다.
  8. 점수 90점 이상을 찾는 조건 검색을 써 보고, 저장 위치로 찾는 방식과 비교합니다.
데이터베이스

데이터베이스 구성 요소와 DBMS 기능

자료 독립성과 자기 정의, 개체·속성·도메인·관계를 정리하고, DBMS의 정의·조작·제어 기능과 내부 처리 흐름을 배운 기록입니다.

기억할 세 가지
  • 자료 추상은 내부 저장 방식을 감추는 것입니다. 자료 독립성은 저장 방식이나 논리 구조의 변화가 응용 프로그램에 미치는 영향을 줄입니다.
  • 개체는 학생이나 교수처럼 구별할 수 있는 대상입니다. 속성은 학번·이름처럼 개체를 설명하는 항목입니다.
  • 파일 구조와 프로그램이 강하게 묶이면 구조 변경 때 프로그램 수정이 필요합니다. 데이터가 여러 파일에 중복되면 일부만 갱신되어 불일치가 생길 수 있습니다.
강의 내용 펼치기
01

데이터베이스의 구조와 특징

  • 자료 추상은 내부 저장 방식을 감추는 것입니다. 자료 독립성은 저장 방식이나 논리 구조의 변화가 응용 프로그램에 미치는 영향을 줄입니다.
  • 자기 정의는 데이터베이스가 자신의 구조·권한 등 설명 정보(메타데이터)를 데이터 사전에 보관한다는 뜻입니다.
  • 논리적 구조는 사용자가 보는 데이터의 모습이고 물리적 구조는 저장 장치에 기록되는 모습입니다. 두 구조를 구분해 이해합니다.
02

개체·속성·도메인·관계

  • 개체는 학생이나 교수처럼 구별할 수 있는 대상입니다. 속성은 학번·이름처럼 개체를 설명하는 항목입니다.
  • 도메인은 한 속성에 들어갈 수 있는 값의 범위입니다. 예를 들어 시험 점수의 도메인을 0~100점으로 정할 수 있습니다.
  • 관계는 개체 사이의 연결입니다. 교수와 학생의 지도 관계처럼 1:1, 1:다, 다:다 관계로 나타낼 수 있습니다.
  • 개체 타입은 항목들의 틀(예: 학생의 학번·이름·학과)이고, 개체 집합은 그 틀에 맞게 저장된 실제 학생들의 모음입니다.
03

파일 시스템과 DBMS의 차이

  • 파일 구조와 프로그램이 강하게 묶이면 구조 변경 때 프로그램 수정이 필요합니다. 데이터가 여러 파일에 중복되면 일부만 갱신되어 불일치가 생길 수 있습니다.
  • DBMS는 사용자와 데이터베이스 사이에서 구조 정의, 데이터 처리, 권한 및 동시 접근을 관리합니다. 중복 제어와 일관성·무결성 유지, 백업·복구에 도움이 됩니다.
  • 대신 소프트웨어·운영 비용이 들고 시스템이 복잡해집니다. 장애에 대비한 관리도 필요합니다.
04

DBMS의 세 기능과 처리 흐름

  • 정의 기능은 DDL로 테이블·필드·키 같은 구조를 만듭니다. 조작 기능은 DML로 데이터를 삽입·검색·수정·삭제합니다. 제어 기능은 권한·무결성·병행제어·회복을 맡습니다.
  • 일반 사용자의 질의는 질의어 처리기가 해석합니다. 응용 프로그래머가 프로그램에 넣은 DML은 예비 컴파일러와 DML 컴파일러가 처리합니다.
  • DBA가 작성한 DDL은 DDL 컴파일러를 거쳐 구조 정보가 데이터 사전에 저장됩니다. 런타임 처리기·트랜잭션 관리자·저장 데이터 관리자가 실행과 물리 저장을 이어 줍니다.
데이터베이스

3단계 스키마와 데이터 독립성

사용자·조직·저장장치가 보는 데이터베이스 구조를 나누어 이해하고, 스키마와 데이터 사전, 데이터 언어 및 여러 시스템 구성 방식을 살펴본 강의입니다.

기억할 세 가지
  • 파일의 저장 방식이나 구조가 바뀔 때마다 프로그램도 고쳐야 한다면 서로 종속된 상태입니다. 데이터 독립성은 하위 데이터 구조가 바뀌어도 상위 단계와 응용 프로그램의 변경을 줄이는 성질입니다.
  • 스키마는 데이터베이스의 설계도입니다. 학생 테이블에 학번·이름이 있고 점수는 0~100점이라는 식으로 항목, 관계, 규칙을 정합니다.
  • 외부 스키마는 사용자마다 필요한 부분만 보여주는 관점입니다. 은행의 입금 담당자와 출금 담당자가 같은 계좌 데이터에서 서로 다른 화면을 보는 것처럼 여러 개가 있을 수 있습니다.
강의 내용 펼치기
01

데이터 독립성은 왜 필요할까

  • 파일의 저장 방식이나 구조가 바뀔 때마다 프로그램도 고쳐야 한다면 서로 종속된 상태입니다. 데이터 독립성은 하위 데이터 구조가 바뀌어도 상위 단계와 응용 프로그램의 변경을 줄이는 성질입니다.
  • 논리적 데이터 독립성은 데이터베이스의 논리 구조를 바꾸더라도 사용자가 쓰는 화면이나 프로그램을 계속 사용할 수 있게 하는 것입니다. 예를 들어 학생 정보에 새 항목을 추가해도 기존 조회 화면은 그대로 동작할 수 있습니다.
  • 물리적 데이터 독립성은 저장 장치나 저장 방법을 바꿔도 논리 구조와 프로그램을 유지하는 것입니다. 디스크를 교체하거나 인덱스를 바꾸더라도 사용자는 같은 방식으로 데이터를 조회합니다.
02

스키마와 인스턴스

  • 스키마는 데이터베이스의 설계도입니다. 학생 테이블에 학번·이름이 있고 점수는 0~100점이라는 식으로 항목, 관계, 규칙을 정합니다.
  • 인스턴스는 그 설계도에 따라 어느 시점에 저장된 실제 값입니다. 예를 들어 학번 2026001, 이름 김하나, 점수 80점은 인스턴스입니다.
  • 스키마를 바꾸는 일은 표의 열과 규칙을 바꾸는 일이고, 인스턴스를 바꾸는 일은 표 안의 실제 값을 추가하거나 수정하는 일입니다.
03

외부·개념·내부 스키마

  • 외부 스키마는 사용자마다 필요한 부분만 보여주는 관점입니다. 은행의 입금 담당자와 출금 담당자가 같은 계좌 데이터에서 서로 다른 화면을 보는 것처럼 여러 개가 있을 수 있습니다.
  • 개념 스키마는 조직 전체가 공유하는 하나의 통합 설계도입니다. 어떤 데이터가 있고 서로 어떻게 연결되며 어떤 제약과 권한을 지켜야 하는지 정합니다.
  • 내부 스키마는 데이터를 저장 장치에 어떻게 배치할지 정하는 관점입니다. 레코드 형식, 저장 순서, 인덱스 같은 저장 관련 사항을 다룹니다.
  • 세 관점은 서로 다른 데이터베이스 세 개가 아닙니다. 하나의 데이터를 여러 층에서 바라보고, 층 사이를 연결해 한 층의 변경이 다른 층에 미치는 영향을 줄입니다.
04

데이터 사전과 데이터 언어

  • 데이터 사전(시스템 카탈로그)은 테이블 이름, 열, 제약조건, 권한처럼 데이터의 구조를 설명하는 메타데이터를 저장합니다. DBMS가 자신의 구조를 기록한다는 자기 정의 특성과 연결됩니다.
  • 데이터 정의어(DDL)는 CREATE·ALTER·DROP처럼 테이블 등의 구조를 만들고 바꾸거나 지웁니다. 데이터 조작어(DML)는 SELECT·INSERT·UPDATE·DELETE처럼 실제 데이터를 조회하거나 변경합니다.
  • 데이터 제어어(DCL)는 권한과 보안을 관리합니다. 강의에서는 무결성·병행제어·회복까지 DBMS의 제어 기능과 함께 설명했습니다.
  • 비절차적 질의는 원하는 결과가 무엇인지 적고 처리 방법은 DBMS에 맡깁니다. 절차적 방식은 무엇을 어떤 순서와 방법으로 처리할지도 기술합니다.
05

데이터베이스 시스템의 구성

  • 데이터베이스는 저장된 데이터이고, DBMS는 그 데이터를 관리하는 소프트웨어입니다. 데이터베이스 시스템은 여기에 사용자, 응용 프로그램, 데이터 언어, 관리자(DBA), 컴퓨터까지 포함합니다.
  • 클라이언트는 화면 표시와 입력처럼 사용자와 가까운 일을 맡고, 서버는 데이터 처리와 동시 접근 조정, 복구처럼 뒤에서 필요한 일을 맡습니다.
  • 중앙집중 방식은 데이터를 한곳에서 관리합니다. 병렬 방식은 여러 처리기가 작업을 나누어 빠르게 처리하며, 메모리나 디스크를 어떻게 공유하느냐에 따라 병목이 달라집니다.
  • 공유 메모리 방식은 여러 처리기가 같은 메모리를 써서 메모리가 병목이 될 수 있습니다. 공유 디스크 방식은 처리기마다 메모리를 따로 쓰지만 디스크가 병목이 될 수 있습니다. 무공유 방식은 자원을 따로 두고 네트워크로 연결합니다.
  • 분산 방식은 여러 지역의 컴퓨터가 데이터를 나누어 관리합니다. 일부가 고장 나도 서비스를 이어 갈 가능성이 높지만, 동기화와 운영이 복잡하고 비용이 늘 수 있습니다.
데이터베이스

저장 장치·페이지 I/O·클러스터링과 RAID

하드디스크의 접근 시간과 DBMS가 페이지 단위로 읽는 이유를 알아보고, 레코드 배치·클러스터링·RAID의 성능과 보호 효과를 구분합니다.

기억할 세 가지
  • 하드디스크는 헤드가 트랙을 찾는 탐색 시간, 원판이 돌아 목표 부분을 기다리는 회전 지연, 실제 전송 시간이 듭니다. SSD에는 기계적인 탐색과 회전이 없습니다.
  • 레코드가 100바이트, 페이지가 1024바이트라면 단순 계산으로 페이지당 10개를 담습니다. 1만 개를 담는 데는 적어도 1000페이지가 필요하며 실제 오버헤드에 따라 달라집니다.
  • RAID 0은 데이터를 나눠 저장해 성능을 노리지만 디스크 하나가 고장 나면 전체 데이터가 위험합니다. RAID 1은 같은 내용을 복제해 한 디스크 고장에 대비합니다.
강의 내용 펼치기
01

디스크에서 데이터를 읽는 시간

  • 하드디스크는 헤드가 트랙을 찾는 탐색 시간, 원판이 돌아 목표 부분을 기다리는 회전 지연, 실제 전송 시간이 듭니다. SSD에는 기계적인 탐색과 회전이 없습니다.
  • DBMS는 레코드 하나보다 큰 페이지를 읽어 여러 레코드를 한 번에 메모리로 옮깁니다. 디스크 접근 횟수가 줄면 많은 경우 조회가 빨라집니다.
02

블로킹과 가까이 놓기

  • 레코드가 100바이트, 페이지가 1024바이트라면 단순 계산으로 페이지당 10개를 담습니다. 1만 개를 담는 데는 적어도 1000페이지가 필요하며 실제 오버헤드에 따라 달라집니다.
  • 관련 행을 가까이 배치하는 클러스터링은 범위 조회에 도움이 될 수 있습니다. 다만 저장 구조를 유지하거나 다시 정리하는 비용이 들고, 항상 모든 조회에 유리하지는 않습니다.
03

RAID는 백업과 다릅니다

  • RAID 0은 데이터를 나눠 저장해 성능을 노리지만 디스크 하나가 고장 나면 전체 데이터가 위험합니다. RAID 1은 같은 내용을 복제해 한 디스크 고장에 대비합니다.
  • RAID 5는 분산 패리티로 보통 디스크 한 개, RAID 6은 보통 두 개의 고장을 견딥니다. RAID는 실수로 삭제하거나 파일이 손상된 일을 되돌리는 백업을 대신하지 않습니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 100바이트 레코드 1만 개를 1024바이트 페이지에 담는 단순 계산을 해 봅니다.
  2. RAID 0·1·5·6의 고장 허용 범위를 비교하고 별도 백업이 필요한 이유를 적어 봅니다.
데이터베이스

파일 조직·B트리 인덱스·해싱

순차 파일과 색인·해시 방식의 차이를 살펴보고, B/B+/B* 트리·비트맵·R-트리가 어떤 검색에 맞는지 비교합니다.

기억할 세 가지
  • 순차 파일은 도착 순서나 키 순서로 데이터를 놓습니다. 인덱스는 책의 목차처럼 키에서 데이터 위치를 찾고, 해시는 키를 계산해 저장 위치 후보를 고릅니다.
  • B트리 계열은 균형을 유지해 데이터가 늘어도 탐색 단계가 천천히 늘어납니다. B+트리는 리프들을 순서대로 이어 범위 조회에 잘 맞습니다.
  • 서로 다른 키가 같은 버킷으로 가면 충돌입니다. 체이닝은 같은 버킷에 목록을 이어 붙이고, 개방 주소법은 다른 빈 칸을 찾습니다.
강의 내용 펼치기
01

순차·인덱스·해시 파일

  • 순차 파일은 도착 순서나 키 순서로 데이터를 놓습니다. 인덱스는 책의 목차처럼 키에서 데이터 위치를 찾고, 해시는 키를 계산해 저장 위치 후보를 고릅니다.
  • 밀집 인덱스는 검색 키마다 항목을 두고, 희소 인덱스는 일부 기준점만 둡니다. 희소 인덱스는 기준점 이후의 데이터가 순서대로 놓였을 때 효율적으로 이어 찾을 수 있습니다.
02

트리로 범위를 빠르게 찾기

  • B트리 계열은 균형을 유지해 데이터가 늘어도 탐색 단계가 천천히 늘어납니다. B+트리는 리프들을 순서대로 이어 범위 조회에 잘 맞습니다.
  • 비트맵 인덱스는 값 종류가 적은 열의 분석 질의에 유용할 수 있습니다. R트리는 지도상의 사각형 범위를 겹침 관계로 묶어 위치 검색에 씁니다.
03

해시 충돌과 선택 기준

  • 서로 다른 키가 같은 버킷으로 가면 충돌입니다. 체이닝은 같은 버킷에 목록을 이어 붙이고, 개방 주소법은 다른 빈 칸을 찾습니다.
  • 해시는 정확히 일치하는 값을 찾는 데 강점이 있지만 키의 크기 순서를 보존하지 않아 범위 검색에는 대체로 B+트리 같은 순서 있는 인덱스가 더 적합합니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 학번을 정확히 찾는 일과 학번 범위를 찾는 일에 각각 어떤 접근법이 맞는지 비교해 봅니다.
  2. 서로 다른 두 키가 같은 버킷으로 가는 예를 만들고 체이닝으로 해결해 봅니다.
ALGO / 3강

알고리즘

알고리즘

알고리즘의 기초와 문제 해결 설계

알고리즘이 무엇인지와 그 역사적 배경을 알아보고, 좋은 절차를 설계·표현·검증·분석하는 방법을 순차 탐색, 이진 탐색, 그리디, 문제 분할 사례로 익힌 첫 강의입니다.

기억할 세 가지
  • 알고리즘은 주어진 문제를 해결하기 위해 정한 단계별 규칙입니다. 요리법처럼 같은 입력에 같은 절차를 적용하면 결과를 얻을 수 있어야 합니다. 컴퓨터가 쓰이기 전부터 수학 문제를 푸는 데 활용되었습니다.
  • 앨런 튜링은 1936년에 계산 절차를 엄밀하게 설명하기 위한 추상적인 기계 모델을 제시했습니다. 실제로 테이프를 끝없이 펼쳐 놓은 컴퓨터가 아니라, 어떤 일을 기계적인 규칙만으로 처리할 수 있는지 생각하는 도구입니다.
  • 입력은 해결할 문제의 재료로, 없을 수도 있습니다. 출력은 계산이 끝난 뒤 얻는 결과이며 적어도 하나가 있어야 합니다. 예를 들어 두 수의 합을 구한다면 두 수가 입력이고 합계가 출력입니다.
강의 내용 펼치기
01

알고리즘은 문제를 푸는 명확한 절차

  • 알고리즘은 주어진 문제를 해결하기 위해 정한 단계별 규칙입니다. 요리법처럼 같은 입력에 같은 절차를 적용하면 결과를 얻을 수 있어야 합니다. 컴퓨터가 쓰이기 전부터 수학 문제를 푸는 데 활용되었습니다.
  • '알고리즘'이라는 말은 9세기 수학자 알콰리즈미의 이름에서 유래했습니다. 수를 계산하는 절차를 설명한 그의 저술이 유럽에 전해지며 이 이름이 계산법을 뜻하는 말로 쓰이게 되었습니다.
  • 고대의 유클리드 호제법은 두 수의 최대공약수를 찾는 대표적인 알고리즘입니다. 27을 12로 나눈 나머지가 3이고, 12를 3으로 나눈 나머지가 0이므로 27과 12의 최대공약수는 3입니다. 큰 수에서 작은 수를 반복해서 빼는 방식으로도 같은 원리를 볼 수 있습니다.
02

튜링 기계로 생각하는 컴퓨터의 규칙

  • 앨런 튜링은 1936년에 계산 절차를 엄밀하게 설명하기 위한 추상적인 기계 모델을 제시했습니다. 실제로 테이프를 끝없이 펼쳐 놓은 컴퓨터가 아니라, 어떤 일을 기계적인 규칙만으로 처리할 수 있는지 생각하는 도구입니다.
  • 튜링 기계는 기호가 적힌 테이프, 한 칸씩 읽고 쓰는 헤드, 현재 상태, '이 상태에서 이 기호를 읽으면 무엇을 할까'를 정한 규칙으로 설명할 수 있습니다.
  • 예를 들어 빈칸에 0을 쓰고 오른쪽으로 이동한 다음, 다음 빈칸에 1을 쓰고 다시 오른쪽으로 이동하는 두 상태를 반복하면 0101…을 만들 수 있습니다. 복잡해 보이는 작업도 작은 규칙의 반복으로 표현한다는 생각이 핵심입니다.
03

고전적인 알고리즘의 다섯 요건

  • 입력은 해결할 문제의 재료로, 없을 수도 있습니다. 출력은 계산이 끝난 뒤 얻는 결과이며 적어도 하나가 있어야 합니다. 예를 들어 두 수의 합을 구한다면 두 수가 입력이고 합계가 출력입니다.
  • 명확성은 각 단계의 뜻이 모호하지 않아야 한다는 조건입니다. '적당히 더한다' 대신 '두 수를 더한다'처럼 무엇을 할지 분명히 적어야 다른 사람이나 컴퓨터가 그대로 실행할 수 있습니다.
  • 유한성은 정해진 절차가 끝나야 한다는 뜻이고, 유효성은 각 단계가 실제로 실행 가능한 기본 동작이어야 한다는 뜻입니다. 강의에서 소개한 다섯 요건은 결과를 내고 종료하는 고전적인 알고리즘을 설명할 때 쓰입니다.
04

설계부터 효율성 분석까지

  • 먼저 문제를 작은 단계로 나누어 해결 방법을 설계합니다. 하향식은 큰 문제를 세부 문제로 쪼개고, 상향식은 해결할 수 있는 작은 부분부터 조합합니다.
  • 설계한 절차는 자연어, 순서도, 의사코드, 프로그래밍 언어로 표현할 수 있습니다. 순서도는 화살표와 도형으로 흐름을 보여 주고, 의사코드는 특정 언어 문법에 얽매이지 않고 명령의 순서를 적습니다.
  • 정확성 검증은 허용된 입력에서 올바른 답을 내는지 확인하는 일입니다. 몇 가지 예시가 맞았다는 것만으로 모든 입력에서 맞는다는 증명은 되지 않으므로 경계 조건도 살펴야 합니다.
  • 효율성 분석은 입력이 커질 때 시간이 얼마나 늘고 메모리를 얼마나 쓰는지 비교하는 일입니다. 같은 정답을 내더라도 비교 횟수가 적은 방법이 큰 데이터에서는 훨씬 유리할 수 있습니다.
05

순차 탐색과 이진 탐색 비교하기

  • 카드 더미에서 가장 큰 수를 찾으려면 첫 카드를 현재 최댓값으로 두고, 다음 카드를 하나씩 비교해 더 크면 바꿉니다. 카드가 n장이면 모든 카드를 한 번씩 확인하므로 비교 횟수는 데이터 수에 비례합니다.
  • 순차 탐색은 원하는 값을 앞에서부터 하나씩 찾습니다. 정렬되지 않은 자료에도 쓸 수 있지만, 원하는 값이 마지막에 있거나 없으면 n개를 모두 확인해야 합니다.
  • 이진 탐색은 정렬된 자료의 가운데 값과 목표를 비교하고, 답이 있을 수 없는 절반을 버립니다. 10개라면 최악에도 보통 4번 안팎의 비교로 위치를 찾거나 없음을 확인할 수 있습니다. 자료가 정렬되어 있어야 이 방법이 올바르게 동작합니다.
06

그리디와 분할: 작은 선택을 반복하기

  • 그리디 알고리즘은 매 단계에서 지금 가장 좋아 보이는 선택을 합니다. 500원·100원·50원·10원 동전으로 870원을 거슬러 주면 500원 1개, 100원 3개, 50원 1개, 10원 2개로 총 7개를 고릅니다.
  • 그리디 선택이 언제나 최소 동전 수를 보장하는 것은 아닙니다. 동전이 1원·4원·6원이라면 8원을 만들 때 큰 동전부터 고르는 방법은 6+1+1로 3개지만 4+4는 2개입니다. 문제의 조건에 따라 선택 방법이 맞는지 확인해야 합니다.
  • 문제를 나누는 방법은 후보를 큰 묶음에서 작은 묶음으로 줄여 갑니다. 가벼운 가짜 동전 하나를 찾을 때 100개를 반씩 나누어 의심할 그룹을 계속 좁히면 한 개씩 검사하는 것보다 적은 단계가 필요합니다. 어떤 저울을 쓰고 무엇을 이미 아는지에 따라 정확한 계량 횟수는 달라집니다.
  • 성능을 비교할 때는 '100개에서 몇 번 비교하거나 재야 하는가'처럼 기본 동작의 횟수를 세어 봅니다. 입력이 커질수록 모든 항목을 보는 방법과 범위를 절반씩 줄이는 방법의 차이가 커집니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 27과 12의 최대공약수를 나머지를 이용한 유클리드 호제법으로 구하고, 각 단계에서 두 수가 어떻게 바뀌는지 적어 봅니다.
  2. 같은 절차를 자연어·순서도·의사코드·프로그래밍 언어로 각각 표현할 때 무엇이 달라지는지 비교해 봅니다.
  3. 정렬된 숫자 10개에서 하나의 값을 순차 탐색과 이진 탐색으로 찾아 보고, 비교 횟수를 세어 봅니다.
  4. 870원 거스름돈 예시를 풀어 보고, 1원·4원·6원 동전으로 8원을 만들 때 그리디 선택이 왜 최선이 아닌지 설명해 봅니다.
  5. 입력·출력·명확성·유한성·유효성의 다섯 요건을 자신이 만든 간단한 알고리즘에 대입하고, 정확성과 실행 시간도 점검해 봅니다.
알고리즘

알고리즘을 표현하는 네 가지 방법과 순서도

같은 최댓값 찾기 절차를 자연어·순서도·의사코드·프로그래밍 언어로 표현하고, 순차·선택·반복 흐름을 구분합니다.

기억할 세 가지
  • 소프트웨어를 만들 때는 요구사항을 이해하고 해결 절차를 설계한 뒤 코드로 옮깁니다. 절차를 먼저 적으면 빠진 입력이나 잘못된 조건을 실행 전에도 점검할 수 있습니다.
  • 순서도에서 직사각형은 처리, 마름모는 조건 판단, 평행사변형은 입출력을 나타냅니다. 화살표는 다음에 실행할 단계로 이어집니다.
  • 첫 값을 현재 최댓값으로 놓고 남은 값을 하나씩 비교합니다. 더 큰 값을 만나면 바꾸고, 끝까지 살핀 뒤 저장된 값을 출력합니다.
강의 내용 펼치기
01

코딩 전에 절차를 정하기

  • 소프트웨어를 만들 때는 요구사항을 이해하고 해결 절차를 설계한 뒤 코드로 옮깁니다. 절차를 먼저 적으면 빠진 입력이나 잘못된 조건을 실행 전에도 점검할 수 있습니다.
  • 자연어는 읽기 쉽지만 표현이 모호해질 수 있고, 의사코드는 특정 언어 문법 없이 핵심 판단과 반복을 간단히 보여 줍니다.
02

순서도의 모양과 흐름

  • 순서도에서 직사각형은 처리, 마름모는 조건 판단, 평행사변형은 입출력을 나타냅니다. 화살표는 다음에 실행할 단계로 이어집니다.
  • 순차는 차례대로 실행하고, 선택은 조건에 따라 갈라지고, 반복은 조건을 만족할 때까지 되풀이합니다. 복잡한 그림도 이 세 흐름을 찾아 읽으면 쉽습니다.
03

최댓값 찾기를 손으로 따라가기

  • 첫 값을 현재 최댓값으로 놓고 남은 값을 하나씩 비교합니다. 더 큰 값을 만나면 바꾸고, 끝까지 살핀 뒤 저장된 값을 출력합니다.
  • 배열이 비어 있다면 첫 값을 읽을 수 없으므로 별도 처리해야 합니다. `i < n` 같은 반복 조건은 마지막 항목까지 보는지 확인합니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 최댓값 찾기를 자연어·의사코드·순서도로 각각 표현해 봅니다.
  2. 입력이 비었을 때와 값이 하나일 때 결과를 확인해 봅니다.
알고리즘

재귀와 반복: 종료 조건·스택·분할 정복

팩토리얼·거듭제곱·피보나치·하노이탑으로 재귀 호출이 쌓이고 돌아오는 과정을 보고 반복과 비용을 비교합니다.

기억할 세 가지
  • 재귀는 함수가 더 작은 같은 문제를 다시 푸는 방식입니다. 반드시 더 작아지는 단계와 멈추는 종료 조건이 있어야 합니다.
  • 같은 팩토리얼은 반복문으로도 구할 수 있습니다. 재귀 호출에는 스택 메모리가 더 들 수 있으므로 읽기 쉬움과 비용을 함께 봅니다.
  • 거듭제곱에서 짝수 지수는 xⁿ=(x²)ⁿ⁄²로 바꾸면 지수를 반씩 줄일 수 있습니다. 이는 알고리즘을 바꾼 효과이지 재귀라는 문법 자체가 빠른 것은 아닙니다.
강의 내용 펼치기
01

자기 자신을 부르는 함수

  • 재귀는 함수가 더 작은 같은 문제를 다시 푸는 방식입니다. 반드시 더 작아지는 단계와 멈추는 종료 조건이 있어야 합니다.
  • 3!은 3×2!이고 2!은 2×1!입니다. 호출은 3→2→1로 쌓였다가 1에서 멈춘 뒤 반대로 돌아오며 6을 만듭니다.
02

반복과 성능을 비교하기

  • 같은 팩토리얼은 반복문으로도 구할 수 있습니다. 재귀 호출에는 스택 메모리가 더 들 수 있으므로 읽기 쉬움과 비용을 함께 봅니다.
  • 피보나치의 단순 재귀는 같은 작은 값을 여러 번 계산합니다. 반복이나 메모이제이션으로 중복을 줄일 수 있습니다.
03

반씩 줄이는 거듭제곱과 하노이탑

  • 거듭제곱에서 짝수 지수는 xⁿ=(x²)ⁿ⁄²로 바꾸면 지수를 반씩 줄일 수 있습니다. 이는 알고리즘을 바꾼 효과이지 재귀라는 문법 자체가 빠른 것은 아닙니다.
  • 하노이탑은 작은 원판 묶음을 옮기고 큰 원판을 옮긴 뒤 작은 묶음을 다시 옮깁니다. n개를 옮기는 최소 횟수는 2ⁿ−1입니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 3!의 호출과 반환 순서를 손으로 그려 봅니다.
  2. 피보나치 단순 재귀에서 같은 값이 몇 번 다시 계산되는지 표시해 봅니다.
DS / 1강

자료구조

자료구조

자료구조 첫걸음: 알고리즘·추상 자료형·복잡도

스택·큐·트리 같은 저장 구조가 알고리즘과 어떻게 맞물리는지 살펴보고, 추상 자료형과 Big-O로 자료가 늘 때의 비용을 비교합니다.

기억할 세 가지
  • 접시를 쌓으면 마지막에 놓은 접시를 먼저 꺼냅니다. 이것이 스택의 후입선출 방식입니다. 줄을 서서 먼저 온 사람이 먼저 처리되는 모습은 큐의 선입선출 방식입니다.
  • 배열은 값을 담는 구조이고, 배열에서 가장 큰 값을 차례로 비교하는 과정은 알고리즘입니다. 프로그램에서는 둘을 함께 설계합니다.
  • Big-O는 입력 크기 n이 커질 때 작업 횟수가 어떻게 늘어나는지 나타냅니다. 모든 항목을 한 번 보면 O(n), 겹친 두 반복문에서 모두 비교하면 보통 O(n²)입니다.
강의 내용 펼치기
01

일상에서 자료구조 찾기

  • 접시를 쌓으면 마지막에 놓은 접시를 먼저 꺼냅니다. 이것이 스택의 후입선출 방식입니다. 줄을 서서 먼저 온 사람이 먼저 처리되는 모습은 큐의 선입선출 방식입니다.
  • 폴더의 상하 관계는 트리로, 장소와 도로의 연결은 그래프로 나타낼 수 있습니다. 자료를 어떻게 놓는지에 따라 찾고 바꾸는 방법도 달라집니다.
02

알고리즘과 추상 자료형

  • 배열은 값을 담는 구조이고, 배열에서 가장 큰 값을 차례로 비교하는 과정은 알고리즘입니다. 프로그램에서는 둘을 함께 설계합니다.
  • 추상 자료형(ADT)은 내부 구현보다 사용할 수 있는 기능을 먼저 정합니다. 스택이라면 넣기·꺼내기 같은 약속을 알면 내부 배열이나 연결 리스트를 몰라도 사용할 수 있습니다.
03

입력이 커질 때의 비용

  • Big-O는 입력 크기 n이 커질 때 작업 횟수가 어떻게 늘어나는지 나타냅니다. 모든 항목을 한 번 보면 O(n), 겹친 두 반복문에서 모두 비교하면 보통 O(n²)입니다.
  • 초 단위 실행 시간은 기기와 환경에 따라 달라집니다. 먼저 기본 연산 횟수와 최선·평균·최악 경우를 구분하면 방법을 더 공정하게 비교할 수 있습니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 스택과 큐를 일상 사례로 각각 설명하고, 넣기·꺼내기 순서를 적어 봅니다.
  2. n개의 수에서 최댓값을 찾을 때 비교 횟수가 어떻게 늘어나는지 세어 봅니다.
OS / 2강

운영체제

운영체제

운영체제의 역할·프로세스 관리·컴퓨팅의 발전

운영체제가 사용자·프로그램과 하드웨어 사이에서 하는 일부터 PC·서버·모바일·임베디드 환경, 프로세스와 자원 관리, 일괄 처리에서 클라우드·IoT까지의 발전 흐름을 살펴본 첫 강의입니다.

기억할 세 가지
  • 운영체제(OS)는 프로그램이 하드웨어를 사용할 수 있도록 돕는 기본 소프트웨어입니다. CPU 사용 순서를 정하고, 메모리와 파일을 관리하며, 키보드·화면·저장 장치 같은 장치와 프로그램 사이를 연결합니다.
  • PC에서는 Windows와 macOS처럼 화면·마우스·키보드를 사용하는 운영체제가 흔합니다. 여러 앱을 실행하고 파일과 주변장치를 관리합니다.
  • 프로그램은 저장된 명령이고, 프로세스는 실행을 위해 메모리에 올라와 운영체제가 관리하는 작업입니다. 실행 중인 프로세스는 CPU를 쓰는 순간인 '실행', CPU 차례를 기다리는 '준비', 입출력 완료 같은 사건을 기다리는 '대기' 상태를 오갑니다.
강의 내용 펼치기
01

운영체제는 컴퓨터에서 무슨 일을 할까

  • 운영체제(OS)는 프로그램이 하드웨어를 사용할 수 있도록 돕는 기본 소프트웨어입니다. CPU 사용 순서를 정하고, 메모리와 파일을 관리하며, 키보드·화면·저장 장치 같은 장치와 프로그램 사이를 연결합니다.
  • 강의는 식당의 손님·웨이터·주방에 빗대어 설명했습니다. 사용자가 프로그램에 일을 요청하면 운영체제가 필요한 자원을 조정하고 하드웨어가 처리한 결과를 돌려줍니다. 실제로는 응용 프로그램도 운영체제 기능을 요청하는 주체입니다.
  • 전원을 켜면 펌웨어와 부트로더가 먼저 동작해 운영체제를 메모리에 불러옵니다. 따라서 운영체제가 전원 직후 가장 먼저 실행되는 소프트웨어라는 뜻은 아닙니다.
  • 운영체제는 자원을 효율적으로 쓰고, 한 프로그램의 문제가 다른 작업에 미치는 영향을 줄이며, 새 장치와 기능에 대응하고, 사용하기 편한 환경을 제공하려고 합니다. 효율성·안정성·확장성·편리성의 균형이 중요합니다.
02

PC·서버·모바일·임베디드 운영체제

  • PC에서는 Windows와 macOS처럼 화면·마우스·키보드를 사용하는 운영체제가 흔합니다. 여러 앱을 실행하고 파일과 주변장치를 관리합니다.
  • 서버에서는 Linux·Unix 계열이나 Windows Server처럼 여러 사용자의 요청과 네트워크 서비스를 오래 처리하는 운영체제를 사용합니다. 같은 계열의 운영체제를 PC에서도 쓸 수 있으므로 용도에 따른 구분입니다.
  • 모바일에서는 Android와 iOS가 스마트폰의 앱, 터치 입력, 통신, 배터리 사용과 보안을 관리합니다.
  • 임베디드 운영체제는 로봇 청소기·가전제품·산업 장비처럼 특정 장치 안에서 정해진 기능을 지원합니다. 장치마다 메모리·전력·응답 시간의 제약이 달라 설계도 달라집니다.
03

프로세스와 한정된 자원 관리

  • 프로그램은 저장된 명령이고, 프로세스는 실행을 위해 메모리에 올라와 운영체제가 관리하는 작업입니다. 실행 중인 프로세스는 CPU를 쓰는 순간인 '실행', CPU 차례를 기다리는 '준비', 입출력 완료 같은 사건을 기다리는 '대기' 상태를 오갑니다.
  • CPU 스케줄링은 여러 준비된 프로세스 중 다음에 누가 CPU를 쓸지 정하는 일입니다. 운영체제는 필요한 메모리를 할당·회수하고, 프로그램이 서로의 메모리를 함부로 바꾸지 못하게 보호합니다.
  • 입출력 관리는 키보드·디스크·프린터 같은 장치에 대한 요청을 다룹니다. 어떤 프로세스가 느린 장치를 기다리는 동안 다른 준비된 프로세스가 CPU를 쓸 수 있습니다.
  • 예를 들어 문서를 저장할 때 앱이 운영체제에 파일 쓰기를 요청하고, 운영체제가 저장 장치의 동작을 조정합니다. 사용자는 디스크의 세부 신호를 직접 제어할 필요가 없습니다.
04

일괄 처리에서 다중프로그래밍·시분할까지

  • 1940년대 초기 전자식 컴퓨터는 사람의 직접적인 조작과 장비 설정이 많이 필요했습니다. 강의는 이 시기를 현대적인 운영체제가 자리 잡기 전의 단계로 소개합니다.
  • 1950년대 이후 일괄 처리는 작업을 모아 정해진 순서대로 실행했습니다. 천공 카드로 프로그램과 데이터를 입력하고 결과를 출력하는 방식이 대표적입니다. 사용자가 매 단계에 끼어들지 않아 준비 시간을 줄일 수 있지만, 한 작업의 결과를 바로 고치기는 어렵습니다.
  • 다중프로그래밍은 여러 프로그램을 메모리에 두고 하나가 입출력을 기다리면 다른 프로그램에 CPU를 줍니다. 시분할은 CPU 시간을 짧은 조각인 타임 슬라이스로 나누어 작업에 번갈아 배정합니다. CPU가 하나여도 빠르게 전환하면 여러 작업이 동시에 진행되는 듯 보입니다.
  • 대화형 시스템은 키보드 등으로 명령을 넣고 결과를 비교적 빨리 받습니다. 일괄 처리·다중프로그래밍·시분할은 서로 다른 문제를 해결하는 방식이며 발전 과정에서 함께 쓰이기도 했습니다.
05

연결된 컴퓨터에서 클라우드·IoT까지

  • 네트워크가 발전하면서 여러 컴퓨터가 멀리 떨어진 작업을 나누어 처리할 수 있게 되었습니다. 클라이언트-서버 방식에서는 클라이언트가 요청하고 서버가 데이터나 서비스를 제공합니다. 분산 시스템은 여러 컴퓨터의 작업과 통신을 함께 설계합니다.
  • P2P는 참여한 컴퓨터가 서로 직접 데이터를 주고받는 방식입니다. 중앙 서버의 역할을 줄일 수 있지만, 데이터의 신뢰성·보안·참여자의 접속 상태를 관리해야 합니다. 같은 파일을 여러 곳에서 받는다고 항상 빠르거나 끊김 없이 동작하는 것은 아닙니다.
  • 그리드 컴퓨팅은 여러 기관이나 장소의 계산 자원을 공동으로 활용하는 방식입니다. 클라우드 컴퓨팅은 서버·저장 공간·소프트웨어를 네트워크를 통해 필요에 따라 제공받는 방식입니다. 두 개념은 겹치는 부분이 있지만 운영과 제공 방식이 다릅니다.
  • 모바일 기기와 사물인터넷(IoT)에서는 전력과 메모리가 제한된 장치가 센서 정보를 모으고 네트워크로 전달합니다. 운영체제와 관련 소프트웨어는 자원 관리뿐 아니라 연결의 안정성과 보안도 고려해야 합니다.
  • 강의의 연대기 구분은 기술을 이해하기 위한 큰 흐름입니다. 각 방식은 특정 10년대에만 쓰인 것이 아니며, 오늘날의 시스템에서도 일괄 처리·시분할·클라이언트-서버 방식이 함께 쓰입니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. PC·서버·모바일·임베디드 운영체제의 사용 환경과 중요한 자원 관리 목표를 표로 비교해 봅니다.
  2. 문서를 저장하는 상황에서 사용자·응용 프로그램·운영체제·저장 장치의 역할을 순서대로 그려 봅니다.
  3. 실행·준비·대기 상태를 그려 보고, 디스크 읽기를 기다리는 프로세스가 어느 상태로 이동하는지 설명해 봅니다.
  4. 천공 카드로 작업을 모아 처리하던 일괄 방식과 현재의 자동화된 데이터 처리 과정을 비교해 봅니다.
  5. 타임 슬라이스가 짧을 때와 길 때 사용자 반응 및 작업 전환 횟수가 어떻게 달라질지 생각해 봅니다.
  6. 클라이언트-서버와 P2P 파일 공유 방식에서 데이터 저장 위치와 장애·보안 문제를 비교해 봅니다.
  7. 센서가 달린 IoT 장치 하나를 골라 메모리·전력·네트워크·보안 측면에서 운영체제가 관리해야 할 일을 적어 봅니다.
운영체제

커널·시스템 호출·드라이버와 운영체제 구조

운영체제가 앱과 하드웨어 사이에서 요청을 처리하는 길을 따라가며 커널, 시스템 호출, 드라이버와 커널 구조를 배웁니다.

기억할 세 가지
  • 커널은 메모리·프로세스·장치 같은 핵심 자원을 관리합니다. 일반 프로그램은 보호된 자원을 직접 조작하지 않고 시스템 호출로 운영체제에 요청합니다.
  • 장치 드라이버는 운영체제가 프린터나 그래픽 장치와 이야기하도록 돕는 소프트웨어입니다. 장치 종류마다 필요한 명령이 달라 드라이버가 그 차이를 다룹니다.
  • JVM은 자바 바이트코드를 각 운영체제에서 실행할 수 있게 돕는 실행 환경입니다. 가상 머신이라는 이름이 같아도 PC 전체를 가상화하는 기술과 역할이 다릅니다.
강의 내용 펼치기
01

앱이 커널에 일을 부탁하는 방법

  • 커널은 메모리·프로세스·장치 같은 핵심 자원을 관리합니다. 일반 프로그램은 보호된 자원을 직접 조작하지 않고 시스템 호출로 운영체제에 요청합니다.
  • 파일 저장을 누르면 앱의 요청이 시스템 호출을 거쳐 파일 시스템과 저장 장치로 전달됩니다. 이 경계가 앱의 실수가 다른 작업까지 망가뜨리는 일을 줄입니다.
02

드라이버와 커널 구성

  • 장치 드라이버는 운영체제가 프린터나 그래픽 장치와 이야기하도록 돕는 소프트웨어입니다. 장치 종류마다 필요한 명령이 달라 드라이버가 그 차이를 다룹니다.
  • 모놀리식 커널은 많은 기능을 커널 공간에 두고, 마이크로커널은 핵심 기능을 작게 두며 다른 서비스를 분리합니다. 어느 쪽도 무조건 빠르거나 안전하다고 단정할 수 없습니다.
03

호환성과 운영체제의 계보

  • JVM은 자바 바이트코드를 각 운영체제에서 실행할 수 있게 돕는 실행 환경입니다. 가상 머신이라는 이름이 같아도 PC 전체를 가상화하는 기술과 역할이 다릅니다.
  • 유닉스와 리눅스의 역사를 통해 운영체제의 설계 개념이 여러 환경으로 이어진 과정을 살펴봅니다. 안드로이드는 리눅스 커널을 바탕으로 모바일 기능을 더한 운영체제입니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 파일 저장 과정에서 앱·시스템 호출·커널·드라이버의 역할을 순서대로 적어 봅니다.
  2. JVM과 운영체제 전체를 실행하는 가상 머신의 차이를 설명해 봅니다.
SYS / 2강

시스템프로그래밍

시스템프로그래밍

컴퓨터 시스템과 CPU·분산 처리의 기초

하드웨어와 소프트웨어가 함께 프로그램을 실행하는 과정부터 CPU의 구성 요소, 분산 처리, 프로그래밍 언어와 번역기, 펌웨어를 살펴본 시스템프로그래밍 첫 강의입니다.

기억할 세 가지
  • 하드웨어는 손으로 만질 수 있는 컴퓨터 부품입니다. CPU는 명령을 처리하고, 주기억장치(RAM)는 실행 중인 데이터와 명령을 잠시 담으며, 보조기억장치는 파일을 오래 보관합니다. 키보드와 화면은 입력과 출력을 맡습니다.
  • 분산 시스템은 여러 컴퓨터가 네트워크로 연결되어 하나의 서비스를 위해 협력하는 방식입니다. 한 컴퓨터 안에 CPU가 여러 개 있는 병렬 처리 시스템과 구별합니다.
  • CPU는 명령을 읽고 해석한 뒤 실행합니다. 제어장치(CU)는 어느 부품이 무엇을 할지 지시하고, 산술논리연산장치(ALU)는 덧셈과 비교 같은 계산을 합니다.
강의 내용 펼치기
01

하드웨어와 소프트웨어는 어떻게 함께 일할까

  • 하드웨어는 손으로 만질 수 있는 컴퓨터 부품입니다. CPU는 명령을 처리하고, 주기억장치(RAM)는 실행 중인 데이터와 명령을 잠시 담으며, 보조기억장치는 파일을 오래 보관합니다. 키보드와 화면은 입력과 출력을 맡습니다.
  • 시스템 소프트웨어는 하드웨어를 관리하고 다른 프로그램이 실행될 바탕을 마련합니다. 운영체제, 컴파일러, 어셈블러가 예입니다. 응용 소프트웨어는 문서 작성이나 웹 탐색처럼 사용자가 원하는 일을 합니다.
  • 프로그램을 실행하면 저장 장치에 있던 명령과 데이터가 메모리로 올라오고, CPU가 명령을 하나씩 읽어 처리합니다. 파일이 디스크에 있다는 것과 프로그램이 실제로 실행 중이라는 것은 다른 상태입니다.
  • 강의는 국내 개인용 컴퓨터의 보급, 국가기간전산망 구축, 인터넷과 소프트웨어 산업의 성장도 배경으로 소개했습니다. 세부 연도와 최초 생산 기록은 별도 자료로 확인하는 것이 좋습니다.
02

분산 처리: 여러 컴퓨터가 일을 나누기

  • 분산 시스템은 여러 컴퓨터가 네트워크로 연결되어 하나의 서비스를 위해 협력하는 방식입니다. 한 컴퓨터 안에 CPU가 여러 개 있는 병렬 처리 시스템과 구별합니다.
  • 작업을 여러 컴퓨터에 나누면 요청이 몰릴 때 처리량을 늘릴 수 있습니다. 한 대가 고장 나도 다른 컴퓨터가 일부 작업을 이어받도록 설계할 수 있고, 필요하면 컴퓨터를 더 붙여 확장할 수 있습니다.
  • 분산이라고 언제나 빨라지거나 고장에 강해지는 것은 아닙니다. 컴퓨터 사이의 통신, 데이터 동기화, 장애 복구를 어떻게 설계했는지에 따라 성능과 가용성이 달라집니다.
03

CPU 안에서는 무슨 일이 일어날까

  • CPU는 명령을 읽고 해석한 뒤 실행합니다. 제어장치(CU)는 어느 부품이 무엇을 할지 지시하고, 산술논리연산장치(ALU)는 덧셈과 비교 같은 계산을 합니다.
  • 레지스터는 CPU 안의 아주 작은 고속 저장 공간입니다. 프로그램 카운터(PC)는 다음에 읽을 명령의 주소, 명령어 레지스터(IR)는 현재 처리할 명령을 보관합니다.
  • 메모리 주소 레지스터(MAR)는 접근할 메모리 주소를, 메모리 데이터 레지스터(MDR·MBR)는 메모리에서 읽거나 쓸 값을 담습니다. 데이터 버스는 CPU·메모리·입출력 장치 사이에 데이터를 옮기는 통로입니다.
  • 예를 들어 두 수를 더할 때 PC가 다음 명령의 위치를 가리키고, CPU가 그 명령을 메모리에서 가져옵니다. 해독기가 '더하라'는 뜻을 알아낸 뒤 ALU가 계산하고, 결과를 레지스터나 메모리에 저장합니다.
04

사람이 쓰는 코드가 기계 명령이 되기까지

  • 기계어는 CPU가 실행하는 이진 명령입니다. 어셈블리어는 MOV·ADD 같은 기호로 기계 명령을 표현하며, 어셈블러가 이를 기계어로 바꿉니다.
  • C·C++·Java·Python 같은 고급 언어는 사람이 읽고 작성하기 쉬운 문법을 제공합니다. 컴파일러나 인터프리터 등 언어별 실행 방식이 코드를 실제 컴퓨터에서 실행 가능한 형태로 처리합니다.
  • 같은 소스 코드라도 CPU 종류나 운영체제가 다르면 필요한 기계 명령과 실행 환경이 달라질 수 있습니다. 따라서 '고급 언어라서 어디서나 수정 없이 실행된다'고 단정할 수는 없습니다.
05

펌웨어는 기기 안에서 무엇을 할까

  • 펌웨어는 공유기·가전제품처럼 특정 기기 안에서 기본 동작을 제어하는 소프트웨어입니다. 전원을 켰을 때 장치를 준비하거나 하드웨어 기능을 관리하는 코드가 예입니다.
  • 과거에는 교체가 어려운 ROM에 저장하는 경우가 많았고, 오늘날에는 다시 쓸 수 있는 플래시 메모리에 저장해 업데이트하는 기기도 많습니다. 업데이트 방식은 기기마다 다릅니다.
  • 공식 업데이트는 오류 수정과 보안 개선에 도움이 되지만, 도중에 전원이 끊기거나 잘못된 파일을 설치하면 기기가 작동하지 않을 수 있습니다. 비공식 커스텀 펌웨어는 기능을 바꿀 수 있는 대신 호환성과 보안을 먼저 검토해야 합니다.
06

강의에서 함께 소개한 번역 기술

  • 기계 번역은 컴퓨터가 한 언어의 문장을 다른 언어로 바꾸는 기술입니다. 번역 메모리(TM)는 이미 번역해 둔 원문과 번역문을 저장해 비슷한 문장을 다시 번역할 때 활용하는 도구입니다.
  • 번역 메모리는 같은 표현을 일관되게 쓰는 데 도움이 되지만, 문맥에 맞는지 사람이 확인해야 합니다. 강의에서는 최근 소프트웨어 활용 사례로 소개했습니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 파일을 실행할 때 저장 장치·RAM·CPU 사이에서 명령이 이동하는 순서를 그림으로 그려 봅니다.
  2. PC·IR·MAR·MDR(MBR)·제어장치·ALU의 역할을 명령어 한 개가 실행되는 순서에 맞춰 설명해 봅니다.
  3. 한 대의 컴퓨터로 운영하는 서비스와 여러 컴퓨터로 나눈 서비스를 비교하고, 분산 처리의 이점과 추가되는 어려움을 적어 봅니다.
  4. 간단한 덧셈을 고급 언어와 어셈블리어로 표현했을 때 읽기 쉬운 정도와 실행까지 필요한 변환 단계를 비교해 봅니다.
  5. 자신이 쓰는 공유기나 기기의 공식 펌웨어 업데이트 방법을 찾아보고, 업데이트 전 확인할 사항을 적어 봅니다.
  6. 기계 번역과 번역 메모리의 차이를 한 문장씩 설명하고 같은 문장을 여러 번 번역할 때 TM이 주는 이점을 생각해 봅니다.
시스템프로그래밍

데이터 단위·2의 보수·시스템 버스

비트부터 파일까지의 데이터 단위를 정리하고, 이진수로 음수를 표현하는 방법과 CPU 레지스터, 주소·데이터·제어 버스의 역할을 배운 강의입니다.

기억할 세 가지
  • 비트는 0 또는 1을 나타내는 가장 작은 이진 단위입니다. 서로 같은 가능성을 가진 선택지가 8개라면 하나를 구별하는 데 3비트가 필요합니다. 2를 세 번 곱하면 8이 되기 때문입니다.
  • 이진수의 각 자리는 오른쪽부터 1, 2, 4, 8처럼 두 배씩 커집니다. 1 + 1은 이진수로 10이며, 오른쪽 자리에 0을 쓰고 왼쪽 자리로 1을 올립니다.
  • 레지스터는 CPU 안의 작고 빠른 저장 공간입니다. 명령을 실행하는 동안 필요한 값과 주소를 잠깐 보관합니다. 누산기는 계산 결과를 담는 용도로 쓰이는 레지스터의 예입니다.
강의 내용 펼치기
01

비트에서 파일까지: 데이터의 크기와 묶음

  • 비트는 0 또는 1을 나타내는 가장 작은 이진 단위입니다. 서로 같은 가능성을 가진 선택지가 8개라면 하나를 구별하는 데 3비트가 필요합니다. 2를 세 번 곱하면 8이 되기 때문입니다.
  • 니블은 4비트로, 16진수 한 자리를 표현할 수 있습니다. 바이트는 보통 8비트여서 부호 없는 값 0부터 255까지 256가지를 나타냅니다.
  • 한 글자가 차지하는 바이트 수는 문자 인코딩에 따라 달라집니다. 예를 들어 UTF-8에서는 영문 알파벳 한 글자가 대개 1바이트이고 한글 음절 한 글자는 대개 3바이트입니다. 따라서 '한글은 언제나 2바이트'라고 외우지 않습니다.
  • 워드는 CPU가 기본적으로 다루는 데이터 크기를 가리키며 설계에 따라 달라집니다. 강의에서 예로 든 8086의 워드는 16비트입니다.
  • 필드는 학번이나 이름 같은 한 항목, 레코드는 한 학생의 여러 항목을 묶은 것, 파일은 여러 레코드의 모음으로 생각할 수 있습니다. 블록은 저장 장치와 데이터를 주고받을 때 쓰는 묶음 단위입니다.
02

이진수로 계산하고 음수를 나타내기

  • 이진수의 각 자리는 오른쪽부터 1, 2, 4, 8처럼 두 배씩 커집니다. 1 + 1은 이진수로 10이며, 오른쪽 자리에 0을 쓰고 왼쪽 자리로 1을 올립니다.
  • 부호와 절댓값 방식은 맨 앞 비트로 양수·음수를 표시하고 나머지 비트로 크기를 나타냅니다. 0을 +0과 -0으로 두 가지로 표현하는 문제가 있습니다.
  • 1의 보수는 양수의 비트를 모두 뒤집어 음수를 만듭니다. 2의 보수는 뒤집은 결과에 1을 더합니다. 오늘날 컴퓨터의 정수 연산에서는 2의 보수 방식이 널리 쓰입니다.
  • 8비트에서 +14는 00001110입니다. 비트를 뒤집으면 11110001이고, 여기에 1을 더한 11110010이 -14의 2의 보수 표현입니다. 이 방법을 쓰면 뺄셈을 음수를 더하는 연산으로 처리할 수 있습니다.
03

CPU의 레지스터는 무엇을 기억할까

  • 레지스터는 CPU 안의 작고 빠른 저장 공간입니다. 명령을 실행하는 동안 필요한 값과 주소를 잠깐 보관합니다. 누산기는 계산 결과를 담는 용도로 쓰이는 레지스터의 예입니다.
  • 프로그램 카운터(PC)는 다음에 읽을 명령의 주소를, 명령어 레지스터(IR)는 현재 실행할 명령을 담습니다. 주소 관련 레지스터는 접근할 메모리 위치를, 상태 레지스터는 자리올림이나 오버플로 같은 연산 결과의 상태를 기억합니다.
  • CPU의 산술논리연산장치(ALU)는 계산을, 제어장치(CU)는 명령을 해석하고 부품의 동작을 조정합니다. 캐시는 자주 쓰는 데이터를 CPU 가까이에 보관해 메모리 접근을 줄입니다.
04

주소·데이터·제어 버스의 역할

  • 버스는 CPU·메모리·주변장치 사이에서 신호를 전달하는 통로입니다. 주소 버스는 어느 위치에 접근할지, 데이터 버스는 어떤 값을 옮길지, 제어 버스는 읽기·쓰기 같은 동작을 알립니다.
  • 예를 들어 CPU가 메모리에서 값을 읽을 때 주소 버스에 위치를 보내고, 제어 버스에 읽기 신호를 보내면, 데이터 버스를 통해 값이 돌아옵니다. 세 버스가 함께 움직여 한 번의 메모리 읽기가 이루어집니다.
  • 주소 버스가 n비트라면 최대 2의 n제곱 개 주소를 구별할 수 있습니다. 한 주소가 1바이트를 가리키는 시스템에서 32비트 주소 공간은 2의 32제곱 바이트, 즉 4GiB입니다. 실제 사용 가능한 메모리는 시스템 설계에 따라 달라집니다.
  • 데이터 버스의 폭은 한 번에 옮길 수 있는 비트 수와 관련이 있습니다. 8086과 8088은 초기 x86 계열의 예로, 내부 처리 구조가 비슷해도 외부 데이터 버스 폭은 다를 수 있음을 보여 줍니다.
05

컴퓨터 확장 버스의 변화

  • ISA, EISA, VESA 로컬 버스, PCI는 컴퓨터에 확장 카드를 연결할 때 사용된 버스 규격입니다. 강의는 이 규격을 통해 컴퓨터가 더 빠른 장치와 넓은 데이터 통로를 지원하도록 발전한 흐름을 살폈습니다.
  • 버스 규격을 비교할 때는 이름만 외우기보다 어느 장치를 연결하고, 한 번에 얼마만큼의 데이터를 전달하며, 이전 규격과 어떤 호환성이 있는지 살펴봅니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 8개의 선택지 중 하나를 구별하는 데 왜 3비트가 필요한지 2진수로 설명해 봅니다.
  2. 8비트에서 -14를 부호와 절댓값, 1의 보수, 2의 보수로 각각 나타내고 차이를 비교합니다.
  3. 메모리에서 값을 읽는 상황을 그려 주소·데이터·제어 버스가 각각 전달하는 것을 표시해 봅니다.
  4. 주소 버스가 20비트 또는 32비트일 때 구별 가능한 주소 수를 계산하고, 바이트 단위 주소라는 조건이 왜 필요한지 설명해 봅니다.
ARCH / 2강

컴퓨터구조

컴퓨터구조

컴퓨터 구성 요소와 임베디드 시스템의 동작

CPU·메모리·입출력 장치와 시스템 버스가 함께 일하는 모습, 소프트웨어가 기계어가 되어 실행되는 과정을 임베디드 기기와 연결합니다.

기억할 세 가지
  • CPU는 명령을 읽고 계산하며, 메모리는 실행 중인 명령과 데이터를 담습니다. 카메라나 센서 같은 입출력 장치는 바깥의 정보를 주고받습니다.
  • 임베디드 장치는 정해진 일을 하는 작은 컴퓨터입니다. 센서를 연결할 때도 전기적 신호와 통신 방식이 맞아야 하므로 적절한 인터페이스나 제어기가 필요합니다.
  • CPU와 메모리·장치의 속도 차이는 캐시와 버퍼 같은 계층으로 완화합니다. 캐시는 자주 쓰는 데이터를 가까이 두어 반복 접근을 빠르게 합니다.
강의 내용 펼치기
01

CPU·메모리·입출력의 역할

  • CPU는 명령을 읽고 계산하며, 메모리는 실행 중인 명령과 데이터를 담습니다. 카메라나 센서 같은 입출력 장치는 바깥의 정보를 주고받습니다.
  • 주소 버스는 어느 곳을 읽거나 쓸지, 데이터 버스는 어떤 값을 옮길지, 제어 버스는 읽기·쓰기 같은 동작을 알려 줍니다.
02

기기와 프로그램을 이어 주기

  • 임베디드 장치는 정해진 일을 하는 작은 컴퓨터입니다. 센서를 연결할 때도 전기적 신호와 통신 방식이 맞아야 하므로 적절한 인터페이스나 제어기가 필요합니다.
  • 컴파일러는 사람이 쓴 코드를 기계가 실행할 수 있는 형태로 바꾸고, 링커와 로더는 실행 파일을 준비하고 메모리에 올립니다.
03

속도 차이와 인터럽트

  • CPU와 메모리·장치의 속도 차이는 캐시와 버퍼 같은 계층으로 완화합니다. 캐시는 자주 쓰는 데이터를 가까이 두어 반복 접근을 빠르게 합니다.
  • 인터럽트는 장치나 사건이 CPU에 처리가 필요하다고 알리는 신호입니다. CPU가 장치를 계속 들여다보지 않아도 요청에 대응할 수 있습니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 센서 값이 화면에 나타날 때 CPU·메모리·입출력 장치의 역할을 그려 봅니다.
  2. 주소·데이터·제어 버스가 메모리 읽기에 각각 무엇을 전달하는지 설명해 봅니다.
컴퓨터구조

계산기의 역사와 폰 노이만·하버드 구조

기계식 계산 도구에서 전자식 컴퓨터까지의 흐름을 짚고, 프로그램과 데이터가 메모리·CPU에서 만나는 구조를 비교합니다.

기억할 세 가지
  • 파스칼과 라이프니츠의 계산기, 배비지의 기관 설계, 홀러리스의 천공카드는 사람이 계산을 기계에 맡기려 한 단계들입니다.
  • 프로그램 내장 방식은 명령을 메모리에 저장하고 CPU가 차례로 가져와 실행합니다. 명령을 바꾸기 위해 배선을 다시 꽂는 대신 저장된 내용을 바꿀 수 있습니다.
  • 프로그램을 저장 장치에서 메모리로 올린 뒤 CPU가 명령을 가져오고 해석하고 실행합니다. 레지스터는 이 과정에서 현재 주소와 값 등을 빠르게 보관합니다.
강의 내용 펼치기
01

계산 도구에서 전자식 컴퓨터까지

  • 파스칼과 라이프니츠의 계산기, 배비지의 기관 설계, 홀러리스의 천공카드는 사람이 계산을 기계에 맡기려 한 단계들입니다.
  • 마크 1은 전기기계식 계산기이고 ENIAC·EDSAC·EDVAC·UNIVAC은 초기 전자식 컴퓨터의 서로 다른 이정표입니다. 한 대를 모든 의미의 ‘최초’로 단정하기는 어렵습니다.
02

프로그램 내장 방식 이해하기

  • 프로그램 내장 방식은 명령을 메모리에 저장하고 CPU가 차례로 가져와 실행합니다. 명령을 바꾸기 위해 배선을 다시 꽂는 대신 저장된 내용을 바꿀 수 있습니다.
  • 폰 노이만 구조는 명령과 데이터가 같은 메모리 경로를 쓰는 모델이고, 하버드 구조는 명령과 데이터의 저장·전달 경로를 구분하는 모델입니다. 실제 칩은 두 특징을 섞어 쓰기도 합니다.
03

CPU가 명령을 실행하는 순서

  • 프로그램을 저장 장치에서 메모리로 올린 뒤 CPU가 명령을 가져오고 해석하고 실행합니다. 레지스터는 이 과정에서 현재 주소와 값 등을 빠르게 보관합니다.
  • 집적회로의 집적도와 기기의 크기·용도는 컴퓨터를 분류하는 한 가지 관점입니다. 세대 구분은 학습을 돕는 큰 흐름이며 모든 기기에 딱 맞는 절대 기준은 아닙니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 폰 노이만 구조와 하버드 구조에서 명령과 데이터가 지나는 경로를 그려 봅니다.
  2. ENIAC과 UNIVAC이 각각 어떤 면에서 중요한지 구분해 적어 봅니다.
NET / 1강

컴퓨터네트워크

컴퓨터네트워크

컴퓨터 네트워크 첫걸음: 프로토콜·OSI·주소

서로 다른 장치가 데이터를 주고받는 약속과 연결 장비의 역할을 배우고, OSI 7계층·IP 주소·DNS의 관계를 살펴봅니다.

기억할 세 가지
  • 네트워크는 연결된 장치가 정보를 주고받는 체계입니다. 프로토콜은 데이터 형식, 의미, 보내는 순서 같은 공동 규칙입니다.
  • 리피터는 신호를 다시 전달하고, 브리지는 네트워크 구간을 이어 주며, 라우터는 다른 네트워크 사이에서 다음 경로를 고릅니다.
  • IP 주소는 네트워크에서 목적지를 찾는 데 쓰입니다. IPv4와 IPv6는 주소 길이와 표현 방식이 다릅니다.
강의 내용 펼치기
01

네트워크와 프로토콜

  • 네트워크는 연결된 장치가 정보를 주고받는 체계입니다. 프로토콜은 데이터 형식, 의미, 보내는 순서 같은 공동 규칙입니다.
  • 클라이언트는 서비스를 요청하고 서버는 응답합니다. 한 장치가 상황에 따라 두 역할을 모두 맡을 수 있습니다.
02

연결 장비와 계층 나누기

  • 리피터는 신호를 다시 전달하고, 브리지는 네트워크 구간을 이어 주며, 라우터는 다른 네트워크 사이에서 다음 경로를 고릅니다.
  • OSI 7계층은 통신 기능을 나눠 이해하는 참고 모델입니다. 실제 인터넷은 TCP/IP 프로토콜 모음으로 동작하므로 두 체계를 일대일로 같다고 보지 않습니다.
03

이름에서 주소로

  • IP 주소는 네트워크에서 목적지를 찾는 데 쓰입니다. IPv4와 IPv6는 주소 길이와 표현 방식이 다릅니다.
  • DNS는 사람이 읽는 도메인 이름을 접속에 필요한 주소로 찾는 체계입니다. 주소를 찾았다고 데이터 전달까지 보장되는 것은 아닙니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 도메인 이름을 입력한 뒤 DNS 조회부터 서버 응답까지의 단계를 그려 봅니다.
  2. OSI 모델과 TCP/IP 프로토콜 모음의 차이를 한 문장으로 설명해 봅니다.
DC / 2강

데이터통신

데이터통신

데이터통신의 개요와 OSI 7계층

데이터와 정보의 차이에서 출발해 통신 시스템의 장치와 신호 변환, 오류를 줄이는 방법, 프로토콜·OSI 7계층과 표준화를 살펴본 강의입니다.

기억할 세 가지
  • 데이터는 숫자·문자·기호처럼 기록하거나 처리할 수 있는 값입니다. 정보를 만들기 전의 재료라고 생각하면 쉽습니다. 정보는 데이터를 처리해 의미를 얻은 결과로, 기온 측정값을 모아 만든 일기예보가 예입니다.
  • 강의는 전화와 초기 컴퓨터, ARPANET을 거쳐 인터넷과 IoT로 이어지는 발전 흐름을 살폈습니다. 기계끼리 정보를 주고받는 M2M과 자율주행은 연결된 시스템의 사례입니다.
  • 전송 중 잡음이나 신호 약화가 생기면 값이 잘못 전달될 수 있습니다. 리피터는 약해진 신호를 재생하고, 오류 제어는 잘못된 데이터가 있는지 확인하거나 다시 보내게 합니다.
강의 내용 펼치기
01

데이터·정보·통신과 ICT

  • 데이터는 숫자·문자·기호처럼 기록하거나 처리할 수 있는 값입니다. 정보를 만들기 전의 재료라고 생각하면 쉽습니다. 정보는 데이터를 처리해 의미를 얻은 결과로, 기온 측정값을 모아 만든 일기예보가 예입니다.
  • 데이터통신은 송신자와 수신자가 유선 또는 무선 전송 매체를 통해 데이터를 주고받는 일입니다. 정확하게, 효율적으로, 안전하게 전달하는 것이 중요합니다.
  • 정보통신에는 음성·이미지·영상·멀티미디어 통신 등 여러 형태가 있습니다. ICT는 정보 기술과 통신 기술을 함께 다루며, IoT처럼 사물이 네트워크로 연결되는 사례도 포함합니다.
02

통신 기술의 발전과 구성

  • 강의는 전화와 초기 컴퓨터, ARPANET을 거쳐 인터넷과 IoT로 이어지는 발전 흐름을 살폈습니다. 기계끼리 정보를 주고받는 M2M과 자율주행은 연결된 시스템의 사례입니다.
  • 데이터 통신 시스템은 데이터를 보내고 받는 단말, 전송 회선, 신호 변환 장치, 전송 제어 장치, 데이터를 처리하는 컴퓨터로 이루어집니다.
  • DTE는 데이터를 보내거나 받는 단말입니다. DCE는 단말을 회선에 연결해 신호를 주고받게 돕는 장치입니다. CCU는 회선 접속과 전송 제어, 오류 확인을 맡습니다.
03

정확하고 효율적이며 안전한 전송

  • 전송 중 잡음이나 신호 약화가 생기면 값이 잘못 전달될 수 있습니다. 리피터는 약해진 신호를 재생하고, 오류 제어는 잘못된 데이터가 있는지 확인하거나 다시 보내게 합니다.
  • 채널 코딩은 여분의 비트를 더해 오류를 찾아내거나 고칠 수 있게 합니다. 해밍 코드는 오류 정정의 예이고, CRC는 오류 검출에 쓰입니다. 강의는 5G 데이터 전송에서 LDPC를 활용하는 사례도 소개했습니다.
  • 소스 코딩은 원본 데이터를 디지털로 표현하거나 압축해 보낼 양을 줄입니다. 다중화는 여러 신호가 하나의 전송 경로를 함께 쓰도록 합니다.
  • 보안 코딩은 제삼자가 내용을 읽기 어렵게 암호화합니다. 대칭키 방식은 송신자와 수신자가 같은 비밀키를 사용합니다.
04

신호 변환 장치의 역할

  • 모뎀은 디지털 데이터와 아날로그 신호를 서로 변환해 전송합니다. 전통적인 전화망 모뎀과 더 넓은 대역을 쓰는 케이블 모뎀은 사용 환경이 다릅니다.
  • DSU와 CSU는 디지털 회선에 맞게 신호를 연결하고 변환하는 장치입니다. 리피터는 멀리 가면서 약해진 신호를 다시 전달합니다.
  • 모든 네트워크에서 이 장치를 똑같이 쓰는 것은 아닙니다. 사용하는 회선과 장비에 따라 필요한 신호 변환 방식이 달라집니다.
05

프로토콜과 OSI 7계층

  • 프로토콜은 서로 다른 장치가 통신할 때 지키는 약속입니다. 신텍스는 메시지 형식, 시맨틱스는 각 부분의 의미, 타이밍은 보내고 받는 시점과 속도를 정합니다.
  • 긴 메시지는 작은 단위로 나누어 보내고 다시 합칩니다. 순서화는 도착 순서를 맞추고, 동기화는 송수신 상태를 맞춥니다.
  • 흐름 제어는 수신자가 처리할 수 있는 속도에 맞춰 보내는 양을 조절합니다. 오류 제어는 CRC 등으로 오류를 찾고 ARQ처럼 재전송을 요청합니다.
  • OSI 7계층은 통신 기능을 물리·데이터링크·네트워크·전송·세션·표현·응용으로 나눈 개념 모델입니다. 아래 계층은 신호와 전달을, 위 계층은 응용 프로그램이 쓸 데이터의 표현과 대화를 담당합니다.
  • 계층을 나누면 각 층의 역할과 인터페이스를 분명히 할 수 있습니다. 인터넷에서 널리 쓰는 TCP/IP는 OSI 모델과 구분되는 실제 프로토콜 묶음입니다.
06

통신 표준과 표준화

  • 표준은 서로 다른 회사의 장비와 소프트웨어가 함께 동작하도록 정한 공통 규칙입니다. ISO·ITU-T·IEEE·TTA 같은 기구가 분야별 표준화에 참여합니다.
  • 시장에 널리 퍼진 기술이 사실상 표준처럼 쓰이는 경우를 디팩토 표준이라고 합니다. 공식 기구의 합의로 정한 표준과 형성 방식이 다릅니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 데이터와 정보의 차이를 기온 측정값과 일기예보로 설명해 봅니다.
  2. DTE·DCE·CCU·모뎀·DSU/CSU·리피터가 전송 과정의 어디에 놓이는지 그림으로 그립니다.
  3. 해밍 코드·CRC·LDPC가 각각 오류 검출 또는 정정과 어떻게 연결되는지 비교합니다.
  4. 송신 속도가 10Mbps이고 수신 속도가 1Mbps일 때 흐름 제어가 왜 필요한지 생각해 봅니다.
  5. OSI 7계층을 순서대로 적고 각 계층이 맡는 일을 한 문장씩 써 봅니다.
  6. CRC와 ARQ의 차이를 오류 발견과 재전송 관점에서 정리합니다.
  7. ISO·ITU-T·IEEE·TTA의 역할과 디팩토 표준의 차이를 조사합니다.
데이터통신

회선 구성·다중화·PCM과 네트워크 구조

장치를 어떻게 연결하고 전송 순서를 정하는지부터 여러 신호를 한 회선으로 보내는 방법, 아날로그 신호의 디지털 변환, 네트워크 연결 모양과 규모별 분류까지 살펴본 강의입니다.

기억할 세 가지
  • 점대점 연결은 두 장치가 하나의 회선으로 직접 이어진 형태입니다. 다중점 연결은 여러 장치가 하나의 회선을 함께 쓰는 형태입니다. 한 교실에서 선생님과 학생 한 명만 통화하는 경우와 여러 학생이 차례로 같은 통신 채널을 쓰는 경우를 떠올리면 쉽습니다.
  • 집선은 여러 낮은 속도의 회선에서 들어오는 데이터를 모아 빠른 회선으로 보내는 방식입니다. 각 회선이 늘 바쁘지 않을 때 남는 용량을 함께 활용할 수 있습니다.
  • 부호화는 문자나 숫자 같은 정보를 통신에 쓸 수 있는 부호나 신호로 바꾸는 과정입니다. ASCII는 문자를 숫자 코드에 대응시키는 대표적인 예입니다.
강의 내용 펼치기
01

회선을 연결하고 사용 순서를 정하는 방법

  • 점대점 연결은 두 장치가 하나의 회선으로 직접 이어진 형태입니다. 다중점 연결은 여러 장치가 하나의 회선을 함께 쓰는 형태입니다. 한 교실에서 선생님과 학생 한 명만 통화하는 경우와 여러 학생이 차례로 같은 통신 채널을 쓰는 경우를 떠올리면 쉽습니다.
  • 2선식은 송신과 수신에 같은 한 쌍의 선을 쓰고, 4선식은 보내는 선과 받는 선을 분리합니다. 선의 수만으로 모든 장비의 동시 송수신 가능 여부가 정해지는 것은 아닙니다.
  • 폴링은 중앙 장치가 각 단말에 보낼 데이터가 있는지 차례로 묻는 방식입니다. 셀렉션은 중앙 장치가 데이터를 받을 단말을 골라 보내는 방식입니다. 컨텐션은 여러 장치가 공유 회선을 쓰기 위해 경쟁하는 방식입니다.
02

집선과 다중화

  • 집선은 여러 낮은 속도의 회선에서 들어오는 데이터를 모아 빠른 회선으로 보내는 방식입니다. 각 회선이 늘 바쁘지 않을 때 남는 용량을 함께 활용할 수 있습니다.
  • 다중화는 여러 신호가 하나의 전송로를 함께 쓰도록 나누는 기술입니다. 고속도로 차선을 나누듯 주파수·시간·코드 같은 기준으로 신호를 구분합니다.
  • FDM(주파수 분할 다중화)은 서로 다른 주파수 대역을 나눠 동시에 보냅니다. 라디오 방송에서 각 방송국이 다른 주파수를 쓰는 모습이 예입니다.
  • TDM(시분할 다중화)은 같은 회선을 쓰는 시간을 짧은 차례로 나눕니다. CDM(코드 분할 다중화)은 각 신호에 서로 다른 코드를 사용해 구분합니다. OFDM은 서로 직교하는 여러 부반송파로 데이터를 나누어 보내는 방식으로, LTE·5G 등에서 활용합니다.
03

정보를 신호로 바꾸는 방법과 PCM

  • 부호화는 문자나 숫자 같은 정보를 통신에 쓸 수 있는 부호나 신호로 바꾸는 과정입니다. ASCII는 문자를 숫자 코드에 대응시키는 대표적인 예입니다.
  • 베이스밴드 전송은 디지털 신호를 반송파에 실어 옮기는 변조 없이 전송 매체에 보내는 방식입니다. 다른 방식에서는 디지털 정보로 아날로그 반송파를 변조하며 ASK·FSK·PSK·QAM 등이 예입니다.
  • PCM(펄스 부호 변조)은 소리처럼 연속적으로 변하는 아날로그 신호를 디지털 값으로 바꿉니다. 먼저 일정한 간격으로 값을 뽑는 표본화, 가까운 대표값으로 맞추는 양자화, 그 값을 0과 1로 표현하는 부호화를 거칩니다.
  • 양자화는 연속적인 값을 제한된 단계로 바꾸므로 원래 값과 조금 달라질 수 있습니다. 받는 쪽은 디지털 값을 복호화하고 신호를 재구성해 아날로그 형태로 사용할 수 있습니다.
04

네트워크 토폴로지: 장치가 연결된 모양

  • 버스형은 하나의 공통 선에 장치가 매달린 형태입니다. 연결이 단순하지만 공통 선에 문제가 생기면 영향이 큽니다. 링형은 장치를 고리처럼 이어 놓은 형태로, 연결을 변경할 때 전체 경로를 고려해야 합니다.
  • 스타형은 모든 장치를 중앙 장비에 연결합니다. 한 장치의 선이 고장 나도 다른 장치는 계속 쓸 수 있지만, 중앙 장비가 고장 나면 여러 장치가 영향을 받습니다.
  • 트리형은 가지가 뻗듯 여러 단계로 연결한 형태입니다. 메시형은 장치 사이에 여러 경로를 둔 그물망 형태여서 한 경로가 끊겨도 우회할 수 있습니다. 다만 연결과 관리가 복잡해질 수 있습니다.
  • 이 이름들은 연결 구조를 설명합니다. 특정 토폴로지에 동축 케이블·꼬임선·광케이블 중 하나만 쓸 수 있다는 뜻은 아닙니다.
05

네트워크를 규모로 분류하기

  • LAN은 집·학교·사무실처럼 비교적 좁은 구역을 잇는 근거리 통신망입니다. MAN은 도시 규모의 지역망, WAN은 도시나 국가를 넘어 넓은 지역을 잇는 광역 통신망입니다.
  • LAN·MAN·WAN은 대략적인 범위에 따른 분류입니다. 실제 경계와 운영 방식은 네트워크 설계에 따라 달라질 수 있습니다.
복습 아이디어

강의 내용을 바탕으로 만든 연습입니다. 공식 과제 여부는 확인되지 않았습니다.

  1. 점대점과 다중점 연결을 각각 그림으로 그리고, 폴링과 셀렉션에서 데이터가 향하는 방향을 표시해 봅니다.
  2. FDM·TDM·CDM이 하나의 회선을 나누는 기준을 비교하고 일상적인 예를 하나씩 찾아봅니다.
  3. 소리를 디지털로 바꾸는 PCM의 표본화·양자화·부호화 순서를 말로 설명해 봅니다.
  4. 버스형·링형·스타형·트리형·메시형을 그려 보고 중앙 장비나 한 연결이 고장 났을 때의 영향을 비교합니다.
  5. 집 안의 Wi-Fi, 도시의 통신망, 멀리 떨어진 지역을 잇는 통신망을 LAN·MAN·WAN으로 분류해 봅니다.

강의 기록은 태계랩에 연결된 정보처리 학습 앱의 요약을 바탕으로 다시 썼습니다. 코드 사례는 배운 내용을 이해하는 데 쓰며, 프로젝트가 강의 이후에 만들어졌다는 뜻은 아닙니다.

확대한 웹앱 화면