[정보처리기사 필기] 기출문제 - 501 ~ 550. 오답노트

501. 언어의 종류

  • 컴파일러 언어
    • Compiler 언어
    • 프로그램 전체 라인을 처음부터 끝까지 해독해 목적 코드로 만든 후에 실행
    • 컴파일러 언어의 종류 : C, C++, COBOL, Ada, FORTRAN, PASCAL 등
  • 인터프리터 언어
    • Interpreter 언어
    • 프로그램 라인 단위로 한줄씩 해석하고 바로 실행
    • 인터프리터 언어의 종류 : Javascript, BASIC, LISP 등
  • 스크립트 언어
    • 하나의 응용 소프트웨어(애플리케이션)를 제어하기 위한 용도로 쓰이는 언어
    • 소스 코드를 컴파일하지 않고도 실행할 수 있는 프로그래밍 언어
    • 별도의 컴파일 없이 내장된 번역기에 의해 번역 되므로 바로 실행할 수 있음
    • 컼파일러 언어와는 다르게 인터프리터를 사용해서 코드 한 줄 한 줄을 즉시 해석하고 실행 = 인터프리터 방식 
    • 스크립트 언어의 종류 : JavaScript, ActionScript, AutoHotKey, JSP, Perl, PHP, Python, Lua, Ruby, VBS 등

502. C언어의 변수 선언 규칙

  • 영문과 숫자를 혼용 가능하며 첫 문자는 영문이어야 함
  • 변수 제일 앞이나 중간에 _ 언더 바를 사용 가능
  • int, float, double 등 C 라이브러리에서 미리 선언된 단어는 변수 사용을 못함
* 문제 오류
502. C언어에서 사용할 수 있는 변수명은?

1. lago
2. han-gul
3. _korea
4. double

1번을 선택하였으나, 3번이 답이라고 답지에 있음. 1번, 3번 모두 가능.

507. 결합도

  • 모듈과 모듈 사이의 관련성이 어느 정도인가를 나타내며, 관련성이 적을 수록 모듈의 독립성이 높아 모듈 간 영향이 작아지게 됨
  • 결합도의 종류
    • 자료 결합도 Data Coupling : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 상호 작용이 일어남
    • 스탬프 결합도 Stamp Coupling : 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
    • 제어 결합도 Control Coupling : 단순 처리할 대상인 값만 전달하는 것이 아니라 어떻게 처리해야 한다는 제어요소가 전달되는 경우
    • 외부 결합도 External Coupling : 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참조할 때의 경우로 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 때 주로 발생
    • 공통 결합도 Common Coupling : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우
    • 내용 결합도 Content Coupling : 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우
  • 결합도의 품질
    • 가장 높은 품질 : 자료 결합도
    • 가장 낮은 품질 : 내용 결합도

509. 반도체 기억소자

  • ROM Read Only eMory 
    • 저장된 명령어나 데이터를 단지 읽기만 할 수 있는 기억장치
    • 전원공급이 중단되어도 저장된 데이터는 지워지지 않고 유지
  • PLA Programmable Logic Array
    • AND 와 OR 연산이 가능한 프로그램이 가능한 반도체 소자
    • PROM의 일종
  • shift register 
    • CPU의 ALU(산술논리 연산장치)내에 존재하는 고속의 기억 장치
    • 데이터의 비트들을 왼쪽, 오른쪽으로 이동시키는 기능 수행
    • 관련 명령어 : SHR, SHL
  • RAM Pandom Access Memory
    • 크기가 작고 신뢰성이 높으며, 성능이 우수, 소비전력이 적음
    • RAM은 대부분 컴퓨터에서 주기억장치로 사용
    • 휘발성 기억장치로 전원 공급이 중지되면 저장된 데이터가 삭제
  • LSI Large Scale Intergration
    • 다수의 집적회로IC를 1장의 기판에 상호배선한 대규모 집적회로
    • 회로의 수가 1만개 이상인 초대용량 직접회로를 VLSI라 함

510. 레지스터

  • 처리 중인 데이터나 처리 결과를 임시 보관하는 기능을 하며, 산술 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU 내부의 초고속 기억장치
  • 레지스터의 종류
    • PC Program Counter : 다음에 인출할 명령어의 주소를 가지고 있는 레지스터
    • MAR Memory Address Register : 메모리 주소를 일시적으로 저장하는 사용되는 레지스터
    • MBR Memory Address Register : 기억장치에 쓰여질 데이터 혹은 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 버퍼 레지스터
    • IR Instruction Register :가장 최근에 인출된 명령어 코드가 저장되어 있는 레지스터 
    • AC Accumulator : 데이터나 연산결과를 일시적으로 저장하는 레지스터

511. bit와 byte 단위

  • 1byte = 8개의 bit
  • nK바이트 = nK DRAM n/8

512. 주요 레지스터의 필요 bit 수

  • PC (프로그램 카운터) : 다음에 인출할 명령어의 메모리 주소가 일시적으로 저장되는 레지스터로 메모리 주소를 표현하기 위해 MAR과 동일한 비트 수가 필요
  • MAR (메모리 주소 레지스터) : 현재 수행되는 명령어의 주소가 일시적으로 저장되는 레지스터. 2^n개의 워드 주소를 표현하기 위해서는 n비트가 필요
  • MBR (메모리 버터 레지스터, MDR) : 기억장치를 출입하는 데이터가 일시적으로 저장되는 레지스터로 워드 단위로 데이터를 입출력, m비트의 워드 단위가 필요

514. 명령어의 구조

  • 명령어 : 데이터를 처리하기 위한 프로그램의 기본
  • 기계어 표현에 의한 연산 및 기타 동작을 지시
OP-Code (5bit) Operand (23bit)
Mode (1bit) Register (2bit) Address (20bit)
  • 예시
    • Operation Code Mode Bit Register Selection Bit Address Bit
      5bit 1bit 2bit 20bit
    • 명령어의 구성 : 크게 연산자와 데이터로 구성됨
    • 위의 명령어 구성에서 이 명령어가 가질 수 있는 최대 Operation 수는 32개 = 2^5이며, 여기서 5는 OP-Code의 bit 수
    • 명령어 : OP-Code + Operand
    • Operation 수 : 2^(OP-Code수)

516. 8bit의 register

  • 8bit의 register에서 이진수 0과 1로 표현 가능한 수는 2^8 = 256개
  • 첫째 bit는 부호 bit로서 0, 1일때 각각 양 + , 음 -을 나타내므로 첫 번째 bit를 부호 bit로 제외하면 표현 가능한 10진수는 -128 ~ + 127
  • nbit로 된 register로 표시할 수 있는 10진수의 범위 : -(2^n/2) ~ +(2^n/2-1)

519. 주요 레지스터

  • IR 인스트럭션 레지스터 : 메모리로부터 읽혀진 명령어를 일시적으로 저장되는 레지스터
  • PC 프로그램 카운터 : 다음에 인출할 명령어의 메모리 주소가 임시로 저장되는 레지스터
  • MAR 메모리 주소 레지스터 : 현재 수행되는 명령어의 주소가 임시로 저장되는 레지스터
  • MBR 메모리 버퍼 레지스터 : 기억장치를 출입하는 데이터가 임시로 저장되는 레지스터

520. 레지스터의 동작 절차, 프로세스의 주 상태 종류

  • 레지스터의 동작절차
    • MBR에 저장되어 있는 주소 번지를 MAR에 이동
    • MAR이 지시하는 주기억장치의 주소 번지에서 데이터를 읽어와서 MBR에 이동
    • IR에 저장된 명령어를 실행
  • 프로세스의 주 상태 종류
    • 인출 Fetch Cycle
      • 주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계
      • 명령어의 operand가 간접주소일 경우 : Indirect Cycle
      • 명령어의 operand가 직접주소일 경우 : Execute Cycle
    • 간접 Indirect Cycle
      • 명령어의 operand가 간접주소 지정이 된 경우 유효주소를 계산하기 위해 주기억장치에 접근하는 단계
    • 실행 Execute Cycle
      • 명령의 코드를 해독 결과에 따라 필요한 연산들을 수행
    • 인터럽트 Interrupt Cycle
      • 인터럽트 발생 시 인터럽트 처리를 하고 완료되면 Fetch로 진행

521. 명령어 수행 과정, 프로세스의 주 상태 종류

  • 명령어 수행과정 Instruction Cycle
    • 명령어의 operand가 간접주소일 경우 : Indirect Cycle
    • 명령어의 operand가 직접주소일 경우 : Execute Cycle
    • 명령어 사이클의 순서 : 인출FI -  해독DI - 실행EI - 저장 WB
      • 명령어 인출 Instruction Fetch stage : 명령어를 기억장치에 접근하여 인출
      • 명령어 해독 Instruction Decoding stage : 인출된 명령어를 해석
      • 명령어 실행 Instruction Execution stage : 해석된 결과를 수행
      • 데이터 저장 Write Back stage: 수행된 결과 저장
  • 명령어 사이클에서 주 상태 Major States
    • CPU가 한 개의 명령어를 실행하는 처리 과정
    • CPU가 프로그램 실행을 시작한 순간부터 오류가 발생하여 중단될 때까지 반복
    • 인터럽트 사이클은 인터럽트 발생 시, 인터럽트 처리를 하고, 완료 후 Fetch로 진행 
  • 프로세스의 주 상태 종류
    • 인출 Fetch Cycle
      • 주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계
      • 명령어의 operand가 간접주소일 경우 : Indirect Cycle
      • 명령어의 operand가 직접주소일 경우 : Execute Cycle
    • 간접 Indirect Cycle
      • 명령어의 operand가 간접주소 지정이 된 경우 유효주소를 계산하기 위해 주기억장치에 접근하는 단계
    • 실행 Execute Cycle
      • 명령의 코드를 해독 결과에 따라 필요한 연산들을 수행
    • 인터럽트 Interrupt Cycle
      • 인터럽트 발생 시 인터럽트 처리를 하고 완료되면 Fetch로 진행

523. 임의접근 기억장치

  • 중앙처리장치와 보조기억장치의 처리속도의 차이를 극복하기 위해서 보조기억장치보다 처리속도가 빠른 RAM을 중간에 위치시켜 처리속도 차이를 극복
  • 임의 접근이 가능한 기억장치 : 자기 드럼, 자기 코어, 자기 디스크 등

524. 채널제어기, DMA

  • 채널 제어기
    • 중앙처리장치와 같이 프로그램을 수행할 수 있는 입출력 전용 처리기
    • 보통 하나의 채널 제어기에서 여러 개의 입출력 장치가 연결
    • 기억장치에 독립적인 데이터 통로를 제공
    • 다수의 처리 장치가 모든 채널을 연결시켜 사용할 수 있게 함으로써, 다수의 시스템이 최대의 능력을 발휘
    • 채널 제어기의 종류
      • interlock channel : 하나의 입출력 명령을 주변장치 중 하나가 임시로 점유하고 있는 동안 다른 주변장치는 잠시 대기
      • Crossbar channel : 하나의 입출력 명령을 다수의 주변장치와 동시에 공유, 공유버스 시스템 내 버스의 수를 기억장치의 수만큼 증가
      • selector channel : 하나의 입출력 명령이 완료하기까지 하나의 주변장치를 전용
      • I/O channel : 독자적으로 입출력 장치와 주기억장치를 제어하며 데이터를 전송
  • DMA Direct Memory Access
    • 메모리 버퍼, 포인터, 카운터를 사용하여 장치 제어기가 CPU의 도움 없이 DMA 컨트롤러를 이용하여 데이터를 직접 메모리로 전송하는 입출력 방식
    • 장점 : 인터럽트 최소화, 데이터 직접 전송

526. 명령어 사이클

  • 명령어 사이클에서 주 상태 Major States
    • CPU가 한 개의 명령어를 실행하는 처리 과정
    • CPU가 프로그램 실행을 시작한 순간부터 오류가 발생하여 중단될 때까지 반복
    • 인터럽트 사이클은 인터럽트 발생 시, 인터럽트 처리를 하고, 완료 후 Fetch로 진행 
  • 프로세스의 주 상태 종류
    • 인출 Fetch Cycle
      • 주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계
      • 명령어의 operand가 간접주소일 경우 : Indirect Cycle
      • 명령어의 operand가 직접주소일 경우 : Execute Cycle
    • 간접 Indirect Cycle
      • 명령어의 operand가 간접주소 지정이 된 경우 유효주소를 계산하기 위해 주기억장치에 접근하는 단계
    • 실행 Execute Cycle
      • 명령의 코드를 해독 결과에 따라 필요한 연산들을 수행
    • 인터럽트 Interrupt Cycle
      • 인터럽트 발생 시 인터럽트 처리를 하고 완료되면 Fetch로 진행

529. 스택 컴퓨터의 특성

  • 스택의 의미
    • 후입선출의 자료구조
    • 데이터 저장소에서 새로 들어오는 데이터의 위치가 저장소의 끝 부분, 써 먹기 위해 내보내는 데이터 역시 저장소의 끄트머리에서 나감
    • 입력 명령 push, 출력 명령 pop, Top 위치에 있는 데이터를 확인하는 명령은 peak
    • 데이터를 처리되는 순서대로 기억시키는 것이 아니고 후입선출 순서대로 처리

531. 인터럽트 우선순위

  • 소프트웨어 인터럽트 체제 구현방식은 소프트웨어 수정을 통한 우선순위 변경이 쉬움
  • 인터럽트의 소프트웨어 우선순위 처리방식 = 폴링
    • CPU가 모든 I/O 제어기들에 접속된 선 이용, 인터럽트를 요구한 장치를 검사하는 방식
    • Test I/O 신호 이용, 각 I/O 장치의 인터럽트 플래그가 세트되어 있는지 검사
    • 검사 순서가 우선순위를 결정
    • 폴링의 장단점
      • 장점
        • 소프트웨어 수정을 통한 우선순위 변경이 쉬움
        • 회로가 간단하고 융통성이 있으며 별도의 하드웨어가 불필요
      • 단점
        • 많은 인터럽트가 있을 때 그들을 모두 조사하는데 많은 시간이 걸려 처리시간이 오래 걸림

533. DMA, Isolated I/O, Interrupt I/O

  • DMA Direct Memory Access
    • 메모리 버퍼, 포인터, 카운터를 사용하여 장치 제어기가 CPU의 도움 없이 DMA 컨트롤러를 이용하여 데이터를 직접 메모리로 전송하는 입출력 방식
    • 장점 : 인터럽트 최소화, 데이터 직접 전송
  • Isolated I/O (I/O Mapped I/O)
    • IN, OUT 명령에 의해 주어진 I/O 포트에 입출력 기기가 접속되어 입출력을 행하는 방식
    • 입/출력 명령이 각각 인터페이스 레지스터 주소를 가짐
  • Interrupt I/O
    • 데이터 전송을 마이크로 컴퓨터의 인터럽트 기능을 가진 하드웨어에 의해서 제어하는 방식
    • 입출력 기기의 동작 완료를 인터럽트 신호로써 입출력 기기에서 CPU로 보내면, CPU가 인터럽트 신호를 확인한 다음 현재 실행중인 프로그램을 중단하고 입출력 기기와 데이터 전송을 행하는 방식

534. DMA, Isolated I/O, Interrupt I/O

  • DMA Direct Memory Access
    • 메모리 버퍼, 포인터, 카운터를 사용하여 장치 제어기가 CPU의 도움 없이 DMA 컨트롤러를 이용하여 데이터를 직접 메모리로 전송하는 입출력 방식
    • 장점 : 인터럽트 최소화, 데이터 직접 전송
  • Isolated I/O (I/O Mapped I/O)
    • IN, OUT 명령에 의해 주어진 I/O 포트에 입출력 기기가 접속되어 입출력을 행하는 방식
    • 입/출력 명령이 각각 인터페이스 레지스터 주소를 가짐
  • Interrupt I/O
    • 데이터 전송을 마이크로 컴퓨터의 인터럽트 기능을 가진 하드웨어에 의해서 제어하는 방식
    • 입출력 기기의 동작 완료를 인터럽트 신호로써 입출력 기기에서 CPU로 보내면, CPU가 인터럽트 신호를 확인한 다음 현재 실행중인 프로그램을 중단하고 입출력 기기와 데이터 전송을 행하는 방식

535. carry & overflow

  • 캐리 carry
    • 최상위 비트MSB에서 그 위의 비트로 자리올림이 발생하는 것
    • 캐리 자체로는 오류 발생이 아님
    • MSB에서 그 위 비트로 자리 올림이 발생했음을 의미
    • 사례
      • 1 + (-1) = 0
      • 이진수로 계산하면 00000001 + 11111111 (2의 보수, 참조 1의 보수와 2의 보수 확인)의 결과 값은 1000000 이 됨
      • MSB에서 그 위의 9번째 비트로 캐리가 발생 (자리 올림)
      • 이 캐리는 무시 : 8bit 연산에서는 하위 8개 bit만 인식하기 때문
  • 오버플로우 overflow
    • 연산 결과 값이 주어진 비트 수로 표현될 수 있는 범위를 넘긴 것
    • 오류 발생을 의미
    • 결과값이 나타낼 수 있는 숫자 범위를 넘어선 것을 의미
    • 사례
      • 1 + 127 = 128
      • 이진수로 계산하면 00000001 + 01111111 = 10000000 이 됨
      • 여기서는 캐리가 발생하지 않았지만 결과 값인 이진수 10000000은 십진수 -128이며, +128이 아님
      • 8bit에서 이진수가 표현 가능한 수는 -128 ~ 127이기 때문에 + 128은 8bit 컴퓨터에서는 이진수로 나타낼 수 없는 값
      • 이 경우 오버플로우가 발생
  • 문제 풀이
    • 양수끼리 더할 때, MSB에서 캐리가 발생하지 않으면 오류가 발생하지 않음
    • 음수끼리 더할 때, MSB에서 캐리가 발생해야 정상적인 음수가 표현
    • 부호 bit로 들어온 자리올림이 캐리비트로 나가야 정상적으로 음수가 표현
    • 부호 bit로 들어온 자리올림이 없으면 캐리가 발생하지 않음

536. 주요 레지스터의 필요 bit 수

  • PC (프로그램 카운터) : 다음에 인출할 명령어의 메모리 주소가 일시적으로 저장되는 레지스터로 메모리 주소를 표현하기 위해 MAR과 동일한 비트 수가 필요
  • MAR (메모리 주소 레지스터) : 현재 수행되는 명령어의 주소가 일시적으로 저장되는 레지스터. 2^n개의 워드 주소를 표현하기 위해서는 n비트가 필요
  • MBR (메모리 버터 레지스터, MDR) : 기억장치를 출입하는 데이터가 일시적으로 저장되는 레지스터로 워드 단위로 데이터를 입출력, m비트의 워드 단위가 필요

537. 버스의 대역폭

  • 버스의 대역폭
    • 버스의 대역폭 = 버스 클록(Hz) * 버스의 폭 (bit)
    • 2.5Gbytes/s = 2.5GHz * 8bit(1byte)
  • 전자계산기 구조 계산문제
    • 명령어 사이클 시간 : 1클록 = 1머신 스테이트, 머신 사이클 = n머신 스테이트, 명령사이클 = n머신 사이클
    • 인스트럭션 성능 = 수행시간 / (fetch 시간 + 준비시간)
    • 캐시 메모리 접근 시간 = 평균 접근 시간 = 캐시 hit 율 * 캐시 접근 시간 + 캐시 miss 율 * 주기억장치 접근 시간

538. 시스템 소프트웨어의 역할

  • 사용자가 하드디스크에 있는 파일을 조작할 때 사용자가 직접 처리하지 않고 이를 대신 처리하는 프로그램으로 컴퓨터 하드웨어를 실제로 운용하는 프로그램
  • 시스템 소프트웨어의 역할
    • 프로그램을 메모리에 적재
    • 시스템 인터럽트 관리
    • 기억장치 관리

539. 시스템 소프트웨어의 종류

  • 운영체계 Operating System : 하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 프로그램
  • 어셈블러 Assembler : 어셈블리어를 기계어로 변환해주는 프로그램
  • 컴파일러 (언어번역기) Compiler : 고급 언어로 작성한 원시 프로그램을 기계어인 목적 프로그램으로 바꾸어주는 프로그램
  • 인터프린터 Interpreter : 고급 언어나 코드화된 중간 언어를 입력받아 목적 프로그램 생성 없이 직접 기계어를 생성하여 실행해주는 프로그램
  • 전처리기 Preprocessor : 원시 프로그램을 번역하기 전에 미리 언어의 기능을 확장한 원시 프로그램을 생성하는 시스템 프로그램
  • 링커 Linker : 서로 독립적으로 작성되고 번역된 목적 프로그램을 호출 및 연계시키는 시스템 프로그램
  • 로더 Loader : 실행 Code를 주기억장치에 적재하여 실행 가능하도록 해주는 시스템 프로그램

541. Loader

  • 로더의 단계별 동작
    • 할당 Allocation
      • 프로그램 수행에 필요한 기억장소를 할당 받는 기억
      • 프로그램의 일부에 대한 기억장치를 할당 후 실행 시 필요한 부분만을 기억장치에 할당
    • 링킹 Linking
      • 실행중인 여러 프로그램이 라이브러리나 특정 모듈을 공유 가능하도록 프로그램 적재 시에 링크하는 기능
      • 링킹 로더는 링커에 의해 제공된 목적 파일의 재배치 정보를 통해 실행 가능한 코드를 만들어 주기억장치에 적재
    • 재배치 Relocation
      • 프로그램 내 재배치 가능한 상대 주소를 할당된 메모리의 절대 주소로 변환하는 기능
      • 목적 코드의 각 명령에 대해 재배치 여부를 명시하는 재배치 비트를 추가하여 표시
    • 적재 Loading
      • Allocation, Linking, Relocation 작업이 수행된 프로그램을 주기억장치에 적재하는 기능
      • 로더의 Allocation 방법에 의거, 필요한 기능을 수행
  • 링커 Linker와 로더 Loader
    • 링커의 역할
      • 서로 독립적으로 작성되고 번역된 목적 프로그램을 연계시키는 시스템 프로그램
      • 여러 오브젝트 파일과 라이브러리들의 Code Chunk들을 하나로 묶어 실행 가능한 하나의 바이너리 파일을 생성
      • 링크 시 연결될 모듈은 사용자가 지정하거나 라이브러리로 주어짐
    • 로더의 역할
      • 외부 기억장치로부터 실행 프로그램을 주기억장치로 옮기기 위하여 메모리 할당, 연결, 재배치와 적재를 담당하는 시스템 프로그램
      • 커널에 있는 로더가 실행파일과 라이브러리 파일을 가상 메모리에 로딩

542. 명령어와 데이터 유닛의 가상 메모리 배치 유형

  • 컴파일 즉시 로더 Compile-and-go Loader
    • 가장 간단한 방법
    • 번역기가 로더의 역할까지 담당
    • 로더의 기능은 단순히 실행을 제어
    • 어셈블러의 재번역 요구
    • 서로 다른 언어로 작성된 모듈 간 연결 불가
  • 절대 로더 Absolute Loader
    • 출력 결과는 보조기억장치에 저장
    • 기계어 코드 프로그램에서 미리 지정한 번지에 프로그램과 데이터를 직접 적재
    • 프로그래머가 어셈블러에게 적재주소 지정
  • 재배치 로더 Relocation Loader
    • 적재 모듈을 주기억장치에 적재
    • 상대 주소를 절대 주소로 변환
    • 로드 과정에서 메모리의 적당한 영역을 찾아 로드
  • 링킹 로더 Linking Loader
    • 재배치 링크 및 적재를 한꺼번에 수행
    • 두 단계의 패스로 구성
      • 패스 1 : 모듈에 기억장소 할당, 외부 기호들의 주소 확정, 외부 기호표 작성
      • 패스 2 : 모든 상대 주소를 절대 주소로 변환, 외부 기호표 참조 후 적재
  • 동적 로더 Dynamic Loader
    • 재배치 로더와 링킹 로더의 단점 보안
    • CPU가 현재 사용 중인 부분인 로드
    • 미사용 중인 프로그램은 보조기억장치에 저장해두는 방식
    • 서브루틴의 상호 호출관계 파악
    • load - on - call

543. 명령어와 데이터 유닛의 가상 메모리 배치 유형

  • 컴파일 즉시 로더 Compile-and-go Loader
    • 가장 간단한 방법
    • 번역기가 로더의 역할까지 담당
    • 로더의 기능은 단순히 실행을 제어
    • 어셈블러의 재번역 요구
    • 서로 다른 언어로 작성된 모듈 간 연결 불가
  • 절대 로더 Absolute Loader
    • 출력 결과는 보조기억장치에 저장
    • 기계어 코드 프로그램에서 미리 지정한 번지에 프로그램과 데이터를 직접 적재
    • 프로그래머가 어셈블러에게 적재주소 지정
  • 재배치 로더 Relocation Loader
    • 적재 모듈을 주기억장치에 적재
    • 상대 주소를 절대 주소로 변환
    • 로드 과정에서 메모리의 적당한 영역을 찾아 로드
  • 링킹 로더 Linking Loader
    • 재배치 링크 및 적재를 한꺼번에 수행
    • 두 단계의 패스로 구성
      • 패스 1 : 모듈에 기억장소 할당, 외부 기호들의 주소 확정, 외부 기호표 작성
      • 패스 2 : 모든 상대 주소를 절대 주소로 변환, 외부 기호표 참조 후 적재
  • 동적 로더 Dynamic Loader
    • 재배치 로더와 링킹 로더의 단점 보안
    • CPU가 현재 사용 중인 부분인 로드
    • 미사용 중인 프로그램은 보조기억장치에 저장해두는 방식
    • 서브루틴의 상호 호출관계 파악
    • load - on - call

545. UNIX 명령어 중의 chmod 명령어, 파일 접근 권한의 유형

  • chmod 명령어
    • 파일이나 디렉토리의 접근권한을 변경하는 명령어
    • read, write, execute 권한을 제어
    • 예시
      • $ chmod 755 text1
      • 755의 7은 rwx 권한, 5는 r_x 권한을 가짐
      • 첫 숫자는 자신, 두 번째 숫자는 자신이 속한 그룹, 세 번째 숫자는 다른 그룹의 접근권한을 의미
      • 755 옵션은 본인의 계정이 생성한 파일이나 디렉토리는 read, write, execute 권한을 모두 가지고, 그 외에는 read, execute 권한만 가지도록 설정한다는 의미
  • 파일 접근 권한의 유형
파일유형 owner(소유자) group other
일반파일 r w x r w x r w x
4 2 1 4 2 1 4 2 1
Read(r) 일반 파일 읽기와 복사 가능
디렉토리 디렉토리의 내용 표시 가능
Write(w) 일반 파일 수정 가능
디렉토리 파일의 추가와 삭제 가능
Execute(x) 일반 파일 수행 가능
디렉토리 디렉토리 변경 가능            

546. UNIX 명령어

  • Is
    • 디렉토리와 파일 목록을 출력하는 명령어
    • -a, -all 옵션은 상세 정보 표시 옵션
    • -l 옵션은 긴 리스트의 Format으로 출력하는 옵션
  • cat
    • cat [파일명]을 통해 파일의 내용을 보는 명령어
  • cd
    • cd [디렉토리 경로] : 지정한 디렉토리로 이동하는 명령어
      • cd . :  현재 디렉토리로 이동
      • cd .. : 상위 디렉토리로 이동
      • cd / : 가장 상위 디렉토리로 이동
  • cp
    • 파일을 지정한 경로에 복사하는 명령어
    • cp [옵션] : 원본 파일 복사할 파일
      • -f, -force : 복사 대상 파일이 있으면 강제로 지우고 복사
      • -i, -interactive : 복사 대상 파일이 있으면 사용자에게 복사 여부 확인

550. 파이프라인

  • 파이프라인 적용 시 향상도 계산
    • 8000(비파이프라인 수행 속도) = 20ns * 4 (부연산 개수) * 100
    • 3.88 (성능 향상도) = 8000 / 2060
    • 2060 = 8000 / 4 (세그먼트 수) + 60 (중첩되지 않는 DI, EI, WB 부연산 3개 * 20 ns))
  • 파이프라인 기법
    • 단위 시간 내에 하나 이상의 명령어를 처리함으로써 Performance를 향상시키는 멀티 프로세스 환경에서의 명령어 처리 매커니즘
    • 명령어 처리 과정을 여러 단계로 세분화
    • 단계마다 다른 작업을 중첩, 수행하여 병렬성을 높임
    • 파이프라인 기법의 분류
      • 단일 Pipeline
        • 명령어 수행 과정에서 각 단계에서 각 단계를 한번만 중첩하여 다수의 동작을 동시에 수행하는 병렬처리 기술
      • Super Pipeline
        • 하나의 Pipeline을 여러 부분으로 나누어 연속적인 흐름 과정으로 처리, 성능을 향상시키는 병렬처리 기술
        • 각 명령어 수행 단계를 두 개 이상으로 분할한 구조
      • Super Scalar
        • 프로세서 내에 Pipeline된 ALU를 여러 개 포함하여 매 사이클마다 다수의 명령어들을 동시에 실행하는 병렬처리 기술
        • 예시 : 1개의 cycle에 정수 연산 2개, 실수 연산 4개 동시 수행
      • Super Pipeline Super Scalar
        • 슈퍼스칼라 기법에 슈퍼 파이프라이닝 기법 적용
        • 수행시간을 더 단축한 기법
      • VLIW very long instruction word
        • 동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출, 하나의 명령어로 압축하여 수행하는 병렬처리 기술
        • EPIC 기법 : 컴파일러가 소스 코드로부터 명시적 병렬성을 찾아 병렬처리가 가능하도록 기계어 코드 생성, 병렬 수행됨
        • FI, DI는 한 회로에서 수행
        • EI (실행 사이클)만 여러 개의 기능 UNIT에 분할 수행