CS정리 - 5

유호준·2023년 4월 26일
1

CS 정리

목록 보기
7/12

프로세스 주소공간

프로세스가 메모리를 할당 받으면 자신만의 방법으로 메모리를 관리하기 위해 이 공간들을 어떠한 구조로 관리하는데 이를 프로세스 주소 공간이라 부른다.

초기화 하지 않은 변수들은 어디에 저장될까요?

초기화 하지 않은 변수들은 BSS 영역에 저장된다.

일반적인 주소공간 그림처럼, Stack과 Heap의 크기는 매우 크다고 할 수 있을까요? 그렇지 않다면, 그 크기는 언제 결정될까요?

스택은 생성과 동시에 크기가 정해진다. 힙은 필요에 따라 동적으로 확장 혹은 축소를 하게 됩니다.

Stack과 Heap 공간에 대해, 접근 속도가 더 빠른 공간은 어디일까요?

Cpu가 직접 관리하고 최적화 하기 때문에 stack이 빠르다.

다음과 같이 공간을 분할하는 이유가 있을까요?

데이터를 공유하여 메모리 사용량을 줄이기 위해서 이다. code같은 경우 같은 프로그램 자체에서 모두 같이 사용하기 때문에 관리ㅏㅎ여 공유하고, stack과 data영역을 나누는 이유는 스택 구조의 특성과 전역 변수의 활용성을 위해서이다.

스레드의 주소공간은 어떻게 구성되어 있을까요?

스레드는 프로세스 내에서 각각의 스택만 할당받고 나머지 영역은 공유합니다.

단기, 중기, 장기 스케쥴러에 대해 설명해 주세요.

단기

  • 준비 상태의 프로세스를 다음번 실행상태로 만들 것인지 결정하는 스케줄러

중기

  • 프로세스를 디스크로 스왑 아웃 시키는 것을 결정하는 스케줄러

장기

  • 어떠한 프로세스를 큐에 넣을지 결정하는 스케줄러
  • 현대에는 잘 사용하지 않는다.

현대 OS에는 단기, 중기, 장기 스케쥴러를 모두 사용하고 있나요?

현대에는 장기 스케쥴러를 보통 사용하지 않는다.

프로세스의 스케쥴링 상태에 대해 설명해 주세요.

  • New : 프로세스가 생성된 상태
  • Ready : 프로세스가 실행 전인 상태
  • Running : 프로세스가 실행 중인 상태
  • Waiting : 프로세스가 대기중인 상태
  • Terminated: 프로세스가 종료된 상태
  1. Ready -> Running : 스케줄러에 의해
  2. Running -> Ready : Interrupt에 의해
  3. Running -> Waiting : I/O 나 event를 기다릴 때
  4. Running -> Terminated : 종료

preemptive/non-preemptive 에서 존재할 수 없는 상태가 있을까요?

  • 비선점형의 경우 running에서 ready로 가는 상태는 없다.

Memory가 부족할 경우, Process는 어떠한 상태로 변화할까요

프로세스는 suspended되어 디스크로 swap out 된다.

컨텍스트 스위칭 시에는 어떤 일들이 일어나나요?

  1. PCB에서 현재 수행중인 프로세스의 상태 저장
  2. 새로운 프로세스를 pcb에서 불러와 running

프로세스와 쓰레드는 컨텍스트 스위칭이 발생했을 때 어떤 차이가 있을까요?

스레드가 빠르다.

  1. TCB가 PCB보다 가볍다.
    프로세스 내 스레드는 공유하는 영역이 많아 TCB에는 stack 및 간단한 레지스터 포인터만 저장하기 떄문에 읽고 쓸때 빠르다.

  2. 캐시 메모리를 초기화 하지 않아도 된다.
    프로세스 내 스레드 간에 스택과 레지스터 값 등 일부 컨텍스트 정보만 변경되므로

컨텍스트 스위칭이 발생할 때, 기존의 프로세스 정보는 커널스택에 어떠한 형식으로 저장되나요?

모르겠다.

컨텍스트 스위칭은 언제 일어날까요?

  1. Ready -> Running
  2. Running -> Ready
  3. Running -> Waiting

프로세스 스케줄링 알고리즘에는 어떤 것들이 있나요?

  1. FCFS
  • 큐에 도착한 순서대로
  1. SJF
  • 수행시간이 가장 짧다고 판단되는 작업 먼저 수행
  • 이전 프로세서의 CPU burst를 이용해 예측
  1. HRN
  • 우선순위를 계산하여 점유 불평등을 보완
  • 우선순위 = (대기시간 + 실행시간) / (실행시간)
  1. priority scheduling
  • 우선순위가 높은 순서대로 처리
  • 우선순위가 낮은 프로세스가 무한정으로 기다리는 Starvation이 생길 수 있다.
  • Aging으로 보완
  1. Round Robin(RR)
  • FCFS에 의해 프로세스들이 보내지면 동일한 시간의 Time Quantum 만큼 CPU 할당
  • 할당 시간이 크면 FCFS와 같게되고 작으면 Context Switching이 잦아짐
  1. Multilevel Queue
  • 작업들을 여러 종류의 그룹으로 나누어 여러개의 큐를 이용
  • 우선순위가 낮은 큐들이 실행못하는 걸 방지하고자 각 큐마다 다른 Time Quantum 설정
  1. Multilevel-Feedback queue
  • 다단계 큐에서 자신의 Time quantum를 다 채우면 밑으로 다 채우지 않은 프로세스는 원래 큐 그대로

  • 짧은 작업에 유리

  • Turnaround가 작아짐

    RR을 사용할 때, Time Slice에 따른 trade-off를 설명해 주세요.

  • Time Slice가 커지면 FCFS와 같고 작아지면 context switching이 잦아진다.

    싱글 스레드 CPU 에서 상시로 돌아가야 하는 프로세스가 있다면, 어떤 스케쥴링 알고리즘을 사용하는 것이 좋을까요? 또 왜 그럴까요?

    멀티레벨 피드백 큐, 멀티레벨 큐 등을 사용하면 우선순위가 높은 것부터 실행하기 때문에 좋다.

    동시성과 병렬성의 차이에 대해 설명해 주세요.

동시성

  • 동시성이란 CPU가 쉬는 쉬간을 최대한 낮추는 것
  • task를 번갈아 가면서 실행

병렬성

  • 실제로 동시에 여러작업이 처리

  • 멀티 코어에서 멀티 스레드 동작

    타 스케쥴러와 비교하여, Multi-level Feedback Queue는 어떤 문제점들을 해결한다고 볼 수 있을까요?

  • 프로세스가 요구하는 작업 및 processing time은 달라지는데 multi-level queue로는 이를 대응할 수 없다.

  • 아주 오래 걸리는 작업이 계속 우선순위를 높게 차지한다면 다른 프로세스들의 Response time 및 turnaround time이 높아진다.

    이를 해결한것이 MLFQ

    뮤텍스와 세마포어의 차이점은 무엇인가요?

  • 뮤텍스는 동기화 대상이 하나일때만 사용, 세마포어는 여러 가지 이상일 때 사용

  • 세마포어는 소유할 수 없으나 뮤텍스는 소유할 수 있다.

이진 세마포어와 뮤텍스의 차이에 대해 설명해 주세요.

  • 다른 스레드가 세마포어를 해제하고 잠글 수 있다.
  • 여러개의 스레드가 동시에 획득할 수 있다.
  • 다른 스레드/프로세스가 잠금 해제가 가능하기 때문에 뮤텍스보다 빠르다.

참고자료

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

0개의 댓글