방송통신대학교 운영체제 강의 정리 자료입니다.
1. 프로세스
프로세스(process)
: 실행중인 프로그램(동작을 하지 않는 정적, 수동적 개체)을 의미하며, Windows 운영체제의 작업 관리자를 실행시 해당 내용들을 손쉽게 확인해볼 수 있음. 프로그램을 실행하기 전에는 저장 장치에 파일형태로 저장되어 있다가 실행 후 운영체제에 의해 자원(CPU, 메모리, 입출력 장치, 파일 등)을 할당받아 동작(CPU가 프로세스의 명령을 실행)함. 프로그램은 여러번 실행이 가능하기에 프로그램이 실행되면 운영체제는 PID와 같은 고유번호를 부여해서 프로세스(동작을 하는 능동적 개체)를 관리함.
운영체제(프로세스 관리자)가 처리하는 작업
: 프로세스 생성 및 종료, 스케줄링 작업, 상태 관리와 같은 작업들을 수행함.
프로세스의 구성
- 메모리 구조
: 프로그램 실행에 직접적으로 필요한 코드와 데이터로 코드영역(프로그램 자체)과 데이터 영역(프로그램 실행시 필요한 데이터로 상수나 변수의 값, 서브프로그램 호출 상태 등이 이에 해당함)으로 구분되어짐.
- 프로세스 제어블록(PCB: Process Control Block)
: 운영체제가 프로세스를 관리하기 위해 필요한 정보들로 PID, 프로세스 상태, 프로세스 카운터 등이 있고, 각 프로세스마다 존재함. 여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보를 활용함.
프로세스 상태관리
: 프로세스 상태로는 기본적으로 생성(처음 작업이 시스템에 주어진 상태), 준비(실행준비가 되어 CPU 할당을 기다리는 상태, 일반적으로 준비 큐에 진입하여 기다리는 상태), 실행(프로세스가 처리되는 상태), 대기(프로세스가 I/O작업이 끝날 때까지 또는 특정 자원을 할당받을때까지 보류되는 상태), 종료(프로세스가 더 이상 실행되지 않도록 끝난 상태) 등이 있음.
프로세스 상태 변화
부모 프로세스와 자식 프로세스
- 프로세스 생성 방법
: 사용자가 프로그램을 직접 실행하거나 특정 프로세스가 프로세스 생성 시스템 호출을 이용하여 다른 프로세스를 생성할 수 있음. 프로세스가 다른 프로세스를 생성할 경우, 시스템 호출을 하는 프로세스를 부모 프로세스라 지칭하고, 시스템 호출을 통해 새로 생성된 프로세스를 자식 프로세스라 지칭함. 계층 관계를 이루어 '부모 프로세스 - 부모 프로세스이자 자식 프로세스 - ....'와 같은 트리형태로 나타날 수 있음.
- UNIX, Linux
: fork() 방식을 사용하는 운영체제들로 자식 프로세스는 부모 프로세스의 복제본임. PID를 통해 부모 프로세스인지 자식 프로세스인지 구별이 가능함. exec() 명령어를 통해 자식 프로세스를 부모 프로세스와 다른 프로그램을 실행하는 것이 가능함.
- Windows
: CreateProcess()를 사용하여 자식 프로세스를 새로운 프로그램으로 생성함.
프로세스 종료방법
: 프로세스가 모든 처리를 완료한 경우에는 정상적으로 종료할 수도 있고, 부모 프로세스에 의해 자식 프로세스를 강제로 종료 시킬 수도 있음. 부모 프로세스가 자식 프로세스를 강제 종료 시키는 경우에는 프로세스 종료 시스템 호출을 이용하며, 이 때 자식 프로세스 생성시 얻은 자식 PID를 이용함. 운영체제 중에는 부모 프로세스가 종료되는 경우 자식 프로세스를 종료시키는 것들도 있음.
2. 쓰레드
전통적인 프로세스
: 하나의 프로그램을 실행하기 위한 기본적인 단위였었고 자원 소유의 단위(하나의 메모리 구조)이기도 하면서, 디스패칭(하나의 제어흐름)의 단위이기도 함. 그로 인해 프로세스 내에서 다중처리가 불가능했었음.
쓰레드(thread)
: 프로세스 내에서 다중처리를 위해 제안된 개념으로 하나의 프로그램을 실행하기 위한 기본적인 단위가 되었고, 디스패칭의 단위임. 이 개념이 등장함에 따라 자원소유의 단위는 프로세스가 되었고, 디스패칭의 단위는 쓰레드가 되었음. 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재함.
전통적인 프로세스와 쓰레드가 있는 프로세스
: 쓰레드가 하나만 있는 프로세스는 전통적인 프로세스와 거의 유사하다고 할 수 있음.
쓰레드는 실행에 필요한 최소한의 정보(PC를 포함한 레지스터 값, 상태정보, 스택 영역 등)만 가짐.
다중 쓰레드로 구성된 프로세스
: 멀티 CPU 또는 멀티 코어 컴퓨터 시스템의 경우 다중 쓰레드를 병렬로 처리 하는 것이 가능함. CPU가 하나밖에 없다고 하더라도 처리속도 별로 쓰레드가 나눠진 경우 효율적인 처리가 가능함.
'방송통신대학교 > 3학년 1학기' 카테고리의 다른 글
[운영체제] 4강. 병행 프로세스 I (0) | 2025.03.19 |
---|---|
[운영체제] 3강. 프로세스 스케줄링 (0) | 2025.03.13 |
[운영체제] 1강. 운영체제 소개 (0) | 2025.03.13 |
[데이터베이스 시스템] 4강. SQL (1) (0) | 2025.03.12 |
[데이터베이스 시스템] 3강. 관계형 모델 (0) | 2025.03.12 |
댓글