컴퓨터 과학 기초 요약본인데

 

1.5. 컴퓨터 하드웨어의 기본 구성 (교재 p.50)

- 컴퓨터 하드웨어의 구성

 

 

⑴ 메인보드(마더보드): 각 장치 사이의 데이터를 전달하는 중간적 역할

⑵ 중앙처리장치(CPU: Central Processing Unit)

① 기능: 모든 실행 프로그램의 명령을 해석하고 실행, 컴퓨터의 모든 장치를 제어

② 성능 결정 요소

-처리 속도 (Hz): 컴퓨터 내부에 내장된 시스템 클럭의 작동 수

ex) 1GHz → 초당 10억 번 정도 전기적 신호를 발생

-버스의 폭: 한 번에 처리할 수 있는 데이터의 양. 32bit, 64bit

③ 구성: 산술논리연산장치, 제어장치, 레지스터

⑶ 메모리

① 주기억장치: CPU가 작업할 수 있도록 프로그램과 데이터를 기억하는 장치

② RAM(Random Access Memory): 휘발성 메모리, 임의 접근 기억장치

-DRAM(Dynamic RAM): 주기적인 재충전 필요, 주기억장치로 주로 사용

-SRAM(Static RAM): 재충전 불필요, 빠른 접근 속도 캐쉬 메모리로 주로 사용

③ ROM(Read Only Memory): 비휘발성 메모리

Mask ROM: 한 번 저장된 내용은 수정 불가

-PROM (Programmable ROM): 사용자의 필요에 따라 한 번의 데이터 저장 가능

-EPROM (Erasable PROM): 자외선을 사용해서 내용 삭제 가능

-EEPROM (Electrically EPROM): 전기를 사용해서 내용 삭제 가능

⑷ 보조 기억장치: 데이터를 반영구적으로 저장하기 위한 장치, 속도가 느리지만 대량의 기억용량

ex) 하드디스크, 플로피디스켓, CD롬

⑸ 입력장치: 외부의 데이터를 컴퓨터로 읽어 들이는 장치

ex) 키보드, 마우스, 스캐너, 조이스틱

⑹ 출력장치: 컴퓨터에서 처리된 결과를 사용자에게 직접 보여주기 위한 장치

ex) 모니터, 프린터

 

 

2.3.1 중앙처리 장치 기능 (교재 p.76)

1) 중앙 처리 장치 (CPU): 프로그램을 수행하기 위해 기억장치에 저장되어 있는 명령어들을 실행함으로써 컴퓨터시스템에 있어서 핵심적인 역할을 수행.

명령어들을 기억장치로부터 차례로 인출하여 해독하고 실행하는 것과 관련된 모든 작업이 이루어지는 곳

① 명령어 인출(instruction fetch): 명령어를 기억장치로부터 읽어온다.

② 명령어 해독(instruction decode): 명령어를 해독하여 수행할 작업을 결정한다.

③ 데이터 인출(data fetch): 명령어를 수행하는 과정에 있어서 필요한 데이터를 기억장치 또는

입력장치로부터 읽음

④ 데이터 처리(data processing): 인출된 데이터에 요구되는 산술연산이나 논리연산을 수행한다.

⑤ 데이터 저장(data store): 수행한 결과를 저장(=data 쓰기, data 이동)

 

 

 

 

2.3.2 중앙처리 장치의 구성 (교재 p.77)

2) 중앙처리장치의 구성(CPU 내부 구조 및 시스템 버스와의 접속)

 

 

 

⑴ ALU(산술/논리 연산장치): 정해진 연산을 수행한 후, 결과를 다시 CPU 내부의 레지스터에 저장

⑵ 레지스터: CPU 내에서 처리되는 결과나 data, 프로그램을 위한 고속의 임시 저장장소

① 누산기(AC): 계산에 필요한 data를 임시로 저장

② 프로그램 카운터(PC): 다음에 수행될 명령어의 주소를 가짐

③ 명령어 레지스터(IR): 현재 실행중인 명령어를 기억

④ 기억장치 주소 레지스터(MAR): 다음에 수행될 명령어를 인출하기 위해 현재 PC에 들어있는

주소가 시스템 주소버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터

⑤ 기억장치 버퍼 레지스터(MBR): 기억장치에 쓰여 질 data나 기억장치로부터 읽어온

data를 임시로 저장하는 레지스터

⑥ 인덱스 레지스터: 인덱스 주소지정 방식에서 사용되는 레지스터

⑦ 스택 포인터: 스택 주소지정 방식에서 사용, 스택의 최상위를 지정

⑶ 제어장치: 명령어가 바르게 수행될 수 있도록 모든 컴퓨터 시스템 요소를 제어하는 신호를 발생

이상의 각 장치는 시스템내부버스를 통해 서로 연결, 시스템버스를 통해 외부장치와 CPU를 연결

2.3.3 CPU의 동작(교재 79쪽)

 

 

 

※ C0 ~ C2 : CPU 클럭의 각 주기

① 인출: 기억장치의 지정된 위치로부터 CPU로 명령어를 가져오는 단계

C0: MAR ← PC C1: MBR ← M(MAR), PC ← PC+1 C2: IR ← MBR

② 실행 사이클: 인출된 명령어를 해독하고 직접 명령을 실행하는 단계

-LDA(Load AC) 명령: 누산기(AC) ← 메모리 내용

C0: MAR ← IR(addr) C1: MBR ← M(MAR) C2: AC ← MBR

-ADD 명령: AC ← AC + 기억장치의 내용

C0: MAR ← IR(addr) C1: MBR ← M(MAR) C2: AC ← AC+MBR

-STA(Store AC) 명령: 기억장치 ← AC

C0: MAR ← IR(addr) C1: MBR ← AC C2: M(MAR) ← MBR

-BUN 명령에 대한 마이크로 연산: 프로그램의 수행을 지정된 유효 주소로 이동

C0: PC ← IR(addr)

③ 인터럽트 사이클: 인터럽트(CPU의 정상처리를 방해하는 예상치 않은 사건) 발생 시 현재 수행 중이던 처

리 과정을 저장한 후에 인터럽트 사이클 시작. 처리가 끝나면 원래의 프로그램으로 복귀하여 계속 수행

④ 간접 사이클(indirect cycle): 인출 사이클에서 읽어 들인 명령어가 간접 주소지정 방식의 명령어일 경우에

기억장치로부터 실제 필요한 유효 주소를 읽어오는 과정

 

 

2.3.6 산술/논리 연산장치 (교재 p.87)

1) 입출력 플래그: 연산의 잘못된 부분을 표시(/0, overflow)

 

 

2) 정수의 표현

⑴ 양의 정수 표현 (8비트의 경우)

▶ 8비트로 표현가능한 수보다 315가 크므로 오버플로우 발생

⑵ 음의 정수 표현

부호화-크기 방식. 범위: -(2N-1-1) ~ +(2N-1-1)

☞ 단점: +0 (00000000), -0 (10000000)이 존재함 (0이 2가지 존재)

 

1의 보수 방식: 양수는 부호 없는 정수의 표현과 동일하지만 음수는 양수에 대한 보수를

통해 표현(0→1, 1→0). 수의 범위: -(2N-1-1) ~ +(2N-1-1)

-특징: +0 (00000000), -0 (11111111)이 존재, -2의 보수 방법의 기초 제공

 

2의 보수 방식: 컴퓨터에서 가장 많이 사용하는 방식 (2의 보수는 1의 보수 + 1)

-수의 범위 : -(2N-1) … +(2N-1-1)

-특징: 오직 하나의 0이 존재, 연산이 간편.

 

※ 참고: 세 표현법의 비교

양수를 절대치와 같은 음수로 변환 시: 부호-절대치, 1의 보수, 2의 보수 순으로 변환이

. 부호화-크기 방식은 덧셈 시에도 가산기와 감산기가 모두 필요하여 h/w비용이 요구된다.

․1의 보수, 2의 보수방법은 가산기만으로 가능

․1의 보수방법: 올림수의 처리문제로 인해 연산속도가 2의 보수방법보다 느린 경우가 발생하

고, +0과 -0의 2가지 0표현으로 인해, 연산결과가 0인지 아닌지에 따라 수행이 달라질 경우,

연산결과가 0인지 아닌지 판단하는데 2의 보수보다 시간이 오래 걸린다.

3) 부동 소수점 수의 표현(교재 p.90): 소수점 위치가 필요에 따라 이동하는 표현 방법

N=(-1)S×M×BE = 0.123*102

S:수의부호, M:가수, B:기수(base), E:지수

 

 

 

4) 논리 연산

 

레지스터에 저장된 데이터의 특정 비트값을 변경할 때 유용

AND(reset): 0으로 셋팅

OR (set): 1로 셋팅

XOR (보수)

5) 쉬프트 연산: 왼쪽 쉬프트(×2의 효과), 오른쪽 쉬프트(÷2의 효과)

 

2.3.7 제어장치 (교재 p.92)

프로그램의 명령어들을 해독하고 그 결과에 따라 명령어 실행에 필요한 제어신호 발생. 각 명령어 사이클에서의 마이크로 연산들의 수행순서를 제어프로그램의 명령어들을 해독하고 그 결과에 따라 명령어 실행에 필요한 제어신호 발생

 

 

 

3.2.1 프로세스 관리 (교재 p.121)

1) 프로세스의 개념 :실행 중이거나 곧 실행이 가능한 프로세스 제어 블록(PCB:프로세스에 대한 정보를 저장

하고 있는 자료구조 테이블)을 가진 프로그램

2) 프로세스 상태

① 준비(ready)상태: 주기억 장치에 올라와 있지만 CPU를 할당받지 못한 상태. 이후 프로세스를 할당 받게 되면 실행상태로 전이 (=디스패치 또는 스케줄)

② 실행(running)상태: 프로세스가 CPU를 할당받고 있는 상태.

-선점: 시간종료(실행중인 CPU가 할당시간에 작업을 종료하지 못할 때)나 우선순위가 높은

프로세스가 들어오면 프로세서를 반납하고 준비상태로 전이

-블록: 프로세스가 프로세서를 차지하고 실행되다가 입출력 처리가 발생하면 프로세서를

넘겨주고 입출력이 완료될 때까지 대기상태로 전이

③ 대기(blocked)상태: 필요한 자원을 요청하고 이를 할당받을 때까지 기다리는 상태.

-조건만족: 대기 중인 프로세스가 필요한 자원을

할당받게 되면 다시 준비상태로 전이

④ 보류(suspended): 시스템이상이나 과부하 등으로 프로세스가 기억장치를 빼앗긴 상태. 준비, 실행,

대기상태에서 보류상태로 갈 수 있다.

 

 

3) 인터럽트: 프로세서가 명령문을 수행하고 있을 때 예측하지 못했던 사건 등이 발생하여 다른 작업을 처리하기 위해 수행하던 일을 강제로 중단시키는 것

① SVC인터럽 ② 입출력인터럽 ③ 프로그램검사 인터럽

④ 하드웨어인터럽 ⑤ 외부인터럽 ⑥ 재시작인터럽

 

 

3.2.2 병행프로세스(교재 p.124)

: 두 개 이상의 프로세스가 동시에 실행되는 것. 상호협력 또는 독자실행 가능

비동기성: 프로세스 간에 상호 협력하는 것

* 병행 프로세스의 비동기성으로 인한 문제의 해결 방법 *

① 동기화(synchronization)

: 2개 이상의 프로세스를 동시에 실행할 수 없으므로 처리 순서를 결정하는 것

② 상호배제(mutual exclusion): 하나의 프로세스가 공유데이터 영역의 사용을 완료할 때까지

다른 프로세스의 공유데이터 영역의 접근금지

③ 임계영역(critical section):

: 공유데이터에 접근할 수 있도록 설정된 프로그램의 영역. 공유데이터가 들어 있음

 

3.2.3 교착상태(교재 p.124)

: 병행처리와 자원공유로 인해 발생되는 문제. 즉, 다른 자원을 가지고 있는 서로 다른 프로세스를

동기화시키는 것이 프로세스 관리의 핵심으로 자원이 여러 사용자에 의해서 사용될 수 있을 때 발생할 수 있는 문제로 시스템의 자원을 좀 더 효율적으로 사용하려다 보니 발생. 다중프로그래밍 환경에서 프로세스가 아무리 기다려도 자원이 할당되지 않는 상태

 

* 발생 조건(다음의 4가지를 모두 만족해야 교착상태가 발생. 하나라도 빠지면 발생하지 않는다.)*

① 상호 배제(mutual exclusion)조건: 오직 하나의 프로세스만 자원을 점유

② 점유와 대기(hold and wait)조건: 자신에게 이미 할당된 자원을 점유하고 있으면서 다른 프로세스가 점

유하고 있는 자원을 추가로 할당받기 위해 요구하며 기다린다.

③ 비선점(non-preemption)조건: 일단 자원이 할당되면, 강제적으로 빼앗기지 않는다.

④ 환형 대기(circular wait)조건: 그림처럼 각 프로세스들이 서로 다른 프로세스가 가지고 있는 자원을 요구하여 cycle구조를 형성

 

* 해결 방법 *

① 예방(prevention): 발생조건 4가지 중 하나를 제거. 자원 낭비 가능

② 회피(avoidance): 모든 프로세스를 정상적으로 종료시틸 수 있는 상태로만 유도.

어느 정도의 자원 낭비.

③ 발견(detection): 주기적/필요시마다 시스템 상태를 검사. 일반적으로 환형 대기상태를 조사

④ 회복(recovery): 교착 상태 발생시, 이 교착 상태를 제거하여 다른 프로세스가 자원을 사용가능토록.

 

 

3.3 기억장치 관리 (교재 p.131)

3.3.1 주기억장치 관리

1) 주기억장치 관리 전략

① 반입 전략(언제 가져오느냐?): 요구반입, 예상 반입

② 배치 전략(어디에 위치?):

․최초적합: 요구된 것을 수용할 수 있는 첫 번째 영역에 배치

․최적적합: 최적 크기의 영역에 배치. 남는 영역이 너무 작아서 다른 프로그램을 적재하기 어렵다.

단편화 문제: 주기억장치에서 부분적인 기억 공간이 프로그램에 의해 사용되지 않고 낭비되는 현상

․최악적합: 가장 큰 영역에 배치, 남는 영역에 다른 프로그램을적재 가능. 단편화를 최소화

③ 교체전략(어떤 것을 제거?)

2) 주기억장치 관리 기법

① 단일 프로그래밍 기법: 초기 컴퓨터. 시스템 내에 항상 하나의 프로세스만 존재, 관리가 간단, 구현이 용이

② 고정 분할 다중 프로그래밍 기법: 주기억장치를 여러 개의 고정된 크기로 분할하여 실행 중인 여러 프로세

스에게 할당. 분할된 각 영역에는 하나의 프로그램만 적재가능. 주기억장치 관리가 간단하고 시스템을 효

율적으로 사용할 수 있으나 분할된 영역들에 대한 보호가 필요하고 단편화 문제 발생 가능,

③ 가변 분할 다중 프로그래밍 기법: 프로그램 크기에 맞게 주기억장치 공간 할당. ②처럼 프로세스들이 연속

된 공간을 할당 받음. 처음부터 단편화가 발생하진 않지만 시간이 자나감에 따라 어느 정도의 단편화발생

 

 

 

 

 

 

 

존나 쓸데없는거 외우게 하네..