<프로세스의 개요>
>프로세스:실행중인 프로그램
-프로그램:동작을 하지 않는 정적. 수동적 개체
-프로세스:동작을 하는 능동적 개체
>운영체제로부터 자원을 할당받아 동작
-자원: cpu,메모리,입출력장치,파일 등
-동작: cpu가 프로세스의 명령을 실행
<프로세스와 운영체제>
>운영체제(프로세스 관리자)가 처리하는 작업
-프로세스를 생성 및 종료
-프로세스를 실행시키기 위한 스케줄링 작업
-프로세스의 상태 관리
<프로세스의 구성>
>메모리 구조
-프로그램 실행에 직접적으로 필요한 코드와 데이터
-프로그램 자체
-프로그램 실행 시 필요한 데이터
--상수나 변수의 값
--서브프로그램호출상태 등
>프로세스 제어 블록
-운영체제가 프로세스를 관리하기 위해 필요한 정보
ex)프로세스 번호(PID), 프로세스 상태 , 프로그램 카운터(PC),레지스터, 메모리 관리 정보 , 프로세스 우선순위, 회계 정보 등
-각 프로세스마다 존재
-여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보 활용
<프로세스 상태 관리>
>프로세스 상태
<부모 프로세스와 자식 프로세스>
>프로세스 생성 방법
-사용자가 프로그램을 직접 실행
-한 프로세스가 다른 프로세스를 생성
--프로세스 생성 시스템 호출 이용
--부모 프로세스:시스템 호출을 하는 프로세스
--자식 프로세스:시스템 호출을 통해 새로 생성된 프로세스
>프로세스 종료 방법
-프로세스가 모든 처리를 완료(정상적 종료)
-부모 프로세스에 의해 자식 프로세스가 강제 종료
--프로세스 종료 시스템 호출 이용
--자식 프로세스 생성시 얻은 자식 pid이용
-부모 프로세스가 종료되는 경우 운영체제가 자식 프로세스 종료
<프로세스 생성 시스템 호출>
>유닉스, 리눅스: fork( )
-자식 프로세스는 부모 프로세스의 복제본
>유닉스, 리눅스: exec( )
-자식 프로세스는 부모 프로세스와는 다른 프로그램 실행
>윈도우 :CreateProcess( )
-자식 프로세스는 새로운 프로그램으로 생성
<전통적인 프로세스>
>하나의 프로그램을 실행하기 위한 기본적인 단위
>자원 소유의 단위
-하나의 메모리 구조
>디스패칭의 단위
-하나의 제어흐름
<쓰레드>
>프로세스 내에서의 다중처리를 위해 제안된 개념
>하나의 프로그램을 실행하기 위한 기본적인 단위
>디스패칭의 단위
<프로세스 비교>
>전통적인 프로세스
>쓰레드 있는 프로세스
각각의 쓰레드마다 제어를 따로따로 할 수 있다.
<쓰레드와 프로세스>
>쓰레드는 실행에 필요한 최소한의 정보만 가짐
-pc를 포함한 레지스터 값
-상태정보
-스택 영역
<다중 쓰레드로 구성된 프로세스>
>멀티 cpu또는 멀티코어 컴퓨터 시스템
--다중 쓰레드를 병렬로 처리 가능
>처리 속도 별로 쓰레드가 나눠진 경
-효율적인 처리가능