[넓고 얕게 배우는 컴퓨터 구조] 운영체제가 하는 일

YUZAMIN
Hello, World! I'm YUZAMIN, a diligently endeavoring frontend developer 🐤💦
[넓고 얕게 배우는 컴퓨터 구조] 운영체제가 하는 일

강의 영상📼

정리📝

  • 운영체제(OS)
    • 접근 및 입출력 제어, 동기화, 전산 자원(CPU, RAM 등) 관리를 비롯한 많은 일 수행

  • 프로세스 관리
    • 프로세스, 스레드
    • 각자의 업무 흐름은 프로세스의 전용 공간(=집) 내부로 제한됨
    • 화장실, 거실 등의 공간 구성 요소들은 집에 부여됨
      • 같은 가족이라도 구성원들은 각자 할 일을 함: 누구는 화장실 갈 수도, 누구는 티비 볼 수도 있음
      • 개인들은 그 공간들을 서로 공유함
    • CPU가 컴퓨터의 정체성을 결정함
    • 하드웨어 기반으로 운영체제라는 소프트웨어 존재하고 그 모든 것을 기반으로 어플리케이션 프로세스 존재 -> 프로세스 내에는 스레드 존재 -> 스레드의 흐름은 프로세스 내에서 개별적이며 프로세스에 할당된 자원을 항상 공유해서 씀(동시성) -> 동기화가 중요함

  • 스레드 = 개별화된 흐름
    • 프로그램의 흐름 = 스레드 단위로 존재함
  • 프로세스 = 태스크

    • 태스크가 여러 개 있으면 멀티 태스킹
    • 동시에 태스킹 진행되므로 동기화 중요

      • A가 접근하고 있는 자원에 B가 접근하면 충돌 일어나므로 충돌 발생하지 않게 동기화 필요 -> OS가 관리
  • OS가 하는 일

    • 스레드가 연산할 때 어떤 스레드가 어떤 CPU에서 연산될 지 결정
      • CPU를 스레드에 분배해서 연산 일어나게 함
    • 연산의 흐름이 작동할 때는 CPU 자원 써야 함 -> 누구는 대기하고 누구는 연산하고…를 OS가 스케줄링함
    • 프로세스가 사용하는 메모리를 할당 및 회수하는 일 또한 OS가 함

  • 프로세스마다 메모리 공간 부여됨
  • 스레드는 개별적 -> 스레드가 가족(프로세스)를 이룸
  • 침실은 각 개인(스레드)가 개별적으로 씀 = 스택
    • 메모리 공간 관리될 때 스택 형식으로 관리되어서 스택으로 부름
    • 어떤 스레드 마다 스택이라는 공간을 둬서 각자의 스레드가 연산할 때 사용
  • 거실, 주방, 화장실 등은 개인에게 부여되지 않음 -> 공유
    • 힙과 실행코드 영역
  • 큰 공간(=집)을 가상 메모리 공간이라고 함
  • 이 공간을 일정 크기로 잘라서 나눠서 사용
    • 스택 영역은 보통 1메가바이트
    • 거실과 같은 영역은 1.7기가바이트 정도

  • 가상 메모리
    • 운영체제는 페이지 단위로 메모리를 관리함
    • Paged / Non-Paged
  • RAM과 하드디스크를 하나의 논리적 메모리로 추상화

  • 인터넷과 워드를 동시 실행 -> 페이지 단위로 운영체제가 메모리를 부여 -> 워드를 최소화 하고 인터넷 열었더니 메모리 공간이 꽉 참 -> 워드는 실제로 연산을 하고 있지 않으므로 운영체제가 워드가 쓰던 메모리를 하드디스크로 페이지 아웃(스왑 아웃) 시킴 -> 인터넷 쓰다가 닫고 워드를 재실행하면 바깥으로 빼둔 페이지를 RAM으로 페이지 인(스왑 인) 시킴
  • 마치 여러 사람이 노트북 하나를 돌아가며 쓰듯 정해진 메모리 공간을 분할해서 공유하는 기법이 가상 메모리
    • 관리 단위: 페이지
    • 주기억장치 모자라면 하드디스크로 뺌
    • 각자는 주기억장치의 어딘가에 있다고 착각하지만 RAM에 있을 수도, HDD에 있을 수도 있음
    • 속도가 떨어져도 여러 프로세스가 동시에 작동될 수 있음

출처