프로세스란?
- 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램이나 시스템 프로그램을 의미한다.
-
프로세스는 각종 자원을 요구한다.
- 다음과도 같은 의미이다.
1 . 실행 중인 프로그램
2 . 비동기적 행위
3 . 실행 중인 프로시저
4 . 운영체제가 한개의 PCB로 한개의 프로세스 관리- PCB란?
Process control block의 약자로
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳.- 각 프로세스가 생성될 때마다 고유의 PCB가 생성
- 프로세스가 완료되면 PCB가 제거
5 . 프로세서에 할당하여 실행할수 있는 개체
6 . Dispatch가 가능한 대상 - PCB란?
프로세스 vs 프로그램
프로그램 : 보조기억장치에 저장된 프로그램
프로세스 : 실행하기 위해 주기억장치로 로드된 프로그램
프로세스의 메모리 구조
-
스택
1) 데이터를 일시적으로 저장하는 영역
2) 지역변수 , 매개변수, 복귀주소, 레지스터등에 사용한다.
3) 함수를 호출할수록 커지고 반환하면 줄어든다. -
힙
1) 코드 영역과는 별도로 유지되는 자유영역이다.
2) 동적으로 메모리를 할당하려고 프로그램 실행 중 시스템 호출을 사용했다가 해제하는 방법으로 사용한다.
3) 동적메모리할당에 사용된다. -
데이터
1) 프로그램의 가상주소 공간이다.
2) 전역변수나 정적변수를 저장하거나 할당하고 실행하기 전에 초기화한다. -
코드
1) 실행 명령을 포함하는 메모리이거나 목적 파일에 있는 프로그램 영역이다.
2) 프로그램 시작할 때 프로세서가 디스크에서 읽어 실행하는 컴파일한 프로그램을 저장한다.
프로세스 상태
-
1. 생성
프로세스의 작업 공간이 메인 매모리에 생성되고 운영체제 내부에 프로세스의 실행정보를 관리하기 위한 프로세스 제어 블록(PCB)이 만들어지는 상태
- 프로세스 생성 시 필요한 세부작업
- 1 . 새로운 프로세스에 프로세스 식별자를 할당한다.
- 2 . 프로세스의 모든 구성 요소를 포함할 수 있는 주소 공간과 PCB를 할당한다 = 메모리공간할당
- 3 . PCB를 초기화한다(=생성). 프로세스 상태, PC 등 초기화, 자원 요청, 프로세스 제어 정보 등을 포함한다.
- 4 . 해당 준비큐에 삽입한다.
- 프로세스 생성 시 필요한 세부작업
-
2. 준비
프로세스에게 할당되기를 기다리는 상태
-
3. 실행
프로세스를 점유하여 명령어들이 실행되는 상태
-
4. 대기
프로세서가 어떤 이벤트나 외부 신호가 일어나기를 기다리는 상태
-
5. 완료
프로세스의 수행이 끝난상태
프로세스 상태 변환
- 준비 -> 실행(디스패치)
- 준비상태의 프로세스는 Dispatcher에 의해 프로세스가 부여되면 실행상태가 된다.
- 실행 -> 준비(time run out)
- 어떤 프로세스가 프로세서를 계속 독점하는 방지하기 위해 운영체제는 인터럽트 클록(time slice)을 두어서 지정된 시간 동안만 프로세스가 프로세서를 점유하도록 한다. =문맥교환
- 실행 -> 대기(block)
- 실행상태의 프로세스가 지정된 시간 이전에 입출력 연산 등을 필요로 할 경우 그 프로세스는 스스로 프로세서를 양도한다.
- 대기 -> 준비(wake up)
- 입출력 작업이 끝났을 때 대기상태의 프로세스는 준비상태로 변환
문맥교환
Context Switching이라 하며 프로세스를 다른 프로세스로 전환하기 위해
이전의 프로세스 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터들을 적재하는 과정
- 프로세스가 Dispatch, Block, run time error 중 일 경우 발생한다.
- 문맥교환은 모두 과부하가 발생한다.
- OS에서 문맥교환때문에 가능한 효율적 구현을 위해 thread를 사용한다.
댓글 쓰기