[혼공학습단] 혼공컴운 4주차 (Ch09~11)

채민·2024년 1월 29일
0

혼공컴운

목록 보기
4/4

내용 정리

Chapter 9

편의를 위해 Ch10에 나오는 동적/정적 할당 영역을 '메모리 내 위치 > 사용자 영역' 부분과 연결 지어놓았다

운영체제란?

프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램

  • 시스템 자원: 프로그램 실행에 마땅히 필요한 요소들
    • CPU, 메모리, 보조기억장치 등 컴퓨터 부품들은 모두 (시스템) 자원임

운영체제의 위치

  • 운영체제는 인터넷 브라우저나 게임과 같은 프로그램임
  • 따라서 여느 프로그램과 마찬가지로 메모리에 적재됨
  • 메모리는 커널 영역사용자 영역으로 구분
    • 운영체제는 이 중 커널 영역에 따로 적재되어 실행
    • 사용자 영역에 대한 정보는 Ch10에서 계속

운영체제 제공 서비스

운영체제는 메모리 내에서 커널 영역에 위치하고, 커널 영역에서는 운영체제의 핵심인 커널이 위치한다.

<커널에 포함되는 서비스>

핵심 서비스: 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리

1. 프로세스 관리
프로세스: 실행 중인 프로그램

  • CPU는 한 번에 1개 프로세스만 실행 시킬 수 있다
  • 각 프로세스는 상태도 다르고 사용하고자 하는 자원도 다양함
  • Ch10에서 더 자세히

2. 자원 접근 및 할당
운영체제는 CPU, 메모리, 보조기억장치와 입출력장치를 관리하고 특정 기능 제공

  • CPU 스케줄링
    • Ch11에서 더 자세히
  • 프로세스에 메모리 할당
  • 입출력장치가 발생시키는 하드웨어 인터럽트는 커널 영역에 있음
    • 입출력 장치가 CPU에 하드웨어 인터럽트 요청 신호를 보냄
    • CPU는 하던 일을 잠시 백업한 뒤 커널 영역에 있는 인터럽트 서비스 루틴을 실행

3. 파일 시스템 관리
파일을 한데 묶어 디렉터리로 관리하는 파일 시스템도 운영체제가 지원하는 핵심 서비스

  • 운영체제가 보조기어장치 속 데이터를 어떻게 파일과 디렉터리로 관리하는지 Ch15에서 더 자세히

<커널에 포함되지 않는 서비스>

대표적으로 사용자 인터페이스(User Interface)가 있다

  • 사용자 인터페이스(UI): 사용자가 컴퓨터와 상호작용할 수 있는 통로
    • 그래픽 유저 인터페이스(GUI): 그래픽 기반
    • 커맨드 라인 인터페이스(CLI): 명령어 기반
  • UI는 운영체제가 제공하는 서비스지만, 컴퓨터와 상호작용하기 위한 통로일 뿐 커널에 속한 기능은 아님

이중모드

CPU가 명령어를 실행하는 모드를 사용자 모드 vs 커널 모드로 구분하는 방식

사용자 모드

: 운영체제 서비스를 제공받을 수 없는 실행 모드

  • 커널 영역의 코드를 실행할 수 없는 모드다
  • 일반적인 응용프로그램은 기본적으로 사용자 모드로 실행됨
  • 사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없음
    • 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없기 때문
  • 시스템 호출: 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받기 위해 운영체제에 보내는 요청
    • 커널 모드로 전환 됨
    • 일종의 인터럽트임- 소프트웨어 인터럽트
    • CPU가 시스템 호출을 처리하는 순서는 Ch04에 등장한 인터럽트 처리 순서와 유사
      • 시스템 호출을 발생시키는 명령어 실행 시 CPU는 지금까지의 작업을 백엄
      • 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴)을 실행
      • 다시 기존에 실행하던 응용 프로그램으로 복귀하여 실행을 계속 해나감

커널 모드

: 운영체제 서비스를 제공받을 수 있는 실행 모드

  • 커널 영역의 코드를 실행할 수 있는 모드
  • 운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있다
    • CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있기 때문

요약: 운영체제는 응용 프로그램과 하드에어 사이에서 응용 프로그램에 필요한 자원을 효율적으로 할당하고, 응용 프로그램이 올바르게 실행되도록하여 컴퓨터 시스템을 관리하는 역할

(추가) 가상머신

가상머신: 이름 그대로 소프트웨어적으로 만들어낸 가상 컴퓨터

  • 가상 머신을 설치하면 새로운 운영체제와 응용 프로그램을 설치하고 실행 가능
  • 컴퓨터에 설치된 운영체제에서 가상머신 설치 및 실행 시, 가상머신 또한 응용프로그램으로 실행됨
    • 사용자 모드로 작동하는 것
  • 가상머신에 설치된 운영체제로부터 운영체제 서비스를 받기 위한 하이퍼바이저 모드

Chapter 10

프로세스란?

프로그램이 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리; 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다
-> 프로세스를 생성한다

포그라운드 프로세스

: 사용자가 볼 수 있는 공간에서 실행되는 프로세스

백그라운드 프로세스

: 사용자가 볼 수 없는 공간에서 실행되는 프로세스

  • 백그라운드 프로세스 중 사용자와 직접 상호작용할 수 있는 백그라운드 프로세스가 있는 반면, 사용자와 상호작용하지 않고 정해진 일만 수행하는 백그라운드 프로세스 존재: 데몬(유닉스)/서비스(윈도우)

프로세스 제어 블록

: 프로세스와 관련된 정보를 저장하는 자료구조

  • PCB(Process Control Block)라고도 부른다
  • PCB는 커널 영역에 생성된다

프로세스 실행 순서

  • 한정적인 자원을 배분하고 프로세스의 실행 순서를 관리하기 위해 사용
  • 프로세스들이 차례대로 돌아가며 한정된 시간만큼만 CPU를 이용
  • 자신의 차례가 끝나면 타임 인터럽트가 발생하여 차례 양보

PCB에 담긴 정보

  • 프로세스 ID (PID)
    • 특정 프로세스를 식별하기 위해 부여하는 고유한 번호
    • 같은 프로그램일지라도 두 번 실행하면 두 개의 프로세스가 생성된다
  • 레지스터 값
    • 이전까지 사용했던 레지스터의 중간값들을 모두 복원해야 이전까지 진행했던 작업들을 그대로 이어 실행 가능
    • 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값이 담긴다
  • 프로세스 상태
    • 현재 프로세스가 어떤 상태인지 PCB에 기록
  • CPU 스케줄링 정보
    • 프로세스가 언제 어떤 순서로 CPU를 할당 받을지에 대한 정보
  • 메모리 관리 정보
    • 프로세스마다 메모리에 저장된 위치가 다르기 때문에 어느 주소에 저장된건지에 대한 정보를 PCB에 저장
    • 베이스 레지스터, 한계 레지스터 값과 같은 정보가 담긴다
    • 페이지 테이블 정보도 담김
      • 프로세스의 주소를 알기 위한 중요 정보
      • Ch14에서 더 자세히
  • 사용한 파이로가 입출력장치 목록
    • 어떤 입출력장치가 이 프로세스에 할당되었는지, 어떤 파일들을 열었는지에 대한 정보 저장

문맥 교환

문맥이란? 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보

  • 해당 프로세스의 PCB에 표현되어 있다

문맥 교환이란? 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것

Chapter 11

혼공학습단 미션

기본 미션

p.304의 확인 문제 1번 풀고 인증하기

선택 미션

Ch11(11-2) 준비 큐에 A, B, C, D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당 받는지 풀어보기

profile
컴공의 개발일지

0개의 댓글