카테고리 없음

[혼공컴운 4주차] Chapter 9 ~ 11

Ejxnzn 2024. 1. 26. 18:58

 

 

운영체제

  • 운영체제 : 실행 할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
  • 자원 : 프로그램 실행에 마땅히 필요한 요소
  • 커널 영역 : 운영체제를 적재하는 공간
  • 사용자 영역 : 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역

 

 

 

운영체제의 심장, 커널

  • 커널 : 운영체제의 핵심 서비스를 담당하는 부분
  • 사용자 인터페이스 : 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로
    1. 그래픽 유저 인터페이스
    2. 커맨드 라인 인터페이스

 

이중모드와 시스템 호출

  • 이중모드 :  CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
    1. 사용자 모드 : 운영체제 서비스를 제공받을 수 없는 실행 모드
    2. 커널 모드 : 운영체제 서비스를 제공받을 수 있는 실행 모드 
  • 시스템 호출 : 운영체제의 서비스를 제공받기 위해 커널 모드로 전환하는 방법

 

운영체제의 핵심 서비스

  • 프로세스 관리 : 동시다발적으로 생성, 실행, 삭제되는 다양한 프로세스를 일목요연하게 관리
    • 프로세스 : 메모리에 적재되어서 현재 실행되는 프로그램
  • 자원 접근 및 할당
    1. CPU 
      • CPU 스케줄링 : 얼마나 오래 CPU를 이용하게 할지를 결정
    2. 메모리 
    3. 입출력 장치
  • 파일 시스템 관리

 

 

프로세스 개요

  • 프로세스 : 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간의 프로그램
    • 포그라운드 프로세스 : 사용자가 볼 수 있는 공간에서 실행되는 프로세스
    • 백그라운드 프로세스 : 사용자가 볼 수 없는 공간에서 실행되는 프로세스

프로세스 제어 블록 

  • 프로세스 제어 블록 (PCB) : 프로세스와 관련된 정보를 저장하는 자료 구조
    1. 프로세스 ID (PID) : 특정 프로세스를 실별하기 위해 부여하는 고유한 번호 
    2. 레지스터 값 : PCB 안에 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들이 담김
    3. 프로세스 상태  
      1. 생성상태
      2. 준비생태
      3. 실행상태
      4. 대기상태
      5. 종료상태
    4. CPU 스케줄링 정보 : 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보
    5. 메모리 관리 정보
    6. 사용자 파일과 입출력장치 목록 : 어떤 파일을 열었는지 어떤 입출력장치가 할당 되었는지 PCB에 명시

프로세스의 메모리 영역

  • 스택 영역 : 데이터를 일시적으로 저장하는 공간
  • 힙 영역 : 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장 공간
  • 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
  • 코드 영역 : 기계어로 이루어진 명령어가 저장

 

 

 

프로세스 상태와 계층 구조

  • 프로세스 상태
    1. 생성 상태 : 프로세스를 생성 중인 상태
    2. 준비 상태 : 당장이라도 CPU를 할당받아 실행 할 수 있지만, 아직 자신의 차례가 아니기 때문에 기다리는 중 
    3. 실행 상태 : CPU를 할당받아 실행 중인 상태
    4. 대기 상태 : 입출력장치의 작업을 기다리는 상태
    5. 종료 상태 : 프로세스가 종료된 상태
  • 프로세스 계층 구조
    • 부모 프로세스 : 새 프로세스를 생성한 프로세스
    • 자식 프로세스 : 부모 프로세스에 의해 생성된 프로세스
  • 프로세스 생성 기법
    • fork : 부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성
    • exec : 자식 프로세스는 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체

 

 

 

스레드 (소프트웨어적 스레드)

  • 스레드 : 프로세스를 구성하는 실행 흐름 단위

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

  • 멀티프로세스 : 여러 프로세스를 동시에 실행하는 것
  • 멀티스레드 : 여러 스레드로 프로세스를 동시에 실행하는 것
  • 멀티프로세스와 멀티스레드의 차이점 : 프로세스끼리는 자원을 공유하지 않지만 스레드끼리는 자원을 공유한다는 점

 

 

CPU 스케줄링 개요

  • CPU 스케줄링 : 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
  • 프로세스 우선순위 : 우선순위가 높은 프로세스가 더 빨리 더 자주 실행됨

스케줄링 큐

  • 운영체제는 메모리에 적재되고 싶은 프로세스, 입출력장치를 사용하고 싶은 프로세스들을 모두 줄 세우는 것 
  • 준비 큐 : CPU를 이용하고 싶은 프로세스들이 서는 줄
  • 대기 큐 : 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄

선점형과 비선점형 스케줄링

  • 선점형 스케줄링 : 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
  • 비선점형 스케줄링 : 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식

 

 

CPU 스케줄링 알고리즘

  • CPU 스케줄링 알고리즘
    1. 선입 선처리 스케줄링 : 준비 큐에 삽입된 순서대로 CPU를 할당
      • 문제점 : 프로세스들이 기다리는 시간이 매우 길다 ( =호위효과)
    2. 최단 작업 우선 스케줄링 : 준비 큐에 삽입된 프로세스들 중 CPU 사용 시간의 길이가 가장 짧은 프로세스부터 CPU를 할당
    3. 라운드 로빈 스케줄링 : 정해진 시간만큼만 돌아가며 CPU를 할당
    4. 최소 잔여 시간 우선 스케줄링 : 프로세스들은 정해진 타임 슬라이스만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스로는 남아있는 작업 시간이 가장 적은 프로세스가 선택
    5. 우선순위 스케줄링 : 가장 높은 우선순위를 가진 프로세스에 CPU를 할당 
      • 기아현상 : 우선순위 높은 프로세스만 실행하고 우선순위 낮은 프로세스는 실행 연기
      • 에이징 : 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식
    6. 다단계 큐 스케줄링 : 우선순위별로 준비 큐를 여러 개 사용하는 스케줄링 방식
      • 문제점 : 큐 간의 이동이 불가능해 기아현상이 발생할 수 있음
    7. 다단계 피드백 큐 스케줄링 : 프로세스들이 큐 사이를 이동 할 수 있는 다단계 큐 스케줄링 
     

 

기본미션 p.304 1번

 

1번 : 생성

2번 : 준비

3번 : 실행

4번 : 종료

5번 : 대기

 

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

 

답 : A -> B -> C -> D