운영체제
[운영체제] 프로세스
jfmam
2023. 3. 13. 21:12
- 메모리에 다수의 프로그램들을 실행 시키게 되면서 프로세스 개념 등장
- 병행실행 가능
- 프로그램 카운터 + 프로세스레지스터
프로세스 메모리 배치
고정
- 텍스트: 실행코드
- 데이터: 전역변수 (초기화, 미 초기화)
가변
- 힙: 동적 메모리
- 스택: 임시 데이터 저장장소 (함수,지역변수,매게변수, 복귀주소)
스택과 힙은 양방향으로 크기를 확장 시켜나가며 겹치지 않도록 조심해야한다.
프로세스 상태
- new: 프로세스 생성
- running: 프로세스를 할당받아 명령어 실행
- wating: 프로세스가 이벤트가 일어나기를 기다린다 (입출력완료)
- ready: 프로세스를 할당받기를 기다린다.
- terminated: 프로세스 종료
프로세스 제어블록
- 프로세스 상태
- 프로그램 카운터
- cpu 레지스터
- cpu 스케줄링 정보
- 메모리 관리 정보
- 회계 정보
- 입출력 상태정보
스레드
- 병렬로 실행 가능하다.
- 한 번의 하나이상의 일을 가능하게 한다.
- 예시로 워드 같은 경우 철자 검사와 입력이 동시에 진행이 가능하다.
프로세스 스케줄링
cpu 이용을 최대화 하기 위해 프로세스를 스케줄링 하는 방법
준비큐
- 프로세스를 할당받길 기다린다
- 연결리스트로 구성
대기큐
- 프로세스에 어떤 이벤트가 일어나길 기다린다
- 연결리스트로 똑같이 구성
큐잉 다이어그램

- cpu 할당이 끝남으로 대기큐에 삽입
- 프로세스 준비상태로 변하면서 준비큐에 다시 삽입
- 입출력 종료
- 아들 프로세스 종료
- 인터럽트 및 타임슬라이스(cpu 할당시간) 종료
cpu 스케줄링
문맥
인터럽트 종료 후 문맥 복구를 위해 pcb에 저장하는 형태
문맥교환이란?
cpu스케줄링에 의해 프로세스가 새롭게 할당받으면서 문맥간의 교환이 일어나는 상태
- 커널은 현재 프로세스의 문맥을 pcb에 저장한다
- 새롭게 할당받은 프로세스의 문맥을 복구한다.
문맥교환의 경우 문맥을 교환하는 동안 cpu가 일을 할 수 없어 오버헤드가 발생한다