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로 진행
- 인출 Fetch Cycle
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로 진행
- 인출 Fetch Cycle
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로 진행
- 인출 Fetch Cycle
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 방법에 의거, 필요한 기능을 수행
- 할당 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 / : 가장 상위 디렉토리로 이동
- 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에 분할 수행
- 단일 Pipeline
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 기출문제 - 601 ~ 650. 오답노트 (0) | 2025.03.17 |
---|---|
[정보처리기사 실기] 정보처리기사 2020년 1회 실기문제 (0) | 2025.03.14 |
[정보처리기사 필기] 기출문제 - 451 ~ 500. 오답노트 (0) | 2025.03.12 |
[정보처리기사 필기] 기출문제 - 401 ~ 450. 오답노트 (2) | 2025.03.11 |
[정보처리기사 필기] 기출문제 - 351 ~ 400. 오답노트 (0) | 2025.03.10 |