티스토리 뷰

운영체제

[운영체제] 프로세스

jfmam 2023. 3. 13. 21:12
  • 메모리에 다수의 프로그램들을 실행 시키게 되면서 프로세스 개념 등장
  • 병행실행 가능
  • 프로그램 카운터 + 프로세스레지스터

프로세스 메모리 배치

고정

  • 텍스트: 실행코드
  • 데이터: 전역변수 (초기화, 미 초기화)

가변

  • 힙: 동적 메모리
  • 스택: 임시 데이터 저장장소 (함수,지역변수,매게변수, 복귀주소)

스택과 힙은 양방향으로 크기를 확장 시켜나가며 겹치지 않도록 조심해야한다.

프로세스 상태

  • new: 프로세스 생성
  • running: 프로세스를 할당받아 명령어 실행
  • wating: 프로세스가 이벤트가 일어나기를 기다린다 (입출력완료)
  • ready: 프로세스를 할당받기를 기다린다.
  • terminated: 프로세스 종료

프로세스 제어블록

  • 프로세스 상태
  • 프로그램 카운터
  • cpu 레지스터
  • cpu 스케줄링 정보
  • 메모리 관리 정보
  • 회계 정보
  • 입출력 상태정보

스레드

  • 병렬로 실행 가능하다.
  • 한 번의 하나이상의 일을 가능하게 한다.
  • 예시로 워드 같은 경우 철자 검사와 입력이 동시에 진행이 가능하다.

프로세스 스케줄링

cpu 이용을 최대화 하기 위해 프로세스를 스케줄링 하는 방법

준비큐

  • 프로세스를 할당받길 기다린다
  • 연결리스트로 구성

대기큐

  • 프로세스에 어떤 이벤트가 일어나길 기다린다
  • 연결리스트로 똑같이 구성

큐잉 다이어그램

  • cpu 할당이 끝남으로 대기큐에 삽입
  • 프로세스 준비상태로 변하면서 준비큐에 다시 삽입
    • 입출력 종료
    • 아들 프로세스 종료
    • 인터럽트 및 타임슬라이스(cpu 할당시간) 종료

cpu 스케줄링

문맥

인터럽트 종료 후 문맥 복구를 위해 pcb에 저장하는 형태

문맥교환이란?

cpu스케줄링에 의해 프로세스가 새롭게 할당받으면서 문맥간의 교환이 일어나는 상태

  1. 커널은 현재 프로세스의 문맥을 pcb에 저장한다
  2. 새롭게 할당받은 프로세스의 문맥을 복구한다.

문맥교환의 경우 문맥을 교환하는 동안 cpu가 일을 할 수 없어 오버헤드가 발생한다