운영체제

박효상·2022년 12월 20일
0

BACKEND-TIL

목록 보기
18/21
post-thumbnail

운영체제란?

  • 시스템의 자원(CPU, 메모리)과 동작(프로세스 처리)을 관리하는 소프트웨어
  • 프로세스, RAM, 사용자, 하드웨어를 관리
  • ex) Windows, Mac, Linux

RAM 내부 공간 구성요소

  • Code : 프로그램의 코드를 담는 공간
  • Data : 프로그램의 전역 변수, 정적 변수를 담는 공간
  • Heap : 사용자가 관리하는 동적 할당 공간 (런타임에 크기 결정)
  • Stack : 함수 정보, 지역 변수, 매개변수 (컴파일 타임에 크기 결정)

프로세스 처리 과정

1. 사용자가 운영체제에 프로그램 실행 요청
2. 운영체제가 하드디스크에 위치한 프로그램의 정보를 읽어 RAM에 로딩
3. CPU는 RAM에 로딩된(code 공간) 프로그램 코드를 가져다가 메모리 관리 및 명령어 실행
4. 동적메모리가 Heap에 할당되면 FreeStore 영역 사용
5. 스택메모리가 할당되면 FreeStore 영역 사용

프로세스

  • 실행 중인 프로그램
  • 운영체제로부터 프로세스는 CPU와 독립된 메모리영역(Code, Data, Heap, Stack)을 할당받음
  • 최소 1개의 쓰레드를 가짐
  • 하나의 프로세스는 별도의 메모리 주소 공간에서 실행되며, 다른 프로세스의 메모리 영역에 접근 불가

쓰레드

  • 프로세스 안에 있는 실행 단위
  • 하나의 프로세스 내에서 쓰레드끼리 CPU와 Code, Data, Heap을 공유하지만 각 쓰레드는 독립된 Stack을 가짐

CPU 스케줄러

  • 운영체제가 Ready Queue에 있는 프로세스들을 CPU에 특정 알고리즘에 따라 할당하는 방법
  • CPU는 한번에 하나의 프로세스만 처리할 수 있지만, CPU 스케줄러에 의해 마치 여러개의 프로세스를 동시에 처리하는 것처럼 동작하게끔 가능
  • 알고리즘 종류
    • 비선점 스케줄링
      • 정의 : CPU에 하나의 프로세스가 실행되는 동안 다른 프로세스들은 끝날 때까지 기다리는 방식
      • (1) First Come First Served
        • CPU에 요청하는 프로세스 순서대로 처리하는 기법
      • (2) Shortest Job First
        • Burst time, 즉 각 프로세스의 총 실행 시간, 이 짧은 순으로 CPU가 처리하여 프로세스의 평균 대기 시간을 최소화하는 스케줄링
    • 선점 스케줄링
      • 정의 : CPU에 하나의 프로세스가 실행 중이여도 채 끝나기도 전에 다른 프로세스가 선점하여 실행될 수 있는 방식
      • (1) Shortest Remaining Time
        • CPU에 실행 중인 프로세스가 있어도 최소 잔여 Burst Time을 가지는 프로세스가 즁건애 생기면 중도 sleep 시키고 해당 프로세스를 먼저 할당하는 방식
      • (2) Round Robin
        • CPU에 정해진 Time Quantum 만큼 프로세스가 균등하게 돌아가면서 실행되는 방식
        • Time Quantum이 너무 크면 FCFS처럼 되고, 너무 작으면 Context Switch가 많이 일어나 적당한 Time Quantum 설정이 필요
      • (3) Priority Scheduling
        • CPU가 우선순위가 높은 프로세스 먼저 실행하는 방식

가상 메모리

  • 무수히 많은 프로그램을 한정된 RAM 공간에서 효율적으로 실행시키기 위해, CPU가 각 프로세스의 사용하는 부분만 디스크에서 불러와 실행하는 방식
  • 마치 DIcitonary처럼 프로세스에서 사용하는 부분이 디스크와 RAM에서 어디에 위치하는지 빠르게 찾게 해주는 Page Table을 활용

DeadLock

  • 각 프로세스가 필요한 자원을 얻지 못해 다음 작업을 못하는 상태
  • 예시로 프로세스1과 프로세스2가 각각 자원 A와 자원 B를 필요로 하는데 프로세스1은 자원 B를 프로세스2는 자원 A를 점유하고 있어 무한정 대기하는 상태를 의미
  • 발생 조건
    • DeadLock은 밑의 4가지 조건을 동시에 성립할 때만 발생
    • (1) 상호 배제 : 자원을 한번에 한 프로세스만이 사용할 수 있다
      • 프로세스1이 자원 A를 점유중인데, 프로세스2가 자원 A를 동시에 점유할 수는 없다
    • (2) 점유 대기 : 하나의 자원을 점유하면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기중인 프로세스가 있어야 한다
      • 프로세스1은 자원 A를 점유중인데, 프로세스2가 점유하고 있는 자원 B도 필요해서 대기중인 경우
    • (3) 비선점 : 다른 프로세스에게 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다
      • 프로세스1은 프로세스2에게 할당된 자원 B사용이 끝날 때까지 대기할 수 밖에 없는 경우
    • (4) 순환 대기 : 점유 대기가 순환해서 이뤄저야 한다
      • A -> B -> C -> A
profile
집념의 백엔드 개발자

0개의 댓글