정처기 실기 : 2024년 1회차 기출, 9️⃣~1️⃣1️⃣, 1️⃣6️⃣

m_ngyeong·2024년 7월 23일
0
post-thumbnail

정보처리기사 실기


📝 2024년 1회차 기출, 9️⃣~1️⃣1️⃣, 1️⃣6️⃣

9. 페이지 부재(Page Fault)

🙋‍♀️ : 4개의 페이지를 수용할 수 있는 주기억장치가 있으며, 초기에는 모두 비었다고 가정한다. 다음의 순서로 페이지 참조가 발생할 때, LRU 페이지 교체 알고리즘 사용할 경우와 LFU 페이지 교체 알고리즘을 사용할 경우 페이지 결함의 발생 횟수를 구하시오.
페이지 참조 순서 : 1,2,3,1,2,4,1,2,5,7

🖍 LRU : 6, LFU : 6
참조 페이지가 페이지 테이블에 없을 경우 페이지 결함이 발생한다.

LRU(Least Recently Used) :

  • 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법.

    ❶ 초기에는 모든 페이지가 비어 있으므로 처음 1,2,3 그리고 4 페이지 적재 시 페이지 결함이 발생.
    ❷ 참조 페이지 1,2는 이미 적재되어 있으므로 그냥 참조.
    ❸ 현재 시점에서 가장 오랫동안 사용되지 않은 페이지 3을 제거한 후 5를 적재.
    ❹ 다음으로 가장 오랫동안 사용되지 않은 페이지 4을 제거한 후 7를 적재.
    ⇒ 이러한 과정으로 모든 페이지에 대한 요구를 처리하고 나면 총 페이지 결함 발생 횟수는 6회.

LFU(Least Frequently Used) :

  • 참조 횟수가 가장 적은 페이지를 교체하는 기법

    ❶ 초기에는 모든 페이지가 비어 있으므로 처음 1,2,3 그리고 4 페이지 적재 시 페이지 결함이 발생.
    ❷ 참조 페이지 1,2는 이미 적재되어 있으므로 그냥 참조.
    ❸ 현재 시점에서 가장 사용 횟수가 적은 페이지 4을 제거한 후 5를 적재.
    ❹ 다음으로 가장 사용 횟수가 적은 페이지 5을 제거한 후 7를 적재.
    ⇒ 이러한 과정으로 모든 페이지에 대한 요구를 처리하고 나면 총 페이지 결함 발생 횟수는 6회.

10. Java Lang. - overloading

자바 프로그램의 실행 순서는?

class Parent {
	int x, y;
	Parent(int x, int y) { //①
		this.x = x;
		this.y = y;
	}
	int getArea() { //②
		return x * y;
	}
}
class Child extends Parent {
	int x;
	Child(int x) { //③
		super(x+1, x); 
	}
	int getArea(int x) { //④
		return x;
	}
}
public class ProcessFlow {  
	public static void main(String[] args) { //⑤
		Parent parent = new Child(10); //⑥
		System.out.println(parent.getArea());//⑦
	}
}

// 정답 : 110
// (11*10)

🖍 ⑤ → ⑥ → ③ → ① → ⑦ → ②

Overloaing(오버로딩) : 이름은 같지만 인수를 받는 자료형의 개수를 달리하여 여러 기능을 정의하는 것

⑥구문은 Parent 클래스의 객체 변수 parent를 선언하고 Child() 클래스의 생성자를 호출함.
③구문이 호출되고, x의 값은 10이되고 super(11,10) 구문에 의해 부모 클래스의 생성자를 호출.
①구문이 호출되고, x의 값에 11, y의 값에 10이 저장됨.
⑦구문이 실행되는데, 부모 클래스의 getArea()와 자식 클래스의 getArea(int x)는 메소드의 이름이 같지만 '인수를 받는 자료형과 개수'가 다른 메소드이므로 ②구문 호출.
②구문 실행.

  • extends [class name] : 클래스 정의 시 상속받을 클래스를 추가하는 예약어
  • new : 객체 생성 예약어
  • super : 부모 클래스 생성자 호출

16. Java Lang. - overriding

class Parent {
	int a, b;
	Parent(int a, int b) { //①
		this.a = b;
		this.a = b;
	}
	public void print() { //②
		System.out.println(a+b);
	}
}
class Child extends Parent {
	int po = 3;
	Child(int i) { //③
		super(i+1, i); 
	}
	public void print() { //④
		System.out.println(po * po);
	}
}
public class ProcessFlow {  
	public static void main(String[] args) { //⑤
		Parent parent = new Child(10); //⑥
		parent.print(); //⑦
	}
}

🖍 9

Overriding(오버라이딩) : 상속으로 인해 동일한 이름의 메소드가 여려 개인 경우, 부모 클래스에서 정의된 메소드는 자식 클래스의 메소드에 의해 재정의되어 자식 클래스의 메소드만 사용하게 되며 메소드 제정의라고도 함

실행 순서 : ⑤ → ⑥ → ③ → ① → ⑦ → ④

⑥구문은 Parent 클래스의 객체 변수 parent를 선언하고 Child() 클래스의 생성자를 호출함.
③구문이 호출되고, i의 값은 10이되고 super(11,10)구문에 의해 부모 클래스의 생성자를 호출.
①구문이 호출되고, a의 값에 11, b의 값에 10이 저장됨.
⑦구문이 실행되는데, 부모 클래스의 print()메서드와 자식 클래스의 print()메서드는 동일한 이름과 형태를 가지고 있어 ④구문 호출.
상속으로 인해 동일한 이름의 메소드가 여려 개인 경우, 부모 클래스에서 정의된 print()는 자식 클래스의 print()에 의해 재정의되어 자식 클래스의 print()만 사용됨.
④구문 실행.

11. C Lang. - 구조체와 곱셈 산술연산

#include <stdio.h>

typedef struct{
    int accNum;
    double bal;
}BankAcc;

double sim_pow(double base, int year){
    int i;
    double r = 1.0;
    for (i=0; i< year; i++){
        r = r*base;
    }
    return r;
} 

void initAcc(BankAcc* acc, int x, double y){
    acc -> accNum = x;
    acc -> bal = y;
}

void xxx(BankAcc* acc, double *en){
    if (*en > 0 && *en < acc -> bal) {
        acc -> bal = acc -> bal - *en;
    }
    else {
        acc -> bal = acc -> bal + *en;
    }
}

void yyy(BankAcc* acc){
    acc -> bal = acc -> bal * sim_pow((1+0.1),3);
}

int main(){
    double amount = 100.0;
    
    BankAcc myAcc;
    initAcc(&myAcc, 9981, 2200.0);
    xxx(&myAcc, &amount);
    yyy(&myAcc);
    printf("%d and %.2f", myAcc.accNum, myAcc.bal);
    return 0;
}

🖍 9981 and 2795.10

  • typedef 키워드 : 이미 존재하는 타입에 새로운 이름을 붙일 때 사용.
    구조체 변수를 선언하거나 사용할 때에는 매번 struct 키워드를 사용하여 구조체임을 명시해야 하지만, typedef 키워드를 사용하여 구조체에 새로운 이름을 선언하면 매번 struct 키워드를 사용하지 않아도 됨.

C언어 주요 서식 문자열

  • %d : 정수형 10진수의 입∙출력에 사용
  • %o : 정수형 8진수의 입∙출력에 사용
  • %x : 정수형 16진수의 입∙출력에 사용
  • %c : 문자의 입∙출력에 사용
  • %s : 문자열의 입∙출력에 사용
  • %f : 소수점을 포함한 실수의 입∙출력에 사용 (출력 시 소수점 이하는 기본적으로 6자리가 출력됨)


참고,
기출 문제 : https://newbt.kr/시험/정보처리기사%2520실기
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.
https://cafe.naver.com/soojebi,
구조체 : https://www.tcpschool.com/c/c_struct_intro
https://youtu.be/OObXMmXchEk?si=V5hQpF2Pa8ynzjKn

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글