새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
TIL) 컴퓨터 과학과 운영체제 공부
오늘은 프로세스의 개념을 정리해보려고 합니다.
프로세스의 개념
프로세스는 실행중인 프로그램을 말합니다.
프로그램은 디스크에 저장된 정적 데이터와 명령어 집합으로 구성됩니다.
프로세스 개념은 운영체제가 등장하고 시분할 스케줄링 정책이 등장하면서 생기게 되었습니다.
이전에는 CPU가 하나의 프로그램만 실행하기에 프로세스라는 개념이 필요없었습니다.
운영체제가 시분할 스케줄링 정책을 사용하게 되면서 프로세스라는 용어를 정의하게 됩니다.
용어를 정의하게 된 이유
문제의 본질을 정확하게 표현하기 위한 도구이다.
여러 프로그램을 실행하다 보니 실행중인 프로그램을 명확하게 표현할 용어가 필요하게 되었다.
사용자는 여러 프로그램을 동시에 실행할 수 있다고 생각합니다.
CPU는 한 번에 하나만 프로세스를 실행할 수 있으므로 여러 CPU가 존재하는 것처럼 사용하는 것을 CPU 가상화라고 합니다.
CPU 가상화를 어떻게 구현할까
프로세스를 실행하고 중지하고 다른 프로세스를 실행하는 과정을 빠르게 진행하면서 여러 프로세스가 실행되는 것처럼 보여지게 할 수 있습니다.
매커니즘과 정책
정책(policy)
정책은 어떤 결정을 내릴 것인가 관한 규칙이나 기준입니다. 운영체제가 자원을 어떻게 배분할 것인지, 어떤 프로세스에게 우선 순위를 줄 것인지 등 고수준의 결정을 의미합니다.
예를 들면 CPU 스케줄링 정책이 있습니다.
어떤 프로세스가 실행 대기 중일 때 “어떤 프로세스를 먼저 실행시킬 것인가”를 결정하고, 선점 방식인지 비선점방식인지등을 말합니다.
라운드 로빈이나 우선순위 기반등이 되겠죠
정책은 시스템의 목표(반응 시간 최소화: 시분할, 처리량 극대화: 일괄처리) 에 따라 다양한 전략을 선택할 수 있게 합니다.
정책을 바꾸면 시스템의 동작 방식이 달라지지만, 그 변경이 직접적으로 내부 구현에 영향을 주면 안됩니다.
매커니즘(Mechanism)
매커니즘은 정책을 실제 실행하기 위한 구체적인 방법이나 도구입니다. 운영체제가 “어떻게” 정책에서 결정을 실행하는 지를 보여주는 구현 기술을 말합니다
예를 들면 문맥 교환(Context Switch)가 있습니다. 프로세스 스케줄링 정책에 따라 다른 프로세스를 실행해야 할때, 실제로 CPU의 레지스터, 메모리 상태를 저장하고 복구하는 작업이 필요합니다. 이 과정을 담당하는 것이 문맥 교환 매커니즘입니다.
매커니즘은 정책을 구현하는데 필요한 실제 코드, 하드웨에 기능, 인터럽트 처리등 어떻게 작업을 수행하는지 대한 세부 구현입니다. 동일한 매커니즘 위에 다양한 정책이 있을 수 있고, 반대로 동일한 정책에 다른 매커니즘으로 구현할 수 있습니다.
왜 분리할까
정책과 매커니즘을 분리하면, 운영체제의 고수준 결정(정책)을 변경할 때 저수준 구현(매커니즘)에 영향을 주지 않아 유지보와 확장하기 편합니다.
CPU 스케줄링 정책을 라운드 로빈에서 우선 순위 기반으로 변경하더라도, 실제 프로세스 전환을 담당하는
Context Switch
는 그대로 사용할 수 있습니다.
자바로 비유하자면
서비스 계층은 정책이라고 생각합니다.
데이터 접속 계층은 매커니즘이라고 생각이 됩니다.
서비스 계층은 데이터베이스에 해당 회원이 가지고 있는 쿠폰 정보를 모두 조회합니다.
정책은 쿠폰을 메뉴당 적용가능 하도록 할 것인지, 전체 총 금액에 쿠폰이 적용하도록 할 것인지 정하는 방향이라면
매커니즘은 데이터를 캐시를 통해 가져오거나 데이터베이스에서 가져오거나 등을 고를 수 있습니다.
프로세스의 구성요소
프로세스의 구성요소는 가장 중요한 메모리입니다.
프로세스의 데이터 정보를 가지고 있는 레지스터
그리고 프로그램을 원할하게 진행하기 위한 특수한 목적의 레지스터인 PCB도 있습니다.
프로세스 상태 전이
프로세스 생성 및 제거는 운영체제가 합니다.
운영체제는 프로세스의 상태 정보를 통해 효율적인 자원 분배가 가능합니다.
최초에 생성이후 준비가 됩니다. 준비 상태인 프로세스는 cpu할당을 정책에 따라 받습니다.
프로세스가 입출력을 사용하는 경우 cpu 자원을 효율적으로 사용하지 못하기에 프로세스는 자신이 대기 상태로 전이가 되며 운영체제는 이를 감시하여 다른 프로세스를 실행할 수 있도록 합니다.
프로세스 생명주기
프로세스는 운영체제가 프로세스 공간이라는 고유한 메모리 공간을 할당을 합니다.
운영체제는 코드 영역과 데이터 영역을 프로세스 공간에 할당을 합니다.
프로세스의 공유 자원이며 가변 데이터를 저장하는 힙 메모리를 초기화합니다.
입출력이 동작할 수 있도록 입출력을 초기화합니다.
출처
- 컴퓨터 과학과 운영체제 3학년 도서 내용 일부
댓글남기기