2019학년도 『정보통신망』의 기말시험 기출문제 중 6개 문제(5, 10, 15, 23, 29, 33번)에 대해 풀이를 해설하시오. 단, 문제에서 다루는 주요 용어에 대해서도 설명하고, 정답은 왜 정답인지, 오답은 왜 오답인지를 상세히 설명할 것. [30점]5. 다음 괄호 안에 적합한 용어를 순서대로 나열한 것은?통신을 원하는 두 개체 간에 무엇을, 어떻게, 언제 통신하도록 할 것인지를 서로 약속한 규악을 통신( )이라고 하며, 그 주요 내용으로 ( ),( ),타이밍 등이 있다.스위칭, 변조, 복조 (2) 프로토콜, 변조, 복조(3) 스위칭, 구문, 의미 (4) 프로토콜, 구문, 의미두 통신 주체 간에 정보를 교환하기 위해서는 여러 가지의 제어신호의 전달에 관해 미리 약속할 필요가 있는데, 이처럼 통신을 원하는 두 개체 간에 무엇을, 어떻게, 언제 통신하도록 할 것인지를 서로 약속한 규약을 통신 프로토콜이라고 한다. 2개의 통신 주체가 원활하게 교신하기 위해서는 상호간에 정해진 통신 프로토콜을 그대로 이행해야 하며, 그 주요 내용으로는 구문, 의미, 타이밍이 있다. 구문은 데이터 형식이나 신호 수준 등을 포함하며, 의미는 전송의 조정, 오류관리를 위한 제어정보를 포함한다. 변조란 전송하려는 신호를 보다 높은 주파수 대역의 반송파 신호에 싣는 과정이며, 복조는 변조되어 전달된 신호로부터 반송파 신호를 제거하면 원래 전달하고자 했던 베이스밴드 신호가 남게 되는 과정이다.10. 48개의 ASCII 문자 블록을 동기식 전송 방법과 비동기식 전송방법으로 전송하려 한다. 물음에 답하시오. : 1개의 시작 비트와 1개의 정지 비트를 사용하는 비동기식 전송의 경우 최대 전송 효율을 구하면?(1) 70% (2) 80% (3) 90% (4) 99.6%전송효율은 (정보 비트수 / 총 전송 비트 수 ) *100 으로 구한다. 8비트 ASCII 코드의 전송인 경우에 하나의 시작 비트와 하나의 정지 비트를 고려한다면, 글자 하나당 추가 2비트를 포함하여 10비트가 필요할 것이다. 글자 데이터 전송 전에 송/수신자 사이에 가상회선이라고 불리는 논리적인 경로를 설정하지 않고 패킷들이 각기 독립적으로 전송되는 방식이다. 가상회선 패킷 교환 방식은 데이터 전송이 이루어지기 이전에 송신자와 수신자 사이에 논리적인 경로(가상회선)를 설정하고 모든 패킷을 가상회선을 통해 전송하는 방식이다. 가상회선 방식은 회선교환과 유사한 연결지향형 전송 방식이며, 이는 연결 설정 및 연결 해제가 반드시 필요하다.23. 지구에서 목성 탐사선에게 데이터를 전송하고자 할 때 다음 중 관련이 깊은 것은?(1) Go-back-N ARQ (2) Sliding window protocol (3) Stop-and-wait ARQ (4) Hamming codeN-프레임 후퇴(Go-back-N) ARQ 방식에서는 송신측이 윈도우 크기만큼의 프레임들에 순서번호를 부여하여 연속적으로 전송한다. 프레임의 연속적인 전송을 위해 이 방식은 슬라이딩 윈도우(sliding window) 개념을 사용한다. 정지-대기(stop-and-wait) ARQ에서 송신측은 1개의 데이터 프레임을 수신측에 송신하고 수신측에서는 수신된 프레임의 오류 유무를 판단해서 송신측에 ACK 또는 REJ를 전송한다. 송신측은 일정 시간이 경과할 때까지 응답 프레임(ACK 혹은 REJ)을 수신하지 못할 경우 해당 프레임을 재전송한다. 데이터 전송 시 오류를 검출하고 재전송을 요구하는 ARQ 방식과는 달리 수신측에서 오류를 검출할 뿐만 아니라 정정까지 할 수 있는 방식을 전진 오류정정 방식이라고 한다. 이 방식은 데이터 프레임에 잉여 비트를 추가하여 만든 오류정정 코드를 전송하는데, 이것을 이용하여 오류를 검출하고 정정까지 수행한다. 해밍 코드는 대표적인 전진 오류정정 방식이다. 연속적인 데이터 흐름이 필요하고 역방향 채널의 제공이 어려운 상황에서는 전진 오류정정 방식이 많이 사용된다.29. 다음 중 TCP와 UDP에 관련된 설명으로 옳은 것은?(1) TCP는 전송 계층 프로토콜이다.(2) UDP는 인터넷 계층 프로토콜이다. 없는 비연결형 데이터 전달 서비스를 제공하는 전송 계층 프로토콜이다. 즉, 비연결성과 비신뢰적 특징을 갖는 프로토콜이다.33. 이것은 컴퓨터 사용자의 정보를 빼내가려는 악의적인 목적으로 제작된 악성 프로그램으로서 자기 복제 능력이 없다는 특징이 있다. 주로 유틸리티 프로그램으로 위장해 배포된다.(1) 컴퓨터 바이러스 (2) 트로이 목마 (3) 파밍(pharming) (4) 피싱(phishing)컴퓨터 바이러스는 컴퓨터에서 실행되는 일종의 명령어들의 집합으로 감염 대상이 컴퓨터 프로그램이나 데이터 파일이다. 트로이 목마는 컴퓨터 사용자의 정보를 빼 내가려는 악의적인 목적으로 제작된 악성 프로그램으로, 바이러스와 달리 자기 복제 능력이 없으며, 주로 유틸리티 프로그램으로 위장해 배포된다. 파밍은 합법적으로 소유하고 있던 사용자의 도메인을 탈취하거나 도메인 네임 시스템(DNS) 이름을 속여 사용자들이 진짜 사이트로 오인하도록 유도하여 개인 정보를 훔치는 수법이다. 피싱은 인터넷에서 스팸메일을 이용한 범죄 수법으로, 송신자의 신원을 알리지 않는 메일로 수신자의 개인 정보를 빼낸 뒤 이를 불법적으로 이용하는 범죄를 뜻한다.교재 제3장의 주관식 연습문제 7번(교재 p.103)을 푸시오. [10점]네트워크 형태의 5가지 기본 형태를 나열하고, 구조와 특징을 설명하시오.네트워크 형태에는 5가지의 기본 형태로서 성형(star) 네트워크, 환형(ring) 네트워크, 버스형(bus) 네트워크, 그물형(mesh) 네트워크, 그리고 계층형(hierarchical) 네트워크가 있다. 성형 네트워크는 점 대 점 선로를 이용한 네트워크 구성으로, 성형 네트워크에서의 각 단말기는 점 대 점 선로에 의하여 중앙 컴퓨터에 연결된다. 성형 네트워크는 중앙 컴퓨터에 의존도가 너무 높기 때문에 중앙 컴퓨터가 중요한 기능을 맡고 있다면 장비의 고장에 대비하여 장비 전체 또는 일부를 이중화하는 것이 필요하다.환형 네트워크는 그 명칭에서 알 수 있듯이 여러 컴퓨터들이 고리 모양으로 연결되어 있다. 두 소를 연결하는 버스 구조와 유사한 방식이다. 모든 단말기가 하나의 선로에 연결되어 있어 그 선로를 공용으로 사용하지만, 한순간에 하나의 단말기만이 데이터를 전송할 수 있다.그물형 네트워크는 중앙 컴퓨터 없이 모든 단말기가 상호 간에 점 대 점 형태로 연결되는 형태이다. 많은 단말기로부터 많은 양의 통신을 필요로 한다면 그물형 네트워크를 구성하는 것이 유리하다. 그물형 네트워크는 모든 컴퓨터마다 연결된 통신선로의 수 때문에 신뢰성이 다른 형태의 네트워크에 비해 비교적 높다.계층형 네트워크는 컴퓨터가 데이터 처리 능력과 기능에 따라 계층적으로 배치된다. 상위 계층에 배치되는 컴퓨터는 기능의 중요성이 다른 컴퓨터에 비해 비교적 높고 데이터 처리 능력이 높다.교재 제4장의 주관식 연습문제 4번(교재 p.162)을 푸시오. [10점]회선교환 방식과 패킷 교환 방식의 특성을 비교하여 설명하시오.회선교환 방식은 호스트들 간에 통신을 제공하기 위해 경로상에 필요한 자원들을 미리 할당하고 할당된 자원을 이용하여 데이터를 전송하며, 데이터 전송이 종료되면 할당된 자원을 해제시킨다. 패킷 교환 방식은 네트워크를 지나는 데이터 단위를 일정 길이로 제한하는 것으로, 이러한 일정 길이의 데이터 단위를 프레임, 블록 또는 패킷이라고 부르며, 모든 전송 데이터가 패킷 형태로 변환되어 전송된다. 회선교환 방식은 연속적인 데이터를 전송하는 반면, 패킷 교환 방식은 데이터를 패킷으로 전송한다. 회선교환 방식은 송/수신자 사이에 하나의 통신경로가 설정되면, 이 경로를 구성하는 모든 링크가 통신이 종료될 때까지 독점하게 된다. 회선이 독점적으로 사용되고 있기 때문에 현재 사용중인 회선은 다른 사용자가 사용할 수 없게 되어 회선 이용률 측면에서는 비효율적이다. 패킷 교환 방식은 회선교환 방식에 비해 노드 간의 통신회선이 점유되지 않고 여러 패킷에 의해 공유되는데, 그에 따라 회선의 이용률이 높다. 통신망에 사용자가 많은 경우 회선교환 방식에서는 연결 요청이 거부될 수 있지만, 패킷 교환 방식에서는 taPoint 사의 ARCNET, 토큰링 방식은 IBM 사의 토큰링 LAN을 기준으로 정해졌다. IEEE 802 위원회는 각각의 주제에 대해 연구하는 여러 작업 그룹으로 나뉘어 있다. LAN과 관련된 주요 작업 그룹을 살펴보면 다음과 같다. IEEE 802.1에서는 LAN의 구조 및 LAN과 WAN의 인터네트워킹을 주제로 하는 high level interface 영역을, 802.2에서는 물리 계층의 접근 제어를 담당하는 MAC 계층 및 MAC 계층과 네트워크 계층을 연결시키는 LLC 계층 영역을 연구하고 표준화한다. 802.3에서는 CSMA/CD 방식의 네트워크, 802.4에서는 토큰버스 네트워크, 802.5에서는 토큰링 네트워크, 802.11은 무선 LAN과 관련된 연구 및 표준 제정을 수행한다. 802.15에서는 개인 영역 네트워크 또는 근거리 무선 네트워크에 대한 표준화를 추진 중이다.5. 교재 제8장의 주관식 연습문제 5번(교재 p.314)을 푸시오. [10점]대칭 키 암호화 방식과 공개 키 암호화 방식을 비교하여 설명하시오.대칭 키 암호화 방식은 암호화에 사용하는 키(암호화 키)와 복호화에 사용하는 키(복호화 키)가 서로 동일한 암호화 방식이다. 이 방식을 사용하기 위해서 송신자와 수신자는 사전에 암/복호화 키를 제3자에게 노출되지 않게 공유 빛 보유하고 있어야 한다. 따라서 이 방식에서 중요한 관건은 해당 대칭 키의 안전한 분배 및 관리 방법에 있다. 장점으로는 비교적 구현이 용이하고, 실행속도가 빠르다는 점이며, 단점으로는 암호화할 때 사용한 키를 어떻게 상대방에게 전달할지 등의 키 분배와 관리가 어렵고, 쌍방이 동일한 키를 사용하는 관계로 인증 및 송/수신 부인 방지가 보장되지 않는다는 점이다.공개 키 암호화 방식은 암호화 키와 복호화 키를 별도로 사용하는 방식이다. 이 방식을 이용하기 위해서 사용자는 상대방에게 공개하는 공개 키와 자신만이 비밀로 보유하는 개인 키를 가진다. 상대방이 공개 키로 암호화하여 전송한 암호문은 자신이 비밀로 유지하고이다.
『온라인 제출용 출석수업대체과제물 표지』2020 학년도 ( 2 )학기 출석수업대체과제물교과목명 :학 번 :성 명 :연 락 처 :__________________________________________________________________________________○ 과 제 명 : 다각형을 나타내는 객체를 만들기 위한 클래스를 선언하려고 한다. 다각형은 세 개 이상의 꼭짓점 좌표로 정의된다. 다각형 객체는 다음과 같은 처리를 할 수 있다.▷ 꼭짓점 수와 꼭짓점 좌표(꼭짓점 수에 해당되는 2차원 좌표의 배열)를 매개변수로 받아 다각형 객체를 생성한다(생성자).▷ 복사 및 이동 생성자를 포함한다.▷ 다각형의 면적을 구할 수 있다.▷ 다각형 정보를 출력할 수 있다(꼭짓점들을 차례로 모두 출력함).▶ Polygon 클래스의 메소드메소드비고Polygon(int n, C2D* a)생성자Polygon(const Polygon& po)복사 생성자Polygon(Polygon&& po)이동 생성자~Polygon()소멸자double area()다각형의 면적을 구한다.void display()다각형 정보를 출력한다.▶ Polygon 클래스의 속성속성비고int n다각형의 꼭짓점 수를 저장한다.C2D *arr다각형의 좌표 저장공간 포인터▶ Polygon 클래스의 멤버함수 세부설명? Polygon(int n, C2D* a): 매개변수 n은 정수 자료형 int를 쓰며 다각형의 꼭짓점 수이자 배열에 저장할 좌표의 수이다. a는 좌표를 저장할 공간을 가리키는 포인터이다. 생성자는 n개의 2차원 좌표 구조체를 저장할 수 있는 공간을 동적으로 할당하여 객체를 생성한다. 초기화에 사용할 데이터가 제공될 경우(형식 매개변수 a가 nullptr가 아닌 경우) memcpy 함수를 이용하여 arr에 복사한다.? Polygon(const Polygon& po): 같은 클래스의 객체를 복사하여 객체를 만드는 복사 생성자이다.? Polygon(Polygon&& po): 매개변수로 전달된 객체의 내용을 ‘이동’하여 객체를 생성하는 이동 생성자이다.? ~Polygon(): 소멸자는 할당된 메모리를 반납한다.? double area(): 반환 값은 실수형 double이며, 다각형의 면적을 나타내는 값이다. 반복문으로 신발끈 공식의 절댓값 안에 있는 부분을 계산하여 area에 저장하고, area를 2.0으로 나눈 값의 절댓값을 반환한다.? void display(): 2차원 좌표의 배열인 arr의 각 요소의 x좌표와 y좌표를 반복문을 이용하여 차례로 모두 출력한다. 출력되는 결과는 “꼭짓점 : ” 이후에 (x좌표, y좌표)의 형태로, 다각형의 꼭짓점의 좌표가 순서대로 출력된다.▶ 소스코드 1: polygon.h#ifndef POLYGON_H_INCLUDED#define POLYGON_H_INCLUDED#include #include using namespace std;struct C2D {double x, y;};class Polygon {int num;C2D *arr;public:Polygon(int n, C2D* a = nullptr) :num{n} {arr = new C2D[n];if (a) memcpy(arr, a, sizeof(C2D) * num);}~Polygon() {delete[] arr;}Polygon(const Polygon& po) : num{ po.num } {arr = new C2D[num];memcpy(arr, po.arr, sizeof(C2D) * num);}Polygon(Polygon&& po) : num{ po.num }, arr{ po.arr }{po.arr = nullptr;po.num = 0;}double area() const {double area = 0.0;int j = num - 1;for (int i = 0; i < num; i++){area += (arr[j].x + arr[i].x) * (arr[j].y - arr[i].y);j = i;}return abs(area / 2.0);}void display() const {cout < "꼭짓점 : ";for (int i = 0;i < num;i++) {cout < "(" < arr[i].x < "," < arr[i].y < ")"
2020년 2학기 컴퓨터구조 기말과제는 수기로 작성하는 것입니다.파일을 제출하는 것이 아닌, 손으로 작성해야 하는 점을 유의해주세요.2018학년도 00번2019학년도 00번과 같은 식으로 각 chapter에 해당하는 기출문제를 년도와 번호로 구분하고 아래에 해설을 기술하였습니다. 기출문제 내용이 유사한 부분은 따로 표시하였는데, 숫자만 바꾸는 등 해설을 조금 수정하셔서 사용하시면 됩니다.마지막 페이지에는 chapter별로 해당되는 기출문제를 정리하였습니다. 과제하시면서 참고하시길 바랍니다.(예시)2018학년도 1번 - 2019학년도 1번과 유사(연산코드에 대한 내용만 따로 기술하면 됨)명령어는 필드라고 부르는 몇 개의 비트 그룹으로 나누어지며, 연산코드 필드와 오퍼랜드 필드로 구성된다. 별도의 주소지정방식 필드를 가진 명령어도 있을 수 있는데, 그 형식은 와 같은 식이다. 연산코드 필드는 수행할 연산의 종류를 지정하며, 주소지정방식 필드는 연산에 필요한 오퍼랜드의 주소를 알아내는 데 사용된다. 즉, 방식 필드는 주소 필드에 대한 해석방법을 지정한다. 주소 필드는 존재할 수도 있고 안할 수도 있는데, 주소 필드가 존재한다면 그 필드는 기억장치주소 혹은 레지스터 주소를 나타낸다. 제어 필드는 컴퓨터 명령어를 구성하는 필드가 아니다.2018학년도 1번 - 2019학년도 1번과 유사(연산코드에 대한 내용만 따로 기술하면 됨)명령어는 필드라고 부르는 몇 개의 비트 그룹으로 나누어지며, 연산코드 필드와 오퍼랜드 필드로 구성된다. 별도의 주소지정방식 필드를 가진 명령어도 있을 수 있는데, 그 형식은 와 같은 식이다. 연산코드 필드는 수행할 연산의 종류를 지정하며, 주소지정방식 필드는 연산에 필요한 오퍼랜드의 주소를 알아내는 데 사용된다. 즉, 방식 필드는 주소 필드에 대한 해석방법을 지정한다. 주소 필드는 존재할 수도 있고 안할 수도 있는데, 주소 필드가 존재한다면 그 필드는 기억장치주소 혹은 레지스터 주소를 나타낸다. 제어 필드는 컴퓨터 명령어를 구성하는 필드가 아니다. ← M[ADRS]’와 같은 표기로 나타낸다. 즉, ADRS=300이고 M[300]=618이므로 AC에는 618를 적재한다.2019학년도 2번 - 2018학년도 2번과 유사주어진 명령어는 오퍼랜드의 개수가 하나이므로 1-주소 명령어이다. 기억장치로부터 오퍼랜드를 가져오거나 연산결과를 저장하기 위한 임시적인 장소로 누산기 레지스터를 사용한다. 따라서 (3)번이 옳은 설명이다.2019학년도 6번0-주소 명령어 형식은 산술연산에 관련된 명령어들을 수행할 때, 기억장치 스택을 사용한다. 1-주소 명령어 형식은 기억장치로부터 오퍼랜드를 가져오거나 연산결과를 저장하기 위한 임시적인 장소로 누산기 레지스터를 사용한다. 2-주소 명령어와 3-주소 명령어는 다중 레지스터를 가진 컴퓨터 구조에서 사용하는 명령어 형식이다. 따라서 명령어와 컴퓨터 내부구조와의 관계가 적절하게 연결된 것은 (2)번이다.2018학년도 12번위 그림에서 (가)는 Decoder, (나)는 Flag Register, (다)는 ALU, (라)는 Shifter이다. 따라서 (나)와 (라)에 해당되는 것으로 묶인 보기는 (2)번이다.2018학년도 13번(다)는 산술/논리연산장치(ALU)이다. ALU는 기본적인 산술연산과 논리연산을 실행하는 조합논리회로이다.2018학년도 15번제어단어의 A, B, D 필드는 레지스터의 수와 관련이 있으며, 40개의 레지스터 중 하나를 선택하기 위해서는 선택신호가 최소 6비트 필요하다. (다)는 ALU로 F필드와 관련이 있으며 20개의 연산 중 하나를 선택하기 위해서는 5비트가 필요하다. (라)는 시프터이며 H필드와 관련 있고 12개의 연산 중 하나를 선택하기 위해서는 4비트가 필요하다. 즉, A필드 6비트, B필드 6비트, F필드 5비트, H필드 4비트, D필드 6비트로 제어단어는 6+6+5+4+6=27비트이다.2019학년도 10번상태 레지스터는 C(carry bit), S(sign bit), Z(zero bit), V(overflow bit)로 구성되어 있다. 주어진 그림에서 를 이용하여 구성할 수 있다. 따라서 옳은 설명은 (4)번이다.2019학년도 17번 - 2018학년도 11번과 유사A와 B는 출발 레지스터를 선택하는 필드이며, D는 도착 레지스터를 선택하는 필드이다. F는 ALU 마이크로연산을 선택하는 필드이며, H는 시프트 마이크로연산을 선택하는 필드이다. 따라서 (1)번이 적절한 설명이다.2018학년도 16번마이크로프로그램에 의한 제어방식은 제어신호를 수정하고자 할 때, 기억장치의 프로그램을 바꾸기만 하면 되므로 융통성이 뛰어나다. 하지만 기억장치에서 마이크로명령어를 인출하는 별도의 시간 때문에 하드웨어 방식에 비해 속도라 느린 단점이 있다. 따라서 하드웨어 방식에 비해 처리속도가 향상된다는 (4)번은 틀린 설명이다.2018학년도 17번MUX 1은 외부주소나 내부주소 중 하나를 선택하는 장치로, 외부에서 입력한 주소와 내부 마이크로명령어의 주소 중 하나를 선택하기 위해 1비트가 필요하다. MUX 1의 출력은 (가)에 해당하는 제어주소 레지스터(CAR)과 연결되므로 디코더와 연결된다는 (4)번은 틀린 설명이다.2018학년도 22번주어진 그림에서 (가)는 제어장치, (나)는 처리장치이다. 제어장치에서 처리장치로 가는 (A)는 제어신호이며, 처리장치에서 제어장치로 가는 (B)는 상태신호이다.2019학년도 18번 - 2018학년도 19번과 유사주어진 그림에서 (다)는 처리장치이며, 입력 16비트는 처리장치 제어를 위한 제어단어이다.2019학년도 19번 - 2018학년도 18번과 유사(가)는 제어주소 레지스터(CAR)이다. MUX 1에서 CAR로 입력되는 데이터가 6비트이면 CAR에서 제어기억장치로 2^6개(64개)의 신호가 갈 수 있으므로 제어기억장치는 64단어를 가진다. 제어기억장치에서 인출되는 명령어는 처리장치 제어를 위한 제어단어 16비트, ROM의 64단어를 선택하기 위한 주소비트 6비트, MUX 2의 8개 입력 중 하나를 선택하기 위한 3비트, MUX 1의 선택신호를 위한 1비트로 구성되어 있어 총 (16+6+3+1)=가 들어 있는 PC의 내용을 MAR로 이동시킨다. 두 번째 클록 T1에서는 MAR에 저장된 기억장치의 주소를 가지고 기억장치에 저장된 내용을 MBR로 이동시킨다. 이와 동시에 다음 명령어를 수행하기 위해 PC를 1로 증가시킨다. 세 번째 클록 T2에서는 MBR에 저장된 명령어를 실행하기 위해 IR로 이동시킨다. 여기까지의 과정은 명령어 인출 사이클이며, 따라서 답은 (1)번이다.2018학년도 26번스택 포인터는 스택 주소지정방식에서 사용되는데 스택의 최상위를 지정한다. 스택 포인터는 프로그램 카운터와 같은 크기의 비트수를 가지게 된다. 프로그램 카운터는 다음에 수행될 명령어가 있는 주소를 갖고 있으며, 비트수는 기억장치의 용량에 따라 결정된다. (2)번은 프로그램 카운터에 대한 설명이므로 스택 포인터에 대한 설명으로 적절하지 않다.2018학년도 27번명령어 사이클 중 명령어 인출이란 기억장치로부터 명령어를 가져오는 것을 말한다. 인출된 명령어의 주소는 프로그램 카운터에 들어 있고, 인출된 명령어는 명령어 레지스터로 옮겨진다. 따라서 주어진 설명에서 (가)에 들어갈 용어는 인출 사이클이며, (나)에 들어갈 용어는 프로그램 카운터이므로 (4)번이 정답이다.2019학년도 22번데이터를 기억하는 레지스터에는 기억장치 버퍼 레지스터(MBR), 누산기(AC, Accumulator)가 있다.2019학년도 24번1개의 명령어를 CPU에서 수행하는 데 필요한 전체 수행과정을 명령어 사이클이라고 하며, 크게 인출 사이클과 실행 사이클로 나눌 수 있다. 명령어 사이클 내에는 인출과 실행 사이클 외에 간접 사이클과 인터럽트 사이클이 있다. 따라서 (2)번은 명령어 수행 사이클에 해당되지 않는다.2019학년도 26번스택 포인터는 특수 레지스터로서 스택 공간의 최상위 주소를 갖고 있다. 따라서 스택 포인터가 스택에 있는 데이터를 갖고 있다는 설명을 잘못된 설명이므로 답은 (4)번이다.2018학년도 28번 - 2019학년도 29번과 유사연관기억장치는 기억장치에 기억되어 있는 데이터의 내번이다. 복수모듈기억장치는 하나의 기억장치 사이클 동안 여러 개의 단어를 읽을 수 있기 때문에 읽어 내는 속도를 향상시킨다.2018학년도 29번연관기억장치는 기억장치에 기억되어 있는 데이터의 내용을 이용하여 기억장치에 접근할 수 있기 때문에 내용주소화 기억장치(CAM)라고도 한다.2019학년도 28번기억장치의 성능평가는 다음과 같은 다섯 가지 정도의 요인으로 구분할 수 있다: (1) 기억용량(capacity), (2) 접근시간(access time), (3) 사이클 시간(cycle time), (4) 기억장치 대역폭(bandwidth), (5) 가격(cost). 이 중 접근시간은 기억장치에서 데이터를 판독하거나 기록하는 데 걸리는 시간을 말한다.2019학년도 31번A는 연관기억장치에 대한 설명, B는 가상기억장치에 대한 설명, C는 캐시기억장치에 대한 설명, D는 복수모듈기억장치에 대한 설명이다. 연관 기억장치를 설명하고 있는 것은 A이므로 답은 (1)번이다.2018학년도 34번중앙처리장치의 개입 없이 주기억장치에 직접 접근하여 입출력을 행하는 것이 DMA 제어방식이며, 따라서 답은 (1)번이다.2019학년도 34번데이지 체인중재 방식을 사용하는 경우, 각 장치의 버스 요청신호는 버스 요청선에 OR로 연결되어 있다. 중재기가 버스 요청을 인식하면 버스 허용신호를 출력하는데, 이 신호는 버스 중재기에서 가장 가까운 곳에 있는 장치에 보내지며, 그 장치가 버스 요청을 하지 않았을 경우에는 다음으로 가까운 장치에 보내지는 방법으로 모든 장치에 보내진다. 즉, 버스 중재기에서 가까운 순으로 우선순위가 주어지는 방식이고, 따라서 답은 (4)번이다.2018학년도 35번파이프라인 처리기는 프로그램 내에 내재하고 있는 시간적 병렬성을 활용하기 위하여 프로그램 수행에 필요한 작업을 시간적으로 중첩하여 수행시키는 처리기를 의미한다.2019학년도 35번버스, 크로스바, 트리, 입방체, 성형, 토러스 등은 병렬처리기를 처리기의 상호연결망 구조에 따라 분류한 것이고, 따라서 답은 (
2020학년도 2학기 과제물(온라인 제출용)교과목명 : 프로그래밍 언어론학 번 :성 명 :연 락 처 :__________________________________________________________________________________○ 과제유형 : ( 공통 ) 형○ 과 제 명 : 프로그래밍 언어론 중간과제물1-(1) Algol(Algorithmic Language)은 여러 Algol계 언어들의 집합을 총칭하는 것으로, 절차형 언어로는 최초로 재귀호출이 가능하고, 구문 표기법으로 형식문법을 최초로 상용한 언어이기도 하여 프로그래밍 언어의 역사에 한 획을 그은 중요한 언어이다. 1958년 스위스 취리히에서 미국의 ACM(Asscociation for Computing Machinery)과 유럽의 GAMM(German Association for Applied Mathematics and Mechanics)을 통해 설계되었다. 초창기 이름은 IAL(International Algebraic Language)이었으며, 후에 다른 버전들과 구별하기 위해 Algol 58로 불리게 된다. Algol 58은 begin과 end 쌍으로 구분되는 코드 블록을 도입하였으며, 이를 통해 구조화 프로그래밍의 개념이 등장했음을 알 수 있다. Algol 60은 Algol 58의 후속으로 1960년에 개발되었으며, 문법이 BNF 표기법으로 기술되며, 렉시컬 스코프의 중첩함수 정의를 구현하는 첫 번째 언어였다. Algol 60은 미국에서보다 유럽에서 더 많은 인기를 끌었는데, 이는 IBM의 Fortran이 북미 시장을 점령하고 있었기 때문이다. Algol 68은 1968년 IFIP에서 발표된 언어로, Algol 60을 발전시켜 훨씬 광범위한 적용범위와 보다 엄격하게 정의된 구문과 의미론을 목표로 설계되었다. Algol 68 언어 정의의 복잡성은 컴파일러 구현을 어렵게 만들어 실무에서는 거의 사용되지 않았고, 교육용으로 사용되었다. 대부분의 현대 프로그래밍 언어 문법은 Algol계라고 할 수 있으며, 그런 의미에서 당시 4개의 고급 프로그래밍 언어들(Fortran, LISP, Cobol, Algol) 중 가장 영향력이 큰 언어라고 할 수 있다.1-(2) C 언어는 프로그래밍 언어인 B에서 발전된 것으로, 1972년에 벨 연구소에서 일하던 데니스 리치(Dennis Ritchie)에 의해 개발되었다. C 언어의 기원은 UNIX 운영체제의 개발과 밀접한 관련이 있다. 초기에 UNIX 운영체제는 데니스 리치와 켄 톰슨(Ken Thompson)에 의해 PDP-7의 어셈블리어로 구현되었다. 후에 그들은 UNIX 운영체제를 PDP-11로 포팅하기로 결정하였는데, PDP-11의 기능의 일부, 특히 바이트 접근기능을 활용하지 못하는 B 언어의 부족함이 C 언어의 초기 버전의 개발을 이끌었다. 1973년에 struct 자료형의 추가로, C언어는 UNIX의 대부분을 C로 쓸 수 있을 정도로 강력해 졌다. 1983년, ANSI(American National Standards Institute)는 X3J11이라는 이름의 위원회를 설립하여 C의 표준 사양을 확립하였다. 이 표준은 1989년에 완성되어 ANSI X3.159-1989 “프로그래밍 언어 C”(Programming Language C)로 승인되었으며, ANSI C라고 불리기도 한다. C 언어는 다른 프로그래밍 언어보다 높은 호환성을 가지고 있고 C 언어의 표준 함수로만 작성된 프로그램은 어떤 기종의 컴퓨터에서도 정상적으로 컴파일되고 실행될 수 있는, 이식성이 뛰어나다는 장점이 있다. C 언어의 단점으로는 자료형의 검사 기능이 미약하다는 것, 혼합 연산의 경우 연산 우선순위에 따라 자동 계산되므로 연산 우선순위를 모르면 잘못된 계산 결과를 얻을 수 있다는 것 등을 들 수 있다. C 언어는 운영체제나 임베디드 시스템(embedded system) 구현과 같은 시스템 프로그래밍에 널리 쓰이고 있으며, 빠른 연산이 필요한 곳에서는 높은 효율을 발휘한다.1-(3) Python은 네덜란드 CWI(Centrum Wiskunde & Informatica)의 프로그래머 귀도 반 로섬(Guido van Rossum)에 의해 고안되었으며, 1991년에 발표된 인터프리터 방식의 프로그래밍 언어이다. Python 이라는 이름은 귀도가 즐겨 보던 영국의 코미디 그룹 몬티 파이선(Monty Python)에서 유래되었다. Python 2.0은 2000년 10월 16일에 발표되었으며, 가비지 컬렉터(Garbage Collector)의 탑재와 유니코드 지원 등의 많은 새로운 기능들이 추가되었다. Python 3.0은 2008년 12월 3일에 발표되었으며, 2.x대 버전의 Python과 하위호환성이 없다는 것이 가장 큰 특징이다. Python의 디자인 철학은 Perl의 “하나 이상의 해결 방법이 존재한다.”(“there is more than one way to do it”)에 대비되는 “명백한 하나의 답이 존재한다.”(“there should be one-and preferably only one-obvious way to do it”)를 기본으로 하고 있다. Python의 형식은 시각적으로 정돈되어 있으며, 다른 언어들이 구두점을 사용하는 것과 달리, 영어 키워드를 자주 사용한다. Python은 블록을 구분하기 위해서 중괄호나 키워드가 아닌 들여쓰기를 사용하는데, 그에 따라 프로그램의 시각적 구조는 프로그램의 의미 구조를 정확하게 나타내게 된다. Python은 웹 애플리케이션을 위한 스크립트 언어로 사용할 수 있으며, Django, Pyramid, Flask 등과 같은 웹 프레임워크는 복잡한 애플리케이션의 설계와 유지보수를 지원한다. Python은 또한 TensorFlow, Keras, Pytorch, Scikit-learn과 같은 라이브러리의 도움을 받아 인공지능이나 머신러닝 프로젝트에서 흔히 사용된다.2-(1)EBNF 표현 ::= ( + | * ) 구문 도표2-(2)BNF 표현 ::= while do begin end ; ::= | 구문 도표1. Wikipedia, “ALGOL”, https://en.wikipedia.org/wiki/ALGOL,2. Wikipedia, “ALGOL 58”, https://en.wikipedia.org/wiki/ALGOL_58,3. Wikipedia, “ALGOL 60”, https://en.wikipedia.org/wiki/ALGOL_60,4. Wikipedia, “ALGOL 68”, https://en.wikipedia.org/wiki/ALGOL_68