CS 정리-4

유호준·2023년 4월 19일
0

CS 정리

목록 보기
8/12

암호화 알고리즘에 대해 설명해 주세요.

암호화 알고리즘은 대표적으로 대칭키 암호화와 비대칭키 암호화가 있다. 대칭키 암호화는 같은 키를 사용해 암호화와 복호화를 하는 방법으로 이는 수신측에 키를 전달하는 과정에서 유출될 우려가 있다. 그에 반해 비대칭키 이와 다르게 공개키와 개인키가 있다. 이 방법은 공개키로 암호화하고 개인키로 복호화를 하는 방법이다.

그리디 알고리즘과 동적 계획법을 비교해 주세요.

동적 계획법의 경우 점화식을 이용하여 모든 상황을 계산하는 방법이고, 탐욕법은 각 단계에서 최적의 상황을 선택하여 문제를 해결하는방법이다. 동적계획법은 최적의 경로를 구할 수 있으나 계산하는데 비교적 오랜 시간이 걸린다는 단점이 있고 탐욕법은 빠르게 문제해결이 가능하나 최적이 아닌 경우가 있거나 풀리지 않는 경우가 있다.

그렇다면, 어떤 경우에 각각의 기법을 사용할 수 있을까요?

그리디

  • Greedy Choice Property : 앞의 선택이 이후의 선택에 영향을 주지 않음
  • Optimal Substructure : 문제의 대한 최종 해결 방법은 부분 문제에 대한 최적 문제 해결 방법으로 구성

DP

  • Overlapping Sub-problems : 큰 문제를 작은 문제로 나눌 수 있고, 이 작은 문제가 중복해서 발견된다.
  • Optimal Substructure: 작은 문제에서 구한 정답을 큰 문제에서도 사용할 수 있다.

그렇다면, 동적 계획법으로 풀 수 있는 모든 문제는 재귀로 변환하여 풀 수 있나요?

재귀는 스택에 쌓이기 때문에 stack overflow의 우려가 있다. 따라서 모든 문제는 재귀로 변환하여 풀 수 있지는 않은 것 같다.

시스템 콜이 무엇인지 설명해 주세요.

시스템 콜이란 커널 모드를 활용할 수 있게 OS가 제공하는 인터페이스를 의미한다.

우리가 사용하는 시스템 콜의 예시를 들어주세요.

에시

  • exit
  • fork
  • open
  • getpid

시스템 콜이, 운영체제에서 어떤 과정으로 실행되는지 설명해 주세요.

  1. 유저모드에서 프로세스 실행
  2. 프로세스가 시스템 콜 호출
  3. 커널 모드로 전환
  4. 작업 수행
  5. 완료 시 유저 모드로 전환

시스템 콜의 유형에 대해 설명해 주세요.

  • 프로세스 제어
  • 파일 조작
  • 장치관리
  • 정보 유지
  • 통신
  • 보호

운영체제의 Dual Mode 에 대해 설명해 주세요.

Dual mode란 운영체제를 보호하기 위한 기법으로 사용자가 접근할 수 있는 유저 모드와 접근할 수 없는 커널 모드가 존재한다. 유저 모드에서는 제한된 접근만 가능하고 하드웨어에 직접 접근이 불가능하다. 하지만 커널모드에서는 모든 하드웨어 접근 및 제어가 가능하고 시스템의 모든 메모리에 접근 및 모든 CPU 명령을 실행 가능하다. 이중 모드의 역할은 악의적인 사용자로부터 운영체제를 보호하고 입출력장치 및 메모리 등을 보호하는 것 이다.

서로 다른 시스템 콜을 어떻게 구분할 수 있을까요?

커널은 내부적으로 각각의 시스템 콜을 구분하기 위해 기능별로 고유번호를 할당하고 그 번호에 해당하는 제어 루틴을 커널 내부에 정의한다.

인터럽트가 무엇인지 설명해 주세요.

인터럽트란 현재 실행 중인 작업을 즉시 중단하고 발생한 상황에 대한 우선 처리가 필요함을 CPU에 알리는 것이다.

인터럽트는 어떻게 처리하나요?

인터럽트 처리는 인터럽트가 발생하면 현재의 상태를 스택에 저장한 후의 인터럽트 서비스 루틴을 실행한다. 그 후 다시 원래 작업으로 복귀한다.

Polling 방식에 대해 설명해 주세요.

특정 주기를 가지고 그 주기마다 어떠한 처리를 위한 시그널이 들어왔는지 체크를 하는 방식을 의미한다.

HW / SW 인터럽트에 대해 설명해 주세요.

HW 인터럽트

  • 하드웨어에 의해 발생하는 인터럽트
  • 종류
    - 입출력 인터럽트
    - 정전, 전원 이상 인터럽트
    • 기계 착오 인터럽트
    • 외부 신호 인터럽트

SW 인터럽트

  • 소프트웨어의 의해 발생하는 인터럽트로 오류이거나 사용자의 요구에 의해 발생한다.
  • zero-division, overflopw,underflow, SVC

    SVC
    사용자가 프로그램을 실행시키거나 supervisior를 호출하는 것

프로세스가 무엇인가요?

실행중에 있는 프로그램

프로그램과 프로세스, 스레드의 차이에 대해 설명해 주세요.

프로그램

명령어들의 집합, 수동적인 상태이며 디스크 안에 저장되어있다.

프로세스

실행중의 있는 프로그램, 운영체제로 부터 실행에 필요한 자원을 할당 받은 상태

스레드

프로세스가 할당받은 자원을 이용하는 실행단위

PCB가 무엇인가요?

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해놓은 곳
  • 프로세스의 상태관리와 context switching을 위해 필요

그렇다면, 스레드는 PCB를 갖고 있을까요?

스레드는 프로세스가 아니기 때문에 PCB를 가지고 있지 않다.

리눅스에서, 프로세스와 스레드는 각각 어떻게 생성될까요?

프로세스

  • fork()를 통해 자식 프로세스 생성
  • exec()를 통해 다른 작업으로 변경

스레드

  • pthread_create()를 통해 프로세스 생성

자식 프로세스가 상태를 알리지 않고 죽거나, 부모 프로세스가 먼저 죽게 되면 어떻게 처리하나요?

고아 프로세스

  • 부모 프로세스가 자식 프로세스보다 먼저 죽었을 시
  • 프로세스가 죽을 때 해당 프로세스가 어떤 프로세스의 부모 프로세스인지 확인한 후 init프로세스로 부모 프로세스를 옮김

좀비 프로세스

  • 자식 프로세스가 부모 프로세스보다 먼저 죽은 경우
  • 커널은 자식프로세스가 종료되더라도 최소한의 정보를 유지
  • 부모 프로세스가 wait을 통해 종료상태를 회수하면 좀비프로세스 제거

리눅스에서, 데몬프로세스에 대해 설명해 주세요.

데몬 프로세스란 운영체제에서 부팅시 자동으로 켜져 백그라운드에서 계속 실행되는 프로세스를 의미한다.

참고자료

profile
포트폴리오 - https://drive.google.com/file/d/152OM9p7JQorjUfvR4BaxqGuP5xtQ8-fM/view?usp=sharing

0개의 댓글