Published on

운영체제

Authors
  • avatar
    Name
    손예지(Liv)

본 시리즈는 혼자 공부하는 컴퓨터 구조 책을 스터디 하며 남기는 기록 중 다섯번째 시리즈 입니다. 이전 시리즈 보러가기

  • 학습목표

    1. 커널이란?
    2. 운영체제의 서비스 종류?
    3. 시스템 콜과 이중모드 ?
    4. 프로세스의 정의와 구성
    5. 프로세스 제어 블록이란?
    6. 문맥교환의 정의와 과정
  • 운영체제

    • 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 프로그램
    • 커널영역에 적재되어 실행
    • 응용 프로그램과 하드웨어 사이에서 연결해주는 프로그램
    • 운영체제는 프로그램이기 때문에 문제 해결의 실마리가 된다
    • 운영체제는 커널영역과 사용자영역으로 나눠짐

커널

  • 운영체제의 핵심부
  • 응용 프로그램과 하드웨어 사이에서 중개자 역할
  • GUI, CLI를 포함한 UI는 운영체제에 속하지만 커널에 속하지 않음

이중모드

  • CPU가 명령어를 실행하는 모드를 커널모드와 사용자모드로 구분하는 방식
    • 사용자모드
      • 커널 영역의 코드르 실행할 수 없는 모드
    • 커널모드
      • 커널 영역의 코드를 실행할 수 있는 코드
      • 자원에 접근 가능
    • 플래그 레지스터 안에 슈퍼바이저 플래그
      • 커널모드로 실행중인지, 사용자 모드로 실행 중인지 알 수 있음
    • 시스템 호출(system call)
      • 커널 모드로 전환하기 위한 호출
      • 소프트웨어 인터럽트

운영체제의 핵심서비스

  • 프로세스 관리
    • 프로세스를 실행하다 다른 프로세스로 실행 전환
  • 자원 접근 및 할당
    • CPU 스케줄링
    • 메모리 할당
  • 파일 시스템 관리
    • 데이터를 파일과 디렉터리로 관리

프로세스

실행중인 프로그램

  • 포그라운드 프로세스
    • 사용자가 볼 수 있는 공간에서 실행되는 프로세스
  • 백그라운드 프로세스
    • 사용자와 직접 상호작용이 가능한 백그라운드 프로세스
    • 사용자와 직접 상호작용하지 않고 정해진 일만 수행하는 프로세스
    • = 데몬(유닉스), 서비스(윈도우)

프로세스 제어 블록(PCB)

  • 운영체제는 프로세스 제어블록을 통해 프로세스의 실행 순서를 관리하고, 프로세스에 자원 배분
  • 커널 영역에 생성
  • PCB에 담기는 정보
    • 프로세스 ID(PID)
      • 프로세스를 식별하기 위한 고유한 번호
    • 레지스터 값
      • 프로세스가 실행하면서 사용했던 레지스터 값
      • 프로세스가 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 복원하기 위해 사용
    • 프로세스 상태
      • 말 그대로 현재의 프로세스가 어떤 상태인지 PCB에 기록
    • CPU 스케줄링 정보
      • 프로세스가 언제 어떤 순서로 CPU를 할당받을지에 대해서
    • 메모리 관리 정보
      • 프로세스가 저장된 주소
    • 사용한 파일과 입출력 장치 목록
      • 프로세스가 실행과정에서 어떤 입출력장치가 할당되고, 어떤 파일을 열었는지에 대한 정보가 기록된다

문맥교환

  • 문맥 context

  • 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보

  • 하나의 프로세스에서 다른 프로세스로 실행 순서가 넘어갈때 기존 문맥 context 를 PCB에 백업한다. 그리고 프로세스가 다시 실행될 때 PCB로부터 문맥을 복구하는 과정이 반복된다. → 이 과정을 문맥 교환 context switching 이라고 함

  • 문맥교환이 자주 발생하게 되면 오버헤드가 발생하는 단점

알게된 점

운영체제가 어떻게 동작하는지에 대해서 살펴보았습니다. 도커를 통해 DB나 다른 툴을 띄우게 되면서 프로세스가 실행중인지 확인하는 일이 많이 있었는데 안에 담겨있는 정보가 의미하는 바를 이번에 확실히 알게된것 같습니다. 이전에 개발자 특강에서 연사님이 개발도중 발견한 문제를 확인할 때 CS의 관점에서 생각해봐야 한다고 했었던 말의 의미를 조금은 알 것 같습니다.

참고자료

혼자 공부하는 컴퓨터 구조 + 운영체제