CS/운영체제
[운영체제] 10-1 프로세스 개요
서니션
2024. 8. 18. 18:00
이 글을 혼자 공부하는 컴퓨터구조 + 운영체제 (한빛미디어) 책을 읽고 혼자 공부한 내용입니다.
잘못 이해한 부분이 있을 수 있고, 문제가 있는 부분 댓글로 알려주시면 수정하겠습니다.
프로세스 직접 확인하기
사용자가 보는 앞에서 실행되는 프로세스 -> 포그라운드 프로세스
사용자가 보지 못하는 뒤편에서 실행되는 프로세스 -> 백그라운드 프로세스
백그라운드 프로세스를
유닉스에서는 데몬, 윈도우 운영체제에서는 서비스라고 부름
프로세스 제어 블록
운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고,
프로세스에 CPU를 비롯한 자원을 배분
이를 위해 운영체제는 프로세스 제어 블록(PCB : Process Control Block)을 이용
PCB
- 프로세스와 관련된 정보를 저장하는 자료 구조
- 커널 영역에 생성
- 프로세스 생성 시에 만들어지고 끝나면 폐기
PCB에 담기는 정보
- 프로세스 ID : 특정 프로세스를 식별하기 위해 부여하는 고유한 번호
- 레지스터 값 : 프로세스는 자신의 실행 차례가 돌아오면 이전까지 사용했던 레지스터의 중간값들을 모두 복원, 그래야 이전까지 진행했던 작업들을 그대로 이어 실행
- 프로세스 상태
- CPU 스케줄링 정보 : 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보
- 메모리 관리 정보 : 프로세스가 어느 주소에 저장되어 있는지에 대한 정보, 페이지 테이블 정보
- 사용한 파일과 입출력장치 목록
"운영체제는 커널 영역에 적재된 PCB를 보고 프로세스를 관리"
문맥 교환
하나의 프로세스에서 다른 프로세스로 실행 순서가 넘어가면...
바로 직전까지 실행되던 프로세스는 프로그램 카운터를 비롯한 각종 레지스터 값, 메모리 정보 등등 지금까지의 중간 정보를 백업해야함.
이러한 중간 정보, 즉 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보가 문맥
기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것이 문맥 교환
문맥 교환을 너무 자주 하면 오버헤드가 발생할 수 있기 때문에 문맥 교환이 자주 일어난다고 해서 반드시 좋은 것은 아님
프로세스의 메모리 영역
사용자 영역의 프로세스 배치
정적 할당 영역 : 코드 영역, 데이터 영역
동적 할당 영역 : 스택 영역, 힙 영역
코드 영역
- 텍스트 영역이라고도 부름
- 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장
- CPU가 실행할 명령어가 담겨 있기 때문에 쓰기가 금지
- 읽기 전용 공간
데이터 영역
- 잠깐 섰다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
- 전역 변수
힙 영역
프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장 공간
스택 영역
- 데이터를 일시적으로 저장하는 공간
- 잠깐 쓰다가 말 값들이 저장되는 공간
- 매개 변수, 지역 변수