[정처기 필기] 오답노트) C언어 포인터 / 리눅스 명령어 / 페이징 기법 / 프로세스 스케줄링


🤷‍♀️ 정처기 필기 오답노트





✅ C언어


Q. 다음 C언어 프로그램이 실행되었을 때의 결과는?

```c
#include <stdio.h>

int main(){
    int n = 4;
    int* pt = NULL;
    pt=&n;

    printf("%d", &n + *pt - *&pt + n);
    return 0;
}
```

① 0
② 4
③ 8
④ 12


정답 : ③

🔎 포인터(Pointer)

  • 포인터 : 주솟값을 저장하는 공간

    • 데이터타입* : 주소를 저장하는 포인터 변수를 의미

    • &변수명 : 해당 변수명의 주솟값을 의미

    • * : 주소에 해당하는 값을 가리킬 때 사용

  • 포인터 선언

      데이터타입* 포안터변수명 = &변수명;
    
    • &n : n의 주솟값 = x

    • *pt : pt가 가리키는 값 = 4

    • *&pt : pt의 주솟값이 가리키는 값 = x

    • n : n의 값 = 4



✅ 리눅스 명령어


Q. 운영체제 분석을 위해 리눅스에서 버전을 확인하고자 할 때 사용되는 명령어는?

① ls
② cat
③ pwd
④ uname


정답 : ④

🔎 리눅스/유닉스 운영체제의 기본 명령어

  • ls : 현재 디렉토리 내 파일 및 폴더들의 목록을 표시

  • cat : 파일의 내용을 화면에 출력

  • pwd : print working directory, 현재 작업 중인 디렉토리의 절대 경로 출력

  • uname -a : 시스템의 모든 정보를 확인 (시스템 이름, 사용 중인 운영체제와 버전, 호스트명, 하드웨어 정보 등)

  • fork : 새로운 프로세스 생성

  • ps : 현재 실행되고 있는 프로세스 목록 출력

  • tar : 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용 (압축은 불가)

  • gzip : 파일을 묶거나 풀 수는 없지만 압축을 담당

  • find : 특정 파일을 찾음

  • grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾음



✅ 페이징 기법


Q. 페이징 기법에서 페이지 크기가 작아질수록 발생하는 현상이 아닌 것은?

① 기억장소 이용 효율이 증가한다.
② 입출력 시간이 늘어난다.
③ 내부 단편화가 감소한다.
④ 페이지 맵 테이블의 크기가 감소한다.


정답 : ④

🔎 페이징 기법(Paging)

  • 가상기억장치 내의 프로세스를 고정된 크기의 일정한 블록으로 분할하여 주기억장치의 분산된 공간에 적재시킨 후 프로세스를 수행시키는 기법

  • 실제 공간은 페이지 크기와 같은 페이지 프레임으로 나누어 사용

  • 페이지 크기가 작을 경우 발생 현상

    • 더 많은 페이지 사상 테이블 공간이 필요

    • 내부 단편화는 줄고, 특정한 참조 구역성만을 포함하기 때문에 기억 장치 효율이 좋음

    • 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐

    • 디스크 접근 횟수가 많아져서 전체적인 입출력 시간 증가

  • 페이지 크기가 클 경우 발생 현상

    • 테이블의 크기가 작아지므로 주기억 장치의 공간이 절약

    • 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아져서 관리가 용이하고, 매핑 속도가 빨라짐

    • 디스크 접근 횟수가 줄고, 전체적인 입출력 시간 감소

    • 페이지 단편화가 증가하고, 이에 따라 기억 공간의 낭비 초래



✅ 비선점 스케줄링


Q. 비선점(Non-Preemptive) 스케줄링에 해당하지 않는 것은?

① SRT
② FIFO
③ 기한부
④ HRN


정답 : ①

🔎

  • 프로세스 스케줄링이란?

    • CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업

    • 처리율과 CPU 이용률을 증가시키고 오버헤드, 응답시간, 반환시간, 대기시간을 최소화시키기 위한 기법

  • 선점형 스케줄링(Preemptive Scheduling) 알고리즘 유형

    • 라운드 로빈(Round Robin) : 프로세스는 같은 크기의 CPU 시간을 할당, 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기 중인 다음 프로세스로 넘어감

    • SRT(Shortest Remaining Time First) : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점됨

    • 다단계 큐(MLQ, Multi Level Queue) : 작업들을 여러 종류 그룹으로 분할, 여러 개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점 당함 / 각 큐는 자신만의 독자적인 스케줄링을 가짐

    • 다단계 피드백 큐(MLFQ, Multi Level Feedback Queue) : 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU 시간 할당량을 부여 / FCFS(FIFO)와 라운드 로빈 스케줄링 기법을 혼합한 것으로 새로운 프로세스는 높은 우선순위, 프로세스의 실행시간이 길어질수록 점점 낮은 우선순위 큐로 이동하고 마지막 단계는 라운드 로빈 방식을 적용

  • 비선점형 스케줄링(Non Preemptive Scheduling) 알고리즘 유형

    • 우선순위(Priority) : 각 프로세스 별로 우선선위가 주어지고, 우선순위에 따라 CPU를 할당 / 동일 순위는 ㄹㅊㄹㄴ

    • 기한부(Deadline) : 작업들이 명시된 시간이나 기한 내에 완료되도록 계획

    • FCFS(First Come First Served) : = FIFO / 프로세스가 대기 큐에 도착한 순서대로 CPU를 할당

    • SJF(Shortest Job First) : 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유 / 준비 큐 작업 중 가장 짧은 작업부터 수행, 평균 대기시간 최소 / CPU 요구시간이 긴 작업과 짧은 작업 간의 불평등이 심하여, CPU 요구시간이 긴 프로세스는 기아 현상 발생

    • HRN(Highest Response Ratio Next) : 대기중인 프로세스 중 대기시간이 긴 프로세스일 경우 우선순위가 높아지게 하여 우선순위를 결정하는 스케줄링 기법 / 서비스 받을 시간과 서비스를 기다린 시간을 고려하여 가변적 우선순위를 결정 / 우선순위 계산식의 수치가 가장 높은 것부터 낮은 순으로 우선순위를 부여, SJF의 약점인 기아 현상을 보완

Categories:

정보처리기사