CS

정리 - 운영체제

아잠만_ 2024. 10. 30. 15:29

운영체제란

  • 시스템의 자원과 동작을 관리하는 소프트웨어
  • 프로세스, 저장장치, 네트워킹, 사용자, 하드웨어를 관리

메모리

메모리 구조: code, data, heap, stack

  • 코드 영역
    • 실행할 프로그램의 코드(소스 코드)
  • 데이터 영역
    • 전역 변수
    • 정적 변수
  • 힙 영역
    • 사용자의 동적 할당(데이터가 동적 할당)
    • 런타임에 크기가 결정됨
  • 스택 영역
    • 함수의 호출 정보
    • 지역변수
    • 매개변수
    • 컴파일 타임에 크기가 결정

커널

- 인간의 심장과 같음

시스템 콜

- 커널로부터 핵심적인 기능을 제공받는지 

 

프로세스 및 스레드 관리

프로세스

  • 실행중인 프로그램
  • 각각의 독립된 메모리 영역(code, data, stack, heap)을 할당 받는다

스레드

  • 프로세스 안 실행 단위
  • 프로세스 안에 스레드 여러 개가 존재하여 code와 data, heap은 공유하지만 stack은 스레드마다 각각 따로 할당한다

자원할당 및 관리

CPU관리 : CPU 스케줄링

  • 준비 큐 있는 프로세스에 대해 CPU 할당하는 방법
  • 스케줄링 알고리즘
    • 선점형 스케줄링
    • 비선점형 스케줄링

메모리관리 : 가상 메모리

  • 모든 프로세스에게 메모리를 할당하기에는 메모리의 크기가 한계가 있어서 사용하는 방법
  • 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 기법

데드락

  • 프로세스가 자원을 얻지 못해 다음 작업 못하는 상태
  • 발생 조건이 4가지가 동시에 발생되어야 발생
    • 상호 배제(Mutual exclusion)
      • 자원은 한번에 한 프로세스만이 사용
    • 점유 대기(Hold and wait)
      • 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해서는 대기하는 프로세스가 있어야한다.
    • 비선점(No preemption)
      • 다른 프로세스에 할당된 자원은 사용이 끝날 떄까지 강제로 뺏앗을 수 없어야 한다.
    • 순환 대기(Circular wait)
      • 프로세스의 집합에서 순서대로 자원이 대기하며 원 처럼 순환하여 자원을 요구한다.

파일/디렉터리 관리

- 파일 시스템