본문 바로가기

컴퓨터 일반/운영체제론

운영체제론 복습(1)

운영체제는 하드웨어와 응용 프로그램 사이에 존재하며 프로그램을 위한 프로그램이다

하드웨어 -> 운영체제 -> 응용 프로그램 -> 사용자 순서로 연결된다

 

프로세스란 실행 중인 프로그램이다. 프로그램 코드 외에도 현재의 활동 상태를 갖는다

  • 생성 상태는 프로세스의 작업 공간이 메인 메모리에 생성되고 운영체제 내부에 프로세스의 실행정보를 관리하기 위한 프로세스 제어 블록(PCB)가 만들어진다
  • 준비 상태는 프로세스가 CPU 할당을 기다리는 상태이다, 단일 프로세서 시스템에서 여러 개의 프로세스들이 동시에 이 상태에 있을 수 있다.
  • 실행 상태는 프로세스가 CPU를 할당 받아 작업을 수행하고 있는 상태로, 단일 프로세서 시스템에서는 오직 하나의 프로세스만 이 상태에 있을 수 있다
  • 다중 처리기 시스템에서는 실행 상태의 프로세스가 여러개 있을 수 있다
  • 대기 상태는 프로세스가 어떤 이벤트가 일어나기를 기다리는 상태이다(원하는 자원을 할당받지 못해 기다리는 상태) 프로세스의 실행 과정에서 여러번 이 상태에 속하게 된다.
  • 종료 상태는 프로세스가 작업 수행이 끝난 상태로, 프로세스에 할당된 모든 자원을 OS(운영체제)에 돌려주면 관련 PCB가 삭제된다.
  • PCB(프로세스 제어블록) : 한 개의 프로세스에 관한 정보를 가지고 있는 것으로, 프로세스가 생성될 때 함께 생성되고 프로세스가 종료될 때 함께 삭제된다. 프로세스 식별자, 상태, 컨텍스트, 스케줄링 정보 등을 포함한다

프로세스의 생성 과정

  1. 새로운 프로세스를 위한 프로세스 식별자를 할당한다
  2. 영역을 할당 받고 PCB를 생성한다
  3. PCB를 초기화한다
  4. 새로운 프로세스를 스케줄링 큐의 준비 또는 준비/보류 리스트에 연결한다

 

프로세스 상태 전이

https://seb.kr/w/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%83%81%ED%83%9C%EC%A0%84%EC%9D%B4%EB%8F%84

준비→실행(Dispatch) 우선순위가 높은 프로세스 선정하여 명령어 실행 (CPU 할당)
실행→준비(Timer runout) 실행 중인 프로세스가 자신에게 할당된 처리기의 시간을 모두 사용함
실행→대기(Block) 프로세서가 입출력, 자원 등을 기다리기 위해 대기로 전환
대기→준비(Wake up) 입출력이 완료되거나 자원이 할당되어 다시 실행

 

프로세스 상태 전이에서 준비 상태로 전이되는 상황

  • 실행 상태에 있는 프로세스가 우선순위가 높은 프로세스에 선점 되었을때
  • 블록된(blocked) 상태에 있는 프로세스가 요청한 입출력 작업이 완료되었을 때(wake up)
  • 실행 상태에 있는 프로세스가 작업을 마치지 못하고 시간 할당량을 다 썼을때(time run out)

 

문맥 교환(context switching) :

CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업이다.

CPU를 다른 프로세스에 바꾸어 주는 과정은 이전 프로세스의 상태를 저장하고 새로운 프로세스에 대해 상태를 적재하는 것을 요구한다. 이런 문맥교환 과정에서 걸리는 시간은 CPU가 유용한 작업을 하지 못하기 때문에 시스템이 부담이 된다

(과부하 -> 스레드 이용)

 

프로세스와 스레드

  • 프로세스는 운영체제에서 작업의 기본 단위이다
  • 프로세스는 비동기적인 행위를 일으키는 주체이다
  • 프로세스는 현재 실행중인 프로그램이라고 정의할 수 있다
  • 스레드는 프로세스에서 실행의 개념과 제어 만을 분리한 것이다
  • 스레드는 명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름이며 경량 프로세스라고 한다
  • 하나의 프로세스 내에 여러 개의 스레드가 존재할 수 있다
  • 스레드는 프로그램 카운터를 독립적으로 가지며, 자신만의 레지스터와 스택을 가진다
  • 스레드는 코드, 데이터, 파일 등은 공유한다
  • 다중 스레드 프로세스 모델은 프로세스를 각각의 스레드와 고유의 레지스터, 스택으로 표현한다
  • 레지스터와 스택은 고유 영역이며 코드와 데이터는 공유 영역이다
  • 임계구역은 공동으로 접근할 수 있는 자원 공간을 의미하며, 예를 들어 전역변수가 있다
  • 스레드는 병렬로 수행하기 때문에 한 스레드에 문제가 생기면 프로세스 전체 실행에 있어 문제가 생기는 것이다
  • 통상적으로 프로세스를 HWP, 스레드를 LWP라고 한다
  • 한 프로세스 내의 스레드들은 서로 공유하는 메모리 영역으로 통신한다
  • 스레드 단위로 CPU 스케줄링이 일어난다

 

프로세스의 메모리 구조

 

스택

  • 데이터를 일시적으로 저장하는 영역
  • 지역변수, 매개변수, 인자, 복귀주소, 반환 주소,CPU 레지스터 등의 정보가 저장된다
  • 함수를 호출할수록 커지고 반환하면 줄어든다
  • LIFO 구조

  • 동적 메모리 할당을 위해 사용되는 공간
  • 주소값이 커지는 방향으로 증가한다
  • 코드 영역과는 별도로 유지되는 자유 영역이다

데이터

  • 프로그램의 가상주소 공간
  • 전역 변수나 정적 변수를 할당하고 실행 전에 초기화한다

코드(텍스트)

  • 실행 명령을 포함하는 메모리이거나 프로그램 영역

 

프로세스와 스케줄링

비선점 스케줄링 (뺏을 수 없다) 선점 스케줄링 (뺏을 수 있다)
FCFS RR
SJF SRT
HRN MLQ
  MFQ
  • FCFS : 프로세서를 요청하는 순서대로 할당한다
  • SJF : 가장 짧은 작업이 먼저 실행된다, 다른 작업들에 비해 평균 대기시간이 작다
  • SRT : 남은 시간의 추정치가 가장 작은 작업에 할당되며 대화형 시스템에 유용하다
  • HRN : SJF 스케줄링의 기사 아탤르 해결하기 위해 사용한다
  • RR : 각 프로세스에게 할당된 일정한 시간 동안만 CPU 사용을 허락한다
  • MFQ : 여러 개의 큐 + 시간을 할당한다, 아래로 갈수록 많은 시간 할당
  • MLQ : 여러 개의 큐를 둔다

 

CPU 스케줄링 공부하기

 

상호배제와 동기화

(1)임계영역 : 둘 이상의 프로세스들이 동시에 공유할 수 없는 자원이 임계 자원, 프로그램에서 이 자원을 이용하는 부분을 임계영역 이라고 한다. 주어진 시점에 오직 하나의 프로세스만 진입할 수 있고 공유데이터의 읽기와 쓰기는 가능하다

여러 프로세스가 병렬적으로 실행할 수 없다, 직렬로만 수행

 

(2)상호배제 : 한 프로세스가 임계 구역에 들어가면 다른 프로세스는 들어갈 수 없도록 하는 조건이다

(지역이 임계영역, 조건이 상호배제)

 

(3)세마 포어:

  • 상호배제의 원리를 보장하며 임계구역 문제를 해결하기 위해 사용할 수 있는 동기화 도구이다.
  • 공유 자원에 대한 대표적인 동기화 기법이다
  • 플래그 변수와 그 변수를 검사하거나 증감시키는 연산들로 정의 된다
  • 표준단위 연산인 P(wait),V(signal)에 의해 접근되는 정수형 공유 변수이다
  • 이진 세마포어와 계수형 세마포어가 있다
  • 인터럽트를 허용하지 않는다
  • 상호배제 해결과 세마포어 정의 해결의 단점은 바쁜 대기(busy waiting)을 요구하는 것이다 *p,v 연산의 구현 방법에 따라 바쁜 대기를 해결할 수 있다

(4)모니터: 세마포어와 비슷하지만 제어가 쉽다.한 순간에 하나의 프로세스만 모니터 안에서 활동을 보장한다

 

 

교착 상태(deadlock)

다중 프로그램 실행 환경에서 일련의 프로세스들이 서로가 가진 자원을 부한정 기다리며 더이상 진행이 될 수 없는 상태를 의미한다

☆교착 상태 필요 조건 (네가지 모두 만족해야 한다)

  • 상호 배제 : 한 번에 한 프로세스만이 그 자원을 사용할 수 있다. 만일 다른 프로세스가 그 자원을 요청한다면 요청한 프로세스는 그 자원이 해제될 때까지 기다려야 한다.
  • 점유와 대기 : 적어도 하나의 자원을 보유하고 현재 다른 프로세스에 할당된 자원을 얻기 위해 기다리는 프로세스가 있어야 한다 (일괄할당 -> 점유와 대기)
  • 비선점 : 자원을 강제로 빼앗을 수 없고 그 자원을 점유하고 있는 프로세스가 끝나야 자원이 해제될 수 있다 (반납 요구 -> 비선점)
  • 순환 대기 : 프로세스와 자원들이 원형(순환적)을 이루며, 각 프로세스는 자신에게 할당된 자원을 가지면서, 상대방 프로세스의 자원을 상호 요청하는 상황이다 

교착상태 예방은 교착상태의 발생 조건을 사전에 미리 제거한다

교착상태 발견은 현재 시스템에서 교착상태의 존재 여부만을 파악할 뿐 이후의 교착상태 발생 여부는 파악하지 않는다

교착상태 발견 알고리즘을 사용하는 시점은 교착상태 발생 빈도와 관련성이 매우 높다

은행원 알고리즘은 대표적인 교착상태 회피 알고리즘이다

교착상태 탐지, 회복은 교착상태가 탐지되면 교착상태와 관련된 프로세스와 자원을 시스템으로부터 제거한다

 

 

'컴퓨터 일반 > 운영체제론' 카테고리의 다른 글

페이지 교체 알고리즘 문제  (0) 2024.10.18
운영체제론 복습(2)  (6) 2024.10.18