목차

1장 컴퓨터와 자료
2장 자료구조
3장 알고리즘
4장 컴퓨터 구조
5장 운영체제
6장 프로그래밍 언어
7장 데이터베이스
8장 컴퓨터 네트워크
9장 인공지능

 

1장 컴퓨터와 자료

(1) 컴퓨터
- 컴퓨터 → 프로그램이 가능한 자료처리기

 

- 프로그램 → 컴퓨터가 자료를 어떻게 처리할지를 알려주는 일련의 명령어의 집합으로, 처리 가능한 작업의 유형과 연산의 집합을 결정
- 초기(1930년대~1950년대)의 특징적인 전자식 컴퓨터 → ENIAC, EDVAC - 컴퓨터 기술의 세대별 분류 → 1세대~5세대
- 컴퓨터의 분류 → 사용 목적(범용 컴퓨터, 전용 컴퓨터), 자료 표현 방식(디지털 컴퓨터, 아날로그 컴퓨터), 성능(슈퍼 컴퓨터, 대형 컴퓨터, 미니 컴퓨터, 워크스테이션, 마이크로 컴퓨터)

 

(2) 컴퓨터과학
- 다양한 관점에서의 컴퓨터과학의 정의
  ▸ 자료의 획득, 표현, 처리, 저장, 통신, 접근을 위한 방법들의 실행 가능성, 구조화, 표현, 기계화에 관련된 내용을 다루는 학문
▸ 컴퓨터 자체, 자료, 프로그램, 알고리즘의 연구를 통해 효율적인 자료 처리를 위한 제반 기술과 방법들을 제공하기 위한 학문
  ▸ 알고리즘과 관련된 이슈를 다루는 학문

 

- 컴퓨터공학 vs 컴퓨터과학
▸ 컴퓨터공학 : 가격 대비 성능 특성이 가장 좋은 컴퓨터 엔진을 만들기 위해 하드웨어와 소프트웨어 요소를 조립하는 방법에 관심을 둠
▸ 컴퓨터과학 : 현재의 기술에 덜 의존적인 방식으로 주어진 문제에 대한 해결책이 효율적이고 실현할 수 있도록 하는 데 초점을 맞춤

 

(3) 컴퓨터 시스템
- 완전한 컴퓨터 시스템을 구성하는 4가지 요소 → 하드웨어, 소프트웨어, 자료, 사용자
▸ 하드웨어 : 컴퓨터를 구성하는 물리적인 기계 장치
▸ 소프트웨어 : 프로그램을 총체적으로 표현하는 것이며, 크게 시스템 소프트웨어와 응용 소프트웨어로 구분
▸ 자료(데이터) : 컴퓨터가 처리하는 대상으로 컴퓨터 내부에서 비트 패턴으로 변환되어 처리되며, 출력할 때에는 우리가 알아볼 수 있도록 적절한 변환 과정을 다시 거쳐야 함
▸ 사용자 : 컴퓨터가 자료를 처리하는 전반적인 과정에 다양하고 적극적인 형태로 개입함

- 폰 노이만 모델은 컴퓨터의 내부 구조와 처리 과정을 정의한 모델이다.
▸ 컴퓨터는 4개의 서브시스템인 기억장치, 산술논리연산장치, 제어장치, 입출력장치로 구성된다.
▸ 실행될 프로그램은 메모리에 적재되어야 한다. : 내장 프로그램 방식
▸ 프로그램은 기본 명령어들의 유한개의 조합으로 구성된다.

 

(4) 자료와 정보
- 자료 정보의 관계 : 정보 = 처리기(자료) I = P(D)
- 자료처리 : 자료를 정보로 가공하고 변환하는 일련의 과정
- 자료 : 현실 세계로부터 관찰이나 측정을 통해 단순히 얻어지는 사실이나 값
- 정보 : 자료를 가공 또는 변환 등의 처리 과정을 거쳐서 얻어진 결과로서, 어떤 상황에 대해 적절한 의사결정을 수행할 수 있게 하는 지식
- 모든 자료는 유형에 상관없이 일관된 자료 표현 방식인 비트 패턴으로 표현된다.
- 자료의 표현 단위 : 비트, 바이트, 워드, KB, MB, GB, TB, PB 등

 

(5) 진법
- r 진법 : 0, 1, …, r-1까지의 숫자만을 사용해서 수를 표현하는 방식/단위
- 컴퓨터에서는 2진법만을 사용 : 진법(8진법, 10진법, 16진법) 간의 변환이 필요
▸ 2진수를 10진수로 변환 : 각 비트와 해당 위치에 따른 가중치의 곱을 모두 더한다.
▸ 10진수를 r 진수로 변환 : 정수 부분과 소수 부분을 나눠서 변환 (☞ 교재 그림 1.8~1.9)
▸ 2진수와 8진수/16진수의 관계 : 2진수의 3자릿수 = 8진수의 1자릿수, 2진수의 4자릿수 = 16진수의 1자릿수

 

(6) 정수 표현 방법
- 정수 표현 방법은 크게 부호 없는 정수와 부호 있는 정수로 나눌 수 있고, 부호 있는 정수의 경우에는 다시 부호화-크기 방식, 1의 보수 방식, 2의 보수 방식으로 나눌 수 있다.
▸ 부호 없는 정수 : 부호 비트가 없으며, 주어진 n 비트 전체로 정수(0~2n-1)를 표현한다.
▸ 부호화-크기 방식 : 최상위 1비트를 부호 비트로 사용하고, 음의 정수는 음수에 대한 절대값으로 표현
▸ 1의 보수 방식 : 부호 비트 사용. 음의 정수는 양의 정수 표현에 대한 보수(0 -1, 1 :-0)를 취해서 표현
▸ 2의 보수 방식 : 부호 비트 사용. 음의 정수는 1의 보수 방식의 결과에 1을 더해서 표현

 

(7) 실수 표현
- 부동소수점 방식을 사용해서 표현
- -10.100011011×25 : (-1)부호×가수×2지수 → 부호(1비트)+지수(m비트)+가수(n비트)
- 지수의 표현
▸ 초과표기법 : 부동소수점의 지수 부분만을 위한 표기 방법으로, m비트가 할당된 경우 두 개의 매직 넘버(초과_2m-1, 초과_2m-1-1)가 존재
▸ 지수값을 저장하는 경우 : (지수값 + 매직 넘버)를 이진수로 표현
▸ 지수값을 해석하는 경우 : 이진수를 십진수로 변환한 값에서 매직 넘버를 뺀다. - 가수의 표현
▸ 정규화 :소수점 바로 왼쪽에 오직 하나의 1만 있도록 소수점의 위치를 조정, 가수값을 저장하는 경우에는 소수점 이하 부분만 저장한다.

 

(8) 문자 표현
- 각 문자마다 유일한 코드 할당이 이루어지며, 이를 위해 약속된 문자 체계가 필요
▸ 대표적인 종류로는 ASCII(또는 확장된 ASCII)와 유니코드가 있다.

 

2장 자료구조

(1) 자료구조
- 자료 사이의 논리적 관계를 컴퓨터나 프로그램이 더 쉽게 이해하고 다룰 수 있도록 구성한 것

 

(2) 배열
- 같은 자료형을 갖는 여러 개의 데이터를 하나의 변수로 묶어놓은 데이터의 집합체이며, 각 원소를 구분하기 위해 인덱스(또는 첨자)와 데이터값의 쌍으로 이루어짐
- 배열의 원소들은 연속적인 기억장소에 저장되어 순차적으로 저장되기 때문에 배열의 시작주소와 각 자료형의 크기를 알면 i번째 원소의 주소를 알면, 직접 접근이 가능함
- 다차원 배열이 저장되는 방식으로는 열 우선 순서와 행 우선 순서가 있음

 

(3) 연결 리스트
- 노드들을 연결하여 구성하는 것으로, 한 노드는 데이터 필드와 링크 필드로 구성됨
- 단일 연결 리스트 : 링크 필드가 하나이고, 한 방향으로만 검색이 가능함
- 이중 연결 리스트 : 2개의 링크 필드를 사용해서 양방향(선행 노드 방향, 후행 노드 방향)의 검색이 가능함
- 원형 연결 리스트 : 마지막 노드의 링크 필드가 첫 번째 노드에 연결되어, 한 방향이지만 전체 연결 리스트를 원형으로 연결함

 

(4) 스택
- 리스트의 한쪽 끝에서만 삽입과 삭제가 이루어지는 후입선출(LIFO) 구조

 

(5) 큐
- 리스트의 한쪽 끝에서는 삽입, 다른 한쪽 끝에서는 삭제가 이루어지는 선입선출(FIFO) 구조

 

(6) 트리 : 노드와 가지로 구성되어 나무뿌리 모양의 데이터의 계층 관계를 나타내는 자료구조
- 이진 트리 : 차수가 2인 트리를 이진 트리
- 포화이진 트리 : 이진 트리 중에서도 깊이가 k인 이진 트리가 가질 수 있는 최대 노드의 개수(2k-1)를 가진 이진 트리
- 완전이진 트리 : 총 노드의 개수가 (2k+1-1)을 초과하지 않으면서 포화이진 트리의 번호와 일치하는 이진 트리
- 경사 이진 트리 : 한쪽 방향으로 치우친 트리

 

(7) 트리 순회 방법으로 전위 순회, 중위 순회, 후위 순회가 있음

 

(8) 그래프 : 정점들의 유한 집합과 정점들의 쌍을 연결하는 간선의 유한집합
- 그래프의 표현 : 인접 행렬, 인접 리스트
- 그래프 순회 방식 : 깊이 우선 탐색, 너비 우선 탐색

 

3장 알고리즘

(1) 컴퓨터 알고리즘이란?
- 주어진 문제에 대한 하나 이상의 결과를 생성하기 위해 모호함이 없는 간단하고 컴퓨터가 수행 가능한 일련의 유한개의 명령을 순서에 따라 구성한 것
- 알고리즘이 만족해야 할 조건 → 입출력, 명확성, 유한성, 유효성

 

- 프로그램 = 자료구조 + 알고리즘

(2) 대표적인 알고리즘의 설계 방법
- 욕심쟁이 방법, 분할정복 방법, 동적 프로그래밍 방법

(3) 욕심쟁이 방법
- 해를 구하는 일련의 선택 과정마다 전후 단계의 선택과는 상관없이 그 단계에서 가장 최선이라고 볼 수 있는 국부적인 최적해를 선택해 나가면, 결과적으로 전체적인 최적해를 구할 수 있을 것이라는 희망적인 전략을 취하는 방법이다.
- 여기서 '희망적'이라는 표현은 욕심쟁이 방법을 적용해도 최적해를 구할 수 없는 경우도 존재한다는 것을 의미한다
- 욕심쟁이 방법이 적용 가능한 문제
▸ 거스름돈 문제 → 가게에서 고객에게 돌려줄 거스름돈이 있을 때 고객이 받을 동전의 개수를 최소로 하면서 거스름돈을 돌려주는 방법을 찾는 문제
▸ 배낭 문제 → 배낭의 용량을 초과하지 않는 범위에서 배낭에 들어 있는 물체의 이익의 합이 최대가 되도록 물체를 배낭에 넣은 방법을 찾는 문제로서, 물체를 쪼갤 수 있다고 가정하며, 만약 물체를 쪼갤 수 없는 경우의 배낭 문제는 욕심쟁이 방법으로 해결할 수 없다.

(4) 분할정복 방법
- 순환적으로 문제를 푸는 방식으로 문제를 더는 쪼갤 수 없을 때까지 작은 문제로 나누고, 이렇게 나누어진 작은 문제를 각각 해결한 후 이들의 해를 결합하여 원래 문제의 해를 구하는 하향식 접근 방법으로, 각 순환 호출 시마다 분할, 정복, 결합의 세 단계를 거친다.
- 적용 가능한 문제 → 퀵 정렬, 합병 정렬, 이진 탐색
- 분할된 문제들은 독립적이어야 한다.

(5) 동적 프로그래밍 방법
- 주어진 문제를 여러 개의 부분 문제로 분할하고, 가장 작은 부분 문제부터 해를 구하여 테이블에 저장해 놓고 이를 이용하여 입력 크기가 더욱 큰 원래의 문제를 점진적으로 해결하는 상향식 접근 방법이다.
- 적용 가능한 문제 → 모든 정점 쌍 간의 최단 경로를 구하는 플로이드 알고리즘
- 부분 문제들은 독립적이지 않아도 된다.

(6) 알고리즘 분석은 두 가지 측면에서 수행
- 정확성 분석 → 올바른 입력이 주어졌을 때 유한 시간 내에 정확한 결과를 산출하는지의 여부를 판단한다.
- 효율성 분석 → 알고리즘 수행에 필요한 컴퓨터 자원의 양을 측정, 즉 소요되는 메모리 공간의 크기(“공간 복잡도”)와 수행에 걸리는 시간(“시간 복잡도”)을 추정한다.
- 시간 복잡도
▸ 수행 시간 = 알고리즘에서 사용된 단위 연산들의 수행횟수의 합
▸ 수행 시간은 일반적으로 입력 크기(입력되는 데이터의 크기) n의 함수로 표현
▸ 데이터의 입력 상태에 따라 수행 시간은 달라지며, 일반적으로 최악의 수행 시간을 사용

 

(7) 점근 성능
- 입력의 크기 n이 충분히 커질 때 알고리즘의 수행 시간이 무엇에 의해 좌우되는가를 나타내는 것
→ 수행 시간이 다항식으로 표현되는 경우에는 입력의 크기가 커짐에 따라 상수항과 차수가 낮은 항들의 역할이 감소하게 되고, 결국 n의 최고차항에 좌우된다.
- 표기법
① “Big-oh” 점근적 상한 f(n)=O(g(n))
② “Big-omega” 점근적 하한 f(n)=Ω(g(n))
③ “Big-theta” 점근적 상하한 f(n)=Θ(g(n))
- 시간 복잡도 함수 간의 크기 관계 : O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < … < O(2n)

 

(8) 정렬의 정의 및 관련 개념

- 정렬 : 여러 원소로 구성된 리스트에 대해서 이 원소들을 키값의 크기 순서에 따라 재배열하는 것
- 내부 정렬과 외부 정렬
▸ 내부 정렬 → 모든 데이터를 주기억장치에 저장한 후 정렬하는 방식
▸ 외부 정렬 → 모든 데이터를 주기억장치에 저장할 수 없어서 일부 데이터는 주기억장치에 있고 나머지 데이터는 보조기억장치에 저장된 채 정렬을 하는 방식
- 비교 기반 정렬과 분포 기반 정렬

 

▸ 비교 기반 정렬 → 데이터의 키값을 직접 비교하여 정렬하는 방식 (선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 합병 정렬)
▸ 분포 기반 정렬 → 데이터의 분포 정보를 이용하여 정렬하는 방식 (계수 정렬, 기수 정렬)

(9) 선택 정렬
- 정렬되지 않은 데이터 중에서 가장 작은 키값을 갖는 원소를 선택한 후, 이것을 미정렬 데이터의 첫 번째 원소와 교환하는 과정을 반복하여 정렬을 수행하는 방법
- 데이터의 입력 상태에 민감하지 않은 수행 시간 O(n2)

(10) 버블 정렬
- 인접한 두 원소를 차례대로 비교하면서 (오름차순의 경우) 왼쪽 데이터의 키값이 오른쪽 데이터의 키값보다 큰 경우 자리바꿈을 통하여 정렬하는 방법
- 주어진 데이터가 이미 정렬된 경우에는 최선의 수행 시간 O(n)을 갖고, 데이터가 역순으로 정렬된 경우에는 최악의 수행 시간 O(n2)을 가짐

(11) 삽입 정렬
- 미정렬 부분의 첫 번째 원소를 하나씩 꺼내어 정렬된 부분에서 바른 위치에 삽입하여 나열하는 방법
- 주어진 데이터가 이미 정렬된 경우에는 최선의 수행 시간 O(n)을 갖고, 데이터가 역순으로 정렬된 경우에는 최악의 수행 시간 O(n2)을 가짐

(12) 퀵 정렬
- 특정 원소를 기준으로 주어진 원소들을 두 서브 리스트로 분할하고, 각 서브 리스트에 독립적으로 퀵 정렬을 순환적으로 적용하여 정렬하는 방식
- 피벗 → 리스트를 두 개의 서브 리스트로 분할할 때 기준이 되는 원소로서, 간단히 리스트의 첫 번째 원소를 피벗으로 지정한다.
- 분할 과정 → 퀵 정렬의 가장 핵심적인 부분으로, 피벗을 중심으로 두 서브 리스트로 분할하는 과정 → O(n)
- 최악의 경우 → 피벗 하나만 제자리를 잡고, 나머지 모든 원소가 하나의 서브 리스트로 분할되는 경우 = 피벗이 리스트에서 항상 최대값이나 최소값이 되는 경우 = 입력 데이터가 이미 정렬되어 있고 피벗이 리스트의 맨 왼쪽 원소로 선택되는 경우 → O(n2)
- 최선의 경우 → 피벗을 중심으로 리스트가 거의 같은 크기의 두 개의 서브 리스트로 나뉘는 경우 → O(nlogn)
- 평균 수행 시간 → 피벗 선택의 임의성이 확보되는 경우 → O(nlogn)

(13) 합병 정렬
- 주어진 리스트를 동일한 크기의 두 개의 서브 리스트로 분할하고 각 서브 리스트를 순환적으로 정렬한 후 정렬된 두 서브 리스트를 합병하여 하나로 나열하는 방식
- 합병 과정 → 정렬된 두 서브 리스트를 합병하여 하나의 정렬된 리스트를 만드는 과정
- 최악/평균적인 경우의 시간 복잡도 → O(nlogn)
- 퀵 정렬과 합병 정렬은 모두 분할정복 방법을 적용한 알고리즘이다.

(14) 순차 탐색
- 주어진 원소들을 하나씩 차례로 탐색키와 비교하면서 원하는 키값을 갖는 원소를 찾는 방법 (일반적으로 왼쪽에서부터 하나씩 비교한다)
- 모든 리스트에 적용 가능, 특히 비정렬 데이터의 탐색에 적합한 방법
- 시간 복잡도 O(n)

(15) 이진 탐색
- 정렬된 리스트 형태로 주어진 원소들에 대해 분할정복 방법을 적용한 탐색 방법
- 탐색 방법: 탐색하려는 키와 주어진 리스트의 가운데 원소의 키를 비교해서
▸ 탐색키 = 가운데 원소의 키 ⇒ 탐색 성공
▸ 탐색키 < 가운데 원소의 키 ⇒ 주어진 리스트의 전반부를 탐색 범위로 재지정한 후 이진 탐색을 순환 호출한다.
▸ 탐색키 > 가운데 원소의 키 ⇒ 주어진 리스트의 후반부를 탐색 범위로 재지정한 후 이진 탐색을 순환 호출한다.
- 탐색을 한 번 수행할 때마다 탐색 대상이 되는 원소의 개수가 반씩 감소
- 시간 복잡도 O(logn)
- 삽입/삭제 시 정렬된 상태를 유지하기 위한 자료의 이동(평균 n/2번, 최악 n번)으로 인한 오버헤드가 발생
→ 삽입/삭제가 빈번한 경우 부적합

(16) 이진 탐색 트리
- 이진 탐색 트리란? 각 노드 x의 왼쪽 서브 트리의 모든 키는 x의 키보다 작고 오른쪽 서브 트리의 모든 키는 x의 키보다 크다는 조건을 만족시키는 이진 트리
- 탐색 연산 → 루트 노드로부터 시작해서 크기 관계에 따라 트리의 경로를 따라 내려가면서 진행
- 삽입 연산 → 우선 트리를 탐색한 후, 탐색이 실패한 지점에 자식 노드를 생성하여 삽입
- 삭제 연산 → 삭제되는 노드의 자식 개수에 따라 3가지 경우로 나누어 수행
① 자식이 없는 경우(리프 노드): 남은 노드의 위치 조절이 필요하지 않음
② 자식이 하나만 있는 경우: 자식 노드를 삭제되는 노드의 위치로 올리면서 서브 트리 전체도 따라 올린다.
③ 자식이 두 개 모두 있는 경우: 후속자(successor) 노드를 삭제되는 노드의 위치로 올리고, 후속자 노드의 자식 노드를 후속자 노드의 위치로 올리면서 그 서브 트리 전체도 따라 올린다. (successor 노드란? 어떤 노드의 바로 다음 키값을 갖는 노드)
- 평균적인 탐색 시간은 O(logn)이며, 최악의 경우(경사 이진 트리가 생성되는 경우)에는 O(n)이 된다.

(17) 해싱
- 배열에서 인덱스가 주어졌을 때 이를 이용하여 원하는 원소를 상수 시간에 찾듯이, 원소의 키값을 이용하여 데이터 저장을 위한 테이블의 주소를 직접 계산하여 상수 시간 내에 접근할 수 있는 탐색 방법
- 해시 함수 → 키 값을 해시 테이블 주소로 변환하는 함수
▸ 제산 잔여법, 중간 제곱법, 폴딩법, 자릿수 추출법, 기수 변환법 등
- 충돌 해결 방법
▸ 충돌 → 서로 다른 키값 x, y에 대하여 해시 테이블의 주소가 같게 되는 경우
▸ 연쇄법 → 동일한 주소로 해시되는 모든 원소를 연결 리스트 형태로 구성하여 관리
▸ 개방 주소법 → 테이블 내의 다른 곳에 충돌된 데이터를 저장/관리하기 위해서 정해진 방법에 따라 테이블의 다른 위치를 탐사하는 방법 → 종류: 선형 탐사, 이차형 탐사, 이중 해싱

4장 컴퓨터 구조

(1) 컴퓨터 하드웨어의 기본 구성요소
- 중앙처리장치 = 제어장치 + 산술논리연산장치 + 레지스터
- 기억장치, 입력장치, 출력장치
- 시스템 버스 = 주소 버스 + 데이터 버스 + 제어 버스

 

(2) 불대수
- 이진 변수와 논리연산을 나타내는 대수
- 기본 논리연산 → 논리곱(AND), 논리합(OR), 논리부정(NOT)
- 논리 게이트 → 논리연산을 실제 하드웨어로 구현한 것

- 논리회로 → 논리 게이트들로 구성되며, 조합회로와 순차 회로로 구분

(3) 조합회로와 순차회로
- 조합회로
▸ 출력값이 단순히 현재 입력값에 의해서만 결정되는 회로
▸ 종류 → 전가산기, 디코더, 멀티플렉서
▸ 1비트 전가산기 → 두 개의 비트와 바로 아래 자리에서 올라오는 올림 수를 입력으로 받아서 덧셈을 수행하는 회로, n 비트 전가산기는 1비트 전가산기를 직렬로 연결해 구성
▸ 디코더 → n비트의 이진 코드를 최대 2n개의 서로 다른 정보로 변환해 주는 장치
▸ 멀티플렉서 → 2n개의 데이터 입력선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로

- 순차 회로
▸ 출력값이 입력값과 기억소자에 저장된 현재 상태에 따라 결정되는 회로
▸ 플립플롭 → 1비트의 상태를 저장하기 위한 기억소자
▸ 종류 → 카운터, 레지스터
▸ 카운터 → 클록 펄스가 입력될 때마다 저장된 이진수의 값을 1씩 증가시키는 장치

(4) 기억장치
- ROM → 한 개의 디코더와 여러 개의 OR 게이트를 사용한 조합회로로 구성 가능
- RAM → 1비트 RAM 기억소자(한 개의 RS플립플롭, 3개의 AND 게이트, 2개의 NOT로 구성), 디코더, OR 게이트를 사용한 순차 회로로 구성 가능하지만, 실제로는 플립플롭이 아닌 축전지로 구현된 DRAM을 사용
- 계층적 구조
▸ 접근 속도와 저장 용량에 따라 기억장치를 구분
→ CPU가 데이터에 접근하면서 가장 적은 비용으로 가장 높은 성능을 얻기 위해 참조의 지역성에 기반을 둔 전략
▸ 레지스터 - 캐시기억장치 - 주기억장치 - 보조기억장치

(5) 명령어
- 명령어 세트 → 컴퓨터 시스템 내에 정의되어 있는 기본적인 명령어들의 집합
- 명령어의 형식과 복잡성에 따른 컴퓨터 구조
▸ CISC → 복합명령어를 포함하여 명령어와 주소지정방식의 수를 많이 사용함으로써 프로그램에 사용되는 전체 명령어의 수를 줄여서 프로그램의 실행 시간을 줄이기 위한 구조
▸ RISC → CISC의 복잡한 명령어를 단순화하여 명령어의 수를 줄이고 하드웨어를 간단히 개신시킨 구조로 각 명령어의 길이를 가능한 한 짧게 함으로써 각 명령어의 실행 시간을 최소화하기 위한 것

- 명령어 형식
▸ 명령어 = 연산자 코드 + 오퍼랜드
▸ 종류(오퍼랜드의 개수에 따른 구분) → 3-주소 명령어, 2-주소 명령어, 1-주소 명령어, 0-주소 명령어
▸ 각 명령어의 연산자와 오퍼랜드는 고유의 이진 패턴으로 표현되고, 프로그램은 이런 2진수가 나열의 형태로 주기억장치에 저장된다.

- 주소지정방식
▸ 연산에 사용될 데이터가 기억장치의 어디에 위치하는 지를 지정하는 방식
▸ 종류 → 즉시 주소지정방식, 직접 주소지정방식, 간접 주소지정방식, 레지스터 주소지정방식, 레지스터 간접 주소지정방식, 상대 주소지정방식, 인덱스된 주소지정방식

(6) 중앙처리장치
- 명령어의 구현 방법
   ▸ 마이크로프로그램에 의한 제어장치
→ 연산과 명령어 수행 순서 조작회로가 제어기억장치에 저장된 마이크로프로그램으로 기동되는 장치
▸ 직접 회로로 구성된 제어장치
  → 연산과 명령어 수행 회로가 직접 구성된 제어회로에 의해 기동되는 장치
- 특수 레지스터
▸ 누산기(AC), 기억장치 버퍼 레지스터(MBR), 기억장치 주소 레지스터(MAR), 프로그램 카운터(PC), 명령어 레지스터(IR)

- 처리장치 = 연산장치 + 레지스터
▸ 수행되는 모든 연산의 기능은 비트 패턴으로 이루어진 마이크로연산으로 구현
▸ 각 마이크로 연산은 제어단어로 일대일 관계를 가짐

- 제어장치
▸ 기본 기능
① 처리장치를 특정 연산을 수행한 후 처리장치 내의 레지스터 값을 갱신하고 연산 결과를 출력.
② 현재 주어진 명령을 수행한 후 다음에 수행할 명령의 주소정보를 생성
▸ 명령어 사이클: 인출 - 해독 - 실행 - 저장
▸ 구성요소 → PC, IR, 명령어 해독기, 주소결정회로, 제어기억장치, 제어기억장치 주소 레지스터, 제어기억장치 데이터 레지스터

(7) 입출력장치
- 입출력 시스템의 구성요소 : 입출력장치, 입출력장치 제어기, 입출력장치 인터페이스, 입출력 버스
- 입출력 제어 방식 :CPU에 의한 제어 방식(프로그램에 의한 방식, 인터럽트에 의한 방식), DMA 방식, 채널 방식

(8) 병렬처리
- 파이프라인 처리기 : 프로그램 내에 내재하고 있는 시간적 병렬성을 활용
→ 하나의 연산을 서로 다른 기능을 가진 여러 개의 단계로 분할하여 각 단계가 동시에 서로 다른 데이터를 취급하도록 하여 처리 속도의 향상을 도모
- 멀티코어 구조 : 하나의 CPU에 두 개 이상의 코어를 넣어서 동시에 여러 개의 명령어를 처리할 수 있는 구조

 

5장 운영체제

(1) 운영체제의 주요 기능(자원의 범주) : 프로세서 관리자, 주기억장치 관리자, 장치 관리자, 파일 관리자

(2) 운영체제의 작업 처리 방식
- 일괄처리 시스템 : 처리할 작업이 발생할 때마다 즉각적으로 처리하지 않고 처리해야 할 작업이 일정량에 도달할 때까지 여러 작업을 모아 놓고 작업을 한꺼번에 처리하는 방식
- 다중프로그래밍 시스템 : 여러 개의 프로그램을 효율적으로 실행시키기 위해 여러 개의 프로그램이 컴퓨터 자원이 쉬는 시간에 서로 양보하며 사용하는 방식
- 시분할 처리 시스템 : CPU의 시간을 일정 간격의 작은 시간으로 쪼개서 각 사용자에게 시간 간격이 할당되고, 그동안 직접 컴퓨터와 대화식으로 작업을 수행하는 방식

 

 

 

(3) 주기억장치 할당 방법
- 단일 사용자 연속 기억장치 할당 : 하나의 사용자 프로그램만이 전체 주기억장치에 할당되는 방식
- 고정 분할 다중 프로그래밍 기법 : 다중 프로그래밍 시스템(여러 개의 프로그램이 실행되는 시스템)에서 주기억장치를 여러 개의 고정된 크기의 영역으로 분할하고, 실행 중인 여러 개의 프로세스에 각각 할당하는 방식
- 동적 분할 프로그래밍 기법 : 프로그램이 주기억장치에 적재될 때마다 모든 작업이 필요로 하는 크기 (고정된 크기가 아니라 다양한 크기)만큼 연속된 공간을 할당해주는 방식

(4) 가상기억장치 관리 기법
- 페이징 기법 : 보조기억장치로부터 프로그램 코드나 데이터를 페이지(page)라고 불리는 동일한 크기의 블록으로 쪼개어서 주기억장치에 적재하여 접근하는 방식
- 세그먼테이션 기법 : 세그먼테이션 기법은 프로그램 코드나 데이터를 일정하지 않은 서로 다른 크기로 분할하여 주기억장치에 적재하여 접근하는 방식

(5) 프로세스 : 실행 상태에 있는 프로그램
- 프로세스의 상태 : 생성, 준비, 실행, 대기, 종료

(6) 중앙처리장치 스케줄링 기법: 선점 방식과 비선점 방식
- 기한부 스케줄링: 기한부 스케줄링은 기한이 되면 중앙처리장치를 양보하는 방식
- 우선순위 스케줄링 : 우선순위가 높은 프로세스부터 먼저 처리하는 방식
- FCFS 스케줄링 : 준비 큐에 도착한 순서대로 중앙처리장치를 할당받는 방식
- SJF 스케줄링 : 현재 준비 큐에 있는 프로세스 중에서 수행시간이 가장 짧을 것으로 예상하는 프로세스를 먼저 처리하는 방식
- RR 스케줄링 : 프로세스가 도착한 순서대로 CPU가 할당되지만, CPU의 시간 할당량 또는 시간 간격에 의해 제한하는 방식

(7) 교착상태 : 2개 이상의 프로세스가 대기 중인 프로세스 중의 하나에 의해서만 발생할 수 있는 자원의 획득이나 해제를 무작정 기다리고 있는 상태
- 교착 상태의 필수 조건 : 상호배제 조건, 대기 조건, 비선점 조건, 환형 대기 조건
- 교착 상태 처리 방법 : 교착상태의 방지, 교착상태의 회피, 교착상태의 탐지, 교착상태의 복구

 

(8) 디스크 스케줄링 기법
- FCFS(First-Come First Served) 스케줄링 기법 : 먼저 도착한 디스크 접근 요청이 가장 먼저 서비스를 받는 방법
- SSTF(Shortest Seek Time First) 스케줄링 기법 : 현재 디스크 헤드의 위치에서 가장 짧은 트랙 탐색 거리(또는 탐색 시간)를 가진 디스크 접근 요청을 먼저 처리하는 방식
- SCAN 스케줄링 기법 : 한쪽에서 가장 짧은 탐색 거리의 디스크 접근 요청을 먼저 서비스하는 방식
- SLTF(Shortest Latency Time First) 스케줄링 기법 : 디스크 헤드가 특정 실린더에 도착하면 그 실린더 내의 모든 요구를 검사한 후 가장 짧은 회전지연을 하는 요구들에  우선으로 서비스하는 방식

 

(9) 파일 구조 : 파일을 구성하는 레코드들이 보조기억장치에서의 배치 방법

(10) 디스크 공간 할당 방식
- 연속 할당(contiguous allocation) 기법 : 파일이 보조기억장치에 저장될 때 연속된 물리적 공간을 할당받는 기법
- 불연속 할당(non contiguous allocation) 기법 : 파일을 작은 단위로 나누고, 보조기억장치의 불연속적인 공간을 나누어 할당받는 기법

 

6장 프로그래밍 언어

(0) 프로그래밍 언어 학습 이유
- 프로그래밍 개념의 표현 능력 향상
- 효율적인 알고리즘 개발 능력 향상
- 주어진 과제를 해결하는 적절한 언어의 선택 능력 향상
- 새로운 언어에 대한 적응 능력 향상
- 새로운 언어를 개발할 수 있는 능력 향상

(1) 프로그래밍 언어의 파싱 트리
- 단말 심벌(terminal symbol) : 문장을 이루는 단어들을 단말 심벌
- 비단말 심벌(non-terminal symbol) : 비단말 심벌은 단말 심벌이 아니면서 복합적으로 나열된 단말 심벌과 비단말 심벌의 조합
- 생성 규칙(production rule) : 하나의 비단말 심벌이 어떻게 다른 단말 심벌이나 비단말 심벌을 대체할 수 있는지 정의하는 규칙
- 시작 심벌(start symbol) : 가장 상위 계층의 비단말 심벌로 보통 <문장>에 해당함

(2) 프로그램에서 실행 가능 코드로의 변환
- 어휘분석 : 프로그램을 구성하는 문자들의 나열로부터 단어(token, 토큰)를 추출하는 과정
- 구문 분석 : 어휘 분석의 결과로 나온 토큰들의 나열이 해당 프로그래밍 언어의 문법에 맞는지를 확인하는 과정
- 코드 생성 : 구문 분석의 결과로 변수, 상수, 제어의 흐름 등이 결정되면 이러한 각각의 명령어를 어셈블리어로 풀어쓰거나 직접 기계어 이진 코드가 생성

(3) 프로그래밍 언어의 기본 공통 개념
- 대입문(할당문) : 변수나 기억장치 주소에 값을 저장하는 역할

(1) 변수의 유효범위
- 변수나 기타 식별자가 코드의 어떤 범위에서 유효한가 하는 유효 범위 결정 문제 (변수에 대한 저장장치의 할당이 유지되는가에 대한 문제)

(2) 함수의 매개변수 :
- 매개변수(parameter) : 호출하는 프로그램과 호출되는 함수 사이에서 주고받는 데이터
- 형식매개변수 : 호출되는 함수의 정의에 사용된 매개변수
- 실매개 변수 : 호출하는 프로그램에서 함수를 호출하기 위해 사용된 매개변수

(3) 변수의 수명 : 변수가 값을 저장하기 위해 기억장소를 할당받고 있는 시간

(4) 객체 지향 프로그램을 위한 추상 자료형
- 자료와 그 자료를 처리할 연산을 함께 선언할 수 있어야 하며, 선언은 구현에 의존적이어서는 안 되며, 연산의 선언에는 의미에 대한 명세가 포함되어야 함.
- 정보 은닉(information hiding) 개념을 도입하여 프로그램을 쉽게 읽을 수 있어야 하고 유지 보수를 쉽게 해야 함.

 

7장 데이터베이스

(1) 데이터베이스
- 파일 처리 시스템에서의 데이터 종속성과 데이터 중복성의 문제를 해결하기 위해 데이터 공유의 개념을 바탕으로 등장
- 한 조직의 여러 응용 시스템이 공용으로 사용하기 위한 통합, 저장된 운영 데이터의 집합
- 특성 → 실시간 접근성, 계속적인 변화, 동시 공유, 내용에 의한 참조

 

(2) 데이터베이스 시스템
- 데이터를 데이터베이스에 저장하고 관리해서 필요한 정보를 생성하는 컴퓨터 중심의 시스템
- 3단계 구조
▸ 추상화와 데이터 독립성을 확보하기 위해 3단계(외부 단계, 개념 단계, 내부 단계)로 구성
▸ 스키마 → DB 구조에 대한 정의와 제약조건의 명세를 기술한 것으로 외부 스키마(서브 스키마), 개념 스키마, 내부 스키마(저장 스키마)로 구분
▸ 사상 → 외부/개념 사상과 개념/내부 사상을 통해 데이터 독립성을 제공

 

 

- 구성요소
▸ 데이터베이스
▸ 데이터베이스 관리 시스템(DBMS) : 데이터베이스의 구성, 접근 방법, 관리 유지 등에 대해 모든 책임과 권한을 갖고 응용 프로그램과 데이터의 중재자 역할을 담당하는 소프트웨어 시스템
▸ 데이터 언어 : DBMS와 통신을 할 수 있는 수단으로, 데이터 정의어, 데이터 조작어, 데이터 제어어로 구분
▸ 데이터베이스 사용자 : DB에 접근하는 사람의 총칭, 일반 사용자, 응용 프로그래머, DBA
▸ 데이터베이스 관리자(DBA) : 데이터 정의어와 데이터 제어어를 통해 DB를 정의하고 제어할 목적으로 DB에 접근하여 관리하는 사람
▸ 데이터베이스 기계 : 데이터베이스 관리 기능을 효율적으로 수행할 수 있도록 특화되어 설계된 하드웨어 또는 소프트웨어

(3) 데이터 모델링
- 실세계 데이터를 데이터 모델상의 DB 구조로 변환하는 과정
- 데이터 모델
→ DB 구조를 명시하기 위해 사용할 수 있는 다양한 개념의 집합
→ 지원 개념에 따라 개념적 모델, 구현 모델, 물리적 모델로 구분

- 데이터베이스 구현 모델
▸ 종류 → 관계형 모델, 객체지향형 모델, 객체관계형 모델, 망형 모델, 계층형 모델

- 관계형 모델
▸ 실세계의 정보를 2차원 테이블의 형식으로 나타내 구현한 것
▸ 주요 용어 → 릴레이션, 투플, 속성, 차수, 영역, 카디널리티
▸ 키 → 각 투플에 접근할 때 유일하게 구분되는 속성 집합 → 기본키, 후보키, 외래키
▸ 릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스
▸ 릴레이션의 특징 → 투플의 유일성, 투플의 무순서성, 속성의 무순서성, 속성값의 원자성
▸ 제약조건 → 모든 릴레이션 인스턴스가 만족해야 하는 조건, 영역 제약조건, 키 제약조건, 개체 무결성 제약조건, 참조 무결성 제약조건

(4) 데이터베이스의 설계
- 사용자의 요구 조건에서부터 DB 구조를 도출해 내는 과정
- 요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
▸ 요구 조건 분석 → 데이터 및 처리 요구 조건 분석
▸ 개념적 설계 → DBMS에 독립적인 개념 스키마 설계, 트랜잭션 모델링
▸ 논리적 설계 → 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계
▸ 물리적 설계 → 목표 DBMS에 맞는 물리적 구조 설계, 트랜잭션 세부 설계
▸ 구현 → 목표 DBMS DDL로 스키마 작성, 트랜잭션 작성

 

 

(2) E-R 모델
- 현실 세계에 존재하는 개체와 개체 간의 관계를 사람이 이해할 수 있도록 개념적으로 표현하는 방법
▸ 개체 → 데이터로 표현하려는 실세계의 유무형의 사물로서, 개체의 특성이나 상태를 설명해주는 속성의 집합을 가진다.
▸ 관계 → 개체 집합 사이의 대응성(사상)을 의미하며, 미리 어떤 관계를 정의해놓고 주어진 값을 정의된 관계에 따라 해석하면 유용한 의미의 표현이 가능
▸ E-R 다이어그램 → E-R 모델을 그래프로 표현한 것으로, 기본적으로 개체 타입을 사각형, 관계를 다이아몬드, 속성은 타원으로 나타내고 이들을 연결하는 링크로 구성
▸ E-R 다이어그램을 관계 데이터 모델로 변환하는 논리적 모델링 과정
① 사각형의 개체 타입은 개체 릴레이션으로 변환(개체 타입의 속성은 해당 개체 릴레이션의 속성으로 포함),
② 다이아몬드의 관계 타입은 관계 릴레이션으로 변환 (연관된 개체 타입의 키 속성을 관계 릴레이션의 속성으로 포함, 관계에 속한 속성은 관계 릴레이션의 속성으로 포함)

 

(3) SQL (Structured Query Language )
- 구조화된 질의어
- 데이터 정의어
▸ 스키마, 도메인, 테이블, 뷰, 인덱스를 정의, 변경, 제거하는 문장
▸ CREATE 문, ALTER 문, DROP 문
- 데이터 조작어
▸ 기본 테이블과 뷰를 대상으로 검색, 갱신, 삭제, 삽입을 수행하는 문장
     ▸ SELECT 문, UPDATE 문, DELETE 문, INSERT 문
- 뷰
▸ 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상 테이블
→ 뷰 내용은 물리적으로 구현되어 존재하는 것이 아니라 뷰에 대한 조작을 요구할 때마다 기본 테이블의 데이터를 이용해서 내용을 만드는 것

 

8장 컴퓨터 네트워크

(1) 네트워크의 구성 요소
- 채널(channel) : 모든 통신은 전선, 전화선, 광케이블, 무선 링크 등 통신 매체를 통해서 통신 신호가 전달된다.  통신 신호가 실제로 전달되는 통로
- 주파수(frequency) : 통신채널을 통해 전달되는 통신 신호는 디지털/아날로그 모두 주기성을 가지는 파형의 모습을 가지고 있는데, 이 통신 신호가 초당 몇 번 진동하는가를 계산한 것
- 대역폭(bandwidth) : 대역폭은 통신 채널의 최대 주파수에서 최소 주파수 사이의 주파수 대역
- 노드(node) : 네트워크에 연결된 컴퓨터나 관련 장비
- 네트워크 인터페이스(network interface) : 컴퓨터와 네트워크를 연결해주는 장치
- 프로토콜(protocol) : 통신 프로토콜은 컴퓨터 통신을 위해 통신을 하는 노드 간의 합의된 통신 약속

(2) 컴퓨터 네트워크의 연결 형태
- 버스(bus)형 컴퓨터 네트워크 : 버스형의 경우 컴퓨터들이 하나의 버스(기본적으로 대역폭이 넓은 채널)를 공유하면서 메시지 송신 시 버스에 방송하듯 버스에 연결된 모든 컴퓨터에 메시지를 보내는 형태
- 성(star)형 컴퓨터 네트워크 : 중앙에 있는 컴퓨터가 모든 메시지의 중계자 역할을 하며, 모든 메시지는 먼저 중앙의 컴퓨터로 보내지고, 중앙의 컴퓨터가 수신한 메시지를 다양한 목적지 컴퓨터에 전달되는 형태
- 원(ring)형 컴퓨터 네트워크 : 원형 컴퓨터 네트워크는 메시지가 원형 네트워크를 돌면서 차례로 다음 컴퓨터로 전달되어 최종 수신 컴퓨터에 도달할 때까지 계속 전달되는 형태

(3) 메시지 교환(switching) 방식
- 회선 교환 방식(circuit switching) : 메시지의 송신 컴퓨터에서 수신 컴퓨터까지 여러 개의 스위치를 통해 물리적으로 연결된 임시 전용 회선을 동적으로 구성한 후, 임시로 설정된 회선을 통해서 메시지를 주고받는 방식
- 메시지 교환 방식(message switching) : 송신하려는 메시지 전체를 한 단계씩 목적지 방향으로 스위치(또는 컴퓨터, 라우터 등)를 거쳐서 전송하는 방식
- 패킷 교환 방식(packet switching) : 메시지를 패킷(packet)이라는 작은 단위로 나누어 패킷별로 보내는 방식

(4) OSI 참조 모델
- 물리 계층(physical layer) : 물리적으로 연결된 채널을 통해 비트 단위로 전송되는 계층
- 데이터링크 계층(data link layer) : 직접 연결된 두 컴퓨터나 장비 간에 프레임(frame, 블록 단위의 정보) 단위로 전송하는 계층
- 네트워크 계층(network layer) : 패킷 단위의 전송이 이루어지는 계층
- 전송 계층(transport layer) : 세그먼트 또는 데이터 그램 단위의 메시지가 송신 컴퓨터에서 수신 컴퓨터까지 신뢰성을 보장하며 전달하는 계층
- 세션 계층(session layer) : 통신 컴퓨터 간 연결의 접속/차단과 데이터 통신 방식을 결정하는 계층
- 표현 계층(presentation layer) : 응용 계층에서의 데이터의 사용 방식과 무관하게 잘 작동할 수 있도록 해주는 계층
- 응용 계층(application layer) : 웹에서 사용하는 HTTP나 파일 전송을 위한 FTP, 이메일 전송을 위한 SMTP 등과 같은 응용 프로토콜의 기능을 지원하는 계층

 

 

 

9장 인공지능

AI (Artificial Intelligence) : 1956 존 메카시, ‘다트머스 학회, 인공지능 연구회‘:
- 전산학, 공학, 과학, 인문학, 논리학, 확률론, 통계학, 게임이론, 전자공학, 기계공학, 로보틱스, 심리학, 인지과학, 심리철학, 윤리학, 신경과학, 뇌과학, 진화론, 유전공학 등
- 약한 인공지능 : 개체 내부의 주관적인 현상에 대해서는 관심이 없으며, 오직 시스템이 실생활에 유용한 행동을 할 수 있는지에 초점을 맞춤
- 강한 인공지능 : 인공지능 시스템은 실제로도 내부적인 이해를 가지고 있다고 인정해야 함. 이런 시스템을 만드는 것이 궁극적인 목표

탐색 : 가장 기초적인 인공지능 방법 중 하나
탐색 문제 : 상태공간, 시작 상태, 연산자의 집합, 목적 상태로의 정의
지식 미사용 탐색 : 너비 우선, 깊이 우선, 깊이 제한, 반복 심화 탐색 등이 존재
지식 사용 탐색 : 최선 우선, 탐욕스러운 방법, A-star, 반복 심화 A-star 등이 존재

추론 : 주어진 논리식의 집합으로부터 새로운 논리식을 도출하는 것

인공신경망 : 입력/목표 출력의 쌍만을 가지고 입력에서 출력으로 가는 함수를 자동으로 학습
퍼셉트론 : 단층 인공신경망의 대표적인 예로, 선형 분리 가능한 문제만을 해결
오류 역전파 알고리즘 : 다층 인공신경망의 대표적인 예로, 기울기법을 사용해 학습
유전자 알고리즘 : 자연계의 진화과정을 본 뜬 학습 방법
유전자 알고리즘의 주요 연산 : 선택, 번식, 변이가 있으며, 각 개체의 적합도 계산이 중요한 요건

'방송대 > 컴퓨터과학 개론' 카테고리의 다른 글

컴퓨터와 자료  (0) 2023.11.08

컴퓨터란 무엇인가?

 

컴퓨터란 프로그램이 가능한 데이터 처리기 이다.

 

프로그램이란?

- 컴퓨터가 데이터를 어떻게 처리할지 알려주는 일련의 명령어 집합

- 처리 가능한 작업의 유형과 연산의 집합을 결정한다.

 

1. 컴퓨터 : 특수 목적의 작업을 처리하는 기계가 아니라, "다양한 형태의 작업을 수행할 수 있는 범용의 기계이다"

- 프로그래밍 과정의 결과물을 말한다.

2. 그것을 적절한 프로그래밍 언어를 사용해서 컴퓨터가 이해할 수 있는 형태로 표현한다.

3. 주어진 문제의 해결 방법과 절차를 찾는다 = 알고리즘

 

 

 

컴퓨터의 장점

- 신속한 처리

- 처리 결과의 정확성 ( 유효한 입력과 프로그램이 주어지면 항상 정확한 결과를 생성한다.

- 자동 : 프로그램 지시에 따라 자동으로 처리한다. ( 사람의 개입이 불필요하다 )

- 대용량 : 대용량의 데이터 저장 및 처리

 

컴퓨터과학이란 무엇인가?

-데이터의 표현, 저장, 조작, 검색과 밀접한 관련된 분야

1. 컴퓨터 ( 프로그램을 통해서 데이터를 입력하여 처리, 저장, 검색, 출력하는 전자적 장치이다.)

2. 데이터의 획득, 표현, 처리, 저장, 통신, 접근을 위한 방법들의 실행 가능성, 구조화, 표현, 기계화에 관련된 내용을 다루는 분야이다.

 

 

컴퓨터과확의 특성

- 비교적 짧은 역사, 빠른 변화 및 엄청난 영향력

- 다른 분야와의 밀접한 연관 -> 폭 넓은 연구 / 응용 범위

컴퓨터 공학 컴퓨터과학
가격 대비 성능 특성이 좋은 컴퓨터 엔진을 만들기 위해 하드웨어와 소프트웨어 요소의 중 현재의 기술에 덜 의존적인 방식으로 주어진 문제에 대한 해결책의 효율성과 실현 가능성에 보다 중점

 

 

컴퓨터시스템

하드웨어

-기계를 구성하고 있는 모든 물리적인 기계장치 / 전자장치

- 핵심장치 : 폰 노이만 모델에서 제시한 4개의 서브시스템이 해당

- 폰 노이만 모델

1. 컴퓨터의 내부 구조와 처리 과정을 정의한 모델

2. 모든 컴퓨터는 폰 노이만 모델에 기반을 두었다.

- 중앙처리장치(CPU) : 제어장치(CU), 산술논리연산장치(ALU)

- 기억장치( 주기억장치, 보조기억장치 )

 

3. 처리할 입력 데이터, 처리를 담당하는 프로그램, 중간 결과, 출력할 데이터

-산술논리연산장치

4. 산술 연산과 논리 연산의 수행을 통해 직접적인 데이터 처리가 이루어지는 장치

- 제어장치

5. 컴퓨터의 기억장치, ALU, 입출력장치의 동작을 제어하는 장치

- 입력장치 : 키보드, 마우스, 마이크 등

- 출력장치 : 모니터, 프린터, 스피커 등 

 

내장 프로그램

- 실행될 프로그램은 메모리에 저장되어야 한다.

1. 초기 컴퓨터에서는 데이터만 메모리에 저장되고, 프로그램은 컴퓨터 외부에 표현된다.

-프로그램과 데이터가 동일한 형식으로 메모리에 표현된다는 의미를 내포하고 있다.

 

프로그램은 유한 개의 명령어의 나열이다.

- 미리 정의된 기본 명령어의 유한 개의 조합을로 구성된다.

- 메모리에서 한 번에 하나씩 명령어르 가져와서 해석하고, 실행한다.

- 명령어의 재사용 -> 프로그래밍 작업이 간단해진다.

 

 

소프트웨어

- 모든 종류의 프로그램을 총제적으로 표현하는 용어이다.

1. 컴퓨터가 데이터를 어떻게 처리할 것인가를 규정하는 명령어들의 나여

2. 컴퓨터가 이해하 수 있도록 표현된 알고리즘

 

시스템 소프트웨어

1. 컴퓨터 자체의 작업 관리와 특정 기능에 수행을 통해 컴퓨터의 전체적인 운영을 담당한다. ( 운영체제, 컴파일러 등 )

응용 소프트웨어

1. 사용자가 요구하는 작업을 직접적으로 수행하는 프로그램 ( 워드프로세서, 그래픽 프로그램, 데이터베이스 등 )

 

데이터

모든 데이터는 유형에 관계 없이 비트 패턴으로 표현한다.

1. 비트 패턴 : 이진 상태르 나타내는 비트인 0과 1이 나열된 형태

2. 데이터의 입출력을 위해서는 적절한 형태로의 변환이 필요하다.

 

 

사용자

- 사용자, 오퍼레이터

1. 컴퓨터의 설계부터 효율적인 이용에 이르기까지 전반적인 데이터 처리과정에서 유능하고 지식이 풍부한 사람의 적극적인 개입이 필요하다.

'방송대 > 컴퓨터과학 개론' 카테고리의 다른 글

컴퓨터와 자료2  (1) 2023.11.10

+ Recent posts