운영체제 3-1: 프로세스 관리

Jang990·2024년 1월 11일
0

운영체제

목록 보기
1/9

컴퓨터 시스템의 변화

초기 컴퓨터 시스템은 하나의 프로그램만 실행시켰다.
하나의 프로그램을 실행시키는데 프로그램의 상태, 스케줄링 정보 등등을 저장할 필요가 없다.
어짜피 하나의 프로그램을 계속 실행하기 때문이다.

하지만 오늘날의 컴퓨터 시스템은 메모리에 다수의 프로그램이 적재되어 여러 프로그램을 동시에 병렬 실행한다.
이런 변화가 프로세스라는 개념을 낳았다.

예를 들어 여러 프로그램이 실행중이기 때문에 어떤 프로그램은 대기하고 어떤 프로그램은 실행된다. 또한 어떤 프로그램은 종료될 것이다.
이러한 프로그램은 각각의 상태 정보나 다음 명령어의 주소, 각종 레지스터의 정보 등등을 저장하고 있어야 한다.

프로세스 vs 프로그램

프로그램은 수동적인 존재로 디스크에 저장되어 있는 파일이다.(= 실행파일)
하지만 프로세스는 능동적인 존재로 다음 실행할 명령어, 상태 등등을 가진다.

실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 된다.

프로세스

메모리에 적재되는 프로세스

프로세스가 메모리에 적재되면 다음과 같은 구조로 적재된다.

텍스트 : 프로그램의 코드 영역
데이터 : 전역 변수
: 프로그램 실행중 동적 할당되는 메모리
스택 : 함수 호출 시 임시 데이터 저장소(함수 매개변수, 복귀주소, 지역 변수 등등)

텍스트와 데이터 영역은 고정적이고
힙과 스택 영역은 동적으로 그림처럼 서로의 방향으로 확장된다.

멀티 프로그래밍

프로세스가 앞서 살펴본 구조로 메모리에 적재되는 것을 살펴봤다.
오늘날의 컴퓨터 시스템은 하나의 프로세스만 적재되지 않고 사진과 같이 여러 프로세스들이 메모리에 적재된다.

이전에 하나의 프로세스만을 실행했던 때와는 다르게
어떤 프로세스는 CPU를 사용할 것이고, 어떤 프로세스는 I/O 작업을 대기할 것이다. 어떤 프로세스는 매우 중요해서 빠르게 실행되어야 할 수도 있을 것이다.


예를들어 App1과 App2 프로세스가 메모리에 올라와 있고 위 그림처럼 App1이 I/O 처리로 CPU를 사용하지 않는다면 CPU는 낭비된다.
CPU를 사용하지 않을 때는 다른 프로세스가 사용할 수 있도록 만드는 것이 더 효율적일 것이다.

이렇게 나오는 아이디어가 멀티 프로그래밍이다.

멀티 프로그래밍이란 어떤 프로세스가 I/O 처리를 기다려야 할 경우, 운영체제가 해당 프로세스로부터 CPU를 회수해서 다른 프로세스에게 할당해주는 방식이다.

이렇게 프로세스가 하나일 때와는 다르게 여러개의 프로세스를 동시에 실행할 경우 관리가 필요하다.

이 글에서는 운영체제에서 관리하는 정보들을 다루고, 다음 글 3-2에서는 관리하는 방식을 대강 훑어볼 것이다.

운영체제에서 관리하는 프로세스

이 프로세스들을 운영체제가 관리한다.

PCB(Process Controll Block)

각 프로세스는 운영체제에서 프로세스 상태 블록(PCB)로 관리된다.
PCB에는 다음과 같은 것들이 저장된다.

  1. 프로세스 상태 : 프로세스 상태 정보 (이 글의 '프로세스 상태'에서 다룬다.)
  2. 프로그램 카운터(PC) : 다음 실행할 명령어 주소
  3. CPU 레지스터 데이터 : 컴퓨터 구조에 따라 스택 레지스터, 범용 레지스터 등등
  4. CPU 스케줄링 정보 : 프로세스 우선순위 등등 (5장에서 다룬다.)
  5. 메모리 관리 정보 : Base, Limit 레지스터 정보 등등(운영체제의 메모리 시스템에 따라 다르다. - 9장에서 다룬다.)
  6. 계정 정보 : CPU 사용 시간, 프로세스 번호 등등
  7. 입출력 상태 정보 : 할당된 입출력 장치들과 열린 파일 목록 등등

프로세스 상태

생성(new) : 프로세스 생성 중
실행(running) : 프로세스 실행 중
대기(waiting) : 이벤트(입출력 완료 or 신호 수신)가 일어나길 대기
준비(ready) : 프로세서에 할당되길 기다림
종료(terminated) : 프로세스 실행 종료

스레드

지금은 단일 스레드의 프로세스를 다루고 있다.
스레드는 이후 4장에서 스레드와 멀티 스레드를 배우면서 알게될 것이다.

스레드를 지원하는 시스템에서는 PCB에 스레드에 관한 정보도 포함된다는 것을 인지만 하고 넘어가자.

참고

도서 - 운영체제

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글