반도체 물질인 실리콘 조각 위에 논리 게이트들을 구현하는 트랜지스터들과 연결선들을 아주 작은 크기로 집적시켜 제조한 논리회로 부품
트랜지스터(transistor)
규소나 게르마늄으로 만들어진 반도체를 세 겹으로 접합하여 만든 전자회로 구성요소
전류나 전압 흐름을 조절 >> 증폭, 스위치 역할
가볍고 낮은 소비전력 >> 진공관 대체 >> 대부분의 전자회로에 사용
접합형 트랜지스터
전기장 효과 트랜지스터
집적도(degree of integration)
1개의 반도체 칩에 구성되어 있는 소자 수
기판 위 논리 게이트 수
하나의 칩에 있는 다이오드, 저항, 트랜지스터와 같은 다기능 디지털 소자의 개수를 나타내는 정도
칩당 소자 수
IC 종류
집적도에 따른 분류
하나의 칩에 넣을 수 있는 트랜지스터 수 증가 = 칩 내부에 들어가는 게이트 수가 많아짐
SSI(Small Scale IC): 수십 개의 트랜지스터들이 집적되는 소규모 IC로, 기본적인 디지털 논리 게이트 포함
MSI(Medium Scale IC): 수백 개의 트랜지스터들이 집적되는 IC로, 카운터, 해독기, 시프트 레지스터와 같은 조합 회로나 순차 회로 포함
LSI(Large Scale IC): 수천 개의 트랜지스터들이 집적되는 대규모 IC로, 8비트 마이크로프로세서 칩이나 소규모 반도체 기억장치 칩 등의 구현에 사용
VLSI(Very Large Scale IC): 수만 내지 수십만 개 이상의 트랜지스터들이 집적되는 초대규모 IC로, 16비트 이상의 마이크로프로세서나 대용량 반도체 기억장치 등의 구현에 사용
ULSI(Ultra Large Scale IC): 수백만 개 이상의 트랜지스터들이 집적 IC로, 32비트급 이상의 마이크로프로세서 칩들과 수백 메가비트 이상의 반도체 기억장치 칩들의 구현에 사용
패키징 방식에 따른 분류
패키징: 집적 회로를 외부로부터 보호하고 다른 부품과 연결시켜 사용 >> 플라스틱류의 특수 재료를 이용하여 적절하게 감싼다
듀얼 인-라인 패키지(Dual In-line Package: DIP): 핀들이 양쪽으로 나열되고 기판이 직각으로 꽂히는 형태, 적은 수의 논리 게이트를 포함하고 있는 IC 칩에 널리 사용하고 있는 패키징 방식, PCB 보드의 양쪽 면을 모두 사용
표면 장착 기술(Surface-Mount Technology: SMT): PCB 한 쪽 면에만 부착시키도록 하는 방식, SOP(Small Outline Package, 핀들이 바깥으로 구부러져 있어 PCB 상의 리드선들과 쉽게 접속), LLC(Leadless Chip Carrier, 핀들이 정방형 패키지의 네 모서리를 따라 설치, 칩 하부의 안쪽으로 구부러진 형태)
격자형 패키지: 패키지 아래 면 전체를 사용하는 패키지, BGA(Ball Grid Array), PGA(Pin Grid Array)
일자형 패키지: 공간을 적게 차지하는 방식, 적은 입력선 수로 다수의 칩들을 PCB 상에 설치하기 용이, SIP(Single In-line Package), ZIP(Zip-zag In-line Package)
구현되는 기술 방식에 따른 분류
TTL(Transistor Transistor Logic): 트랜지스터-트랜지스터 논리, 이전의 다이오드-트랜지스터 논리(DTL)에서 성능 향상을 위해 트랜지스터로 바꾼 것, 가장 보편적인 논리군
ECL(Emitter coupled Logic): 에미터-결합 논리, 슈퍼컴퓨터나 신호처리기 같은 고속 연산이 요구되는 시스템에 사용
MOS(Metal oxide Semiconductor): 금속-산화물 논리, 단상 트랜지스터가 사용, 밀도가 높아야 하는 회로에 사용, 대부분 MOS에서 채널을 형성하는 캐리어가 전자인 NMOS가 대부분
CMOS(Complementary Metal oxide Semiconductor): 상보 금속-산화물 논리, 낮은 전력 소모가 요구되는 시스템에 사용, NMOS와 PMOS(캐리어가 정공hole인 MOS)를 서로 연결하여 제작 >> 높은 밀도와 단순한 제조 공정 >> 낮은 전력 소비 >> 경제적
💻 마이크로프로세서
프로그래밍 언어의 종류
프로그램: CPU가 순차적으로 처리해야 할 일을 만드는 것
명령어(Instruction): CPU가 처리해야 할 일
기계어: CPU가 이해할 수 있는 언어, 기계 고유의 언어
니모닉 코드(Mnemonic Code)
사람이 이해하기 쉽도록 기호 또는 문자를 압축해서 만든 코드
기계어의 비트 형식이 나타내는 의미를 symbol로 표현
프로그램을 이해하거나 작성하기 쉬움
프로그래밍 언어의 종류
고급 언어: FORTRAN, COBOL, C언어
중급 언어: 어셈블리어
저급 언어: 기계어
소스 프로그램: 어셈블리어나 고급 언어로 작성한 원본 프로그램, 원시 프로그램
목적 프로그램: 변환된 기계어 프로그램
어셈블리어
기계어의 비트 형식을 니모닉 코드로 나타낸 것
기계어처럼 사용할 CPU에 따라 명령어 다름
문법 체계 외에도 데이터 표현 방식과 사용하려는 CPU에 관한 기초 지식이 필요
기능이 동일한 프로그램을 CPU에 따라 다르게 프로그래밍해야 하는 단점
어셈블리어로 프로그래밍 하는 경우
컴퓨터 하드웨어의 구성 요소에 직접 액세스할 때
컴파일러를 설계하거나 시스템 프로그램을 작성할 때
빠른 수행이 필요한 프로그램을 작성할 때
기억 장소를 적게 차지하거나 입출력 장치를 효율적으로 사용할 때
C언어와 컴파일러
마이크로프로세서를 동작시키기 위한 언어: 어셈블리어 / C언어
어셈블리어
수행 속도와 메모리 측면에서 유리
마이크로컨트롤러마다 다르다는 단점
C언어
보다 쉽고 간편하게 프로그램 작성 가능
컴파일러에 따라 정확한 시간 산출이 측정 불가
메모리 효율적 측면에서 불리
C언어 자료형
- 단위: byte
부호 지시어
unsigned: 0부터 양수값만
signed: 음수~0~양수, 표기 생략
정수 상수
실수 상수 > 고정 소수점 방식
소수점을 찍어 정수부와 실수부로 나누어 표시
23.6534: .434[앞의 0 생략] / -25.[뒤의 0 생략]
실수 상수 > 부동 소수점 방식
가수부와 지수부로 나누어 표시
5329e[5329 X 10^5] / -5.3e-4[-5.3 X 10^-4]
문자 상수
하나의 문자로 이루어진 상수
작은 따옴표 사이에 하나의 문자로 표현
문자 상수들은 아스키(ASCⅡ) 값
'A' 10진수: 65, 16진수: Ox41
'a' 10진수: 97, 16진수: Ox61
문자열
큰따옴표 사이에 문자열을 넣어서 사용
한글은 2칸, 영문은 1칸 차지
끝을 알려주는 null 포함
"Atmega 수업"(6자) >> Atmega(6자) + 수업(2자x2=4자) + 빈칸(1자) + null(1자) = 12자 공간 필요
#define
어떤 특정한 값을 미리 정해주는 역할
#define PI 3.14(파이 값을 정의하기 위한 기호 상수)
연산자
산술 연산: 사칙연산(+,-,*,/), %(나머지)
증가/감소 연산: a++, ++a(a=a+1) / a--, --a(a=a-1)
대입 연산: 사칙연산, a+=1(a=a+1) / a-=1(a=a-1)
관계 연산: >, >=, a==b, a!=b
논리 연산
- !(a식): (a식)이 거짓(논리 0)이면 참(논리1), 참이면 거짓
- (a식)&&(b식): (a식)과 (b식)이 모두 참(논리1)이면 참
- (a식)||(b식): (a식) 또는 (b식)이 참 논리(1이면) 참
비트 연산
- ~a: a를 비트 단위로 반전
- a <<= 2: a의 각 비트를 왼쪽으로 2회 시프트
- a >>= 2: a의 각 비트를 오른쪽으로 2회 시프트
- a&=b: AND
- a|=b: OR
- a^=b: XOR
비트 연산
비트 OR 연산자(|)
동일한 위치의 비트끼리 OR 연산 수행
둘 중 하나가 1이면 결과는 1, 다시 말해서 둘 다 0일 때만 0
비트 AND 연산자(&)
동일한 위치의 비트끼리 AND 연산 수행
둘 중 하나가 0이면 결과는 0, 둘다 1일 때만 1
비트 XOR 연산자(^)
동일한 위치의 비트끼리 XOR 연산 수행
둘이 서로 다르면 결과는 1, 둘 다 같으면 0
왼쪽 비트 shift 연산자(<<)
변수를 좌측으로 n비트만큼 shift
shift되면서 우측 비트는 0값이 채워짐
1비트 왼쪽으로 shift할 때, 2를 곱한 결과
a=a<<2
오른쪽 비트 shift 연산자(>>)
1비트 오른쪽으로 이동하면 2로 나눈 결과
a=a>>1
연산자 우선순위
우선순위에 따라 연산 순서가 정해짐
<<, >>은 같은 우선순위이지만 왼쪽에서 오른쪽으로 수행
shift 먼저, 그 다음 논리 연산
C언어 자료형
정수 데이터
65535자
실수 데이터
float: 소수점 이하 7자리까지
double: 소수점 이하 15자리까지
일반적으로 6자리까지
문자형 데이터
255자
데이터 형의 사용
제어 시스템 프로그램은 부호의 의미가 없는 경우가 많음
8비트 또는 16비트의 데이터 형 많이 사용
8비트 형태의 부호 없는 문자형인 unsigned char형
16비트 형태의 부호 없는 정수형인 unsigned int형
두 가지 형태의 데이터형은 typedef를 사용하여 표현
typedef unsigned char u08
typedef unsigned int u16
printf()
💾 시스템 프로그래밍
리눅스 파일 입출력
파일
관련 있는 데이터 집합
정보를 저장하기 위한 가장 기본적인 단위
보조 기억 장치에 저장
파일 사용하는 이유
데이터를 저장
장치에 접근
파일 종류
일반 파일: 텍스트 / 바이너리 형태의 데이터를 저장하는 파일
특수 파일
- 데이터 전송
- 장치 접근에 사용하는 파일(device file)
디렉토리
- 파일 저장 위치, 공간
파일 구성
file name: 파일 접근 시 사용
i-node: 파일의 정보(소유자, 크기, 데이터 블록의 실제 위치 주소)
data block: 데이터가 저장되는 실제 하드 디스크 공간
i-node
파일 종류, 접근 권한, 하드 링크 개수, 소유자의 UID/GID, 파일의 크기, 파일 접근 시각/수정 시각, i-node 변경 시각
sys/stat.h 파일에 정의되어 있는 stat 구조체에 저장
파일 정보 검색: int stat
파일 접근 권한 확인: int access
파일 접근 권한 변경: int chmod
저수준 파일 입출력과 고수준 파일 입출력 비교
리눅스 파일 접근 권한
소유권
리눅스는 다중 사용자 지원 운영체제
시스템 및 사용자 소유의 파일 접근 권한 보호 및 제한
파일 속성
총 10의 자리에 파일 종류, 소유자, 소유그룹, 사용자 권한을 표시
파일 종류
d: 디렉토리
l: 심볼릭 링크 파일
c: 특수 파일(문자 장치)
b: 특수 파일(블록 장치)
-: 일반 파일
읽기 쓰기 실행 권한
r: 읽기 가능, 복사 가능(100(2) / 4(8))
w: 쓰기 가능, 수정, 이동, 삭제 가능(10(2) / 2(8))
x: 실행 가능, 파일 실행 가능(1(2) / 1(8))
📠 운영체제
오프라인 시스템
일괄처리 시스템(Batch Processing System)
대부분의 오프라인 시스템에서 활용
초기 컴퓨터 시스템에서 사용
프로그램 오류 수정 작업 어려움
컴퓨터 시스템 효율적로 사용
늦은 반환시간
작업 처리 시, CPU 유휴 시간(일하는 도중 쉬는 시간) 감소
작업 처리X > CPU 유휴 시간 증가
급여 계산, 은행 결산, 시험(OMR) 등의 업무에 활용
온라인 시스템
일괄처리 시스템(Batch Processing System)
온라인 상으로 연결하여 일괄 처리
작업 제어 언어(JCL) 필요
프로그램 오류 수정 작업 어려움
컴퓨터 시스템 효율적으로 사용
늦은 반환시간
작업 처리 시, CPU 유휴 시간(일하는 도중 쉬는 시간) 감소
작업 처리X > CPU 유휴 시간 증가
급여 계산, 은행 결산, 시험(OMR) 등의 업무에 활용
다중 프로그래밍 시스템(Multi-Programming System)
하나의 CPU를 이용하여 여러 개의 프로그램을 동시에 처리
하나의 주기억장치에 여러 개의 프로그램 저장 + 동시에 수행
CPU의 유휴 시간 감소
CPU 사용률 증가
프로그램 처리 속도 향상
프로그램 처리량 증가
기억 장치 관리 기법 필요
CPU 스케쥴링 기법 필요
시분할 시스템(Time Sharing System)
한 대의 컴퓨터(서버)를 여러 명의 사용자가 사용 >> 각자 독립된 컴퓨터를 사용하는 것처럼 사용
CPU를 여러 명이 공동으로 사용
하나의 CPU가 여러 프로그램을 동시에 수행 불가 >> 교대로
CPU 사용 시간을 일정 시간으로 강제 할당
CPU 스케줄링 기법에 따라 CPU 사용 순서 결정
다중 처리 시스템(Multi-Processing System)
여러 개의 CPU를 이용하여 여러 개의 프로그램을 동시에 처리
하나의 CPU가 고장나더라도 업무 수행 가능
시스템의 안전성 증가
시스템의 신뢰도 증가
여러 개의 CPU 공유 및 스케쥴링 결정 요구
최적의 연결 기법
기억 장치, I/O 장치 등의 자원 공유 문제
강 결합 다중처리 시스템
CPU 간 매우 밀접하게 동기화
약 결합 다중처리 시스템
CPU 간 밀접 보다 작업 처리량 향상에 중점(분산 처리)
실시간 처리 시스템(Real Time Processing System)
데이터 발생 후, 즉시 처리하는 방식
처리 시간 단축
처리 비용 절감
I/O 데이터 임시저장 장소 필요
시스템 장애 시, 업무 마비
레이더 추적, 은행, 호텔/교통 시스템 좌석 예약, 가상 현실, 로봇 제어 등에 활용
분산 처리 시스템(Distributed Processing System)
지역적으로 분산된 여러 대의 컴퓨터를 네트워크 연결을 통해 작업 처리
각각의 컴퓨터 운영체제는 같지 않아도 됨
자원 공유
처리 속도 증가
신뢰도 향상
네트워크 통신 기능
다중 모드 처리 시스템(Multi-Mode Processing System)
일괄처리, 시분할, 다중처리, 실시간 시스템을 모두 제공하는 시스템
병렬 처리 시스템(Parallel Processing System)
둘 이상의 프로세서를 이용하여 작업을 동시에 처리하는 시스템
여러 개의 프로세서를 통해서 각각 작업을 수행 >> 단위 시간당 처리량을 높여 처리 능력 향상
빠른 시분할 처리
📺 전산 개론
아날로그 정보와 디지털 정보
아날로그 데이터: 연속적인 데이터
디지털 데이터: 비연속적인 데이터
숫자뿐만 아니라 사운드, 이미지, 동영상과 같은 다양한 데이터도 고유한 아날로그 방식의 표현과 디지털 방식의 표현 존재
디지털과 아날로그 컴퓨터의 차이점
아날로그 > 디지털 변환
실세계 데이터는 원래 아날로그 데이터
숫자 3이나 문자 사과 등은 사람에 따라 쓰는 방식이 다 다름
디지털 세계에서는 모든 글자가 동일한 방식으로 표현되고 저장됨
아날로그 데이터나 정보는 모두 적절한 과정을 거쳐 디지털 데이터로 변화
원래 아날로그 데이터에 얼마든지 가깝게 디지털화 가능
디지털 데이터의 이점
처리 방식이 같아져 정보의 호환성이 높아짐
디지털로 변환하면 데이터의 종류에 관계 없이 동일한 방식으로 처리
컴퓨터의 회로는 디지털 정보를 처리하고 저장하기 쉽게 고안되어 설계에 반영
데이터 전송 오류나 손실의 문제점을 최소화
일단 디지털화 되면 동일한 저장 매체에 수록할 수 있고 동일한 매체로 전송 가능
모든 데이터가 디지털 형태로 변환(디지털 도서관)
문자, 숫자, 이미지, 사운드, 동영상등이 아날로그 형태로 존재할 때는 그 특성이 상이하여 저장, 처리, 전송 방식이 모두 다름
디지털 데이터는 동일하게 처리
정보의 디지털화
컴퓨터 내부의 모든 정보 표현은 2진수, 즉 0과 1인 디지털로 표현된다
이진법(Binary System)
0과 1의 두 가지 상태
ON/OFF
True/False
5볼트, 0볼트(중간 값은 존재하지 않는 상태로 인식)
소리 정보의 디지털화
표본화: 아날로그 소리 신호에서 일정한 간격으로 디지털화하기 위한 표본 추출 과정(표본 점이 많을수록 정확)
양자화: 추출된 신호 크기인 진폭을 정해진 대푯값으로 표현하는 과정
부호화: 양자화에서 얻어진 정수값을 2진 부호로 표현하는 과정(직사각형 적분법과 유사)
이미지의 디지털화
실세계 장면의 사진, 그림 이미지: 아날로그 형태로 존재
디지털이미지는 픽셀로 구성
수직, 수평 방향의 픽셀
예: 수직, 수평 방향으로 각각 1000개 픽셀 >> 1000x1000=100000000 (백만 픽셀)
RGB 컬러 모델
각 픽셀을 표현하기 위해 (Red, Green, Blue)에서 각 컬러가 1바이트 차지
예: 1,000,000픽셀 x 3바이트 = 3백만 바이트
멀티미디어 정보의 특성
멀티미디어 데이터: 숫자, 문자, 사운드, 이미지, 그래픽, 동영상 등 동일한 2진 데이터를 다르게 해석
특성: 데이터 용량이 매우 크다 >> 데이터의 압축 용도와 환경에 따라 다양한 형태로 표현