Post

운영체제 관련 내용 정리

운영체제 관련 내용 정리

1.1 운영체제

1.1.1 운영체제란

컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공

1.1.2 운영체제의 목적

처리 능력 향상, 반환 시간 단축, 사용 가능도 향상, 신뢰도 향상

1.1.3 CPU와 메모리 구조

레지스터 -> 캐시 메모리 -> RAM -> 하드디스크

1.1.4 커널과 시스템 콜

  • 커널 : 운영체제의 핵심 부분으로 하드웨어와 소프트웨어 간의 인터페이스 역할을 함
  • 사용자 모드에서 실행된 프로세스가 자원에 접근하기 위해 커널 모드로 전환하는 것을 시스템 콜이라고 함

1.2 프로세스

1.2.1 프로세스와 스레드

  • 프로세스 : 실행 중인 프로그램으로, 메모리 공간을 할당받아 CPU에서 실행되는 단위
  • 스레드 : 프로세스 내에서 실행되는 흐름의 단위로, 프로세스 내의 메모리를 공유함

프로세스의 메모리 영역

  • 스택: 함수 호출 시 지역 변수를 저장하는 영역
  • 힙: 동적으로 할당된 메모리를 저장하는 영역
  • 데이터: 전역 변수와 정적 변수를 저장하는 영역
  • 텍스트: 실행할 코드가 저장되는 영역

사용자레벨 스레드와 커널레벨 스레드 매핑

  • 다대일 매핑: 여러 개의 사용자 스레드가 하나의 커널 스레드에 매핑되는 방식
  • 일대일 매핑: 하나의 사용자 스레드가 하나의 커널 스레드에 매핑되는 방식.
  • 다대다 매핑: 여러 개의 사용자 스레드가 여러 개의 커널 스레드에 매핑되는 방식.

1.2.2 PCB

프로세스를 제어하기 위한 프로세스 정보 저장

  • 포인터(프로세스의 위치), 상태(실행 중, 대기 중 등), 프로세스 ID(PID), 프로그램 카운터(다음 실행할 명령어의 주소), CPU 레지스터(프로세스가 사용하는 레지스터 값), 메모리 관리 정보(메모리 할당 정보), 입출력 상태 정보(입출력 장치 상태) 등

1.2.3 프로세스의 생성

fork() 시스템 콜을 사용하여 새로운 프로세스를 생성. (부모 프로세스는 자식 프로세스의 PID를 반환하고, 자식 프로세스는 0을 반환함)

1.2.4 프로세스 상태도

  • 생성 상태 (New): 프로세스가 PCB를 가지고 있지만 OS로부터 승인 받지 못한 상태
  • 준비 상태 (Ready): OS로부터 승인받은 후 준비 큐에서 CPU할당을 기다리는 상태
  • 실행 상태 (Running): CPU를 할당받아 실행 중인 상태
  • 대기 상태 (Waiting): 입출력 작업이나 다른 프로세스의 종료를 기다리는 상태
  • 종료 상태 (Terminated): 프로세스 실행이 완료된 상태

1.2.5 멀티 프로세스와 멀티 스레드

동시성 vs 병렬성

  • 동시성: 하니의 코에(싱글 코어)에서 여러 작업을 번갈아 가면서 처리하는 방식
  • 병렬성: CPU가 여러 개 있어서 각 CPU에서 작업을 동시에 처리하는 방식
  • 멀티 프로세스: 응용프로그램을 프로세스 하나로 구성하는 것이 아닌 여러 개로 구성하는 것
  • 멀티 스레드: 응용프로그램을 프로세스 하나로 구성하고 그 안에 여러 개의 스레드를 두는 것

1.2.6 콘텍스트 스위칭

  • 입출력 관련 이벤트가 발생하거나 예외 상황이 발생할 때 이에 대응할 수 있게 CPU에 처리를 요청하는 것.
  • 멀티 프레스스 환경에서 CPU가 처리 중인 프로세스의 정보를 바꾸는 것.

1.2.7 프로세스 동기화

  • 경쟁 상태: 공유 자원에 대해 여러 프로세스가 동시에 접근해 경쟁하는 상태
  • 임계 영역: 공유 자원에 접근할 수 있고 접근 순서에 따라 결과가 달라지는 코드 영역
  • 뮤텍스: 락을 가진 프로세스만이 공유 자원에 접근할 수 있도록 하는 방법
  • 세마포어: 공유 자원에 접근할 수 있는 프로세스의 수를 정해 접근을 제한하는 방법

1.2.8 교착상태

2개 이상의 프로세스가 각각 자원을 가지고 있으면서 서로의 자원을 요구하며 기다리는 상태

  • 교착 상태 발생 조건
    • 상호 배제: 자원은 한 프로세스만 사용할 수 있음
    • 점유 대기: 이미 할당된 자원을 점유한 프로세스가 다른 자원을 요청하며 대기하는 상태
    • 비선점: 자원을 점유한 프로세스는 자원을 강제로 빼앗길 수 없음
    • 순환 대기: 프로세스들이 서로의 자원을 기다리는 상태

1.2.9 스레드 안전

1.2.10 IPC

  1. 공유 메모리 방식
  2. 소켓
  3. 세마포어
  4. 파이프
  5. 메시지 큐

1.2.11 좀비 프로세스와 고아 프로세스

  • 좀비 프로세스: 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우에 남겨진 자식 프로세스
  • 고아 프로세스: 부모 프로세스가 자식 프로세스보다 먼저 종료되는 경우의 자식 프로세스

1.3 스케쥴링

1.3.1 스케쥴링의 목적

1.3.2 스케쥴링의 단계

1.3.3 스케쥴링 알고리즘

1.4 메모리 관리 전략

1.4.1 논리 메모리와 물리 메모리

1.4.2 연속 메모리 할당

1.4.3 비연속 메모리 할당

1.5 가상 메모리

1.5.1 가상 메모리란

1.5.2 요구 페이징

1.5.3 스레싱

1.6 캐시 메모리

1.6.1 캐시 메모리와 지역성

1.6.2 캐시 메모리의 매핑 방식

This post is licensed under CC BY 4.0 by the author.