※ 모든 문제는 시험 응시자의 기억으로 복원 된 문제임을 알립니다. 따라서 문제의 지문과 답이 상이한 경우가 발생 할 수 있습니다. (서술형의 경우 정확하게 맞지 않을 수 있습니다.)
※ 또한, 모든 문제의 기본 풀이는 수제비2023 책을 기반으로 작성하였습니다. 오타가 있을 경우, 답이 틀렸을 경우 댓글 부탁드립니다.
※ 수제비 카페 바로가기 - https://cafe.naver.com/soojebi
1. 아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오.
#include <stdio.h>
int calc(int w, int h, int j, int i){
if(i>=0 && i<h && j>=0 && j<w)
return 1;
return 0;
}
int main(){
int field[4][4] = {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
int mines[4][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
int i, j, k, l;
for(l = 0; l<h; l++){
for(k = 0; k<w; k++){
if(field[l][k] == 0)
continue;
for(i = l-1; i <= l + 1; i++){
for(j = k-1; j <= k+1; j++){
if(calc(w, h, j, i) == 1){
mines[i][j] += 1;
}
}
}
}
}
for (l = 0; l<h; l++){
for(k = 0; k<w; k++){
printf("%d ", mines[l][k]);
}
printf("\n");
}
return 0;
}
- 예시
0 | 1 | 0 | 1 |
0 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 |
1 | 1 | 3 | 2 |
3 | 4 | 5 | 3 |
3 | 5 | 6 | 4 |
3 | 5 | 5 | 3 |
- 코드가 많이 복잡한데 차근차근 풀어보자
- 일단 calc()함수는 매개변수로 들어온 i와 j가 범위안에 (w,h를 받아온 범위) 들어오는 수라면 1을 반환한다.
- 메인의 for문을 본다면 l와 k가 반복되는데 여기서 field[l][k]가 0이라면 아래의 for문을 실행하지 않고 건너뛴다.
- 만약 1이라면 안의 for문을 실핸하는데 여기서 l과 k의 값을 받아와서 실행한다.
- 적어서 풀어보면 j,i가 l,k의 범위에서 움직일 수 있는 범위는 l -1 < i < l+1, k-1 < j < k+1이다.
- 이 범위에 만족하느 i와j의 갯수를 세면 된다.
- 사실 이 문제는 자신의 위치 포함해서 상하좌우 대각선의 1의 갯수를 세어서 적는게 더 빠르다...
2. 아래 예시를 보고 관계 대수에 대한 기호를 작성하시오.
항목 | 기호 |
1. 합집합 | A ( ) B |
2. 차집합 | A ( ) B |
3. 카티션 프로덕트 | A ( ) B |
4. 프로젝트 | A ( ) B |
5. 조인 | A ( ) B |
- ∪
- -
- ×
- π
- ▷◁
- 관계 대수 연산자의 종류에는 일반집합 연산자와 순수 관계 연산자가 있다.
구분 | 종류 | 기호 | 표현 | 설명 |
일반 집합 연산자 |
합집합 | ∪ | R∪S | 합병 가능한 두 릴레이션 R과 S의 합집합 |
교집합 | ∩ | R∩S | 릴레이션 R과 S에 속하는 모든 튜블로 결과 릴레이션 구성 | |
차집합 | - | R-S | R에 존재하고 S에 미 존재하는 튜블로 결과 릴레이션 구성 | |
카디션프로덕트 | X | RxS | R과 S에 속한 모든 튜플을 연결해 만들어진 새로운 튜플로 릴레이션 구성 | |
순수 관계 연산자 |
셀렉트 | σ | σ조건(R) | 릴레이션R에서 조건을 만족하는 튜플 반환 |
프로젝트 | π | π속성리스트(R) | 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플 반환 | |
조인 | ▷◁ | R▷◁S | 공통 속성을 이용해 R과 S의 튜플들을 연결해 만들어진 튜플 반환 | |
디비전 | ÷ | R÷S | 릴레이션 S의 모든 튜플과 관련있는 R의 튜플 반환 |
관계 대수
3-6
3. 다음은 디자인 패턴에 대한 설명이다. 괄호안에 알맞는 답을 작성하시오.
- ( 1 )은/는 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다. 구현뿐 아니라 추상화도 독립적 변경이 필요할 때 사용한다. 기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용하며, 새로운 인터페이스를 정의하여 기존 프로그램의 변경 없이 기능을 확장할 수 있다.
- ( 2 )은/는 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달해주는 패턴이다. 일대다 관계를 가지며, 주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다.
- Bridge 패턴
- Observer 패턴
주요 키워드로 패턴을 찾아야 쉽게 찾을 수 있다.
생성
Builder 조립 |
Prototype 원형 복사 |
Factory Method 상위 클래스에서 객체 생성 하위 클래스에서 인스턴스 생성 |
Abstract Factory 구체적인 클래스 의존X |
Singletone 객체 하나 생성 |
구조
Bridge 연결 |
Decorator 장식추가 |
Facade 단순한 인터페이스 |
Flyeight 클래스 경량화 |
Proxy 대리객체, |
Composite 부분 - 전채 |
Adepter 중간 역할 |
행위
Observer 상태 변경 -> 다른 객체 연락 |
Mediator 중재자 |
Visitor 클래스를 돌아다님 |
Strategy 캡슐화 된 클래스 필요시 교환 |
디자인 패턴
1-29
4. 아래 코드에 대한 출력 값을 작성하시오.
class good{
public static void main(String[] args){
int[] result = new int[5];
int[] arr = {79, 34, 10, 99, 50};
for(int i = 0; i < 5; i++){
result[i] = 1;
for(int j = 0; j < 5; j++){
if(arr[i] < arr[j]) result[i]++;
}
}
for(int k = 0; k < 5; k++){
System.out.print(result[k]);
}
}
}
- 2 4 5 1 3
- 위의 코드는 중첩 for문을 이용해 arr배열의 모든 원소에 접근하고 있다.
- for문 내부에 if문의 조건에 따르면 자기 자신보다 큰 수가 있다면 result[i]를 증가시키고 있다.
- arr의 각 원소당 자신보다 큰 원소의 갯수는 1 3 4 0 2 이다. 이때 result[i] 는 1부터 시작하므로
- 각 1씩 더해준 뒤 출력 해주면 된다.
5. 192.168.1.0/24인 IP 주소를 FLSM 방식으로 3개의 서브넷(Subnet)으로 분할할 때, 두 번째 서브넷의 브로드캐스트 IP주소 (10진수)를 쓰시오.
- 192.168.1.127
- IP주소에서 /00처럼 맨 뒤 슬래쉬 뒤에 오는것은 서브넷 마스크이다.
- 서브넷 마스크는 내가 어디까지 서버 주소로 사용하겠다고 알려주는 기능을 한다.
- 숫자만큼 1을 채워주면 된다.
- 즉 24면 11111111.11111111.11111111.00000000 이고, 이를 10진수로 표현하면 255.255.255.0이다.
- 서브넷을 분할한다고 했고, 3개의 서브넷이 나오려면 0으로 표현된 부분 중, 앞에서부터 2자리를 빌려와야 한다.
- 2의 2승은 4이기 때문
- 따라서 서브넷의 종류는 00xxxxxx, 01xxxxxx, 10xxxxxx,11xxxxxx이다.
- 두번째 서브넷은 따라서 192.168.1.01xxxxxx으로 시작하게 된다.
- 여기서 x가 전부 0이면 서버 주소, 1이면 브로드캐스트 주소이다.
- 따라서 192.168.1.01111111이고, 이를 10진수로 변환하면 192.168.1.127이다.
- 추가로 FLSM은 고정적으로 사용한 대역을 동일한 크기로 나누는 방식이다.
- 반대로 VLSM은 서브넷의 길이를 가변적으로 사용하는 방식이다.
서브네팅
11-52
6. 다음의 테스트 기법은 무엇인지 <보기>에서 고르시오.
- 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트 하는 기법이다.
- 예를 들어 0, 60, 80, 100으로 등가 분할 후 테스트데이터는 -1, 0, 59, 60, 61, 79, 80, 81, 99, 100이다.
- 보기
- Equivalence Partitioning
- Decision Table
- State Transition
- Use Case
- Classification Tree Method
- Cause-Effect Graph
- Boundary Value Analysis
- Boundary Value Analysis (경곗값 분석 테스트)
- 블랙박스 테스트는 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트이다.
- 경곗값 분석 테스트는 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트 하는 기법이다.
- 블랙박스 테스트에는 동등분할 테스트, 결정 테이블 테스트, 상태 전이 테스트, 유스케이스 테스트, 분류 트리 테스트, 원인-결과 그래프 테스트가 있다.
블랙박스 테스트
10-8
7. 아래 데이터 명령어를 적용할 경우 알맞는 출력값을 작성하시오.
[부서]
부서코드 | 부서명 |
10 | 기획부 |
20 | 영업부 |
30 | 디자인부 |
[직원]
부서코드 | 직원코드 | 부서원 |
10 | 1 | 홍길동 |
10 | 2 | 장길산 |
20 | 3 | 임꺽정 |
20 | 4 | 김철수 |
20 | 5 | 이영희 |
30 | 6 | 이순신 |
30 | 7 | 안중근 |
- 조건
- 부서 테이블 생성 시 부서코드는 PRIMARY KEY로 선언되어있고, CASCADE함수를 사용
- 직원 테이블의 부서코드는 부서 테이블의 부서코드를 FOREIGN KEY로 참조함.
- SELECT COUNT(DISTINCT 부서코드) FROM 직원;
- DELETE FROM 부서 WHERE 부서코드 20; SELECT COUNT(DISTINCT 직원코드) FROM 직원;
- 3
- 4
- DISTINCT는 중복을 제외하는 옵션이다.
- 1번 문제에서 직원의 부서코드의 갯수를 세는 명령을 하고 있다. 이 때, DISTINCT 조건이 걸려있으니 중복을 제외하고 10,20,30의 총 3개의 컬럼이 나온다 따라서 갯수는 3이다.
- 2번 문제에서 부서 테이블에서 부서코드가 20인 값을 삭제하고난 뒤의 직원에서 직원 코드를 기준으로 중복값을 제거한 컬럼의 갯수를 묻고 있다. 부서코드가 20인 직원을 제거하고 남은 직원의 직원코드는 1,2,6,7이다. 따라서 컬럼의 갯수는 4이다.
8. 아래 설명에 대한 알맞는 답을 작성하시오.
- ( 1 ) 은/는 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격기법이다.
- ( 2 ) 은/는 정보를 수집한 후, 저장만 하고 분석에 활용하고 있지 않는 다량의 데이터이다. 빅데이터와 비슷하면서도 구조화돼 있지 않고, 더는 사용하지 않는 '죽은' 데이터를 의미한다. 일반적으로 정보를 수집해 저장한 이후 분석이나 특별한 목적을 위해 활용하는 데이터가 아니며, 저장공간만 차지한다. 이러한 이유로 심각한 보안 위험을 초래할 수 있다.
- 사회공학
- 다크데이터
- 사회 공학은 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격기법이다. 사례로는 상대방의 자만심이나 권한을 이용하는 공격및 도청 등이 있다.
- 다크데이터는 수집 후 저장은 되어 있지만 분석에 활용되지 않는 다량의 데이터를 의미한다.
보안관련 용어, 신기술 용어
9-15,11-80
9. 다음 파이썬 코드에 대한 출력값을 작성하시오.
TestList = [1,2,3,4,5]
TestList = list(map(lambda num : num + 100, TestList)))
print(TestList)
- [101, 102, 103, 104, 105]
- 답을 작성할 때, 리스트이기 때문에 대괄호를 꼭 써 줘야 한다!
- map함수에서 첫 번째 매개변수에는 함수, 두 번째 매개 변수에는 리스트를 지정하여 반복을 수행한다.
- 첫 번째 매개 변수에 lambda식을 전달하고 있다. lambda식에서 num은 num+ 100이라 하였고, 테스트 리스트에 있는 데이터를 하나씩 매핑 하면 각 요소에 100을 더한 리스트가 생성된다.
10. 다음 보안 관련 설명으로 가장 알맞는 용어를 작성하시오.
- ( ) 은/는 머신러닝 기술을 이용하여 IT 시스템에서 발생하는 대량의 로그를 통합관리 및 분석하여 사전에 위협에 대응하는 보안 솔루션이다. 서로 다른 기종의 보안솔루션 로그 및 이벤트를 중앙에서 통합 수집하여 분석할 수 있으며, 네트워크 상태의 monitoring 및 이상징후를 미리 감지할 수 있다.
- 네트워크 이기종 장비 간 로그의 상관관계 분석
- 이상징후의 행위 기반 및 문맥 기반 분석 기능
- 각 로그의 상관관계를 조건식에 따라 검색하여 분석이 가능
- 이벤트 및 로그의 이상패턴을 인식해 잠재적 위협이 발생시 알림 기능
- SIEM (Security Information and Event Management)
- SIEM은 다양한 보안장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고, 침해 사고에 신속하게 대응하는 보안 관제 솔루션이다.
- 기업에서 생성되는 테라바이트급의 정형/ 비정형 데이터와 방화벽, 안티바이러스 시스템, 서버, 네트워크 장비 등으로부터 수집한 다양한 데이터 등을 빅데이터 기반의 로그 분석을 통하여 보안의 위협 징우를 빠르게 판단/ 대응할 수 있도록 해주는 보안 관제 솔루션이다.
네트워크 보안 솔루션
9-58
11. 다음 보기 중, 형상 관리 항목을 3가지 고르시오.
- ( 1 ): 중앙 집중형 클라이언트-서버 방식으로 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구로 저장소를 만들어 그곳에 소스를 저장해서 소스 중복이나 여러 문제를 해결하기 위한 도구
- ( 2 ): 가장 오래된 형상 관리 도구 중 하나로서, 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행하는 형상 관리 도구로, 파일 단위로 변경 사항 관리가 가능한 도구.
- ( 3 ): 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 도구로 빠른 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용한 도구
- SVN
- CVS
- Git
- 형상관리는 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동이다.
- 소프트웨어 형상 관리 도구 유형에는 공유폴더 방식, 클라이언트 서버 방식, 분산 저장소 방식이 있다.
- 공유폴더 방식은 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식이다. 담당자 한명이 매일 공유폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부를 확인한다.(RCS,SCCS)
- 클라이언트 서버 방식은 중앙에 버전 관리 시스템을 항시 동작시키는 방식이다. 개발자들의 현재 작업 내용과 이전 작업 내용 추적에 용이하다. 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메세지를 출력한다. (CVS, SVN)
- 분산 저장소 방식은 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식이다. 중앙 저장소에서 로컬 파일을 복사한 순간 개발자 자신만의 로컬 저장소에생성한다. 개발 완료한 파일을 수정한 다음 로컬 저장소에 우선적으로 커밋 한 이후, 다시 원격 저장소에 푸시 하는 방식이다. (Git)
CVS (Concurrent Versions System) |
서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상관리 도구 가장 오래된 형상관리 도구 중 하나로서 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행하는 형상 관리 도구 |
SVN (Subversion) |
하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구. 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 도구 |
RCS (Revision Control System) |
CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구 |
Bitkeeper | SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구 |
Git | Git의 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용 Git의 커밋 동작은 로컬 저장소에서 이루어지고, 푸시라는 동작으로 원격 저장소에 반영 로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있음 Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소 |
Clear Case | 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음. |
형상관리 - 형상관리도구 유형, 형상관리 도구별 특징
8-7
12. STUDENT 테이블에서 컴퓨터과 학생 50명, 전기과 학생 100명, 인터넷과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는? (단, DEPT 칼럼은 학과명이다.)
- SELECT DERP FROM STUDENT;
- SELECT DISTINCT DEPT FROM STUDENT;
- SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '인터넷과';
- 200
- 3
- 1
- 단순 select의 연산일 경우 모든 학생 수를 출력한다. 따라서 200개의 튜플이 생성된다.
- dept에 distinct 조건이 걸려있으므로 출력 할 때 컴퓨터과, 전기과, 인터넷과 학생 하나씩 출력된다. 따라서 3개의 튜플이 생성된다.
- 위의 설명에서 조건이 인터넷 과 학생만 출력하라 했으므로 인터넷과 하나의 학생만 출력된다 따라서 1개의 튜플이 생성된다.
13. 다음 코드에 대한 출력 값을 작성하시오.
#include <stdio.h>
void main() {
int i,j,k,s;
int el = 0;
for(i = 6; i <= 30; i++){
s = 0;
k = i/2;
for(j = 1; j <= k; j++){
if(i%j == 0){
s=s+j;
}
}
if(s == i){
el++;
}
}
printf("%d",el);
}
- 2
- for문에서 i = 6 이고, i는 30까지 반복된다.
- 각 반복에서 s는 0이 되고, k = i/2가 된다.
- 이때, 두번째 반복문은 k 즉, i/2만큼 반복된다. 따라서 i의 반만큼 반복된다.
- 이때 나누어 떨어진다면 s를 j 만큼 더한다.
- 나누어 떨어진다는건 약수라는 뜻이다.
- s = s+j를 보아 약수의 전체 합을 구하라는 코드이다.
- 약수의 전체 합이 자기 자신과 같다면 el을 1증가시킨다.
- 6~30 중에 약수의 합이 자신과 같은 수는 2개이다.
14. 아래 설명에 대하여 알맞는 답을 보기에서 고르시오
- ( 1 )은/는 프로세서(processor) 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 하드웨어 기반의 보안 기술로 프로세서(processor) 안에 독립적인 보안 구역을 별도로 하여, 중요한 정보를 보호하는 하드웨어 기반의 보안 기술이다.
- ( 2 )은/는 사용자들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 유사한 유명 도메인을 미리 등록하는 일로 URL 하이재킹(hijacking)이라고도 한다.
- 트러스트 존(Trustzone)
- 타이포스쿼팅(Typosquatting)
- 트러스트존은 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 보안기술이다. 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술이다.
- 타이포스쿼팅은 사용자가 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠트리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 일로, URL하이재킹이라고도 불린다.
보안 관련 용어
9-15
15. 아래 설명에 대하여 알맞는 용어를 작성하시오.
- ( )은/는 여러 개의 사이트에서 한번의 로그인으로 여러가지 다른 사이트들을 자동적으로 접속하여 이용하는 방법을 말한다. 일반적으로 서로 다른 시스템 및 사이트에서 각각의 사용자 정보를 관리하게 되는데 이때 하나의 사용자 정보를 기반으로 여러 시스템을 하나의 통합 인증을 사용하게 하는 것을 말한다. 즉 하나의 시스템에서 인증을 할 경우 타 시스템에서는 인증 정보가 있는지 확인하고 있으면 로그인 처리를 하도록 하고, 없는 경우 다시 통합 인증을 할 수 있도록 만드는 것을 의미한다.
- SSO(Single Sign On)
- SSO는 커버로스에서 사용되는 기술로 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증 기술이다.
- 커버로스는 1980년대 중반 MIT의 Athena 프로젝트의 일환으로 개발되었으며 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜이다.
인증관련기술
9-18
16. 다음은 스케줄링에 관한 내용이다. 알맞는 답을 작성하시오.
- 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원을 점유하는 스케쥴링
- 프로세스는 같은 크기의 CPU시간을 할당, 프로세스가 할당된 시간 내에 처리 완료를 못하면, 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기중인 다음 프로세스로 넘어가는 스케줄링 기법
- 가장 짧은 시간이 소요되는 프로세스를 먼저 수행, 남은 처리시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 스케줄링 기법으로 비선점 방식의 스케줄링 기법에 선점 방식을 도입한 기법
- SJF (Shortest Job First)
- 라운드 로빈(RR; Round Robin)
- SRT(Shortest Remaining Time First)
- 프로세스 스케줄링 알고리즘은 선점형 스케줄링 알고리즘과 비선점형 스케줄링 알고리즘으로 구분된다.
선점형 스케줄링 알고리즘 |
라운드 로빈 (RR; Round Robin) |
프로세스는 같은 크기의 CPU시간을 할당, 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기 중인 다음 프로세스로 넘어가는 스케줄링 기법 | 균등한 CPU점유시간 시분할 시스템을 사용 |
SRT (Shortest Remaining Time First) |
가장 짧은 시간이 소요되는 프로세스를 먼저 수행, 남은 처리시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 스케줄링 기법으로 비선점 방식의 스케줄링 기법에 선점 방식을 도입한 기법 | 짧은 수행 시간 프로세스를 우선 수행 | |
다단계 큐 (MLQ; Multi Level Queue) |
작업들을 여러 종류의 그룹으로 분할, 여러 개의 큐를 이용하여 상위 단계 작업에 의한 하위단계 작업이 선점당하는 스케줄링 기법 각 큐는 자신만의 독자적인 스케줄링을 가짐 |
독립된 스케줄링 큐 | |
다단계 피드백 큐 (MLFQ; Mulit Level Feedback Queue) |
FCFS(FIFO)와 라운드 로빈 스케줄링 기법을 혼합한 것으로, 새로운 프로세스는 높은 우선순위, 프로세스의 실행시간이 길어질수록 점점 낮은 우선순위 큐로 이동하고 마지막 단계는 라운드 로빈 방식을 적용하는 스케줄링 기법 입출력 위주와 CPU위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU시간 할당량을 부여 |
큐마다 다른 시간 할당량 마지막 단계는 라운드 로빈 방식 처리 |
|
비선점형 스케줄링 알고리즘 |
우선순위 (Priority) |
프로세스별로 우선순위가 주어지고, 우선순위에 따라 CPU를 할당하는 스케줄링 기법 동일 순위는 FCFS |
주요/긴급 프로세스에 대한 우선처리 설정, 자원 상황 등에 따른 우선순위 선정 |
기한부 (Deadline) |
작업들이 명시된 시간이나 기한 내에 완료되도록 계획하는 스케줄링 기법 | 요청에 명시된 시간 내 처리를 보장 | |
FCFS (First Come First Service) |
프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당하는 스케줄링 기법 FIFO알고리즘이라고도 함 |
도착한 순서대로 처리 | |
SJF (Shortest Job First) |
프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원을 점유하는 스케줄링 기법 준비 큐 작업 중 가장 짧은 작업부터 수행, 평균 대기 시간 최소 CPU요구 시간이 긴 작업과 짧은 작업 간의 불평등이 심하여, CPU요구 시간이 긴 프로세스는 기아 현상 발생 |
기아 현상 발생 가능성 | |
HRN (Highest Response Ratio Next) |
대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택하는 스케줄링 기법 SJF의 약점인 기아 현상을 보완한 기법으로 긴 작업과 짧은 작업 간의 불평등 완화 HRN의 우선순위 = (대기시간 + 서비스시간) / 서비스시간 |
기아 현상 최소화 기법 |
프로세스 스케줄링 알고리즘
11-22
17. 다음은 UML에 관한 설명이다. 괄호안에 알맞는 답을 작성하시오.
- UML은 통합 모델링 언어로써, 시스템을 모델로 표현해주는 대표적인 모델링 언어이다.
- 구성 요소로는 사물, ( 1 ), 다이어그램으로 이루어져 있으며, 구조 다이어그램 중, ( 2 ) 다이어그램은 시스템에서 사용되는 객체 타입을 정의하고, 그들 간의 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램이다.
- 또한 UML 모델링에서 ( 3 )은/는 클래스와 같은 기타 모델 요소 또는 컴포넌트가 구현해야 하는 오퍼레이션 세트를 정의하는 모델 요소이다.
- 관계
- 클래스
- 인터페이스
- UML은 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화 할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어이다.
- 특징으로는 가시화 언어, 구축 언어, 명세화 언어, 문서화 언어가 있다.
- UML의 구성요소로는 사물, 관계, 다이어그램이 있다.
- UML다이어그램은 구조적(정적), 행위적(동적) 다이어그램이 있다.
구조적/정적 다이어그램 |
클래스 | 클래스 다이어그램은 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램이다. |
객체 | 객체 다이어그램은 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현한 다이어그램이다. | |
컴포넌트 | 컴포넌트 다이어그램은 시스템을 구성하는 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램이다. | |
배치 | 배치 다이어그램은 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현하는 다이어그램이다. | |
복합체구조 | 복합체 구조 다이어그램은 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램이다. | |
패키지 | 패키지 다이어그램은 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한 다이어그램이다. | |
활동적/동적 다이어그램 |
유스케이스 | 유스케이스 다이어그램은 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램이다. |
시퀀스 | 시퀀스 다이어그램은 객체 간 동적 상호 작용을 시간적 개념을 중심으로 메시지 흐름으로 표현한 다이어 그램이다. | |
커뮤니케이션 | 커뮤니케이션 다이어그램은 동작에 참여하는 객체들이 주고 받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관 까지 표현하는 다이어그램이다. | |
상태 | 상태 다이어그램은 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램이다. | |
활동 | 활동 다이어그램은 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램이다. | |
타이밍 | 타이밍 다이어그램은 객체 상태 변화와 시간 제약을 명시적으로 표현하는 다이어그램이다. |
uml - uml다이어그램
2-21
18. 다음은 E-R다이어그램에 관한 설명이다. 괄호 안에 알맞는 답을 작성하시오.
(아래 그래프 기호는 정확히 기억이 나지 않아 임의로 작성한 것이니 참고만 해주세요.)
- ( 1 ) : 개체집합 - 관계집합 연결
- ( 2 ) : 개체 집합과의 연결
- ( 3 ) : 관계집합 - 관계집합의 속성 연결
- ( 4 ) : 두 개체집합 관계에서 생성되는 값을 저장하는 속성
- ( 5 ) : 같은 속성을 공유하는 개체들의 모임
- ㄷ
- ㅂ
- ㄹ
- ㄴ
- ㄱ
개체집합 | 사각형 |
관계집합 | 마름모 |
속성 | 타원 |
다중값 속성 | 이중타원 |
개체 집합-관계집합 연결 | 실선 |
개체집합 속성 연결 | 실선 |
관계집합 속성 연결 | 점선 |
개체 관계 다이어그램
3-10
19. 다음 자바 코드에 대한 출력 값을 작성하시오.
public class Main {
static int[] MakeArray(){
int[] tempArr = new int[4];
for(int i=0; i<tempArr.Length;i++){
tempArr[i] = i;
}
return tempArr;
}
public static void main(String[] args){
int[] intArr;
intArr = MakeArray();
for(int i=0; i < intArr.Length; i++){
System.out.print(intArr[i]);
}
}
- 0 1 2 3
- MakeArray 객체를 생성하는 생성자는 객체의 크기를 4로 생성하고, 각 요소들에 0부터 객체의 크기까지의 숫자를 하나씩 넣는 생성자이다.
- main의 for문은 생성된 객체의 배열의 각 원소를 출력하는 for문이다.
20. 다음 자바 코드에 대한 출력 값을 작성하시오.
public class Exam {
public static void main(String[] args){
int a = 0;
for(int i=1; i<999; i++){
if(i%3==0 && i%2!=0)
a = i;
}
System.out.print(a);
}
}
- 993
- for문에서 i는 1부터 998까지 반복된다.
- 3으로 나누어떨어지는 수이면서 2로 나누어떨어지지 않는 수를 찾는 코드이다.
- a는 계속 더해지는게 아니라 i만 대입되고 있기 때문에 제일 마지막 수부터 찾으면 된다.
- 일단 3의 배수는 996,993,990 ...이 있는데 그 중, 996은 2로 나누어 떨어지기 때문에 정답이 아니다.
- 993은 2로 나누어 떨어지지 않고 3으로 나누어 떨어지기 때문에 정답은 993이다.
오타 및 틀린 답안은 댓글 부탁드립니다!
'Study > 정보처리기사' 카테고리의 다른 글
2023년 2회 정보처리기사 실기 기출문제 풀이 (0) | 2023.10.03 |
---|---|
2023년 1회 정보처리기사 실기 기출문제 풀이 (0) | 2023.09.30 |
2022년 2회 정보처리기사 실기 기출문제 풀이 (1) | 2023.09.27 |
2022년 1회 정보처리기사 실기 기출문제 풀이 (0) | 2023.09.25 |
2021년 3회 정보처리기사 실기 기출문제 풀이 (0) | 2023.09.24 |