부록
계산형 문제는 암기보다 풀이 순서가 중요합니다. 아래 유형은 반드시 손으로 한 번씩 써 봅니다.
- 2진수에서 10진수로 갈 때는 각 자리의 2의 거듭제곱을 더합니다.
- 10진수에서 2진수로 갈 때는 2로 나누고 나머지를 역순으로 읽습니다.
- 2진수에서 16진수로 갈 때는 오른쪽부터 4비트씩 묶습니다.
101101₂ = 32 + 8 + 4 + 1 = 45
27₁₀ = 11011₂
11110000₂ = 1111 0000 = F0₁₆
| 번호 | 문제 | 정답 |
|---|
| 1 | 1010₂를 10진수로 | 10 |
| 2 | 1111₂를 10진수로 | 15 |
| 3 | 25₁₀을 2진수로 | 11001 |
| 4 | 11010110₂을 16진수로 | D6 |
| 5 | A₁₆을 2진수로 | 1010 |
- 양수의 2진수 표현을 씁니다.
- 0과 1을 반전합니다.
- 1을 더합니다.
5 = 0101
1의 보수 = 1010
2의 보수 = 1011
따라서 4비트에서 -5 = 1011
| 번호 | 문제 | 정답 |
|---|
| 1 | 4비트에서 -3 | 1101 |
| 2 | 4비트 1111의 값 | -1 |
| 3 | 4비트 1001의 값 | -7 |
| 4 | 8비트에서 -12 | 11110100 |
| 5 | 4비트 4-5 결과 | 1111 |
- 변수 초기값을 표에 씁니다.
- 한 줄씩 실행하면서 값이 바뀔 때마다 갱신합니다.
- 전위/후위 증가, 정수 나눗셈, 배열 인덱스, 매크로 단순 치환을 우선 확인합니다.
#define SQ(x) x*x
printf("%d", SQ(1+2));
| 번호 | 문제 | 정답 |
|---|
| 1 | int a=7/2; 출력 | 3 |
| 2 | printf("%d", 3+4*2); | 11 |
| 3 | int a[3]={1,2,3}; a[1] | 2 |
| 4 | int x=10; int *p=&x; *p=20; x | 20 |
| 5 | for(i=1;i<=4;i++) sum+=i; | 10 |
- 피연산자는 스택에 넣습니다.
- 연산자를 만나면 피연산자 2개를 꺼내 계산합니다.
- 결과를 다시 스택에 넣습니다.
| 번호 | 문제 | 정답 |
|---|
| 1 | 23+ | 5 |
| 2 | 23+4* | 20 |
| 3 | 82/3+ | 7 |
| 4 | 52-4* | 12 |
| 5 | 중위 A+B*C의 후위 | ABC*+ |
| 순회 | 순서 |
|---|
| 전위 | 루트 → 왼쪽 → 오른쪽 |
| 중위 | 왼쪽 → 루트 → 오른쪽 |
| 후위 | 왼쪽 → 오른쪽 → 루트 |
반환시간 = 완료시간 - 도착시간
대기시간 = 반환시간 - 실행시간
도착시간이 모두 0이고 실행시간이 2, 4, 6인 작업을 FCFS로 처리하면 다음과 같습니다.
평균 반환시간은 (2+6+12)/3 = 20/3입니다.
| 알고리즘 | 교체 기준 |
|---|
| OPT | 앞으로 가장 오래 쓰지 않을 페이지 |
| FIFO | 가장 먼저 들어온 페이지 |
| LRU | 가장 오래 사용하지 않은 페이지 |
| LFU | 사용 횟수가 가장 적은 페이지 |
페이지 교체 문제는 프레임 표를 직접 그리고, 참조할 때마다 Hit인지 Fault인지 표시합니다.
| 규칙 | 의미 |
|---|
A + A = A | 같은 항의 OR는 자기 자신 |
A·A = A | 같은 항의 AND는 자기 자신 |
A + A' = 1 | 어떤 값이든 참 또는 거짓 중 하나 |
A·A' = 0 | 동시에 참과 거짓일 수 없음 |
(AB)' = A' + B' | 드모르간 |
(A+B)' = A'B' | 드모르간 |
| 번호 | 문제 | 정답 |
|---|
| 1 | A + A | A |
| 2 | A·A' | 0 |
| 3 | (AB)' | A' + B' |
| 4 | (A+B)' | A'B' |
| 5 | A + AB | A |
평균 접근 시간 = 히트율 × 캐시 접근 시간 + 미스율 × 주기억장치 접근 시간
미스율 = 1 - 히트율
히트율 0.8, 캐시 10ns, 주기억 100ns라면 0.8×10 + 0.2×100 = 8 + 20 = 28ns
| 방식 | 판별 키워드 |
|---|
| 즉치 | 값 자체 |
| 직접 | 주소가 데이터 위치를 바로 가리킴 |
| 간접 | 주소가 있는 곳에 다시 주소가 있음 |
| 레지스터 | 레지스터 안의 값 사용 |
| 레지스터 간접 | 레지스터 안의 주소 사용 |
시험에서 깊은 계산보다 안전 상태의 의미를 묻는 경우가 많습니다.
안전 상태 = 어떤 순서로든 모든 프로세스가 종료될 수 있는 상태
불안전 상태 = 교착상태가 반드시 발생한다는 뜻은 아니지만 위험한 상태
| 방식 | 기준 |
|---|
| FCFS | 요청 순서대로 처리 |
| SSTF | 현재 헤드 위치에서 가장 가까운 요청 먼저 |
| SCAN | 한 방향으로 이동하며 처리 후 반대 방향 |
| C-SCAN | 한 방향으로만 순환 처리 |