복습하는 차원에서 공부를 다시 시작한다.

 

따라서 기본적인 것은 후딱 넘어가거나 언급하지 않을 것이고

 

왠만하면 연습문제 풀이를 올릴 것 같다.

 

내 공부를 위해 하는 것이니 얼른 해서 학위 나오기 전에 완벽히 복습해놔야지!

오.

 

후기는 쓸게 진짜 없다

나 이거 두시간 보고 들어갔다.

 

독학사 시험 특성상(아님 내가 원서접수를 잘못했는지)

한 교시에 두 과목을 칠 수 있고

나는 한 교시에 한 과목만 응시해서 총 100분 수험 시간에 50분 치고

나와서 교정에 앉아 있어야 했다.ㅜㅜㅜㅜㅜ

 

집도 고사장이랑 더럽게 멀어서 ㅜ 혼자 운동장 위에 있는 관중석? 같은데 앉아 있으니

하나 둘 나와 앉아 공부하더라..

 

여튼 그렇게 슬프게 매 교시동안 50분을 나와서 있으니

당연하게도 점심시간을 포함해 엄청 시간이 남았다.

 

전날 컴퓨터시스템구조를 1회독하고 문제집 푸는걸 완료한 터라

너무 졸려서 ㅜㅜ(나이 먹으니 옛날처럼 밤도 못 새겠다)

자고 에이 몰라 떨어지면 한 학기 수업 더 듣자 하는 마음으로

간거였다.

그래도 혹시나 하는 마음에 방통대 프로그래밍언어론 책을 사면 주는 워크북을 가지고 갔다.

 

쉬는 시간에 앉아서 그거 한자 보다가 다음 시험 요약본 보고 하다가

점심시간 + 50분 = 2시간 20분정도의 시간동안 아 그중 15분정도는 오미가미 시간으로 쓰고(고사장이 5층이였다)

2시간을 밖에 쓸쓸히 앉아서 ㅜㅜ 봤다

 

기본 언어 역사, 구문론, 의미론 등으로 나뉘고 객체지향에 대한 이야기가 나오는데

그 맥락위주로 봤다.

참 고맙게도, 책에서 본 듯한 것 다 풀고, 난 원래 전공 언어가 JAVA인지라

JAVA문제, C랑 JavaScript를 좀 아니까 그거 관련 문제를 다 풀고 나니

딱 14개더라. 정말 딱

14개에 각 항목 당 2.5점이므로 딱 커트라인 60점이었고

뭔가 아리까리한거 한두개 찍고 나머지 한줄 세울까 하다 여러줄 세웠더니

점수가 이렇다.

 

운이 좋았다고 할수 밖에 없어서

걍 무용담만 늘어놓고, 진정한 후기는 쓸수 없다.. 흡 ㅜㅜ

 

근데 왜 나는 한 교시에 한과목만 선택할 수 있고 나 제외 다른 애들은 두과목씩 쳤지? ㅜㅜ

아직도 모르겠다

아.. 이거

까놓고 점수만 봐서 80점 나왔다

 

공부한 모든 것 중에 가장 힘들었던 과목..

 

논리회로를 공부를 안한 상태로 그냥 선택했다가

피본 과목이다.

 

조합회로나 순차회로가 회로도로 나오는 건 아닌데

처음 그 단원에 맞닥드리면 멘붕이 온다.

덕분에 논리회로 구조 책 한권 살까 하다가

인터넷을 뒤지니 마이스터고 학생들이 쓰는 수업자료가 있길래

그걸로 따로 봤다.

 

근데, 그거 말고는 솔직히 쉽다.

플립플롭 좀 자세히보고 나머진 2일? 정도 본거 같다.

그래서 한 1주일 공부한 것 같다.

 

당연 독학사 책 읽고, 기출문제집 사서 풀고 했다.

기출문제집보다 쉬은 문제도 많고, 어려운 문제도 있다.

아마 그 어려운 문제를 틀렸겠지.

 

진짜 본적 없는 내용이 나와서 ㅜㅜ 아 60점만 넘기면 되니까 ~ 하고 마음을 다독였다.

 

여튼 이 과목 선택하실 분들은 좀 고민해보시길 바란다.

와!!

자료구조 최고점 받았다

97.5

 

공교롭게도 학점은행제로 알고리즘을 듣고있어서 그런가

무지하게 쉬웠다

 

한 단원 단원이 양이 많아 페이지가 잘 안주는거 같은데..

은근 쉽다!

 

독학사 책으로만 공부했고, 대신 총 공부한 시간은 좀 긴 편이다.

2주? 다른 과목 다 같이 본걸로 해서 2주정도 본 것 같다

 

자잘한 것들이 나온다

뭐 원형리스트의 각 노드의 위치가 같아야 공백이네, 아니면 full이네

이런것을 묻는 거

 

딱 나왔고, 다행이 맞았다

 

다른 것들도 상당히 원론적이고

유사코드가 가끔 나오지만 우다다다 나오진 않는다

 

단지

시험시간이 50분이라.... 좀 허겁지겁 마킹하다 틀려서 ㅜㅜ 답안지 한개를 잘못 마킹한 채로 내버렸다

그게 틀린 것 같다 ㅜㅜ 속상해

 

그래도 어찌되었든 초고득점이라 생각한다.

좋았어

합격했다!!!!!!!!!!!!!!!!!!!!!!!!!!

유일하게 독학사 카테고리중 모든 공부한 것을 올린 곳이기도 한데

최저점 받았다.

4과목을 1달정도 여유 두고(학점은행제 중간고사 기간이 끼여있어서.. 그거 공부하느라 1달밖에 시간이 없었다) 공부했는데

왠걸 C가 너무 쉬워서 훌렁 다 보고 다른거 공부했었는데

ㅜㅜㅜ힝

 

어려웠다 생각보다.

 

독학사 책에만 의존하지말고 진짜 실제로 보던 C책 가지고 갈걸..

 

원론적인 질문도 많았고, 코드 보고 해석하는 질문도 많았다.

보통 독학사 셤이 그러니까.

 

근데 이게 참 독학사 책만 보고 가서 그런지

오랜만에 보는 C언어라 기존에 알고 있던 것도 많이 잊은 상태였는지

문제가  여간 어렵지 않더라

 

진짜 어려웠어ㅜㅜㅜㅜㅜㅜ으앙

근데 찍은건 다 틀린거 같다.. 시무룩

 

셤 친지 꽤 지나서 자세한 내용은 기억이 안나는데

여튼 좀 마니 어렵다. 독학사 책으로는 안심할 난이도가 아니므로 주의해야 한다!!! ㅜㅜㅜ엉엉

 

여튼 득점은 67.5

아~ 아슬아슬하다 ㅜㅜㅜ

그치만 합격했다는거! ㅜㅜㅜ으앙


l  버스 : 연결된 장치 간 이동 통로

l  시스템 버스 : 케이블과 커넥터로 구성된 전송통로. 데이터와 제어신호들이 흐름

제어 버스 : 제어, 타이밍, 조정 신호 전달

데이터 버스 : 프로세서, 메모리, 주변장치 간 실제 데이터 전달

주소 버스 : 전송되는 데이터의 메모리 위치 지정

l  버스는 클록의 제공 여부에 따라 동기식 버스 / 비동기식 버스로 구분

l  출력장치는 사용자와 컴퓨터 간의 대화 통로 제공하는 장치

 

1절  시스템 버스

1.     개요

n  시스템 버스 : 공유 전송 매체

기억장치, 중앙처리장치, 출력장치 간에 통신할 수 있도록 해주는 상호 연결 구조

n  전기적 연결, 하드웨어, 프로토콜, 소프트웨어, 버스 컨트롤러 모두 포함

n  저속 입출력장치가 연결되면 비용 많이 발생

n  오십 개 ~ 수백 개 개별 라인으로 구성, 전원 분배 라인 있을 수 있음

n  버스 트랜잭션

u  요청 : 주소와 명령어 발행

u  행동 : 데이터 전송

u  마스터 : 명령이나 주소를 발생시켜 버스의 트랜잭션 시작할 수 있는 버스 요청 신호 생성 가능

u  슬레이브 : 버스에 대한 요청 권한이 없어 수동적으로 대응하는 장치

n  버스 분류 / 차별화 설계 요소

u  버스 유형, 전용 버스 라인, 주소 유효 제어선을 사용해서 같은 회선에 주소와 데이터 정보 전달하는 멀티 플렉스 버스 고려할 수 있음

 

2.     데이터 버스

n  시스템 모듈 간 데이터를 전송하는 양방향 통로 제공

n  32개 이상 수백 개의 선들로 구성

n  선의 개수 = 데이터 버스 폭! (전체 시스템 성능 결정)

o  전송 용량(대역폭)

o  버스 사이클 완료하는 데 몇 개의 사이클이 필요할 수 있음

o  속도 : 버스 처리량! 바이트/초 로 표시

o  버스 폭이 넓을수록 처리량 커짐

n  버스 처리 지연 : 데이터 전송을 준비하기 위해 필요한 시간

o  영구적인 버스 마스터가 있는 시스템에서는 처리 지연이 매우 작음

o  데이터 전송을 요구하는 장치들이 버스 접근을 승인하는 중재 매커니즘이 필요한 복잡한 시스템에서는 지연시간 길어짐

 

3.     주소 버스

1)    개요

u  단방향으로 주소 지정만 함. 데이터 버스에 실어야 할 주소 지정

u  버스 폭 : 시스템의 최대 메모리 용량(주소공간)을 결정함

u  출력 포트 지정할 때도 사용

u  상위 비트는 버스의 특정 모듈 선택 / 하위 비트는 모듈 내 메모리 주소 또는 입출력포트 선택

u  데이터 전송 통제하는 버스 마스터는 데이터에 대한 주소를 제공해야 함

u  데이터 버스와 병렬로 작용하는 주소 버스 제공

일부 시스템은 주소/데이터 통합 버스 제공(멀티플렉스로) ->  시분할

o  멀티 플렉스 주소/ 버스

같은 선으로 주소와 버스를 멀티플렉싱 함

전송 경로상 고속 전자 스위치인 멀티플렉서와 디멀티플렉서 필요

기존 버스보다 속도 느리고 수정 어려움

 

2)    버스트 전송

u  각가의 데이터를 연속적으로 기억장치 주소로 전달

u  멀티플렉스 주소버스 방식의 효율성이 향상될 수 있음

u  캐시 메모리 시스템 지원하기 위해 사용됨

캐시 한 라인이 메모리에서 로드 될 때 첫 번째 워드 주소가 메모리로 전송

메모리는 지정된 주소의 데이터를 제공하고 계속해서 다음 주소의 워드를 제공함

u  각 데이터를 전송하는데 필요한 단계를 거치지 않고 반복하여 처리 -> 효율성 증가

연속적인 주소를 메모리에 생성할 수 있음

u  데이터 추가 주소 없이 송신!

 

4.     제어 버스

1)    개요

u  단방향으로 동작

u  데이터선과 주소선의 사용과 접근 제어

u  CPU와 기억장치 간 명령과 시간 정보 전달

u  시간 신호 : 데이터와 주소 정보의 유효성 나타냄

u  명령 신호 : 실행할 연산 지정

u  데이터 방향 신호

u  데이터 유효성 신호(DAV) : 1이면 읽기 실행, 0이면 쓰기 실행

읽기 사이클 동안 데이터는 버스 슬레이브에서 버스 마스터로 흐름

쓰기 사이클 동안 데이터는 버스 마스터에서 버스 슬레이브로 흐름

u  일부 시스템은 읽기와 쓰기 신호 통합하여 갖지 않고 별도로 분리해 가짐

READ, WRITE 신호 유지하면 읽기 활성화 쓰기 활성화 버스 프리 3가지 상태 표현 가능

u  DAV(유효성 신호)는 버스 마스터에 의해 신호 발생되어 전송 일어나고 있음을 나타냄

 

2)    제어신호의 종류

(1)   쓰기 신호 : 데이터 버스 내용이 주소에 저장

(2)   읽기 신호 : 주소의 내용이 데이터 버스에 실림

(3)   출력 쓰기 신호 : 지정된 입출력 포트로 버스에 실린 데이터 출력

(4)   출력 읽기 신호 : 지정된 입출력 포트로부터 데이터가 버스에 실림

(5)   클록 신호 : 동작 동기화

(6)   리셋 신호 : 모든 모듈 초기화

(7)   전송 ACK 신호 : 데이터가 버스에 실렸거나 버스로부터 다른 곳으로 전달되었음을 나타냄

(8)   버스 요청 신호 : 모듈이 버스의 사용권 얻는데 필요한 신호

(9)   버스 승인 신호 : 모듈의 요청이 버스 사용권 승인 받았음을 나타내는 신호

(10) 인터럽트 요청 신호 : 외부에서 인터럽트 발생했음을 알림

(11) 인터럽트 ACK 신호 : 요청한 인터럽트 승인

 

5.     시스템 버스 동작

1)    동기식 버스

u  클록이 필요한 버스

u  버스 상에 있는 모든 장치가 동일한 클록 속도에 맞춰 동작

u  클록의 주기보다 짧은 주기의 버스 동작은 클록이 완료될 때 까지 대기 -> 시간낭비

u  제어선은 규칙적인 동일한 주기로 1, 0 번갈아 전달하는 클록선 포함함

클록이 1 -> 0으로 변화하는 것 : 클록 사이클 / 버스 사이클 -> 클록 슬롯

클록 사이클이 시작되면 모든 이벤트 동작

이벤트는 하나의 클록 사이클을 점유

 

2)    비동기식 버스

u  클록을 사용하지 않고 마스터-슬레이브 방식으로 동작

u  버스 트랜잭션 실행 위해 핸드셰이킹 사용

u  핸드셰이킹 : MSYN, SSYN 두 가지 신호 사용

u  회로 복잡해짐

 

동기식 버스

비동기식 버스

클록으로 동작 기반의 프로토콜과 시간 기반의 제어선

클록 없음

클록 왜곡 때문에 길게 구성 X

클롤 왜곡 걱정X 길이 제한 없음

버스상 모든 장치는 동일 클록 속도 적용

핸드셰이킹 프로토콜 사용

구형 쉽고 로직 간단

버스 트랜잭션 관리하기 위해 별도의 제어선과 로직 필요

속도 빠름

속도 빠르지 않음

클록 왜곡 : 클록의 시간적 지연에 의한 문제

 

6.     시스템 버스의 데이터 전송

1)    프로그램에 의한 입출력방식

u  CPU가 직접 입출력에 대해 제어

u  상태 레지스터 검사할 별도의 프로그램 필요

u  플래그 검사한 결과에 따라서 읽기 or 쓰기 명령에 의해 데이터 전송

u  CPU 경유해서 데이터 전송 -> CPU시간 낭비하게 됨

2)    인터럽트에 의한 입출력방식

u  CPU가 상태 레지스터 검사 X

u  데이터 전송 준비 되면 인터페이스가 인터럽트 이용해 데이터 전송

u  인터럽트 요청하면 현재 실행 중인 프로그램 중단 -> 출력 전송 시작

u  인터럽트 발생하면 복귀 주소 스택에 저장하고 서비스할 루틴으로 분기

u  분기 주소 : 벡터 인터럽트 방식 / 비벡터 인터럽트 방식

 

3)    DMA에 의한 입출력방식

u  출력장치와 기억장치가 직접 데이터 전송

u  DMA라는 하드웨어를 버스에 설치

u  출력하는 동안 CPU로부터 DMA가 모든 권한 위임 받는 방식

u  DMA CPU 개입 없이 기억장치와 직접 데이터 전송

 

2절  버스 중재

l  프로세서와 DMA 컨트롤러 또는 두 개의 DMA 컨트롤러가 주 메모리에 액세스 하려고 동시에 버스 요청할 경우 충돌 발행 -> 중재 절차 필요

l  버스 마스터 : 주어진 시간에 버스에서 데이터 전송 초기화 할 수 있는 장치

l  다음 장치가 버스 마스터로부터 버스에 대한 액세스 얻도록 우선순위 시스템 설정해 다양한 장치의 요구하는 과정

1.     중앙집중식 중재 방식 : 하나의 버스 중재기가 중재

1)    데이지 체인 방식

u  BG신호! 데이지 체인 방식! 모든 DMA 컨트롤러에 연결됨

u  BB(버스 비지!) 신호 1 이면 DMA 컨트롤러 제어권 획득 / 0이면 버스 사용 중

u  동일한 버스 요청선, 버스 승인선, 버스 사용선 사용

u  하나의 중재선에 직렬로 연결, 중재기에 가장 가까운 장치의 우선순위 높게 할당

u  직렬 중재 방식

(1)   모든 마스터는 동일한 버스 요청BR선 사용

(2)   버스 중재기 -> 사용 가능할 경우 버스 승인 BG 신호를 해당 마스터에 보냄

(3)   버스 사용 중이면 BB 0, 버스 사용 끝나면 BB 1

 

2)    폴링 방식

u  중재기가 마스터에게 버스 사용여부를 주기적으로 체크하는 방식

u  중재기와 마스터 간 별도의 폴링 주소선이 있음

주소선 개수 시스템에 연결된 마스터 개수

주소선 n이면 마스터 수는 이니까

u  BR 신호 들어오면 중재기가 마스터 주소 순차적으로 생성해서 하나씩 버스 사용할 지 체크

u  한다 하면 BB 0 하고 BG 주고 뭐 그런거

u  속도가 좀 느리고 하드웨어 구성 방식과 소프트웨어 구성 방식이 있음

 

3)    독립 방식

u  중재기와 마스터 간에 별도의 독립된 버스 요청선 버스 승인선 있음

u  BB : 중재기와 모든 마스터 간에 공통으로 사용

u  중재기 안에 디코더가 가장 높은 순위 선택-> 버스 승인 신호 발생 -> 사용 가능

 

4)    직렬 중재 방식과 병렬 중재 방식

u  직렬 : BG BR선 한 개

마스터 순서에 의해 우선순위 결정

u  병렬 : 버스에 연결된 마스터들이 모두 독립적인 BR, BG선 가짐

마스터 개수만큼 BR BG선 필요

 

2.     분산형 중재 방식

n  버스 마스터가 별도의 중재기 가지고 있는 방식

n  보스 중재 동작은 각 버스 마스터의 버스 중재기에 의해 이루어짐

n  신뢰성 우수

n  장애 일으킨 중재기 찾는 방법이 복잡, 중재기 한 개의 장애가 시스템에 문제가 됨

 

3절  출력장치의 제어

1.     개요

n  서로의 특성 파악해 장애 없는 데이터 전송 수행해야 함

n  출력 장비와 기타 주변 장치 간 데이터나 신호 전송 제어하고 적절한 동작 실행할 인터페이스 필요

2.     출력장치의 구성요소

1)    출력장치

2)    출력 제어장치

u  출력장치와 입출력 인터페이스 사이의 상호작용 제어

3)    출력장치 인터페이스

u  CPU와 입출력장치 간 정보 전송 담장

u  신호 변환, 동기 절차 및 제어, 데이터의 형식 변환 등

4)    출력 제어기

u  마더 보드 내에 설치

u  CPU 기능 갖는 입출력 전용 처리기

u  DMA 제어기, 출력 프로세서(IOP), 채널 제어기

 

3.     출력장치 인터페이스의 목적

n  CPU와 주변장치 간 차이점 해결 -> 링크

1)    신호 값 변경

2)    속도 차이에 의한 동기과 과정 필요

3)    주변장치의 데이터 코드는 CPU나 기억장치의 워드가 아님

4)    CPU에 연결된 다른 주변장치들 동작에 방해되지 않도록 제어

 

4절  출력장치의 주소지정

l  어떤 장비와 통신을 하기 위해선 프로세서가 주소선에 장비 주소 올려야 함

l  각 인터페이스는 입출력 버스에서 받은 주소와 제어를 해독 -> 주변장치의 제어장치로 신호 보냄

l  각 주변장치는 자기만의 제어장치를 가지고 있어!!

1.     출력 명령

1)    제어 명령

2)    상태 명령 : 여러 상태 조건 테스트에 사용. 장애 테스트 -> 결과 상태 레지스터에 표시

3)    출력 명령 : 데이터 출력에 관한 명령

4)    입력 명령 : 데이터의 입력에 관한 명령. 출력 명령과 반대

 

2.     출력 버스와 기억장치 버스

n  출력장치와 통신하기 위해선 CPU는 기억장치하고도 통신해야 함

n  컴퓨터 버스가 기억장치, CPU와 통신하는 방법!

(1)   전용 프로세서(IOP) 사용

o  출력 위한 전용 버스 구성하는 방법

o  컴퓨터가 별도의 입출력 프로세서IOP를 제공

o  IOP의 목적 : 외부 장치와 내부 기억장치 간 정보 전송을 위한 독립된 경로 제공

o  DMA와 차이점 : 저장된 입출력 프로그램을 실행할 수 있는 기능이 있음

o  출력 프로그램 실행은 CPU명령에 의해 시작-> IOP번호, 출력장치 번호, 출력 프로그램 주소 등을 명령이 포함

 

(2)   분리형 입출력 방법

o  데이터와 주소버스는 공통으로 사용.

o  읽기 쓰기 위한 제어버스만 분리

o  데이터 주소는 주소선에 배치, 읽기쓰기 제어는 분리된 제어선에 설정

o  기억장치와 입출력장치 주소 공간 분리해서 사용. -> 출력 주소 : 포트

o  기억장치와 입출력장치들이 별도의 명령어 사용

 

(3)   기억 사상 입출력 방법

o  기억장치나 입출력장치 위해 동일한 명령어 사용

o  기억장치 주소 용량 감소

 

분리형 입출력 방식

기억장치 사상 입출력 방식

기억장치와 입출력장치가 서로 다른 주소 공간 가짐

동일한 주소 공간 사용

모드 주소는 기억장치에 의해 사용됨

출력 주소 공간 때문에 기억장치 공간 감소

서로 다른 명령어 사용

동일한 명령어 사용

출력 주소 : 포트

일반적인 기억장치 주소와 같음

별도 버스 사용 -> 효율적

효율성 떨어짐

버스 많아서 크기 커짐

크기 작음

별도의 로직 떄문에 복잡

로직 간단

 

5절  출력 방식의 종류

1.     인터럽트 이용하지 않는 방식

n  드라이버 소프트웨어 제어하에 CPU의 레지스터 또는 메모리에 액세스 하기 위해 시작하는 데이터 전송

n  CPU는 명령어 실행한 후 입출력작업이 완료될 때 까지 대기

n  CPU가 데이터 수신 또는 전송 위해 준비된 입출력장치에 대해 오랜 시간 대기

è DMA, 인터럽트 방식 선택

n  폴링 : CPU가 대기하는 동안 입출력 모듈을 계속 확인

n  성능 수준 저하

n  동작 순서

(1)   장치에 의한 동작

o  데이터를 입출력 버스에 배치, 데이터 유효 라인 활성화

(2)   인터페이스에 의한 동작

o  바이트를 레지스터에 받아들이고 데이터 허용선 활성화 -> 상태비트 F!

o  데이터 허용선이 인터페이스에 의해 비활성화될 때까지 다른 바이트 전송 안함 -> 핸드셰이크

o  플래그 클리어 되먼 인터페이스는 데이터 허용선 비활성화 -> 다음 데이터 바이트 전송 가능

(3)   프로그램에 의한 동작

o  상태 레지스터 읽음

1이면 데이터 레지스터 읽고 0이면 상태 레지스터를 읽음;;

o  데이터 레지스터 읽으면 플래그 비트가 0으로 클리어 됨

 

2.     인터럽트 이용하는 방식

n  인터페이스 장치가 데이터 전송 준비가 되면 인터럽트 요청 생성해 CPU로 보냄

n  CPU는 인터럽트 요청 신호 받으면 실행 중 프로그램 중단, 서비스 프로그램으로 분기

n  완료 후 다시 수행한 작업으로 복귀

n  폴링 / 데이지 체인

1)    인터럽트 이용한 동작 과정

(1)   동작 절차

o  CPU 인터럽트 신호 인지 -> PC주소 스택에 저장, 해당 인터럽트 루틴ISR로 분기

o  출력 데이터 전송 처리

o  스택에 저장된 주소를 PC로 전달 -> 원래 주소로 복귀 -> 다시 실행

 

(2)   분기 주소 선택 방법

    벡터 인터럽트 방식

CPU가 인터럽트 서비스 루틴의 주소를 미리 알고 있음

소프트웨어적 처리 방식

인터럽트 필요한 장비가 장비의 벡터값을 데이터 버스와 입출력 인터페이스 통해 CPU로 보냄

    비벡터 인터럽트 방식

PC에 저장된 주소가 지정하는 하드웨어로 분기

항상 일정한 위치로 분기 (장치 독립적인 하드웨어로 코드화 된 ISR로 분기)

 

(3)   인터럽트 종류

    외부 인터럽트 : 정전, 전원 공급 등 하드웨어적 장애

정전! 가장 먼저 처리해야 함

    내부 인터럽트 : 프로그램 자체의 오류에 의해 발생

불법적 명령이나 데이터 사용이 문제. 매번 같은 위치에서 발생

    소프트웨어 인터럽트 : 프로그램 운영자에 의해 강제로 실행 감시자 호출

 

(4)   인터럽트 우선순위

    정전 / 전원 이상 인터럽트

    출력장치 인터럽트

    내부 인터럽트

    소프트웨어 인터럽트

 

2)    폴링 방식

u  소프트웨어적 방식

u  CPU가 입출력장치 지속적으로 확인

u  인터럽트 발생하면 우선순위에 따라 각 장치를 순차적으로 검사하여 해당 서비스루틴 실행

u  해당 작업 종료 전까지 아무 일도 못함

 

3)    직렬 우선순위 인터럽트 방식

u  하드웨어 우선순위 방식 사용

u  장비 동작 속도 빠르게 하기 위해 각 장비는 인터럽트 벡터가 있음

u  하드웨어 우선순위 인터럽트 장치에 의해 순서 결정

u  직렬, 병렬 다 가능

u  데이지 체인 방식은 인터럽트 회선을 직렬로 연결해 우선순위 결정-> CPU에 전달

우선순위 높은 장치를 먼저 배열함

u  첫 장비의 PI 통해 INTACK 신호 보냄 -> 인터럽트 요청 장치면 VAD 신호 보냄

u  PO 신호 0으로 해서 신호 닫음

u  아니면 PO 거쳐 다음 장치로 넘어가고 PO 1

u  PI = 1, PO = 0 인 장치가 인터럽트 요청한 것

 

4)    병렬 우선순위 인터럽트 방식

u  인터럽트 레지스터 사용 -> 레지스터 비트 위치에 따라 우선순위 결정

u  마스크 레지스터 : 우선순위 낮은 장치 사용하지 않도록 설정하는 데 사용

u  해당 인터럽트 비트와 마스크 비트가 AND연산 되어 우선순위 인코더에 적용

u  우선순위 인코더는 2비트 벡터주소 생성

u  다른 출력은 인터럽트 상태 플립플롭 설정함

 

3.     DMA를 이용한 입출력 방식

1)    개요

u  출력장치와 기억장치가 직접 데이터 전송하도록 해 전송속도 개선, CPU 효율적 사용

u  기억장치와 입출력장치가 직접 전송 실행

u  DMA가 데이터 전송하는 동안 CPU는 기억장치의 제어로부터 자유롭게 됨

u  버스 요청BR, 버스 승인BG 신호로 제어

u  실행 끝내고 주소버스, 데이터버스, 제어버스를 고전압 상태로 설정 -> 출력 중단 되었다는 의미

 

2)    DMA 전송

(1)   대량 전송 : 한 블록씩 연속적으로 적용

DMA 제어기는 메모리 버스의 마스터가 됨

(2)   사이클 스틸링 : 한 번에 한 워드씩만 데이터 전송하고 버스 제어를 CPU에게 반환

3)    DMA 제어기 구조

u  CPU와 입출력장치 간 데이터 전송을 위한 인터페이스 회로, 주소 레지스터, 워드 카운트 레지스터, 제어 레지스터 등으로 구성

u  주소 레지스터의 기억장치의 주소를 이용하여 기억장치와 직접 통신

u  워드 카운트 레지스터는 전송할 워드 개수 표시 -> 전송되고 나면 1씩 감소

u  제어 레지스터 : 전송 방식 표시

u  주소 레지스터는 워드 전송하면 1씩 증가

u  데이터 버스와 제어선을 통해 CPU와 통신

u  DMA 내의 레지스터는 DS(DMA SELECT) RS(REGISTER SELECT) 입력을 1로 설정하여 선택

u  RD, WR 입력은 양방향

u  BG = 0이면 CPU DMA 레지스터에서 읽거나 쓰기 위해 DMA 레지스터와 통신

u  BG = 1이면 DMA는 주소버스에 직접 주소를 지정해 메모리와 직접 통신. RD WR 제어 `활성화

u  DMA 전송 실행

    CPU가 주소와 데이터 버스 통해 DMA와 통신 함

    DMA는 자신이 주소 가지고 있고, RS DS선 활성화

    BG = 0 -> RD WR은 레지스터와 통신하는 입력선 (CPU)

BG = 1 -> RD WR은 기억장치에서 읽거나 쓰는 출력선 (메모리)

 

4)    DMA 초기화 내용

u  CPU가 입출력 명령으로 DMA 제어기 관련 레지스터 초기화함

     출력할 기억장치 블록의 시작 주소 담고 있는 주소 레지스터

    기억장치 블록의 워드 개수 표시하는 카운트 레지스터

    읽기나 쓰기 전송모드 지정하는 제어 레지스터

    DMA 전송 시작신호

초기화 함

 

4.     채널에 의한 입출력 방식

1)    개요

u  IOP라고 불리는 채널!

u  IOP는 스스로 명령어 인출하고 실행할 수 있음

u  CPU는 데이터 처리, IOP는 주변장치와 기억장치 간 데이터 전송 경로 제공

u  데이터는 하나의 메모리 사이클을 이용해 IOP에서 기억장치로 전송 됨

u  명령(커맨드) : IOP가 기억장치에서 읽은 명령어(CPU에서 읽은 것과 구분)

2)    채널의 종류

(1)   셀렉트 채널 : 한 번에 하나의 입출력 동작 처리. 고속장치에 이용

(2)   멀티플렉서 채널 : 동시에 여러 입출력장치 시분할. 저속장치에 사용

한 번에 한 바이트

(3)   블록 멀티플렉서 채널 : 셀렉트 채널 + 멀티플렉서 채널 -> 블록단위로 전홍 다수 고속장치

속도 : 셀렉트 > 블록 > 멀티플렉서

 

 

+ Recent posts