728x90
2.1 프로세스
2.1.1 프로세스의개요
- 프로그램과 프로세스 차이
- 프로그램 : 동작을 하지 않는 정적이며 수동적인 개체
- 프로세스 : 실행중인 프로그램으로, 동작을 하는 능동적인 개체
- 프로세스에는 실행을 위해 필요한 자원이 할당됨
- 자원 : CPU, 메모리, 입출력장치, 파일 등
- 프로세스의 동작 : CPU가 그 프로세스의 명령들을 실행하는 것
- 운영체제가 처리하는 작업
- 프로세스를 생성키기고 종료시키기 위한 다양한 작업
- 프로세스를 실행시키기 위한 스케줄링 작업
2.1.2 프로세스의 구성
- 메모리 구조
- 코드 영역 : 해당 프로세스의 프로그램 자체
- 데이터 영역 : 상수나 변수의 값, 서브프로그램 호출상태 등
- 정적 데이터 영역
- 스택 영역
- 힙 영역
- 프로세스 제어 블록(PCB)
- 프로세스를 관리하기 위해 필요한 정보들로 구성
- 프로세스 제어 블록에 포함되는 정보
- 프로세스 번호(PID) : 프로세스의 구분 기준
- 프로세스 상태 : 프로세스의 현재 상태
- 프로그램 카운터(PC) : 프로세스 수행을 위해 다음에 실행할 명령의 주소
- 레지스터 : CPU의 레지스터 정보
- 실행상태에서 다른 상태로 전이되는 경우 CPU의 레지스터 정보를 이곳에 저장시킴
- 메모리 관리 정보 : 프로세스가 저장된 주소, 가상주소와 실주소의 사상정보, 메모리 경계 정보 등
- 프로세스 우선순위 : 스케줄링 시 필요한 프로세스의 우선순위 정보
- 회계정보 : CPU 사용시간, 메모리 사용량 등 다양한 정보2.1.3 프로세스 상태 관리
- 프로세스 상태
- 생성상태 : 처음 작업이 시스템에 주어진 상태
- PCB와 메모리 구조가 생성되면 준비상태로 전이
- 준비상태 : CPU 할당을 기다리는 상태
- 디스패치 (프로세스에 CPU 할당)되면 실행상태로 전이
- 실행상태 : CPU가 프로세스의 명령들을 처리하는 상태
- 스케줄러가 다른 프로세스 선택 : CPU를 회수당하며 준비상태로 전이
- 입출력 작업, 페이지 교환 요구 등 : CPU를 반납하고 대기상태로 전이
- 모든 처리 완료 또는 운영체제가 강제 종료 : 종료상태로 전이
- 대기상태 : 입출력 작업이 끝날 때까지 또는 특정 자원을 할당받을 때 까지 보류되는 상태
- 재개 조건(입출력 작업 완료, 자원할당 완료 등)이 만족되면 준비상태로 전이
- 종료상태 : 더이상 실행되지 않도록 끝난 상태
- 프로세스에 할당되었던 자원 회수2.1.4 부모 프로세스와 자식 프로세스
- 생성상태 : 처음 작업이 시스템에 주어진 상태
- 프로세스 생성 방법
- 사용자가 프로그램을 직접 실행
- 한 프로세스가 다른 프로세스 생성
- 프로세스 생성 시스템 호출 이용
- 부모 프로세스 : 시스템 호출을 하는 프로세스
- 자식 프로세스 : 시스템 호출을 통해 새로 생성된 프로세스
- 프로세스 생성 시스템 호출
- UNIX, Linux : fork()
- 자식 프로세스는 부모 프로세스의 복제본(메모리 구조, PCB)
- PID는 새로 지정
- Windows: CreateProcess()
- 자식 프로세스는 새로운 프로그램으로 생성됨
- UNIX, Linux : fork()
- 프로세스 종료 방법
- 프로세스가 모든 처리를 완료하고 정상적으로 종료됨
- 부모 프로세스에 의해 자식 프로세스가 강제로 종료됨
- 자식 PID로 프로세스 종료 시스템 호출 이용
- 부모 프로세스가 종료되는 경우 운영체제가 자식 프로세스 종료
2.2 쓰레드
- 전통적인 프로세스
- 자원 소유의 단위 : 하나의 메모리 구조
- 디스패칭의 단위 : 하나의 제어 흐름
- 프로세스 내에서 다중처리 불가
- 쓰레드(thread)
- 프로세스 내에서의 다중처리를 위해 제안된 개념
- 프로세스는 자원 소유의 단위, 쓰레드는 디스패칭의 단위로 구분
- 하나의 프로세스 내에는 하나 이상의 쓰레드 존재
- 프로세스의 제어 흐름이 하나 이상 가능
- 쓰레드와 프로세스
- 쓰레드는 실행에 필요한 최소한의 정보만 가짐
- PC를 포함된 레지스터 값
- 스택 영역
- 상태정보
- 나머지 정보는 자신이 속해 있는 프로세스에 두고 다른 쓰레드와 공유
- 쓰레드는 실행에 필요한 최소한의 정보만 가짐
- 다중 쓰레드로 구성된 프로세스
- 멀티 CPU 또는 멀티코어인 컴퓨터 시스템
- 다중 쓰레드를 병렬로 처리
- 멀티 CPU 또는 멀티코어인 컴퓨터 시스템
참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.
728x90
'전산 > 운영체제' 카테고리의 다른 글
운영체제 - 제 6장 교착상태 1 (0) | 2024.05.21 |
---|---|
운영체제 - 제 5장 병행 프로세스2 (0) | 2024.05.20 |
운영체제 - 제 4장 병행 프로세스1 (0) | 2024.05.19 |
운영체제 - 제 3장 프로세스 스케줄링 (0) | 2024.05.18 |
운영체제 - 제 1장 운영체제 소개 (0) | 2024.05.15 |