초기 컴퓨터는 한번에 하나의 프로그램을 실행하여 실행 중인 프로그램이 컴퓨터의 자원을 독점하는 방식이었다.
병행을 실행하는 프로그램들은 컴퓨터 자원을 공유하기 때문에 이를 제어하기 위해 프로세스가 등장하게 되었다.
구동을 하기 위한 형태의 프로그램을 프로세스로 관리
프로세스의 정의
- 실행 중인 프로그램 > 컴퓨터의 자원을 사용할 프로그램들
= IBM운영체제에서 task로 분류
- 비동기적 행위 (Asynchronous)
- 실행 중인 프로시저
- 실행 중인 프로시저의 제어 추적
- 운영체제에 들어있는 프로세스 제어 블록 (PCB)
- 프로세서에 할당하여 실행 할 수 있는 개체 디스패치가 가능한 대상
> cpu에 연산을 수행시킬지 결정
상태를 관리하기 위한 목적
프로세서와 프로세스
프로세서
> 명령과 연산을 수행하기 위한 기계적 장치 = CPU, GPU
프로세스
> 현재 동작을 하고 있는 프로그램
프로그램과 프로세스
- 프로그램이 메모리에 적재되면 프로세스
- 프로세스를 실행 할 때 자원을 할당하고 현재 활동 상태와 현재 수행 내용도 포함
메모리는 디스크에 비해 속도가 빠름
메모리(RAM)에 올려놓고 cpu에 전달하자(적재) > 폰노이만 방식
메모리에 올려놓은 형태 > 프로세스
실행 할 준비가 된 상태 = 메모리에 프로그램이 올라간 상태
메모리에 올라간 프로세스들은 각각의 고유한 ID값을 가지게 됨 > 프로세스ID
ID에 따라서 메모리주소에 적정한 공간을 할당하게 됨 > PCB에 기록
공간을 사용하기 위해 변수를 만들어 사용
운영체제가 프로세스를 생성
PCB = Process Control Block 에 프로세스 상태 정보를 저장
프로그램 카운터
> 프로세스를 실행하는 다음 명령의 주소를 표시
프로세스의 상태
- 생성 상태
프로세스가 메모리에 올라와 실행 준비를 완료한 상태
적재구조는 큐를 사용하여 데이터를 저장
- 준비 상태
생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태
스케쥴링한 데이터를 토대로 우선순위를 정렬하여 CPU에 전달
- 실행 상태
준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태
- 대기 상태
이벤트나 입출력 대기 신호 발생을 기다리는 상태, 다시 작업을 시작하기 위해 대기
- 완료 상태
실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 진입하는 상태
디스패치 (내부적인 동작과정)
- 준비 상태인 프로세스에 프로세서를 할당하여 실행상태로 변경
- 스케쥴러가 선택한 프로세스에 프로세서를 할당
준비된 프로그램을 준비 큐에 등록
판단하기 위해 스케쥴러를 통해 확인 > 순서를 결정
프로세서에 전달된 프로세스는 실행상태로 변경
각각의 형태는 PCB에 기록
'공부' 카테고리의 다른 글
소프트웨어공학 (0) | 2021.03.03 |
---|---|
인터프리터 프로그래밍 해석기법, 파이썬 (0) | 2020.09.11 |
프로그램의 컴파일 과정 (0) | 2020.09.11 |
프로그래밍 언어의 설계 원칙 (0) | 2020.09.11 |
프로그래밍 언어란 (0) | 2020.09.11 |
댓글